Author: rajith
Date: Sat Jun 16 23:28:22 2012
New Revision: 1351025

URL: http://svn.apache.org/viewvc?rev=1351025&view=rev
Log:
QPId-4027 Added an example that demonstrates sending/receiving a
String, Map and List message.
Fixed several bugs.

Modified:
    
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppMessageFactory.java
    
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppSender.java
    
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppTest.java
    
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/util/AbstractMessageFactory.java
    
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/util/SessionManagementDecorator.java

Modified: 
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppMessageFactory.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppMessageFactory.java?rev=1351025&r1=1351024&r2=1351025&view=diff
==============================================================================
--- 
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppMessageFactory.java
 (original)
+++ 
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppMessageFactory.java
 Sat Jun 16 23:28:22 2012
@@ -215,11 +215,6 @@ public class CppMessageFactory extends M
             _cppMessage.setProperty(key, value);
         }
 
-        protected NativeMessage getCppMessage()
-        {
-            return _cppMessage;
-        }
-
         @Override
         public String toString()
         {
@@ -232,7 +227,7 @@ public class CppMessageFactory extends M
             return null; // The delegate is only for the headers
         }
 
-        public NativeMessage getNativeMessage()
+        NativeMessage getNativeMessage()
         {
             return _cppMessage;
         }

Modified: 
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppSender.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppSender.java?rev=1351025&r1=1351024&r2=1351025&view=diff
==============================================================================
--- 
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppSender.java
 (original)
+++ 
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppSender.java
 Sat Jun 16 23:28:22 2012
@@ -21,6 +21,7 @@ import org.apache.qpid.messaging.Message
 import org.apache.qpid.messaging.MessagingException;
 import org.apache.qpid.messaging.Sender;
 import org.apache.qpid.messaging.Session;
+import org.apache.qpid.messaging.cpp.CppMessageFactory.CppMessageDelegate;
 import org.apache.qpid.messaging.cpp.jni.NativeMessage;
 import org.apache.qpid.messaging.cpp.jni.NativeSender;
 import org.apache.qpid.messaging.ext.MessageInternal;
@@ -51,7 +52,8 @@ public class CppSender implements Sender
            (_msgFactory.getClass() == 
((MessageInternal)m).getMessageFactoryClass())
           )
         {
-            NativeMessage msg = 
(NativeMessage)((MessageInternal)m).getFactorySpecificMessageDelegate();
+            CppMessageDelegate delegate = 
(CppMessageDelegate)((MessageInternal)m).getFactorySpecificMessageDelegate();
+            NativeMessage msg = delegate.getNativeMessage();
             msg.setContentAsByteBuffer(m.getContent());
             return msg;
         }

Modified: 
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppTest.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppTest.java?rev=1351025&r1=1351024&r2=1351025&view=diff
==============================================================================
--- 
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppTest.java
 (original)
+++ 
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/cpp/CppTest.java
 Sat Jun 16 23:28:22 2012
@@ -17,40 +17,43 @@
  */
 package org.apache.qpid.messaging.cpp;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import org.apache.qpid.messaging.Connection;
 import org.apache.qpid.messaging.ConnectionFactory;
+import org.apache.qpid.messaging.ListMessage;
+import org.apache.qpid.messaging.MapMessage;
 import org.apache.qpid.messaging.Message;
 import org.apache.qpid.messaging.Receiver;
 import org.apache.qpid.messaging.Session;
 import org.apache.qpid.messaging.Sender;
