[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