[jboss-svn-commits] JBL Code SVN: r22513 - in labs/jbossesb/workspace/skeagh: routing/jms/src/main/java/org/jboss/esb/jms and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Sep 8 07:04:17 EDT 2008
Author: beve
Date: 2008-09-08 07:04:17 -0400 (Mon, 08 Sep 2008)
New Revision: 22513
Removed:
labs/jbossesb/workspace/skeagh/api/routing/src/main/java/org/jboss/esb/routing/PayloadExctractor.java
labs/jbossesb/workspace/skeagh/api/routing/src/main/java/org/jboss/esb/routing/PayloadExtractorException.java
Modified:
labs/jbossesb/workspace/skeagh/routing/jms/src/main/java/org/jboss/esb/jms/JmsInboundRouter.java
labs/jbossesb/workspace/skeagh/routing/jms/src/main/java/org/jboss/esb/jms/JmsPayloadExtractor.java
labs/jbossesb/workspace/skeagh/routing/jms/src/test/java/org/jboss/esb/jms/JmsPayloadExtractorTest.java
labs/jbossesb/workspace/skeagh/routing/jms/src/test/resources/log4j.xml
Log:
Minor updates.
Deleted: labs/jbossesb/workspace/skeagh/api/routing/src/main/java/org/jboss/esb/routing/PayloadExctractor.java
===================================================================
--- labs/jbossesb/workspace/skeagh/api/routing/src/main/java/org/jboss/esb/routing/PayloadExctractor.java 2008-09-08 10:50:14 UTC (rev 22512)
+++ labs/jbossesb/workspace/skeagh/api/routing/src/main/java/org/jboss/esb/routing/PayloadExctractor.java 2008-09-08 11:04:17 UTC (rev 22513)
@@ -1,43 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source Copyright 2008, Red Hat Middleware
- * LLC, and individual contributors by the @authors tag. See the copyright.txt
- * in the distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * This software is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this software; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
- * site: http://www.fsf.org.
- */
-package org.jboss.esb.routing;
-
-import org.jboss.esb.message.Message;
-
-/**
- * Payload extractor is indended for extracting the payload/content from
- * a specific transport and populating ESB {@link Message} instance with
- * that data.
- *
- * @author <a href="mailto:dbevenius at redhat.com">Daniel Bevenius</a>
- *
- */
-public interface PayloadExctractor<T>
-{
- /**
- * Extracts the payload from type T and populates a {@link Message} instance.
- *
- * @param t - the type from which data should be extracted.
- * @return Message - and instance of {@link Message} whos body content consist of the extracted data.
- */
- Message extractPayload( final T t ) throws PayloadExtractorException;
-
-}
Deleted: labs/jbossesb/workspace/skeagh/api/routing/src/main/java/org/jboss/esb/routing/PayloadExtractorException.java
===================================================================
--- labs/jbossesb/workspace/skeagh/api/routing/src/main/java/org/jboss/esb/routing/PayloadExtractorException.java 2008-09-08 10:50:14 UTC (rev 22512)
+++ labs/jbossesb/workspace/skeagh/api/routing/src/main/java/org/jboss/esb/routing/PayloadExtractorException.java 2008-09-08 11:04:17 UTC (rev 22513)
@@ -1,54 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source Copyright 2008, Red Hat Middleware
- * LLC, and individual contributors by the @authors tag. See the copyright.txt
- * in the distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * This software is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this software; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
- * site: http://www.fsf.org.
- */
-package org.jboss.esb.routing;
-
-/**
- * Exception that indicated that an exception occurred while trying
- * to extract the payload from a transport.
- *
- * @author <a href="mailto:dbevenius at redhat.com">Daniel Bevenius</a>
- *
- */
-public class PayloadExtractorException extends Exception
-{
- private static final long serialVersionUID = 3246930484310092568L;
-
- public PayloadExtractorException()
- {
- super();
- }
-
- public PayloadExtractorException(String message, Throwable cause)
- {
- super(message, cause);
- }
-
- public PayloadExtractorException(String message)
- {
- super(message);
- }
-
- public PayloadExtractorException(Throwable cause)
- {
- super(cause);
- }
-
-}
Modified: labs/jbossesb/workspace/skeagh/routing/jms/src/main/java/org/jboss/esb/jms/JmsInboundRouter.java
===================================================================
--- labs/jbossesb/workspace/skeagh/routing/jms/src/main/java/org/jboss/esb/jms/JmsInboundRouter.java 2008-09-08 10:50:14 UTC (rev 22512)
+++ labs/jbossesb/workspace/skeagh/routing/jms/src/main/java/org/jboss/esb/jms/JmsInboundRouter.java 2008-09-08 11:04:17 UTC (rev 22513)
@@ -36,7 +36,6 @@
import org.jboss.esb.message.Message;
import org.jboss.esb.routing.InboundRouter;
import org.jboss.esb.routing.MessageDispatcher;
-import org.jboss.esb.routing.PayloadExtractorException;
import org.jboss.esb.routing.RoutingException;
/**
@@ -70,7 +69,7 @@
*/
private JmsMessageListener messageListener;
/**
- *
+ * Payload extractor for extracting the JMS message content.
*/
private JmsPayloadExtractor payloadExtractor;
@@ -88,7 +87,6 @@
messageListener = new JmsMessageListener(destination, jmsProperties, dispatcher);
messageListener.connect();
- // TODO: make this configurable
payloadExtractor = new JmsPayloadExtractor();
}
@@ -178,10 +176,6 @@
{
e.printStackTrace();
}
- catch (PayloadExtractorException e)
- {
- e.printStackTrace();
- }
}
}
Modified: labs/jbossesb/workspace/skeagh/routing/jms/src/main/java/org/jboss/esb/jms/JmsPayloadExtractor.java
===================================================================
--- labs/jbossesb/workspace/skeagh/routing/jms/src/main/java/org/jboss/esb/jms/JmsPayloadExtractor.java 2008-09-08 10:50:14 UTC (rev 22512)
+++ labs/jbossesb/workspace/skeagh/routing/jms/src/main/java/org/jboss/esb/jms/JmsPayloadExtractor.java 2008-09-08 11:04:17 UTC (rev 22513)
@@ -20,6 +20,11 @@
*/
package org.jboss.esb.jms;
+import java.io.Serializable;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
+
import javax.jms.BytesMessage;
import javax.jms.JMSException;
import javax.jms.MapMessage;
@@ -29,19 +34,18 @@
import org.apache.log4j.Logger;
import org.jboss.esb.message.Message;
-import org.jboss.esb.routing.PayloadExctractor;
-import org.jboss.esb.routing.PayloadExtractorException;
+import org.jboss.esb.routing.RoutingException;
/**
*
* @author <a href="mailto:dbevenius at redhat.com">Daniel Bevenius</a>
*
*/
-public class JmsPayloadExtractor implements PayloadExctractor<javax.jms.Message>
+public class JmsPayloadExtractor
{
private final Logger log = Logger.getLogger(JmsPayloadExtractor.class);
- public Message extractPayload(javax.jms.Message t) throws PayloadExtractorException
+ public Message extractPayload(final javax.jms.Message t) throws RoutingException
{
final Message esbMessage = new Message();
try
@@ -49,42 +53,89 @@
if ( t instanceof TextMessage )
{
final String text = ((TextMessage) t).getText();
- if ( text != null )
+ if ( text == null )
{
- esbMessage.setPayload(((TextMessage) t).getText());
+ throw new RoutingException("Content in JMSMessage [" + t + "] was null");
}
- else
- {
- throw new PayloadExtractorException("Content in JMSMessage [" + t + "] was null");
- }
+ esbMessage.setPayload(text);
}
else if ( t instanceof ObjectMessage )
{
- log.info("ObjectMessage");
+ final Serializable object = ((ObjectMessage)t).getObject();
+ if ( object == null )
+ {
+ throw new RoutingException("Content in JMSMessage [" + t + "] was null");
+ }
+ esbMessage.setPayload(object);
}
else if ( t instanceof BytesMessage )
{
- log.info("BytesMessage");
+ BytesMessage bytesMessage = (BytesMessage)t;
+ bytesMessage.reset();
+ int msgLength = 0;
+ int BUF_SIZE = 50000;
+ byte[] data = new byte[BUF_SIZE];
+ // calculate the nr of bytes in the message
+ while(true)
+ {
+ int len = bytesMessage.readBytes(data);
+ if (len > 0)
+ {
+ msgLength += len;
+ }
+ else
+ {
+ break;
+ }
+ }
+ if ( msgLength == 0 )
+ {
+ throw new RoutingException("Content in JMSMessage [" + t + "] was of zero length");
+ }
+ byte[] content = new byte[msgLength];
+ if (msgLength <= BUF_SIZE)
+ {
+ System.arraycopy(data, 0, content, 0, msgLength);
+ }
+ else
+ {
+ bytesMessage.reset();
+ bytesMessage.readBytes(content);
+ }
+ esbMessage.setPayload(content);
}
else if ( t instanceof MapMessage )
{
- log.info("MapMessage");
+ final MapMessage map = (MapMessage)t;
+ final Map newMap = new HashMap();
+
+ Enumeration mapNames = map.getMapNames();
+ while(mapNames.hasMoreElements())
+ {
+ final String key = (String)mapNames.nextElement();
+ final Object value = map.getObject(key);
+ newMap.put(key, value);
+ }
+ if ( newMap.isEmpty() )
+ {
+ throw new RoutingException("Map in JMSMessage [" + t + "] contained zero key value pairs.");
+ }
+ esbMessage.setPayload(newMap);
}
else if ( t instanceof StreamMessage )
{
log.info("StreamMessage");
}
- else if ( t instanceof Message )
+ else
{
- log.info("Message");
+ throw new RoutingException("Could not determine the type of JMSMessage:" + t);
}
- else
- throw new PayloadExtractorException("Could not determine the type of JMSMessage.");
}
catch ( final JMSException e )
{
- throw new PayloadExtractorException("Could not extract content from JMSMessage: " + t, e);
+ throw new RoutingException("Could not extract content from JMSMessage: " + t, e);
}
+
return esbMessage;
}
Modified: labs/jbossesb/workspace/skeagh/routing/jms/src/test/java/org/jboss/esb/jms/JmsPayloadExtractorTest.java
===================================================================
--- labs/jbossesb/workspace/skeagh/routing/jms/src/test/java/org/jboss/esb/jms/JmsPayloadExtractorTest.java 2008-09-08 10:50:14 UTC (rev 22512)
+++ labs/jbossesb/workspace/skeagh/routing/jms/src/test/java/org/jboss/esb/jms/JmsPayloadExtractorTest.java 2008-09-08 11:04:17 UTC (rev 22513)
@@ -21,14 +21,18 @@
package org.jboss.esb.jms;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import java.util.Map;
+
import javax.jms.JMSException;
import org.jboss.esb.message.Message;
-import org.jboss.esb.routing.PayloadExtractorException;
-import org.junit.Ignore;
+import org.jboss.esb.routing.RoutingException;
import org.junit.Test;
+import com.mockrunner.mock.jms.MockBytesMessage;
+import com.mockrunner.mock.jms.MockMapMessage;
import com.mockrunner.mock.jms.MockObjectMessage;
import com.mockrunner.mock.jms.MockTextMessage;
@@ -43,7 +47,7 @@
private final JmsPayloadExtractor extractor = new JmsPayloadExtractor();
@Test
- public void extractContentTextMessage() throws PayloadExtractorException, JMSException
+ public void extractContentTextMessage() throws RoutingException, JMSException
{
final String content = "testing text message content";
final MockTextMessage textMessage = new MockTextMessage();
@@ -52,18 +56,16 @@
assertEquals( content, esbMessage.getPayload());
}
- @Test ( expected = PayloadExtractorException.class )
- public void extractContentTextMessageNullPayload() throws PayloadExtractorException, JMSException
+ @Test ( expected = RoutingException.class )
+ public void extractContentTextMessageNullPayload() throws RoutingException, JMSException
{
- final String content = null;
final MockTextMessage textMessage = new MockTextMessage();
- textMessage.setText(content);
+ textMessage.setText(null);
extractor.extractPayload(textMessage);
}
@Test
- @Ignore
- public void extractContentObjectMessage() throws PayloadExtractorException, JMSException
+ public void extractContentObjectMessage() throws RoutingException, JMSException
{
final String content = "testing text message content";
final MockObjectMessage objectMessage = new MockObjectMessage();
@@ -71,4 +73,56 @@
final Message esbMessage = extractor.extractPayload(objectMessage);
assertEquals( content, esbMessage.getPayload());
}
+
+ @Test ( expected = RoutingException.class )
+ public void extractContentObjectMessageNullPayload() throws RoutingException, JMSException
+ {
+ final MockObjectMessage objectMessage = new MockObjectMessage();
+ objectMessage.setObject(null);
+ extractor.extractPayload(objectMessage);
+ }
+
+ @Test
+ public void extractContentBytesMessage() throws RoutingException, JMSException
+ {
+ final byte[] content = "testing text message content".getBytes();
+ final MockBytesMessage bytesMessage = new MockBytesMessage();
+ bytesMessage.writeObject(content);
+ final Message esbMessage = extractor.extractPayload(bytesMessage);
+ Object payload = esbMessage.getPayload();
+ assertTrue(payload instanceof byte[]);
+ assertEquals( new String(content), new String((byte[])esbMessage.getPayload()));
+ }
+
+ @Test ( expected = RoutingException.class )
+ public void extractContentBytesMessageNullPayload() throws RoutingException, JMSException
+ {
+ final MockBytesMessage bytesMessage = new MockBytesMessage();
+ extractor.extractPayload(bytesMessage);
+ }
+
+ @Test
+ public void extractContentMapMessage() throws RoutingException, JMSException
+ {
+ final MockMapMessage mapMessage = new MockMapMessage();
+ mapMessage.setObject("key1", "value1");
+ mapMessage.setObject("key2", "value2");
+ final Message esbMessage = extractor.extractPayload(mapMessage);
+ Object payload = esbMessage.getPayload();
+ assertTrue(payload instanceof Map);
+
+ Map esbMap = (Map)payload;
+ assertTrue(esbMap.containsKey("key1"));
+ assertTrue(esbMap.containsKey("key2"));
+ assertEquals("value1", esbMap.get("key1"));
+ assertEquals("value2", esbMap.get("key2"));
+ }
+
+ @Test ( expected = RoutingException.class )
+ public void extractContentMapMessageEmptyMap() throws RoutingException, JMSException
+ {
+ final MockMapMessage mapMessage = new MockMapMessage();
+ extractor.extractPayload(mapMessage);
+ }
+
}
Modified: labs/jbossesb/workspace/skeagh/routing/jms/src/test/resources/log4j.xml
===================================================================
--- labs/jbossesb/workspace/skeagh/routing/jms/src/test/resources/log4j.xml 2008-09-08 10:50:14 UTC (rev 22512)
+++ labs/jbossesb/workspace/skeagh/routing/jms/src/test/resources/log4j.xml 2008-09-08 11:04:17 UTC (rev 22513)
@@ -49,7 +49,7 @@
</category>
<category name="org.apache.activemq">
- <priority value="info"/>
+ <priority value="ERROR"/>
</category>
<!-- ======================= -->
More information about the jboss-svn-commits
mailing list