+import org.apache.qpid.messaging.StringMessage;
 
 public class CppTest
 {
     public static void main(String[] args) throws Exception
     {
-        /*Connection con = 
ConnectionFactory.get().createConnection("localhost:5672");
+        Connection con = 
ConnectionFactory.get().createConnection("localhost:5672");
         con.open();
-        Session ssn = con.createSession("hello");
-        System.out.println("Got a session object "  + ssn);
-
+        Session ssn = con.createSession(null);
         Sender sender = ssn.createSender("amq.topic/test");
-        System.out.println("Got a Sender object "  + sender);
-
         Receiver receiver = ssn.createReceiver("amq.topic/test");
-        System.out.println("Got a Receiver object "  + receiver);
 
-        Message msg = new TextMessage("Hello World");
+        System.out.println("======= Text Message with Message Properties 
========");
+
+        Message msg = con.getMessageFactory().createMessage("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());
+        StringMessage stringMsg = (StringMessage) receiver.fetch(0);
+        System.out.println("Received message "  + stringMsg + " with content 
type : " + stringMsg.getContentType() + " and content : " + 
stringMsg.getString());
 
-        Map<String,Object> props = m.getProperties();
+        Map<String,Object> props = stringMsg.getProperties();
         System.out.println("Props size : " + props.size());
         System.out.println("Props empty : " + props.isEmpty());
         System.out.println("Contains key 'color' : " + 
props.containsKey("color"));
@@ -58,13 +61,33 @@ public class CppTest
         {
             System.out.println("Key=" + key + ", value=" + props.get(key));
         }
-
         System.out.println("Unspecified property : " + 
props.get("Unspecified-Prop"));
 
-        System.out.println("Msg toString() : " + m);
+        System.out.println("================= Map Message =================");
+        Map<String,Object> myMap = new HashMap<String,Object>();
+        myMap.put("k1", 1);
+        myMap.put("k2", 2);
+
+        msg = con.getMessageFactory().createMessage(myMap);
+        sender.send(msg, false);
+        MapMessage mapMsg = (MapMessage) receiver.fetch(0);
+        System.out.println("Received message "  + mapMsg + " with content type 
: " + mapMsg.getContentType() + " and content : " + mapMsg.getMap());
+
+        System.out.println("================= List Message =================");
+        List<Object> myList = new ArrayList<Object>();
+        myList.add("Red");
+        myList.add("Green");
+        myList.add("Blue");
+
+        msg = con.getMessageFactory().createMessage(myList);
+        sender.send(msg, false);
+        ListMessage listMsg = (ListMessage) receiver.fetch(0);
+        System.out.println("Received message "  + listMsg + " with content 
type : " + listMsg.getContentType() + " and content : " + listMsg.getList());
 
+        sender.close();
+        receiver.close();
         ssn.close();
-        con.close();*/
+        con.close();
     }
 
 }

Modified: 
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/util/AbstractMessageFactory.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/util/AbstractMessageFactory.java?rev=1351025&r1=1351024&r2=1351025&view=diff
==============================================================================
--- 
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/util/AbstractMessageFactory.java
 (original)
+++ 
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/util/AbstractMessageFactory.java
 Sat Jun 16 23:28:22 2012
@@ -291,6 +291,12 @@ public abstract class AbstractMessageFac
         {
             return super.getDelegate();
         }
+
+        @Override
+        public String toString()
+        {
+            return super.getDelegate().toString();
+        }
     }
 
     protected class StringMessageImpl extends DefaultMessageImpl implements 
StringMessage
@@ -321,6 +327,7 @@ public abstract class AbstractMessageFac
             if(str != null && !str.isEmpty())
             {
                 _rawData = encodeString(str);
+                setContentTypeIfNotSet(delegate,"text/plain");
             }
         }
 
@@ -366,6 +373,7 @@ public abstract class AbstractMessageFac
             if(map != null && !map.isEmpty())
             {
                 _rawData = encodeMap(map);
+                setContentTypeIfNotSet(delegate,"amqp/map");
             }
         }
 
@@ -412,6 +420,7 @@ public abstract class AbstractMessageFac
             if(list != null && !list.isEmpty())
             {
                 _rawData = encodeList(list);
+                setContentTypeIfNotSet(delegate,"amqp/list");
             }
         }
 
@@ -451,7 +460,6 @@ public abstract class AbstractMessageFac
         try
         {
             b = encoder.encode(CharBuffer.wrap(str));
-            b.flip();
         }
         catch (CharacterCodingException e)
         {
@@ -471,4 +479,19 @@ public abstract class AbstractMessageFac
             return b;
         }
     }
+
+    protected void setContentTypeIfNotSet(Message m, String contentType)
+    {
+        try
+        {
+            if (m.getContentType() == null || m.getContentType().isEmpty())
+            {
+                m.setContentType(contentType);
+            }
+        }
+        catch (MessagingException e)
+        {
+            //ignore.
+        }
+    }
 }

Modified: 
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/util/SessionManagementDecorator.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/util/SessionManagementDecorator.java?rev=1351025&r1=1351024&r2=1351025&view=diff
==============================================================================
--- 
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/util/SessionManagementDecorator.java
 (original)
+++ 
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/util/SessionManagementDecorator.java
 Sat Jun 16 23:28:22 2012
@@ -79,11 +79,11 @@ public class SessionManagementDecorator 
 {
     private static Logger _logger = 
LoggerFactory.getLogger(SessionManagementDecorator.class);
 
-    public enum SessionState { UNDEFINED, OPENED, CLOSED, ERROR}
+    public enum SessionState {OPENED, CLOSED, ERROR}
 
     private ConnectionExt _conn;
     private Session _delegate;
-    SessionState _state = SessionState.UNDEFINED;
+    SessionState _state = SessionState.OPENED;
     private List<ReceiverExt> _receivers = new ArrayList<ReceiverExt>();
     private List<SenderExt> _senders = new ArrayList<SenderExt>();
     private final Object _connectionLock;  // global per connection lock
@@ -452,7 +452,6 @@ public class SessionManagementDecorator 
         switch (_state)
         {
         case ERROR:
-        case UNDEFINED:
             throw new SessionException("Session is in a temporary error state. 
The session may or may not recover from this");
         case CLOSED:
             throw new SessionException(closedMessage);



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to