[hornetq-commits] JBoss hornetq SVN: r9783 - in trunk/hornetq-rest/hornetq-rest/src/main/java/org/hornetq/rest: queue and 1 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Wed Oct 13 04:54:32 EDT 2010


Author: jmesnil
Date: 2010-10-13 04:54:31 -0400 (Wed, 13 Oct 2010)
New Revision: 9783

Modified:
   trunk/hornetq-rest/hornetq-rest/src/main/java/org/hornetq/rest/Hornetq.java
   trunk/hornetq-rest/hornetq-rest/src/main/java/org/hornetq/rest/Jms.java
   trunk/hornetq-rest/hornetq-rest/src/main/java/org/hornetq/rest/queue/ConsumedHttpMessage.java
   trunk/hornetq-rest/hornetq-rest/src/main/java/org/hornetq/rest/queue/PostMessage.java
   trunk/hornetq-rest/hornetq-rest/src/main/java/org/hornetq/rest/util/HttpMessageHelper.java
Log:
REST API

* flag HornetQ core messages as BYTES message
* do not store the body length in the body bytes (use the header instead)

Modified: trunk/hornetq-rest/hornetq-rest/src/main/java/org/hornetq/rest/Hornetq.java
===================================================================
--- trunk/hornetq-rest/hornetq-rest/src/main/java/org/hornetq/rest/Hornetq.java	2010-10-13 07:38:20 UTC (rev 9782)
+++ trunk/hornetq-rest/hornetq-rest/src/main/java/org/hornetq/rest/Hornetq.java	2010-10-13 08:54:31 UTC (rev 9783)
@@ -130,7 +130,7 @@
 
    public static <T> T getEntity(ClientMessage msg, Class<T> type, Type genericType, ResteasyProviderFactory factory)
    {
-      int size = msg.getBodyBuffer().readInt();
+      int size = msg.getBodySize();
       if (size <= 0) return null;
 
       byte[] body = new byte[size];

Modified: trunk/hornetq-rest/hornetq-rest/src/main/java/org/hornetq/rest/Jms.java
===================================================================
--- trunk/hornetq-rest/hornetq-rest/src/main/java/org/hornetq/rest/Jms.java	2010-10-13 07:38:20 UTC (rev 9782)
+++ trunk/hornetq-rest/hornetq-rest/src/main/java/org/hornetq/rest/Jms.java	2010-10-13 08:54:31 UTC (rev 9783)
@@ -2,12 +2,18 @@
 
 import org.hornetq.api.core.client.ClientMessage;
 import org.hornetq.jms.client.HornetQMessage;
+import org.hornetq.rest.util.HttpMessageHelper;
 import org.jboss.resteasy.spi.ResteasyProviderFactory;
 import org.jboss.resteasy.util.GenericType;
 
+import javax.jms.BytesMessage;
 import javax.jms.JMSException;
 import javax.jms.Message;
 import javax.jms.ObjectMessage;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.ext.MessageBodyReader;
+
+import java.io.ByteArrayInputStream;
 import java.lang.reflect.Type;
 
 /**
@@ -99,8 +105,12 @@
 
    public static boolean isHttpMessage(Message message)
    {
-      ClientMessage msg = ((HornetQMessage) message).getCoreMessage();
-      return Hornetq.isHttpMessage(msg);
+	   try {
+		   Boolean aBoolean = message.getBooleanProperty(HttpMessageHelper.POSTED_AS_HTTP_MESSAGE);
+		   return aBoolean != null && aBoolean.booleanValue() == true;
+	   } catch (JMSException e) {
+		   return false;
+	   }
    }
 
    /**
@@ -128,8 +138,33 @@
             throw new RuntimeException(e);
          }
       }
-      ClientMessage msg = ((HornetQMessage) message).getCoreMessage();
-      return Hornetq.getEntity(msg, type, genericType, factory);
+      BytesMessage bytesMessage = (BytesMessage)message;
+      
+      try
+      {
+    	  long size = bytesMessage.getBodyLength();
+    	  if (size <= 0) return null;
+
+    	  byte[] body = new byte[(int)size];
+    	  bytesMessage.readBytes(body);
+
+    	  String contentType = message.getStringProperty(HttpHeaderProperty.CONTENT_TYPE);
+    	  if (contentType == null)
+    	  {
+    		  throw new UnknownMediaType("Message did not have a Content-Type header cannot extract entity");
+    	  }
+    	  MediaType ct = MediaType.valueOf(contentType);
+    	  MessageBodyReader<T> reader = factory.getMessageBodyReader(type, genericType, null, ct);
+    	  if (reader == null)
+    	  {
+    		  throw new UnmarshalException("Unable to find a JAX-RS reader for type " + type.getName() + " and media type " + contentType);
+    	  }
+    	  return reader.readFrom(type, genericType, null, ct, null, new ByteArrayInputStream(body));
+      }
+      catch (Exception e)
+      {
+    	  throw new RuntimeException(e);
+      }
    }
 
 }

Modified: trunk/hornetq-rest/hornetq-rest/src/main/java/org/hornetq/rest/queue/ConsumedHttpMessage.java
===================================================================
--- trunk/hornetq-rest/hornetq-rest/src/main/java/org/hornetq/rest/queue/ConsumedHttpMessage.java	2010-10-13 07:38:20 UTC (rev 9782)
+++ trunk/hornetq-rest/hornetq-rest/src/main/java/org/hornetq/rest/queue/ConsumedHttpMessage.java	2010-10-13 08:54:31 UTC (rev 9783)
@@ -23,7 +23,7 @@
       buildHeaders(builder);
       if (data == null)
       {
-         int size = message.getBodyBuffer().readInt();
+         int size = message.getBodySize();
          if (size > 0)
          {
             data = new byte[size];

Modified: trunk/hornetq-rest/hornetq-rest/src/main/java/org/hornetq/rest/queue/PostMessage.java
===================================================================
--- trunk/hornetq-rest/hornetq-rest/src/main/java/org/hornetq/rest/queue/PostMessage.java	2010-10-13 07:38:20 UTC (rev 9782)
+++ trunk/hornetq-rest/hornetq-rest/src/main/java/org/hornetq/rest/queue/PostMessage.java	2010-10-13 08:54:31 UTC (rev 9783)
@@ -1,6 +1,7 @@
 package org.hornetq.rest.queue;
 
 import org.hornetq.api.core.HornetQException;
+import org.hornetq.api.core.Message;
 import org.hornetq.api.core.client.ClientMessage;
 import org.hornetq.api.core.client.ClientProducer;
 import org.hornetq.api.core.client.ClientSession;
@@ -218,7 +219,7 @@
 
    protected ClientMessage createHornetQMessage(HttpHeaders headers, byte[] body, boolean durable, ClientSession session) throws Exception
    {
-      ClientMessage message = session.createMessage(durable);
+      ClientMessage message = session.createMessage(Message.BYTES_TYPE, durable);
       HttpMessageHelper.writeHttpMessage(headers, body, message);
       return message;
    }

Modified: trunk/hornetq-rest/hornetq-rest/src/main/java/org/hornetq/rest/util/HttpMessageHelper.java
===================================================================
--- trunk/hornetq-rest/hornetq-rest/src/main/java/org/hornetq/rest/util/HttpMessageHelper.java	2010-10-13 07:38:20 UTC (rev 9782)
+++ trunk/hornetq-rest/hornetq-rest/src/main/java/org/hornetq/rest/util/HttpMessageHelper.java	2010-10-13 08:54:31 UTC (rev 9783)
@@ -35,7 +35,7 @@
          if (headerName == null) continue;
          builder.header(headerName, message.getStringProperty(k));
       }
-      int size = message.getBodyBuffer().readInt();
+      int size = message.getBodySize();
       if (size > 0)
       {
          byte[] body = new byte[size];
@@ -78,7 +78,7 @@
             contentType = value;
          }
       }
-      int size = message.getBodyBuffer().readInt();
+      int size = message.getBodySize();
       if (size > 0)
       {
          byte[] body = new byte[size];
@@ -123,7 +123,6 @@
          }
       }
       message.putBooleanProperty(POSTED_AS_HTTP_MESSAGE, true);
-      message.getBodyBuffer().writeInt(body.length);
       message.getBodyBuffer().writeBytes(body);
    }
 



More information about the hornetq-commits mailing list