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 am...@apache.org on 2011/02/18 11:58:08 UTC

svn commit: r1071959 - /axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/AxisService2WSDL11.java

Author: amilas
Date: Fri Feb 18 10:58:08 2011
New Revision: 1071959

URL: http://svn.apache.org/viewvc?rev=1071959&view=rev
Log:
applied the patch for AXIS2-4956

Modified:
    axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/AxisService2WSDL11.java

Modified: axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/AxisService2WSDL11.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/AxisService2WSDL11.java?rev=1071959&r1=1071958&r2=1071959&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/AxisService2WSDL11.java (original)
+++ axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/AxisService2WSDL11.java Fri Feb 18 10:58:08 2011
@@ -275,19 +275,53 @@ public class AxisService2WSDL11 implemen
 			}
 
 			// generate fault Messages
-			ArrayList faultyMessages = axisOperation.getFaultMessages();
+			ArrayList<AxisMessage> faultyMessages = this.extractWSDL11FaultMessages(axisOperation);
 			if (faultyMessages != null) {
-                for (Object faultyMessage : faultyMessages) {
-                    AxisMessage axisMessage = (AxisMessage)faultyMessage;
-                    String name = axisMessage.getName();
+                for (AxisMessage faultyMessage : faultyMessages) {
+                    String name = faultyMessage.getName();
                     if (faultMessageNames.add(name)) {
-                        writeMessage(axisMessage, fac, defintions);
-                        generateHeaderMessages(axisMessage, fac, defintions);
+                        writeMessage(faultyMessage, fac, defintions);
+                        generateHeaderMessages(faultyMessage, fac, defintions);
                     }
                 }
 			}
 		}
 	}
+	
+	/**
+	 * Checks if the given MEP is supported for containing fault messages.
+	 */
+	private boolean isWSDL11FaultyMessagesValidForMEP(String mepURI) {
+		return !(WSDL2Constants.MEP_URI_IN_ONLY.equals(mepURI) || 
+				WSDL2Constants.MEP_URI_ROBUST_IN_ONLY.equals(mepURI));
+	}
+	
+	/**
+	 * Return the fault messages only if it's not an in-only operation.
+	 * For WSDL11 generation, the fault messages must be not present in the operation,
+	 * as mentioned in <link>http://www.w3.org/TR/wsdl#_one-way</link>.
+	 */
+	private ArrayList<AxisMessage> extractWSDL11FaultMessages(AxisOperation axisOperation) {
+		String mepURI = axisOperation.getMessageExchangePattern();
+		if (this.isWSDL11FaultyMessagesValidForMEP(mepURI)) {
+			return axisOperation.getFaultMessages();
+		} else {
+			return new ArrayList<AxisMessage>();
+		}
+	}
+	
+	/**
+	 * @see AxisService2WSDL11#extractWSDL11FaultMessages(AxisOperation)
+	 */
+	private ArrayList<AxisBindingMessage> extractWSDL11FaultMessages(
+			AxisBindingOperation axisBindingOperation) {
+		String mepURI = axisBindingOperation.getAxisOperation().getMessageExchangePattern();
+		if (this.isWSDL11FaultyMessagesValidForMEP(mepURI)) {
+			return axisBindingOperation.getFaults();
+		} else {
+			return new ArrayList<AxisBindingMessage>();
+		}
+	}
 
 	private void generateHeaderMessages(AxisMessage axismessage, OMFactory fac,
 			OMElement defintions) {
@@ -421,21 +455,20 @@ public class AxisService2WSDL11 implemen
 			}
 
 			// generate fault Messages
-			ArrayList faultMessages = axisOperation.getFaultMessages();
+			ArrayList<AxisMessage> faultMessages = this.extractWSDL11FaultMessages(axisOperation);
 			if (faultMessages != null) {
-                for (Object faultMessage : faultMessages) {
-                    AxisMessage faultyMessage = (AxisMessage)faultMessage;
+                for (AxisMessage faultMessage : faultMessages) {
                     OMElement fault = fac.createOMElement(FAULT_LOCAL_NAME, wsdl);
-                    WSDLSerializationUtil.addWSDLDocumentationElement(faultyMessage,
+                    WSDLSerializationUtil.addWSDLDocumentationElement(faultMessage,
                                                                       fault,
                                                                       fac,
                                                                       wsdl);
                     fault.addAttribute(MESSAGE_LOCAL_NAME, tns.getPrefix()
-                                                           + ":" + faultyMessage.getName(), null);
-                    fault.addAttribute(ATTRIBUTE_NAME, faultyMessage.getName(), null);
+                                                           + ":" + faultMessage.getName(), null);
+                    fault.addAttribute(ATTRIBUTE_NAME, faultMessage.getName(), null);
                     WSDLSerializationUtil.addWSAWActionAttribute(fault,
                                                                  axisOperation.getFaultAction(
-                                                                         faultyMessage.getName()),
+                                                                		 faultMessage.getName()),
                                                                  wsaw);
                     // TODO add policies for fault messages
                     operation.addChild(fault);
@@ -864,7 +897,7 @@ public class AxisService2WSDL11 implemen
 			}
 
 			// generate fault Messages
-			ArrayList faultyMessages = axisBindingOperation.getFaults();
+			ArrayList faultyMessages = this.extractWSDL11FaultMessages(axisBindingOperation);
 			if (faultyMessages != null) {
                 for (Object faultyMessage1 : faultyMessages) {
                     AxisBindingMessage bindingFaultyMessage = (AxisBindingMessage)faultyMessage1;
@@ -1003,7 +1036,7 @@ public class AxisService2WSDL11 implemen
 			}
 
 			// generate fault Messages
-			ArrayList faultyMessages = axisBindingOperation.getFaults();
+			ArrayList faultyMessages = this.extractWSDL11FaultMessages(axisBindingOperation);
 			if (faultyMessages != null) {
                 for (Object faultyMessage1 : faultyMessages) {
                     AxisBindingMessage bindingFaultyMessage = (AxisBindingMessage)faultyMessage1;