You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@axis.apache.org by ba...@apache.org on 2011/01/14 20:02:47 UTC

svn commit: r1059115 - in /axis/axis2/java/core/trunk/modules: jaxws/src/org/apache/axis2/jaxws/server/dispatcher/ kernel/src/org/apache/axis2/addressing/wsdl/ kernel/src/org/apache/axis2/description/

Author: barrettj
Date: Fri Jan 14 19:02:46 2011
New Revision: 1059115

URL: http://svn.apache.org/viewvc?rev=1059115&view=rev
Log:
AXIS2-4922.  Patch contributed by Katherine Sanders.  Fixes to WS-A metadata action code.

Modified:
    axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaDispatcher.java
    axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/addressing/wsdl/WSDL11ActionHelper.java
    axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java

Modified: axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaDispatcher.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaDispatcher.java?rev=1059115&r1=1059114&r2=1059115&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaDispatcher.java (original)
+++ axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaDispatcher.java Fri Jan 14 19:02:46 2011
@@ -300,11 +300,23 @@ public abstract class JavaDispatcher imp
                                                  MessageContext response) {
          AxisOperation operation = request.getOperationDescription().getAxisOperation();
          if (operation != null) {
-             exception = ClassUtils.getRootCause(exception);        
-             String action = operation.getFaultAction(exception.getClass().getName());
-             
-             if (action != null)
+             exception = ClassUtils.getRootCause(exception);
+             String className = exception.getClass().getName();
+             String action = operation.getFaultAction(className);
+             if (action == null) {
+                 className = className.substring((className.lastIndexOf('.'))+1);
+                 action = operation.getFaultAction(className);
+             }
+             if (log.isDebugEnabled()) {
+                 for(String faultActionName : operation.getFaultActionNames())
+                     log.debug("Fault action map entry: key = "  + faultActionName + ", value = " + operation.getFaultAction(faultActionName));
+             }
+             if (action != null) {
+                 if (log.isDebugEnabled()) {
+                     log.debug("Setting fault action " + action + " for Exception: "+className);
+                 }
                  response.getAxisMessageContext().setWSAAction(action);
+             }
          }
     }
     

Modified: axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/addressing/wsdl/WSDL11ActionHelper.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/addressing/wsdl/WSDL11ActionHelper.java?rev=1059115&r1=1059114&r2=1059115&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/addressing/wsdl/WSDL11ActionHelper.java (original)
+++ axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/addressing/wsdl/WSDL11ActionHelper.java Fri Jan 14 19:02:46 2011
@@ -63,7 +63,7 @@ public class WSDL11ActionHelper {
     public static String getActionFromInputElement(Definition def, PortType wsdl4jPortType,
                                                    Operation op, Input input) {
         String result = getWSAWActionExtensionAttribute(input);
-        if (result == null) {
+        if (result == null || result.equals("")) {
             result = WSDL11DefaultActionPatternHelper
                     .generateActionFromInputElement(def, wsdl4jPortType, op, input);
         }
@@ -83,7 +83,7 @@ public class WSDL11ActionHelper {
     public static String getActionFromOutputElement(Definition def, PortType wsdl4jPortType,
                                                     Operation op, Output output) {
         String result = getWSAWActionExtensionAttribute(output);
-        if (result == null) {
+        if (result == null || result.equals("")) {
             result = WSDL11DefaultActionPatternHelper
                     .generateActionFromOutputElement(def, wsdl4jPortType, op, output);
         }
@@ -103,7 +103,7 @@ public class WSDL11ActionHelper {
     public static String getActionFromFaultElement(Definition def, PortType wsdl4jPortType,
                                                    Operation op, Fault fault) {
         String result = getWSAWActionExtensionAttribute(fault);
-        if (result == null) {
+        if (result == null || result.equals("")) {
             result = WSDL11DefaultActionPatternHelper
                     .generateActionFromFaultElement(def, wsdl4jPortType, op, fault);
         }

Modified: axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java?rev=1059115&r1=1059114&r2=1059115&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java (original)
+++ axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java Fri Jan 14 19:02:46 2011
@@ -1545,6 +1545,37 @@ public class WSDL11ToAxisServiceBuilder 
             if (action != null) {
                 axisOperation.addFaultAction(fault.getName(), action);
             }
+            
+            // Also add mapping from Exception name to fault action
+            String faultMessageName = axisFaultMessage.getName();
+            if (null != faultMessageName) {
+                char firstChar = faultMessageName.charAt(0);
+                String upperChar = String.valueOf(firstChar).toUpperCase();
+                String nameWithoutFirstChar = faultMessageName.substring(1);
+                String exceptionClassName = upperChar.concat(nameWithoutFirstChar);
+                if (log.isDebugEnabled()) {
+                    log.debug("Searching for fault action using faultMessageName = "+faultMessageName+", exceptionClassName = "+exceptionClassName);
+                }
+            
+                String faultAction = axisOperation.getFaultAction(exceptionClassName);
+                if (faultAction == null) {
+                    faultAction = WSDL11ActionHelper.getActionFromFaultElement(dif,
+                                                                          wsdl4jPortType,
+                                                                          wsdl4jOperation, fault);
+                    if (log.isDebugEnabled()) {
+                        log.debug("Fault action didn't previously exist, getting it from WSDL: "+faultAction);
+                    }
+                }
+                if (faultAction != null) {
+                    axisOperation.addFaultAction(exceptionClassName, faultAction);
+                    axisOperation.addFaultAction(exceptionClassName+"_Exception", faultAction);
+                    if (log.isDebugEnabled()) {
+                        log.debug("Adding fault action entry: "+exceptionClassName+"="+faultAction);
+                        log.debug("Adding fault action entry: "+exceptionClassName+"_Exception"+"="+faultAction);
+                    }
+                }
+            }
+            
             axisOperation.setFaultMessages(axisFaultMessage);
         }
         return axisOperation;