[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