[jboss-svn-commits] JBL Code SVN: r8692 - labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/couriers

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Jan 4 15:53:29 EST 2007


Author: estebanschifman
Date: 2007-01-04 15:53:26 -0500 (Thu, 04 Jan 2007)
New Revision: 8692

Modified:
   labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/couriers/TwoWayCourierImpl.java
Log:
Safety net.  Just in case.  Handle vanilla EPRs

Modified: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/couriers/TwoWayCourierImpl.java
===================================================================
--- labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/couriers/TwoWayCourierImpl.java	2007-01-04 20:10:11 UTC (rev 8691)
+++ labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/couriers/TwoWayCourierImpl.java	2007-01-04 20:53:26 UTC (rev 8692)
@@ -24,7 +24,9 @@
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
+import java.net.URISyntaxException;
 
+import org.apache.log4j.Logger;
 import org.jboss.soa.esb.addressing.EPR;
 import org.jboss.soa.esb.addressing.eprs.FileEpr;
 import org.jboss.soa.esb.addressing.eprs.JDBCEpr;
@@ -44,6 +46,7 @@
 {
 	private DeliverOnlyCourier	_deliverCourier;
 	private PickUpOnlyCourier	_pickupCourier;
+	private static Logger	_logger = Logger.getLogger(TwoWayCourierImpl.class);
 	/**
 	 * Constructor. 
 	 * @param toEpr             - to address
@@ -78,32 +81,58 @@
 
 	private DeliverOnlyCourier getDeliverCourier(EPR toEPR) throws CourierException
 	{
-		if (null==toEPR)
-			return null;
-		if (toEPR instanceof JMSEpr)
-			return new JmsCourier((JMSEpr)toEPR);
-		if (toEPR instanceof FileEpr)
-			return new FileCourier((FileEpr)toEPR);
-		if (toEPR instanceof JDBCEpr)
-			return new SqlTableCourier((JDBCEpr)toEPR);
-		
-		throw new CourierException ("Deliver courier for "+toEPR.getClass().getSimpleName()+" not supported yet");
+		return (null==toEPR) ? null
+				: (DeliverOnlyCourier)courierFromEpr(toEPR,false);
 	}
 
 	private PickUpOnlyCourier getPickupCourier(EPR replyToEPR) throws CourierException
 	{
-		if (null==replyToEPR)
+		return (null==replyToEPR) ? null
+				: (PickUpOnlyCourier)courierFromEpr(replyToEPR,true);
+	}
+
+	private Object courierFromEpr(EPR epr,boolean pickUpOnly) throws CourierException
+	{
+		if (null==epr)
 			return null;
-		if (replyToEPR instanceof JMSEpr)
-			return new JmsCourier((JMSEpr)replyToEPR,true);
-		if (replyToEPR instanceof FileEpr)
-			return new FileCourier((FileEpr)replyToEPR,true);
-		if (replyToEPR instanceof JDBCEpr)
-			return new SqlTableCourier((JDBCEpr)replyToEPR,true);
+		if (epr instanceof JMSEpr)
+			return new JmsCourier((JMSEpr)epr,pickUpOnly);
+		if (epr instanceof FileEpr)
+			return new FileCourier((FileEpr)epr,pickUpOnly);
+		if (epr instanceof JDBCEpr)
+			return new SqlTableCourier((JDBCEpr)epr,pickUpOnly);
+		
+//TODO the following is necessary because EPR serialization/deserialization loses type
 
-		throw new CourierException ("Couriers for "+replyToEPR.getClass().getSimpleName()+" not supported yet");
+		return courierFromGenericEPR(epr,pickUpOnly);
 	}
 	
+	private Object courierFromGenericEPR(EPR epr,boolean pickUpOnly) throws CourierException
+	{
+		String addr = null;
+		try
+		{
+			addr = epr.getAddr().getAddress();
+			if (addr.startsWith(JMSEpr.JMS_PROTOCOL))
+				return new JmsCourier(new JMSEpr(epr),pickUpOnly);
+			if (addr.startsWith(JDBCEpr.JDBC_PROTOCOL))
+				return new SqlTableCourier(new JDBCEpr(epr),pickUpOnly);
+//TODO  magic strings
+			if (addr.startsWith("file://")
+			 || addr.startsWith("ftp://")
+			 || addr.startsWith("sftp://")
+			 || addr.startsWith("ftps://")
+			 )
+				return new FileCourier(new FileEpr(epr),pickUpOnly);
+		}
+		catch (URISyntaxException e) 
+		{ /* OK just fall through */  
+			_logger.error(e);
+		}
+		throw new CourierException ("Courier for "+epr.getClass().getSimpleName()+" not supported yet");
+	}
+	
+	
 	/**
 	 * @see  org.jboss.soa.esb.couriers.Courier#deliver(Message message).
 	 */




More information about the jboss-svn-commits mailing list