[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