You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by ga...@apache.org on 2007/07/03 00:45:07 UTC
svn commit: r552618 - in /webservices/axis2/trunk/java/modules/saaj:
src/org/apache/axis2/saaj/SOAPBodyImpl.java
src/org/apache/axis2/saaj/SOAPFaultImpl.java
test/org/apache/axis2/saaj/SOAPFaultTest.java
Author: gawor
Date: Mon Jul 2 15:45:06 2007
New Revision: 552618
URL: http://svn.apache.org/viewvc?view=rev&rev=552618
Log:
handle fault defaults better and remove some code duplication
Modified:
webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyImpl.java
webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPFaultImpl.java
webservices/axis2/trunk/java/modules/saaj/test/org/apache/axis2/saaj/SOAPFaultTest.java
Modified: webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyImpl.java?view=diff&rev=552618&r1=552617&r2=552618
==============================================================================
--- webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyImpl.java (original)
+++ webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyImpl.java Mon Jul 2 15:45:06 2007
@@ -24,8 +24,6 @@
import org.apache.axiom.om.impl.dom.ElementImpl;
import org.apache.axiom.om.impl.dom.NamespaceImpl;
import org.apache.axiom.om.impl.dom.NodeImpl;
-import org.apache.axiom.soap.SOAP11Constants;
-import org.apache.axiom.soap.SOAP12Constants;
import org.apache.axiom.soap.SOAPFactory;
import org.apache.axiom.soap.impl.dom.soap11.SOAP11Factory;
import org.apache.axiom.soap.impl.dom.soap11.SOAP11FaultImpl;
@@ -181,19 +179,14 @@
SOAP11FaultImpl fault =
new SOAP11FaultImpl(omSOAPBody, (SOAPFactory)this.element.getOMFactory());
saajSOAPFault = new SOAPFaultImpl(fault);
- //set a default fault code here.
- saajSOAPFault.setFaultCode(SOAP11Constants.QNAME_SENDER_FAULTCODE);
- //set a default fault string here
- saajSOAPFault.setFaultString("Fault string, and possibly fault code, not set");
} else if (this.element.getOMFactory() instanceof SOAP12Factory) {
SOAP12FaultImpl fault =
new SOAP12FaultImpl(omSOAPBody, (SOAPFactory)this.element.getOMFactory());
saajSOAPFault = new SOAPFaultImpl(fault);
- //set a default fault code here.
- saajSOAPFault.setFaultCode(SOAP12Constants.QNAME_SENDER_FAULTCODE);
- //set a default fault string here
- saajSOAPFault.addFaultReasonText("Fault string, and possibly fault code, not set", Locale.getDefault());
}
+ // set default fault code and string
+ saajSOAPFault.setDefaults();
+
((NodeImpl)omSOAPBody.getFault()).setUserData(SAAJ_NODE, saajSOAPFault, null);
return saajSOAPFault;
}
Modified: webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPFaultImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPFaultImpl.java?view=diff&rev=552618&r1=552617&r2=552618
==============================================================================
--- webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPFaultImpl.java (original)
+++ webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPFaultImpl.java Mon Jul 2 15:45:06 2007
@@ -25,6 +25,7 @@
import org.apache.axiom.om.impl.dom.ElementImpl;
import org.apache.axiom.om.impl.dom.NodeImpl;
import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axiom.soap.SOAP12Constants;
import org.apache.axiom.soap.SOAPFactory;
import org.apache.axiom.soap.SOAPFaultCode;
import org.apache.axiom.soap.SOAPFaultDetail;
@@ -65,6 +66,7 @@
private boolean isDetailAdded;
private Name faultCodeName;
private Locale faultReasonLocale;
+ private boolean defaultsSet;
/** @param fault */
public SOAPFaultImpl(org.apache.axiom.soap.SOAPFault fault) {
@@ -72,6 +74,26 @@
this.fault = fault;
}
+ void setDefaults() throws SOAPException {
+ if (this.element.getOMFactory() instanceof SOAP11Factory) {
+ setFaultCode(SOAP11Constants.QNAME_SENDER_FAULTCODE);
+ } else {
+ setFaultCode(SOAP12Constants.QNAME_SENDER_FAULTCODE);
+ }
+ setFaultString("Fault string, and possibly fault code, not set");
+ defaultsSet = true;
+ }
+
+ void removeDefaults() {
+ if (defaultsSet) {
+ SOAPFaultReason reason = this.fault.getReason();
+ if (reason != null) {
+ reason.detach();
+ }
+ defaultsSet = false;
+ }
+ }
+
/**
* Sets this <CODE>SOAPFault</CODE> object with the given fault code.
* <p/>
@@ -192,36 +214,10 @@
* @see #getFaultString() getFaultString()
*/
public void setFaultString(String faultString) throws SOAPException {
-
- boolean isSoap11 = this.element.getNamespace().getNamespaceURI()
- .equals(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
-
- if (this.fault.getReason() != null) {
- SOAPFaultReason reason = this.fault.getReason();
- if (isSoap11) {
- reason.setText(faultString);
- } else {
- if (reason.getFirstSOAPText() != null) {
- reason.getFirstSOAPText().getFirstOMChild().detach();
- reason.getFirstSOAPText().setText(faultString);
- } else {
- SOAPFaultText text = new SOAP12FaultTextImpl(reason,
- (SOAPFactory)this.element
- .getOMFactory());
- text.setText(faultString);
- reason.addSOAPText(text);
- }
- }
- } else {
- org.apache.axiom.soap.SOAPFactory soapFactory =
- (SOAPFactory)this.element.getOMFactory();
- SOAPFaultReason faultReason = soapFactory.createSOAPFaultReason(fault);
- if (isSoap11) {
- faultReason.setText(faultString);
- } else {
- SOAPFaultText faultText = soapFactory.createSOAPFaultText(faultReason);
- faultText.setText(faultString);
- }
+ if (this.element.getOMFactory() instanceof SOAP11Factory) {
+ setFaultString(faultString, null);
+ } else if (this.element.getOMFactory() instanceof SOAP12Factory) {
+ setFaultString(faultString, Locale.getDefault());
}
}
@@ -325,12 +321,7 @@
if (this.element.getOMFactory() instanceof SOAP11Factory) {
reason.setText(faultString);
} else if (this.element.getOMFactory() instanceof SOAP12Factory) {
- if (reason.getFirstSOAPText() != null) {
- reason.getFirstSOAPText().setText(faultString);
- reason.getFirstSOAPText().setLang(locale.toString());
- } else {
- addFaultReasonText(faultString, locale);
- }
+ addFaultReasonText(faultString, locale);
}
} else {
if (this.element.getOMFactory() instanceof SOAP11Factory) {
@@ -396,6 +387,8 @@
if (this.element.getOMFactory() instanceof SOAP11Factory) {
throw new UnsupportedOperationException("Not supported in SOAP 1.1");
} else if (this.element.getOMFactory() instanceof SOAP12Factory) {
+ removeDefaults();
+
String existingReasonText = getFaultReasonText(locale);
if (existingReasonText == null) {
org.apache.axiom.soap.SOAPFactory soapFactory = null;
@@ -574,7 +567,7 @@
throw new UnsupportedOperationException("Message does not support the " +
"SOAP 1.2 concept of Fault Reason");
} else {
- Iterator soapTextsItr = new ArrayList().iterator();
+ Iterator soapTextsItr = null;
SOAPFaultReason soapFaultReason = this.fault.getReason();
if (soapFaultReason != null) {
List soapTexts = soapFaultReason.getAllSoapTexts();
Modified: webservices/axis2/trunk/java/modules/saaj/test/org/apache/axis2/saaj/SOAPFaultTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/saaj/test/org/apache/axis2/saaj/SOAPFaultTest.java?view=diff&rev=552618&r1=552617&r2=552618
==============================================================================
--- webservices/axis2/trunk/java/modules/saaj/test/org/apache/axis2/saaj/SOAPFaultTest.java (original)
+++ webservices/axis2/trunk/java/modules/saaj/test/org/apache/axis2/saaj/SOAPFaultTest.java Mon Jul 2 15:45:06 2007
@@ -445,9 +445,11 @@
SOAPEnvelope envelope = soapPart.getEnvelope();
SOAPBody body = envelope.getBody();
- SOAPFault sf = body.addFault(SOAPConstants.SOAP_RECEIVER_FAULT, "Its my fault", Locale.ENGLISH);
+ SOAPFault sf = body.addFault();
+
String expected = "Its my fault again";
boolean found = false;
+ sf.addFaultReasonText("Its my fault", Locale.ENGLISH);
sf.addFaultReasonText(expected, Locale.ENGLISH);
Iterator i = sf.getFaultReasonTexts();
int j = 0;
@@ -484,14 +486,14 @@
SOAPPart soapPart = soapMessage.getSOAPPart();
SOAPEnvelope envelope = soapPart.getEnvelope();
SOAPBody body = envelope.getBody();
-
+ SOAPFault sf = body.addFault();
+
String expected1 = "Its my fault";
String expected2 = "Its my fault again";
- SOAPFault sf = body.addFault(SOAPConstants.SOAP_RECEIVER_FAULT, expected1, Locale.UK);
-
boolean found1 = false;
boolean found2 = false;
+ sf.addFaultReasonText(expected1, Locale.UK);
sf.addFaultReasonText(expected2, Locale.ENGLISH);
Iterator i = sf.getFaultReasonTexts();
int j = 0;
@@ -648,7 +650,8 @@
SOAPPart soapPart = soapMessage.getSOAPPart();
SOAPEnvelope envelope = soapPart.getEnvelope();
SOAPBody body = envelope.getBody();
-
+ SOAPFault sf = body.addFault();
+
Locale expected1 = Locale.ENGLISH;
Locale expected2 = Locale.UK;
Locale expected3 = Locale.GERMAN;
@@ -656,9 +659,8 @@
boolean found2 = false;
boolean found3 = false;
- SOAPFault sf = body.addFault(SOAPConstants.SOAP_RECEIVER_FAULT, "Its my fault1", expected1);
-
System.out.println("Adding FaultReasonText to SOAPFault");
+ sf.addFaultReasonText("Its my fault1", expected1);
sf.addFaultReasonText("Its my fault2", expected2);
sf.addFaultReasonText("Its my fault3", expected3);
System.out.println("Getting FaultReasonLocales from SOAPFault");
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org