[jboss-svn-commits] JBL Code SVN: r11058 - in labs/jbossesb/trunk/product/core/listeners: src/org/jboss/soa/esb/listeners/message and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Apr 17 06:50:58 EDT 2007


Author: tfennelly
Date: 2007-04-17 06:50:58 -0400 (Tue, 17 Apr 2007)
New Revision: 11058

Modified:
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/AbstractMessageComposer.java
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/MessageComposer.java
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/UncomposedMessageDeliveryAdapter.java
   labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/message/MessageDeliveryAdapterUnitTest.java
Log:
cleaned up the UncomposedMessageDeliveryAdapter + added "decompose" to the MessageComposer interface.

Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java	2007-04-17 08:09:34 UTC (rev 11057)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java	2007-04-17 10:50:58 UTC (rev 11058)
@@ -297,16 +297,14 @@
     public Object invoke(InvocationRequest invocationRequest) throws Throwable {
         try {
             if (synchronous) {
-                Message reply = messageDeliveryAdapter.deliverSync(invocationRequest, 20000); // TODO Fix magic number
-                // Here's good old getContents issue again :-(
-                return new String(reply.getBody().getContents(), "UTF-8");
+                return messageDeliveryAdapter.deliverSync(invocationRequest, 20000); // TODO Fix magic number
             } else {
                 messageDeliveryAdapter.deliverAsync(invocationRequest);
             }
         } catch (Throwable t) {
             logger.error("JBoss Remoting Gateway failed to " + (synchronous ? "synchronously" : "asynchronously") + " deliver message to target service [" +
-                    messageDeliveryAdapter.getServiceCategory() + ":" +
-                    messageDeliveryAdapter.getServiceName() + "].", t);
+                    messageDeliveryAdapter.getDeliveryAdapter().getServiceCategory() + ":" +
+                    messageDeliveryAdapter.getDeliveryAdapter().getServiceName() + "].", t);
 
             throw t;
         }

Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/AbstractMessageComposer.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/AbstractMessageComposer.java	2007-04-17 08:09:34 UTC (rev 11057)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/AbstractMessageComposer.java	2007-04-17 10:50:58 UTC (rev 11058)
@@ -21,6 +21,7 @@
 
 import org.jboss.soa.esb.message.Message;
 import org.jboss.soa.esb.message.format.MessageFactory;
+import org.jboss.soa.esb.actions.ActionUtils;
 
 /**
  * An abstract {@link MessageComposer} implementation, containing a useful
@@ -52,11 +53,27 @@
     }
 
     /**
-     * Populate
+     * Decompose the message.
+     * <p/>
+     * This implementation simple calls {@link ActionUtils#getTaskObject(org.jboss.soa.esb.message.Message)}.
+     * Override to implement an alternative {@link Message} decomposition strategy.
      *
-     * @param message
-     * @param messagePayload
+     * @param message The message to be decomposed.
+     * @return The message "task object".
      * @throws MessageDeliverException
      */
