[jboss-svn-commits] JBL Code SVN: r26889 - labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/listeners/gateway.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jun 9 10:41:04 EDT 2009


Author: tfennelly
Date: 2009-06-09 10:41:04 -0400 (Tue, 09 Jun 2009)
New Revision: 26889

Modified:
   labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java
Log:
https://jira.jboss.org/jira/browse/JBESB-2106
JBR listener doesn't return error to a client

Modified: labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java	2009-06-09 14:39:12 UTC (rev 26888)
+++ labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java	2009-06-09 14:41:04 UTC (rev 26889)
@@ -32,6 +32,7 @@
 import org.jboss.remoting.marshal.http.HTTPMarshaller;
 import org.jboss.remoting.security.SSLSocketBuilder;
 import org.jboss.remoting.transport.Connector;
+import org.jboss.remoting.transport.http.HTTPMetadataConstants;
 import org.jboss.soa.esb.ConfigurationException;
 import org.jboss.soa.esb.actions.ActionUtils;
 import org.jboss.soa.esb.addressing.EPR;
@@ -58,12 +59,12 @@
 import org.jboss.soa.esb.util.ClassUtil;
 
 import javax.management.MBeanServer;
+import javax.security.auth.login.LoginException;
 
 import java.io.Serializable;
-import java.net.InetAddress;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.net.UnknownHostException;
+import java.io.StringWriter;
+import java.io.PrintWriter;
+import java.net.*;
 import java.util.*;
 
 /**
@@ -352,10 +353,25 @@
                 messageDeliveryAdapter.deliverAsync(invocationRequest);
             }
         } catch (Throwable t) {
-            logger.error("JBoss Remoting Gateway failed to " + (synchronous ? "synchronously" : "asynchronously") + " deliver message to target service [" +
+            logger.debug("JBoss Remoting Gateway failed to " + (synchronous ? "synchronously" : "asynchronously") + " deliver message to target service [" +
                     messageDeliveryAdapter.getDeliveryAdapter().getServiceCategory() + ":" +
                     messageDeliveryAdapter.getDeliveryAdapter().getServiceName() + "].", t);
 
+            if (synchronous) {
+                String protocol = getJbrServerLocatorURI().getScheme();
+                boolean isHttp = (protocol.equals("http") || protocol.equals("https"));
+
+                if(isHttp) {
+                    Map responseMap = invocationRequest.getReturnPayload();
+                    StringWriter stringWriter = new StringWriter();
+
+                    mapHTTPErrorDetails(responseMap, t);
+                    t.printStackTrace(new PrintWriter(stringWriter));
+
+                    return stringWriter.toString();
+                }
+            }
+            
             throw t;
         }
 
@@ -366,6 +382,18 @@
         }
     }
 
+    private void mapHTTPErrorDetails(Map responseMap, Throwable t) {
+        Throwable cause = t.getCause();
+
+        if(cause instanceof SecurityServiceException && cause.getCause() instanceof LoginException) {
+            responseMap.put(HTTPMetadataConstants.RESPONSE_CODE, HttpURLConnection.HTTP_UNAUTHORIZED);
+            responseMap.put(HTTPMetadataConstants.RESPONSE_CODE_MESSAGE, "Invalid Login Credentials.");
+        } else {
+            responseMap.put(HTTPMetadataConstants.RESPONSE_CODE, HttpURLConnection.HTTP_INTERNAL_ERROR);
+            responseMap.put(HTTPMetadataConstants.RESPONSE_CODE_MESSAGE, "Failed to service request.");
+        }
+    }
+
     public void setMBeanServer(MBeanServer mBeanServer) {
     }
 




More information about the jboss-svn-commits mailing list