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;