From 47584d3e42d04b85a133b834411d405b196ab41d Mon Sep 17 00:00:00 2001 From: Rajith Muditha Attapattu Date: Thu, 7 Jun 2012 17:35:31 +0000 Subject: 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 --- qpid/cpp/bindings/swig_java_cpp_helper.i | 17 +++++++---------- qpid/cpp/bindings/swig_java_typemaps.i | 4 ++-- .../java/org/apache/qpid/messaging/Message.java | 2 +- .../java/org/apache/qpid/messaging/cpp/CppTest.java | 17 +++++++++++++++-- .../org/apache/qpid/messaging/cpp/TextMessage.java | 7 +++---- 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 getProperties(); - public void setProperties(Map 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 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 getProperties() { - // TODO Auto-generated method stub - return null; + return _cppMessage.getProperties(); } @Override - public void setProperties(Map 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 index f607fd0460..c37f753cfc 100644 Binary files a/qpid/java/lib/qpid_cpp_jni.jar and b/qpid/java/lib/qpid_cpp_jni.jar differ -- cgit v1.2.1