[jboss-svn-commits] JBL Code SVN: r8482 - in labs/jbossesb/trunk/product/core: listeners/src/org/jboss/soa/esb/actions listeners/src/org/jboss/soa/esb/listeners rosetta/src/org/jboss/soa/esb/couriers
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Dec 21 04:40:26 EST 2006
Author: estebanschifman
Date: 2006-12-21 04:40:19 -0500 (Thu, 21 Dec 2006)
New Revision: 8482
Modified:
labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/CbrProxyAction.java
labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/ListenerTagNames.java
labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/couriers/CourierUtil.java
Log:
Add support for file and ftp protocols in CbrProxyAction
Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/CbrProxyAction.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/CbrProxyAction.java 2006-12-21 09:36:06 UTC (rev 8481)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/CbrProxyAction.java 2006-12-21 09:40:19 UTC (rev 8482)
@@ -29,6 +29,7 @@
import org.apache.log4j.Logger;
import org.apache.log4j.Priority;
+import org.jboss.soa.esb.ConfigurationException;
import org.jboss.soa.esb.addressing.Call;
import org.jboss.soa.esb.addressing.EPR;
import org.jboss.soa.esb.couriers.Courier;
@@ -39,6 +40,7 @@
import org.jboss.soa.esb.couriers.TwoWayCourier;
import org.jboss.soa.esb.helpers.ConfigTree;
import org.jboss.soa.esb.listeners.ListenerTagNames;
+import org.jboss.soa.esb.listeners.ListenerUtil;
import org.jboss.soa.esb.message.Message;
import org.jboss.soa.esb.notification.NotificationList;
import org.jboss.soa.esb.services.registry.Registry;
@@ -65,6 +67,8 @@
final private static long DEFAULT_REPLY_LISTENER_TIMEOUT = 60000;
/** replyListenerTimout */
private long _replyListenerTimeout = DEFAULT_REPLY_LISTENER_TIMEOUT;
+ /** replyToEPR */
+ private EPR _repliesToMe;
/**
* Constructor of the Content Based Router Proxy. This constructor obtains
@@ -75,11 +79,20 @@
*/
public CbrProxyAction(ConfigTree config) throws RegistryException
{
+ _config = config;
+ ConfigTree replyElement = _config.getFirstChild(ListenerTagNames.REPLY_TO_EPR_TAG);
+ if (null!=replyElement)
+ {
+ try { _repliesToMe = ListenerUtil.assembleEpr(replyElement); }
+ catch (ConfigurationException e)
+ {
+ _logger.fatal("Invalid "+ListenerTagNames.REPLY_TO_EPR_TAG+" element");
+ }
+ }
Registry registry = RegistryFactory.getRegistry();
String serviceCategoryName = config.getAttribute(ListenerTagNames.SERVICE_CATEGORY_NAME_TAG);
String serviceName = config.getAttribute(ListenerTagNames.SERVICE_NAME_TAG);
_eprs = registry.findEPRs(serviceCategoryName, serviceName);
- _config = config;
if (config.getAttribute(ListenerTagNames.REPLY_LISTENER_TIMEOUT_TAG)!=null) {
try {
_replyListenerTimeout = Long.parseLong(config.getAttribute(ListenerTagNames.REPLY_LISTENER_TIMEOUT_TAG));
@@ -165,28 +178,16 @@
*/
private EPR getReplyToEpr(EPR toEpr) throws URISyntaxException, CourierException
{
-// At a later date we may support replying to a service defined in the configuration. For
-// now we leave this out. However this is a rough example of what that code would look like.
-//
-// ConfigTree replyArgs = _config.getFirstChild("replyToService");
-// if (null!=replyArgs)
-// {
-// String category = replyArgs.getAttribute(ListenerTagNames.SERVICE_CATEGORY_NAME_TAG);
-// String name = replyArgs.getAttribute(ListenerTagNames.SERVICE_NAME_TAG);
-// Collection<EPR> coll = null;
-// try
-// {
-// coll = RegistryFactory.getRegistry().findEPRs(category, name);
-// if (coll.size()>0)
-// return coll.iterator().next();
-// }
-// catch (RegistryException e) { }
-// }
-//
EPR replyToEpr = CourierUtil.getTemporaryReplyToEpr(toEpr);
return replyToEpr;
}
+ EPR newReplyToEpr() throws URISyntaxException, CourierException
+ {
+ EPR replyToEpr = CourierUtil.getTemporaryReplyToEpr(_repliesToMe);
+ return replyToEpr;
+ }
+
/**
* Do *not* route, just deliver. Pulls the destinationServices from the message and deliver the message to the destination(s).
* @param message
Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/ListenerTagNames.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/ListenerTagNames.java 2006-12-21 09:36:06 UTC (rev 8481)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/ListenerTagNames.java 2006-12-21 09:40:19 UTC (rev 8482)
@@ -31,6 +31,7 @@
{
/** EPRs */
public static final String EPR_TAG = "EPR";
+ public static final String REPLY_TO_EPR_TAG = "replyToEPR";
public static final String URL_TAG = JDBCEpr.URL_TAG; // change only in one place
public static final String PROTOCOL_TAG = "protocol";
Modified: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/couriers/CourierUtil.java
===================================================================
--- labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/couriers/CourierUtil.java 2006-12-21 09:36:06 UTC (rev 8481)
+++ labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/couriers/CourierUtil.java 2006-12-21 09:40:19 UTC (rev 8482)
@@ -43,6 +43,8 @@
import org.jboss.internal.soa.esb.couriers.DeliverOnlyCourier;
import org.jboss.internal.soa.esb.couriers.PickUpOnlyCourier;
import org.jboss.soa.esb.addressing.EPR;
+import org.jboss.soa.esb.addressing.eprs.FTPEpr;
+import org.jboss.soa.esb.addressing.eprs.FileEpr;
import org.jboss.soa.esb.addressing.eprs.JMSEpr;
import org.jboss.soa.esb.helpers.KeyValuePair;
import org.jboss.soa.esb.message.Message;
@@ -109,26 +111,63 @@
* CourierException
*/
public static EPR getTemporaryReplyToEpr(EPR toEpr)
- throws URISyntaxException, CourierException
+ throws CourierException
{
- EPR replyToEpr = null;
- if (toEpr instanceof JMSEpr)
+ try
{
- JMSEpr jpr = (JMSEpr) toEpr;
- // Setting the replyTo to the queue we specific in the epr we are
- // going to call
- // The selectors will do the job.
- replyToEpr = new JMSEpr(jpr.getDestinationType(), jpr
- .getDestinationName(), jpr.getConnectionFactory(), jpr
- .getJndiURL(), jpr.getJndiContextFactory(), jpr
- .getJndiPkgPrefix(), getReplySelector());
+ if (null==toEpr)
+ return null;
+ if (toEpr instanceof JMSEpr)
+ {
+ JMSEpr jpr = (JMSEpr) toEpr;
+ // Setting the replyTo to the queue we specific in the epr we are
+ // going to call
+ // The selectors will do the job.
+ return new JMSEpr(jpr.getDestinationType(), jpr
+ .getDestinationName(), jpr.getConnectionFactory(), jpr
+ .getJndiURL(), jpr.getJndiContextFactory(), jpr
+ .getJndiPkgPrefix(), getReplySelector());
+ }
+ if(toEpr instanceof FileEpr)
+ {
+ FileEpr fpr = (FileEpr)toEpr;
+ FileEpr temp = new FileEpr(fpr.getURL());
+
+ String selector = getReplySelector();
+ String suffix = fpr.getPostSuffix();
+ if (null!=suffix)
+ selector += suffix;
+ temp.setPostSuffix(suffix);
+
+ return temp;
+ }
+ if(toEpr instanceof FTPEpr)
+ {
+ FTPEpr fpr = (FTPEpr)toEpr;
+ FTPEpr temp = new FTPEpr(fpr.getURL());
+
+ String selector = getReplySelector();
+ String suffix = fpr.getPostSuffix();
+ if (null!=suffix)
+ selector += suffix;
+ temp.setPostSuffix(suffix);
+
+ return temp;
+ }
+ //TODO We need to add a 'selector' to the JDBCEpr also, so we can selectively pickup
+// if(toEpr instanceof JDBCEpr)
+// {
+// JDBCEpr fpr = (JDBCEpr)toEpr;
+// JDBCEpr temp = new JDBCEpr(fpr.getURL());
+//
+// String selector = getReplySelector();
+//
+// return temp;
+// }
}
- else
- {
- throw new CourierException(
- "Found a non-JMS based EPR, JMS-EPRs is all we support right now");
- }
- return replyToEpr;
+ catch (Exception e) { throw new CourierException(e); }
+ throw new CourierException("Unsupported temporary reply to EPR "
+ +toEpr.getClass().getSimpleName());
}
public static File messageToLocalFile(File directory, Message message)
More information about the jboss-svn-commits
mailing list