Author: veithen
Date: Sun Oct 23 19:35:37 2011
New Revision: 1187957

URL: http://svn.apache.org/viewvc?rev=1187957&view=rev
Log:
Don't attempt to create fault subcodes with SOAP 1.1.

Modified:
    
axis/axis2/java/sandesha/trunk/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java

Modified: 
axis/axis2/java/sandesha/trunk/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/sandesha/trunk/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java?rev=1187957&r1=1187956&r2=1187957&view=diff
==============================================================================
--- 
axis/axis2/java/sandesha/trunk/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java
 (original)
+++ 
axis/axis2/java/sandesha/trunk/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java
 Sun Oct 23 19:35:37 2011
@@ -27,6 +27,7 @@ import javax.xml.namespace.QName;
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.soap.SOAP11Constants;
 import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axiom.soap.SOAP12Version;
 import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axiom.soap.SOAPFactory;
 import org.apache.axiom.soap.SOAPFault;
@@ -35,7 +36,6 @@ import org.apache.axiom.soap.SOAPFaultDe
 import org.apache.axiom.soap.SOAPFaultReason;
 import org.apache.axiom.soap.SOAPFaultSubCode;
 import org.apache.axiom.soap.SOAPFaultText;
-import org.apache.axiom.soap.SOAPFaultValue;
 import org.apache.axiom.soap.SOAPVersion;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.addressing.AddressingConstants;
