summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRajith Muditha Attapattu <rajith@apache.org>2012-06-10 23:38:39 +0000
committerRajith Muditha Attapattu <rajith@apache.org>2012-06-10 23:38:39 +0000
commit7cdce1d68b1a796ba7abe93ae27b9683d301d266 (patch)
treec577b3f99ce6b07545f9c8766fb0946a2d63b8fe
parent2012533afb67397403142cd165ecded7e5a0f8bb (diff)
downloadqpid-python-7cdce1d68b1a796ba7abe93ae27b9683d301d266.tar.gz
QPID-4027 Added a toString method to the Message class by using the swig
"%extend" directive. Used the same for moving the methods I introduced in Mesage.h to java.i interface file. The BYTE_BUFFER struct is also moved into the swig file. The only extra methods we need to add to Message.h is to get/set the message headers as raw bytes. git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/address-refactor2@1348683 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/cpp/bindings/qpid/java/java.i44
-rw-r--r--qpid/cpp/bindings/swig_java_typemaps.i17
-rw-r--r--qpid/cpp/include/qpid/messaging/Message.h33
-rw-r--r--qpid/cpp/src/qpid/messaging/Message.cpp10
-rw-r--r--qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppTest.java2
-rw-r--r--qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/TextMessage.java7
-rw-r--r--qpid/java/lib/qpid_cpp_jni.jarbin25666 -> 25073 bytes
7 files changed, 65 insertions, 48 deletions
diff --git a/qpid/cpp/bindings/qpid/java/java.i b/qpid/cpp/bindings/qpid/java/java.i
index fb5bc6cde7..be7b51ee8b 100644
--- a/qpid/cpp/bindings/qpid/java/java.i
+++ b/qpid/cpp/bindings/qpid/java/java.i
@@ -21,5 +21,49 @@
%include "std_string.i"
%include "../../swig_java_typemaps.i"
+%begin %{
+struct BYTE_BUFFER
+{
+ public :
+ BYTE_BUFFER(): start(0), size(0) {}
+ BYTE_BUFFER(void* p, long s) : start(p), size(s) {}
+ void* getStart() const { return start; }
+ long getSize() const { return size; }
+ private:
+ void* start;
+ long size;
+};
+%}
+
+%extend qpid::messaging::Message {
+
+void setContentAsByteBuffer(const BYTE_BUFFER buf)
+{
+ self->setContent(reinterpret_cast<char*>(buf.getStart()), buf.getSize());
+}
+
+const BYTE_BUFFER getContentAsByteBuffer() const
+{
+ return BYTE_BUFFER(static_cast<void*>(const_cast<char*>(self->getContentPtr())),self->getContentSize());
+}
+
+std::string toString()
+{
+ std::ostringstream toStr;
+ toStr << "{" << std::endl;
+ toStr << " Message-ID=" << self->getMessageId() << std::endl;
+ toStr << " Correlation-ID=" << self->getCorrelationId() << std::endl;
+ toStr << " Subject=" << self->getSubject() << std::endl;
+ toStr << " Durability=" << (self->getDurable()? "true" : "false" ) << std::endl;
+ toStr << " TTL=" << self->getTtl().getMilliseconds() << std::endl;
+ toStr << " Redelivered=" << (self->getRedelivered()? "true" : "false" ) << std::endl;
+ toStr << " Application-Properties=" << self->getProperties() << std::endl;
+ toStr << "}" << std::endl;
+
+ return toStr.str();
+}
+
+}
+
%include "../qpid.i"
diff --git a/qpid/cpp/bindings/swig_java_typemaps.i b/qpid/cpp/bindings/swig_java_typemaps.i
index 139b8399a8..785f5ed73d 100644
--- a/qpid/cpp/bindings/swig_java_typemaps.i
+++ b/qpid/cpp/bindings/swig_java_typemaps.i
@@ -22,6 +22,7 @@
#include "qpid/types/Variant.h"
#include "jni.h"
#include <iostream>
+#include <sstream>
%}
/* =================================================================== */
@@ -47,9 +48,9 @@
* The "jstype" specifies the types exposed in the proxy classes.
* -------------------------------------------------------------------VaraintMapWrapper.h~
*/
-%typemap(jni) qpid::messaging::Message::BYTE_BUFFER "jobject"
-%typemap(jtype) qpid::messaging::Message::BYTE_BUFFER "java.nio.ByteBuffer"
-%typemap(jstype) qpid::messaging::Message::BYTE_BUFFER "java.nio.ByteBuffer"
+%typemap(jni) BYTE_BUFFER "jobject"
+%typemap(jtype) BYTE_BUFFER "java.nio.ByteBuffer"
+%typemap(jstype) BYTE_BUFFER "java.nio.ByteBuffer"
%typemap(jni) qpid::types::Variant::Map& "jlong"
%typemap(jtype) qpid::types::Variant::Map& "long"
@@ -72,19 +73,19 @@
%typemap(jstype) uint64_t "long"
/* -- qpid::messaging::Message::BYTE_BUFFER -- */
-%typemap(in) (qpid::messaging::Message::BYTE_BUFFER) {
+%typemap(in) (BYTE_BUFFER) {
void* start = jenv->GetDirectBufferAddress($input);
long size = (long)(jenv->GetDirectBufferCapacity($input));
- $1 = qpid::messaging::Message::BYTE_BUFFER(start,size);
+ $1 = BYTE_BUFFER(start,size);
}
-%typemap(javain) (qpid::messaging::Message::BYTE_BUFFER) "$module.isBufferDirect($javainput)"
+%typemap(javain) (BYTE_BUFFER) "$module.isBufferDirect($javainput)"
-%typemap(out) qpid::messaging::Message::BYTE_BUFFER {
+%typemap(out) BYTE_BUFFER {
jresult = jenv->NewDirectByteBuffer($1.getStart(), $1.getSize());
}
-%typemap(javaout) qpid::messaging::Message::BYTE_BUFFER {
+%typemap(javaout) BYTE_BUFFER {
return $jnicall;
}
diff --git a/qpid/cpp/include/qpid/messaging/Message.h b/qpid/cpp/include/qpid/messaging/Message.h
index 4a69321c01..778610ec84 100644
--- a/qpid/cpp/include/qpid/messaging/Message.h
+++ b/qpid/cpp/include/qpid/messaging/Message.h
@@ -42,17 +42,6 @@ struct MessageImpl;
class QPID_MESSAGING_CLASS_EXTERN Message
{
public:
- struct QPID_MESSAGING_CLASS_EXTERN BYTE_BUFFER
- {
- public :
- QPID_MESSAGING_EXTERN BYTE_BUFFER(): start(0), size(0) {}
- QPID_MESSAGING_EXTERN BYTE_BUFFER(void* p, long s) : start(p), size(s) {}
- QPID_MESSAGING_EXTERN void* getStart() const { return start; }
- QPID_MESSAGING_EXTERN long getSize() const { return size; }
- private:
- void* start;
- long size;
- };
QPID_MESSAGING_EXTERN Message(const std::string& bytes = std::string());
QPID_MESSAGING_EXTERN Message(const char*, size_t);
QPID_MESSAGING_EXTERN Message(const Message&);
@@ -189,34 +178,18 @@ class QPID_MESSAGING_CLASS_EXTERN Message
/**
* Aimed at devlopers creating bindings over the c++ client.
- * Copy count bytes from the region pointed
- * to by BYTE_BUFFER.start and BYTE_BUFFER.size
- */
- QPID_MESSAGING_EXTERN void setContentAsByteBuffer(const BYTE_BUFFER buf);
-
- /**
- * Aimed at devlopers creating bindings over the c++ client.
- * BYTE_BUFFER.start points to the start of the content data.
- * BYTE_BUFFER.size indicates how much data there is.
- */
- QPID_MESSAGING_EXTERN const BYTE_BUFFER getContentAsByteBuffer() const;
-
- /**
- * Aimed at devlopers creating bindings over the c++ client.
* The data contains the encoded message properties.
* The method copy count bytes from the region pointed
- * to by BYTE_BUFFER.start and BYTE_BUFFER.size
+ * to by chars.
*/
- QPID_MESSAGING_EXTERN void setPropertiesAsByteBuffer(const BYTE_BUFFER buf);
+ QPID_MESSAGING_EXTERN void setPropertiesAsRawBytes(const char* chars, size_t count);
/**
* Aimed at devlopers creating bindings over the c++ client.
* The data contains raw message properties.
* The calling application needs to decode the headers.
- * BYTE_BUFFER.start points to the start of the content data.
- * BYTE_BUFFER.size indicates how much data there is.
*/
- QPID_MESSAGING_EXTERN const BYTE_BUFFER getPropertiesAsByteBuffer() const;
+ QPID_MESSAGING_EXTERN void getPropertiesAsRawBytes(char*& chars, size_t count) const;
private:
MessageImpl* impl;
diff --git a/qpid/cpp/src/qpid/messaging/Message.cpp b/qpid/cpp/src/qpid/messaging/Message.cpp
index 507d534830..ef70c103e9 100644
--- a/qpid/cpp/src/qpid/messaging/Message.cpp
+++ b/qpid/cpp/src/qpid/messaging/Message.cpp
@@ -85,16 +85,6 @@ size_t Message::getContentSize() const
return impl->getBytes().size();
}
-void Message::setContentAsByteBuffer(const Message::BYTE_BUFFER buf)
-{
- impl->setBytes(reinterpret_cast<char*>(buf.getStart()), buf.getSize());
-}
-
-const Message::BYTE_BUFFER Message::getContentAsByteBuffer() const
-{
- return Message::BYTE_BUFFER(static_cast<void*>(const_cast<char*>(impl->getBytes().data())),impl->getBytes().size());
-}
-
EncodingException::EncodingException(const std::string& msg) : qpid::types::Exception(msg) {}
const std::string BAD_ENCODING("Unsupported encoding: %1% (only %2% is supported at present).");
diff --git a/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppTest.java b/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppTest.java
index 9e28f7bcc5..61678eda47 100644
--- a/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppTest.java
+++ b/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppTest.java
@@ -61,6 +61,8 @@ public class CppTest
System.out.println("Unspecified property : " + props.get("Unspecified-Prop"));
+ System.out.println("Msg toString() : " + m);
+
ssn.close();
con.close();
}
diff --git a/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/TextMessage.java b/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/TextMessage.java
index 1602a486b3..e9a311c606 100644
--- a/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/TextMessage.java
+++ b/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/TextMessage.java
@@ -28,6 +28,7 @@ public class TextMessage implements org.apache.qpid.messaging.Message
{
_cppMessage = new org.apache.qpid.messaging.cpp.jni.Message(text);
_cppMessage.setContentType("text/plain");
+ _cppMessage.setPriority((byte)5);
}
public TextMessage(org.apache.qpid.messaging.cpp.jni.Message msg)
@@ -209,4 +210,10 @@ public class TextMessage implements org.apache.qpid.messaging.Message
return _cppMessage;
}
+ @Override
+ public String toString()
+ {
+ return _cppMessage.toString();
+ }
+
}
diff --git a/qpid/java/lib/qpid_cpp_jni.jar b/qpid/java/lib/qpid_cpp_jni.jar
index 369796db9d..142ce1c77c 100644
--- a/qpid/java/lib/qpid_cpp_jni.jar
+++ b/qpid/java/lib/qpid_cpp_jni.jar
Binary files differ