[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