diff options
author | Rajith Muditha Attapattu <rajith@apache.org> | 2012-06-07 17:35:31 +0000 |
---|---|---|
committer | Rajith Muditha Attapattu <rajith@apache.org> | 2012-06-07 17:35:31 +0000 |
commit | 47584d3e42d04b85a133b834411d405b196ab41d (patch) | |
tree | c644a381db72a62403eeacee8c6068fc1c70db61 | |
parent | 7613e7c400e33482eefe7ea430a92eee5d4ffebf (diff) | |
download | qpid-python-47584d3e42d04b85a133b834411d405b196ab41d.tar.gz |
QPID-4027 Fixed a bunch errors in converting java types to variant.
The message header stuff are still a bit flaky and needs to polished.
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/address-refactor2@1347733 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | qpid/cpp/bindings/swig_java_cpp_helper.i | 17 | ||||
-rw-r--r-- | qpid/cpp/bindings/swig_java_typemaps.i | 4 | ||||
-rw-r--r-- | qpid/java/client-api/src/main/java/org/apache/qpid/messaging/Message.java | 2 | ||||
-rw-r--r-- | qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppTest.java | 17 | ||||
-rw-r--r-- | qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/TextMessage.java | 7 | ||||
-rw-r--r-- | qpid/java/lib/qpid_cpp_jni.jar | bin | 25216 -> 25863 bytes |
6 files changed, 28 insertions, 19 deletions
diff --git a/qpid/cpp/bindings/swig_java_cpp_helper.i b/qpid/cpp/bindings/swig_java_cpp_helper.i index 7a5fadd843..2e65149609 100644 --- a/qpid/cpp/bindings/swig_java_cpp_helper.i +++ b/qpid/cpp/bindings/swig_java_cpp_helper.i @@ -282,39 +282,36 @@ static qpid::types::Variant convertJavaObjectToVariant(JNIEnv* env, jobject obj) } else if (env->IsInstanceOf(obj,JAVA_SHORT_CLASS)) { - uint64_t v = env->CallShortMethod(obj,JAVA_SHORT_VALUE_METHOD); + uint16_t v = env->CallShortMethod(obj,JAVA_SHORT_VALUE_METHOD); result = qpid::types::Variant(v); } else if (env->IsInstanceOf(obj,JAVA_BYTE_CLASS)) { - uint64_t v = env->CallByteMethod(obj,JAVA_BYTE_VALUE_METHOD); + uint8_t v = env->CallByteMethod(obj,JAVA_BYTE_VALUE_METHOD); result = qpid::types::Variant(v); } else if (env->IsInstanceOf(obj,JAVA_BOOLEAN_CLASS)) { - uint64_t v = env->CallBooleanMethod(obj,JAVA_BOOLEAN_VALUE_METHOD); + bool v = env->CallBooleanMethod(obj,JAVA_BOOLEAN_VALUE_METHOD); result = qpid::types::Variant(v); } else if (env->IsInstanceOf(obj,JAVA_DOUBLE_CLASS)) { - uint64_t v = env->CallDoubleMethod(obj,JAVA_DOUBLE_VALUE_METHOD); + double v = env->CallDoubleMethod(obj,JAVA_DOUBLE_VALUE_METHOD); result = qpid::types::Variant(v); } else if (env->IsInstanceOf(obj,JAVA_FLOAT_CLASS)) { - uint64_t v = env->CallFloatMethod(obj,JAVA_FLOAT_VALUE_METHOD); + float v = env->CallFloatMethod(obj,JAVA_FLOAT_VALUE_METHOD); result = qpid::types::Variant(v); } else { env->ThrowNew(JAVA_ILLEGAL_ARGUMENT_EXP,"Only primitive types and strings are allowed"); - return 0; } - if (checkAndThrowJNILaylerException(env,"Exception occured when converting Java object to Variant")) - { - return 0; - } + checkAndThrowJNILaylerException(env,"Exception occured when converting Java object to Variant"); + return result; } %} diff --git a/qpid/cpp/bindings/swig_java_typemaps.i b/qpid/cpp/bindings/swig_java_typemaps.i index f6282c5aaa..430b9d18c9 100644 --- a/qpid/cpp/bindings/swig_java_typemaps.i +++ b/qpid/cpp/bindings/swig_java_typemaps.i @@ -109,7 +109,7 @@ } %typemap(out) qpid::types::Variant::Map& { - if ($1->size() == 0) + if ($1->empty()) { jresult = 0; } @@ -126,7 +126,7 @@ /* -- qpid::types::Variant& -- */ %typemap(in) (const qpid::types::Variant&) { qpid::types::Variant v = convertJavaObjectToVariant(jenv,$input); - if (v) + if (!v.isVoid()) { $1 = new qpid::types::Variant(v); } diff --git a/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/Message.java b/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/Message.java index 6d08a43fbb..0f3eb6d6f6 100644 --- a/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/Message.java +++ b/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/Message.java @@ -72,5 +72,5 @@ public interface Message public Map<String, Object> getProperties(); - public void setProperties(Map<String, Object> properties); + public void setProperty(String key, Object value); } 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 c4caf11975..5214a66caf 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 @@ -17,6 +17,8 @@ */ package org.apache.qpid.messaging.cpp; +import java.util.Map; + import org.apache.qpid.messaging.Connection; import org.apache.qpid.messaging.ConnectionFactory; import org.apache.qpid.messaging.Message; @@ -32,7 +34,7 @@ public class CppTest con.open(); Session ssn = con.createSession("hello"); System.out.println("Got a session object " + ssn); - + Sender sender = ssn.createSender("amq.topic/test"); System.out.println("Got a Sender object " + sender); @@ -40,10 +42,21 @@ public class CppTest System.out.println("Got a Receiver object " + receiver); Message msg = new TextMessage("Hello World"); + msg.setProperty("color", "blue"); + msg.setProperty("price", 5); + msg.setProperty("boolean", true); sender.send(msg, false); TextMessage m = (TextMessage) receiver.fetch(0); + System.out.println("Received message " + m + " with content type : " + m.getContentType() + " and content : " + m.getContent()); - + + Map<String,Object> props = m.getProperties(); + if (props != null) + { + //System.out.println("Color : " + m.getProperties().get("color")); + System.out.println("Price : " + props.get("price")); + } + 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 1a6644b77c..0ee90e3339 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 @@ -192,14 +192,13 @@ public class TextMessage implements org.apache.qpid.messaging.Message @Override public Map<String, Object> getProperties() { - // TODO Auto-generated method stub - return null; + return _cppMessage.getProperties(); } @Override - public void setProperties(Map<String, Object> properties) + public void setProperty(String key, Object value) { - // TODO Auto-generated method stub + _cppMessage.setProperty(key, value); } protected org.apache.qpid.messaging.cpp.jni.Message getCppMessage() diff --git a/qpid/java/lib/qpid_cpp_jni.jar b/qpid/java/lib/qpid_cpp_jni.jar Binary files differindex f607fd0460..c37f753cfc 100644 --- a/qpid/java/lib/qpid_cpp_jni.jar +++ b/qpid/java/lib/qpid_cpp_jni.jar |