[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