@@ -372,15 +372,14 @@ public class FaultManager {
        private static void makeMakeConnectionFault(RMMsgContext 
referenceRMMsgContext, FaultData data) throws AxisFault {
                SOAPFactory factory = (SOAPFactory) 
referenceRMMsgContext.getSOAPEnvelope().getOMFactory();
                
+               boolean isSOAP12 = factory.getSOAPVersion() == 
SOAP12Version.getSingleton();
                SOAPFaultCode faultCode = factory.createSOAPFaultCode();
-               SOAPFaultSubCode faultSubCode = 
factory.createSOAPFaultSubCode(faultCode);
-               
-               SOAPFaultValue faultCodeValue = 
factory.createSOAPFaultValue(faultCode);
-               SOAPFaultValue faultSubcodeValue = 
factory.createSOAPFaultValue(faultSubCode);
-               
-               faultSubcodeValue.setText(data.getSubcode());
-
-               faultCode.setSubCode(faultSubCode);
+               QName faultCodeValue = isSOAP12 ? data.getCode() : 
data.getSubcode();
+               faultCode.setValue(faultCodeValue);
+               if (isSOAP12) {
+               SOAPFaultSubCode faultSubCode = 
factory.createSOAPFaultSubCode(faultCode);
+                   faultSubCode.setValue(data.getSubcode());
+               }
                
                SOAPFaultReason reason = factory.createSOAPFaultReason();
                SOAPFaultText reasonText = factory.createSOAPFaultText();
@@ -390,26 +389,22 @@ public class FaultManager {
                if (data.getDetail() != null)
                        detail.addDetailEntry(data.getDetail());
                
-               String SOAPNamespaceValue = factory.getSoapVersionURI();
-               
-               if 
(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(SOAPNamespaceValue)) {
+               if (isSOAP12) {
                         reasonText.setLang(Sandesha2Constants.LANG_EN);
                        reason.addSOAPText(reasonText);
                        
referenceRMMsgContext.setProperty(SOAP12Constants.SOAP_FAULT_CODE_LOCAL_NAME, 
faultCode);
                        
referenceRMMsgContext.setProperty(SOAP12Constants.SOAP_FAULT_REASON_LOCAL_NAME, 
reason);
                        
referenceRMMsgContext.setProperty(SOAP12Constants.SOAP_FAULT_DETAIL_LOCAL_NAME, 
detail);
-                       faultCodeValue.setText(data.getCode());
                        
-               } else if (SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals 
(SOAPNamespaceValue)) {
+               } else {
                        reason.setText(data.getReason());
                        
referenceRMMsgContext.setProperty(SOAP11Constants.SOAP_FAULT_CODE_LOCAL_NAME, 
faultCode);
                        
referenceRMMsgContext.setProperty(SOAP11Constants.SOAP_FAULT_DETAIL_LOCAL_NAME, 
detail);
                        
referenceRMMsgContext.setProperty(SOAP11Constants.SOAP_FAULT_STRING_LOCAL_NAME, 
reason);
-                       faultCodeValue.setText(data.getSubcode());
                        
                }
                
-               AxisFault fault = new 
AxisFault(faultCodeValue.getTextAsQName(), data.getReason(), "", "", 
data.getDetail());
+               AxisFault fault = new AxisFault(faultCodeValue, 
data.getReason(), "", "", data.getDetail());
                
fault.setFaultAction(Sandesha2Constants.SPEC_2007_02.Actions.MC_FAULT);
                
                //if this is throwable throwing it out, else we will log here.
@@ -518,16 +513,11 @@ public class FaultManager {
                SOAPFactory factory = (SOAPFactory) 
referenceRMMsgContext.getSOAPEnvelope().getOMFactory();
                
                SOAPFaultCode faultCode = factory.createSOAPFaultCode();
-               SOAPFaultSubCode faultSubCode = 
factory.createSOAPFaultSubCode(faultCode);
-               
-               SOAPFaultValue faultCodeValue = 
factory.createSOAPFaultValue(faultCode);
-               SOAPFaultValue faultSubcodeValue = 
factory.createSOAPFaultValue(faultSubCode);
-               
-               faultCodeValue.setText(data.getCode());
-               
-               faultSubcodeValue.setText(data.getSubcode());
-
-               faultCode.setSubCode(faultSubCode);
+               faultCode.setValue(data.getCode());
+               if (factory.getSOAPVersion() == SOAP12Version.getSingleton()) {
+               SOAPFaultSubCode faultSubCode = 
factory.createSOAPFaultSubCode(faultCode);
+                   faultSubCode.setValue(data.getSubcode());
+               }
                
                SOAPFaultReason reason = factory.createSOAPFaultReason();
                SOAPFaultText reasonText = factory.createSOAPFaultText();
@@ -546,7 +536,7 @@ public class FaultManager {
                        
referenceRMMsgContext.setProperty(SOAP12Constants.SOAP_FAULT_REASON_LOCAL_NAME, 
reason);
                        
referenceRMMsgContext.setProperty(SOAP12Constants.SOAP_FAULT_DETAIL_LOCAL_NAME, 
detail);
                        
-                       AxisFault fault = new 
AxisFault(faultCodeValue.getTextAsQName(), data.getReason(), "", "", 
data.getDetail());
+                       AxisFault fault = new AxisFault(data.getCode(), 
data.getReason(), "", "", data.getDetail());
                        
fault.setFaultAction(SpecSpecificConstants.getAddressingFaultAction(referenceRMMsgContext.getRMSpecVersion()));
                        
                        //if this is throwable throwing it out, else we will 
log here.
@@ -600,14 +590,14 @@ public class FaultManager {
                                                        
TransportUtils.setResponseWritten(referenceRMMsgContext.getMessageContext(), 
true);
                                                }
                                        } catch (Exception e) {
-                                               AxisFault fault = new 
AxisFault(faultCodeValue.getTextAsQName(), data.getReason(), "", "", 
data.getDetail());
+                                               AxisFault fault = new 
AxisFault(data.getCode(), data.getReason(), "", "", data.getDetail());
                                                String message = 
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.couldNotSendFaultDueToException,
 fault.getMessage(), e.getMessage());
                                                log.error(message);
                                        }       
                                }
                                else
                                {
-                                       AxisFault fault = new 
AxisFault(faultCodeValue.getTextAsQName(), data.getReason(), "", "", 
data.getDetail());
+                                       AxisFault fault = new 
AxisFault(data.getCode(), data.getReason(), "", "", data.getDetail());
                                        String message = 
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.couldNotSendFaultDueToException,
 fault.getMessage());
                                        log.error(message);
                                }


Reply via email to