[jboss-svn-commits] JBL Code SVN: r16165 - in labs/jbossesb/trunk/product/rosetta/src/org/jboss: soa/esb/client and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Oct 30 12:29:26 EDT 2007


Author: mark.little at jboss.com
Date: 2007-10-30 12:29:25 -0400 (Tue, 30 Oct 2007)
New Revision: 16165

Modified:
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/couriers/TwoWayCourierImpl.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/client/ServiceInvoker.java
Log:
http://jira.jboss.com/jira/browse/JBESB-1268

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/couriers/TwoWayCourierImpl.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/couriers/TwoWayCourierImpl.java	2007-10-30 15:15:25 UTC (rev 16164)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/couriers/TwoWayCourierImpl.java	2007-10-30 16:29:25 UTC (rev 16165)
@@ -152,8 +152,8 @@
 				|| addr.startsWith("sftp://") || addr.startsWith("ftps://"))
 			return new FileCourier(new FileEpr(epr), pickUpOnly);
 
-		throw new CourierException("Courier for "
-				+ epr.getClass().getSimpleName() + " not supported yet");
+		throw new MalformedEPRException("Courier for "
+				+ epr.getClass().getSimpleName() + " not supported!");
 	}
 
 	/**

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/client/ServiceInvoker.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/client/ServiceInvoker.java	2007-10-30 15:15:25 UTC (rev 16164)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/client/ServiceInvoker.java	2007-10-30 16:29:25 UTC (rev 16165)
@@ -254,15 +254,24 @@
             EPR epr;
             // Iterate over all the EPRs in the list until delivered
             while ((epr = loadBalancer.chooseEPR(serviceClusterInfo)) != null) {
-                replyMessage = eprInvoker.attemptDelivery(message, epr);
-                if (replyMessage != null) {
-                    // We've delivered it, we're done!
-                    return replyMessage;
-                } else {
-                    logger.info("Unresponsive EPR: " + epr+" for message: "+message.getHeader());
-                    
-                    serviceClusterInfo.removeDeadEPR(epr);
-                }
+            	try
+            	{
+	                replyMessage = eprInvoker.attemptDelivery(message, epr);
+	                if (replyMessage != null) {
+	                    // We've delivered it, we're done!
+	                    return replyMessage;
+	                } else {
+	                    logger.info("Unresponsive EPR: " + epr+" for message: "+message.getHeader());
+	                    
+	                    serviceClusterInfo.removeDeadEPR(epr);
+	                }
+            	}
+            	catch (MalformedEPRException ex)  // so we can differentiate failure modes, since returning null is limiting
+            	{
+            		logger.info("Invalid EPR for service: ignoring for message: "+message.getHeader());
+            		
+            		serviceClusterInfo.removeDeadEPR(epr);
+            	}
             }
         }
 
@@ -387,7 +396,7 @@
          * @return Returns the message (or a reply message if synchronous) if the message was delivered
          *         without error, otherwise null.
          */
-        private Message attemptDelivery(Message message, EPR epr) throws FaultMessageException {
+        private Message attemptDelivery(Message message, EPR epr) throws FaultMessageException, MalformedEPRException {
             TwoWayCourier courier = null;
 
             // Get a courier for the EPR...
@@ -397,6 +406,8 @@
                 logger.debug("Courier lookup failed for EPR [" + epr + "] for Service [" + service + "] and Message ["+message.getHeader()+"].", e);
             } catch (MalformedEPRException e) {
                 logger.warn("Badly formed EPR [" + epr + "] for Service [" + service + "] and Message ["+message.getHeader()+"]." + e.getMessage());
+                
+                throw e;
             } catch (Throwable t) {
                 logger.warn("Unexpected exception during Courier lookup for EPR [" + epr + "] for Service [" + service + "] and Message ["+message.getHeader()+"].", t);
             }
@@ -442,6 +453,8 @@
                 } catch (MalformedEPRException e) {
                     // Hmmmm???... Can this really happen?  The Courier has already been created.  Haven't we already validated the EPR during the Courier lookup (above)??
                     logger.warn("Unexpected error.  Badly formed EPR [" + epr + "] for Service [" + service + "]. But the EPR has already been validated!!");
+                    
+                    throw e;
                 } catch (Throwable t) {
                     logger.warn("Unexpected exception during attempted message delivery over Courier for EPR [" + epr + "] for Service [" + service + "] and Message ["+message.getHeader()+"].", t);
                 } finally {




More information about the jboss-svn-commits mailing list