You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by di...@apache.org on 2008/04/04 12:32:05 UTC
svn commit: r644671 -
/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/XMLFaultCode.java
Author: dims
Date: Fri Apr 4 03:31:52 2008
New Revision: 644671
URL: http://svn.apache.org/viewvc?rev=644671&view=rev
Log:
Fix for AXIS2-3703 - Thread safety in XMLFaultCode
Modified:
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/XMLFaultCode.java
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/XMLFaultCode.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/XMLFaultCode.java?rev=644671&r1=644670&r2=644671&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/XMLFaultCode.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/XMLFaultCode.java Fri Apr 4 03:31:52 2008
@@ -28,17 +28,79 @@
*
* @see XMLFault
*/
-public enum XMLFaultCode {
+public class XMLFaultCode {
+
+
+ // SENDER -> SOAP 1.2 Sender / SOAP 1.1 Client
+ // RECEIVER -> SOAP 1.2 Receiver / SOAP 1.1 Server
+ // MUSTUNDERSTAND -> SOAP 1.2 MustUnderstand / SOAP 1.1 MustUnderstand
+ // DATAENCODINGUNKNOWN-> SOAP 1.2 DataEncodingUnknown / SOAP 1.1 Server
+ // VERSIONMISMATCH -> SOAP 1.2 VersionMismatch / SOAP 1.1 VersionMismatch
+ // CUSTOM_SOAP11_ONLY -> SOAP 1.2 Receiver / SOAP 1.1 "custom qname"
+
// Rendered as qnames with the following local names
// (the namespace is the corresponding envelope namespace)
- SENDER, // SOAP 1.2 Sender SOAP 1.1 Client
- RECEIVER, // SOAP 1.2 Receiver SOAP 1.1 Server
- MUSTUNDERSTAND, // SOAP 1.2 MustUnderstand SOAP 1.1 MustUnderstand
- DATAENCODINGUNKNOWN, // SOAP 1.2 DataEncodingUnknown SOAP 1.1 Server
- VERSIONMISMATCH, // SOAP 1.2 VersionMismatch SOAP 1.1 VersionMismatch
- CUSTOM_SOAP11_ONLY; // SOAP 1.2 Receiver SOAP 1.1 "custom qname"
+
+ public static final XMLFaultCode SENDER = (new XMLFaultCode() {
+ public QName toQName(String namespace) {
+ String localPart;
+ if (namespace.equals(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI)) {
+ localPart = "Sender";
+ } else {
+ localPart = "Client";
+ }
+ return new QName(namespace, localPart);
+ }
+ });
+
+ public static final XMLFaultCode RECEIVER = (new XMLFaultCode() {
+ public QName toQName(String namespace) {
+ String localPart;
+ if (namespace.equals(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI)) {
+ localPart = "Receiver";
+ } else {
+ localPart = "Server";
+ }
+ return new QName(namespace, localPart);
+ }
+ });
+
+ public static final XMLFaultCode MUSTUNDERSTAND = (new XMLFaultCode() {
+ public QName toQName(String namespace) {
+ return new QName(namespace, "MustUnderstand");
+ }
+ });
+
+ public static final XMLFaultCode DATAENCODINGUNKNOWN = (new XMLFaultCode() {
+ public QName toQName(String namespace) {
+ String localPart;
+ if (namespace.equals(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI)) {
+ localPart = "DataEncodingUnknown";
+ } else {
+ localPart = "Server";
+ }
+ return new QName(namespace, localPart);
+ }
+ });
+
+ public static final XMLFaultCode VERSIONMISMATCH = (new XMLFaultCode() {
+ public QName toQName(String namespace) {
+ return new QName(namespace, "VersionMismatch");
+ }
+ });
+
- private QName customQName = null; // Set only for CUSTOM case
+ private QName faultCode;
+
+ private XMLFaultCode() {
+ }
+
+ public XMLFaultCode(QName faultCode) {
+ if (faultCode == null) {
+ throw new NullPointerException("Null fault code");
+ }
+ this.faultCode = faultCode;
+ }
// Utility Methods
@@ -48,60 +110,8 @@
* @param namespace of the envelope for the protocol
* @return
*/
- public QName toQName(String namespace) {
- if (this == CUSTOM_SOAP11_ONLY) {
- // If this is a CUSTOM code, then respect it for SOAP 1.1 only.
- if (namespace.equals(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI)) {
- // For SOAP 1.2, convert to RECEIVER
- return new QName(namespace, "Receiver");
- } else {
- return this.customQName;
- }
- } else {
- // This is a specification defined qname
- String localPart = null;
- if (namespace.equals(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI)) {
- // SOAP 1.2
- switch (this) {
- case SENDER:
- localPart = "Sender";
- break;
- case RECEIVER:
- localPart = "Receiver";
- break;
- case MUSTUNDERSTAND:
- localPart = "MustUnderstand";
- break;
- case DATAENCODINGUNKNOWN:
- localPart = "DataEncodingUnknown";
- break;
- case VERSIONMISMATCH:
- localPart = "VersionMismatch";
- break;
- }
-
- } else {
- // Assume SOAP 1.1
- switch (this) {
- case SENDER:
- localPart = "Client";
- break;
- case RECEIVER:
- localPart = "Server";
- break;
- case MUSTUNDERSTAND:
- localPart = "MustUnderstand";
- break;
- case DATAENCODINGUNKNOWN:
- localPart = "Server";
- break;
- case VERSIONMISMATCH:
- localPart = "VersionMismatch";
- break;
- }
- }
- return new QName(namespace, localPart);
- }
+ public QName toQName(String protocolNamespace) {
+ return this.faultCode;
}
/**
@@ -135,8 +145,7 @@
} else if (localPart.equalsIgnoreCase("VersionMismatch")) { // Both
xmlFaultCode = VERSIONMISMATCH;
} else {
- xmlFaultCode = CUSTOM_SOAP11_ONLY;
- xmlFaultCode.customQName = qName;
+ xmlFaultCode = new XMLFaultCode(qName);
}
return xmlFaultCode;
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org