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;


Reply via email to