+    public Object decompose(Message message) throws MessageDeliverException {
+        // Hopefully we can fix the Message object such that there's no need for this
+        // i.e. the message will have setContents(Object) and getContents() methods.
+        return ActionUtils.getTaskObject(message);
+    }
+
+    /**
+     * Populate
+     *
+     * @param message The message instance to be populated.
+     * @param messagePayload The message payload to to be populated into the message.
+     * @throws MessageDeliverException Unable to populate message with payload.
+     */
     protected abstract void populateMessage(Message message, Object messagePayload) throws MessageDeliverException;
 }

Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/MessageComposer.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/MessageComposer.java	2007-04-17 08:09:34 UTC (rev 11057)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/MessageComposer.java	2007-04-17 10:50:58 UTC (rev 11058)
@@ -56,6 +56,15 @@
     public Message compose(Object messagePayload) throws MessageDeliverException;
 
     /**
+     * Decompose an ESB "aware" message, extracting and returning the message payload.
+     *
+     * @param message ESB aware message instance to be decomposed.
+     * @return ESB unaware message instance - a message payload.
+     * @throws MessageDeliverException Failed to decompose message payload.
+     */
+    public Object decompose(Message message) throws MessageDeliverException;
+
+    /**
      * Uitility factory class for reflective {@link MessageComposer} construction.
      */
     public static class Factory {

Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/UncomposedMessageDeliveryAdapter.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/UncomposedMessageDeliveryAdapter.java	2007-04-17 08:09:34 UTC (rev 11057)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/UncomposedMessageDeliveryAdapter.java	2007-04-17 10:50:58 UTC (rev 11058)
@@ -25,13 +25,21 @@
 
 /**
  * Adapter class for delivering uncomposed (ESB unaware) message payloads to a target service.
+ * <p/>
+ * Basically wires a {@link MessageDeliveryAdapter} instance with a {@link MessageComposer}
+ * instance.
  *
  * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
  * @see org.jboss.soa.esb.listeners.message.MessageDeliveryAdapter
  */
-public class UncomposedMessageDeliveryAdapter extends MessageDeliveryAdapter {
+public class UncomposedMessageDeliveryAdapter {
 
     /**
+     * Composed message delivery adapter.  Performs the delivery after this class
+     * composes the message.
+     */
+    private MessageDeliveryAdapter messageDeliveryAdapter;
+    /**
      * Message composer.
      */
     private MessageComposer composer;
@@ -40,33 +48,59 @@
      * Public constructor.
      *
      * @param serviceCategory The <b>category name</b> of the Service to which this instance will
-     *                        deliverAsync messages.
+     *                        deliver messages.
      * @param serviceName     The <b>name</b> of the Service to which this instance will
-     *                        deliverAsync messages.
+     *                        deliver messages.
      * @param composer        The the message composer class for this delivery instance.
      * @throws org.jboss.soa.esb.services.registry.RegistryException
      *          Failed to lookup EPRs for the specified Service.
      */
     public UncomposedMessageDeliveryAdapter(String serviceCategory, String serviceName, MessageComposer composer) throws RegistryException {
-        super(serviceCategory, serviceName);
+        AssertArgument.isNotNull(serviceCategory, "serviceCategory");
+        AssertArgument.isNotNull(serviceName, "serviceName");
         AssertArgument.isNotNull(composer, "composer");
+        messageDeliveryAdapter = new MessageDeliveryAdapter(serviceCategory, serviceName);
         this.composer = composer;
     }
 
     /**
-     * Synchronously deliverAsync the supplied message to the target service associated with this adapter instance.
+     * Synchronously deliver the supplied message to the target service associated with this adapter instance,
+     * {@link MessageComposer#decompose(org.jboss.soa.esb.message.Message) decomposing} the reply message payload.
+     * <p/>
+     * To deliver synchronusly <u>without</u> decomposing the reply, see
+     * {@link #deliverSyncWithoutDecomposing(Object,long)}.
      *
      * @param messagePayload Message payload to be packaged, or a channel specific
      *                       container class for the message payload (e.g. a JMS message).
      * @param timeoutMillis  Number of milliseconds before synchronous reply pickup should timeout.
+     * @return The reply message payload
+     *         ({@link MessageComposer#decompose(org.jboss.soa.esb.message.Message) decomposed}).
+     * @throws MessageDeliverException Failed to deliverAsync message, after trying all available EPRs.
+     */
+    public Object deliverSync(Object messagePayload, long timeoutMillis) throws MessageDeliverException {
+        // Deliver the message...
+        Message message = deliverSyncWithoutDecomposing(messagePayload, timeoutMillis);
+
+        // Decompose the reply message...
+        return composer.decompose(message);
+    }
+
+    /**
+     * Synchronously deliver the supplied message to the target service associated with this adapter instance,
+     * without decompsing the synchronous reply message.
+     *
+     * @param messagePayload Message payload to be packaged, or a channel specific
+     *                       container class for the message payload (e.g. a JMS message).
+     * @param timeoutMillis  Number of milliseconds before synchronous reply pickup should timeout.
      * @return The reply {@link Message}.  The caller must decompose the message.
      * @throws MessageDeliverException Failed to deliverAsync message, after trying all available EPRs.
      */
-    public Message deliverSync(Object messagePayload, long timeoutMillis) throws MessageDeliverException {
+    public Message deliverSyncWithoutDecomposing(Object messagePayload, long timeoutMillis) throws MessageDeliverException {
         AssertArgument.isNotNull(messagePayload, "messagePayload");
         Message message = composer.compose(messagePayload);
 
-        return super.deliverSync(message, timeoutMillis);
+        // Deliver the message...
+        return messageDeliveryAdapter.deliverSync(message, timeoutMillis);
     }
 
     /**
@@ -80,6 +114,16 @@
         AssertArgument.isNotNull(messagePayload, "messagePayload");
         Message message = composer.compose(messagePayload);
 
-        super.deliverAsync(message);
+        messageDeliveryAdapter.deliverAsync(message);
     }
+
+    /**
+     * Get the "composed" message delivery adapter instance through which this adpter
+     * is delivering message, after composing them.
+     *
+     * @return Message Delivery Adapter.
+     */
+    public MessageDeliveryAdapter getDeliveryAdapter() {
+        return messageDeliveryAdapter;
+    }
 }

Modified: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/message/MessageDeliveryAdapterUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/message/MessageDeliveryAdapterUnitTest.java	2007-04-17 08:09:34 UTC (rev 11057)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/message/MessageDeliveryAdapterUnitTest.java	2007-04-17 10:50:58 UTC (rev 11058)
@@ -128,11 +128,11 @@
         assertEquals(payload, ActionUtils.getTaskObject(courier4.message));
         assertEquals(null, courier5.message);
 
-        assertEquals(epr4, deliveryAdapter.getLastSuccessfulEPR());
+        assertEquals(epr4, deliveryAdapter.getDeliveryAdapter().getLastSuccessfulEPR());
         String payload2 = "*YYY*";
         deliveryAdapter.deliverAsync(payload2);
         assertEquals(payload2, ActionUtils.getTaskObject(courier4.message));
-        assertEquals(epr4, deliveryAdapter.getLastSuccessfulEPR());
+        assertEquals(epr4, deliveryAdapter.getDeliveryAdapter().getLastSuccessfulEPR());
     }
 
     private void assertNoDeliveryAttempted() {




More information about the jboss-svn-commits mailing list