jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/ElementFactory.java
--- a/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/ElementFactory.java Fri Feb 10 00:39:51 2017 -0800
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/ElementFactory.java Thu Feb 16 13:14:39 2017 +0300
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -30,8 +30,22 @@
import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
-import com.sun.xml.internal.messaging.saaj.soap.ver1_1.*;
-import com.sun.xml.internal.messaging.saaj.soap.ver1_2.*;
+import com.sun.xml.internal.messaging.saaj.soap.ver1_1.Body1_1Impl;
+import com.sun.xml.internal.messaging.saaj.soap.ver1_1.Detail1_1Impl;
+import com.sun.xml.internal.messaging.saaj.soap.ver1_1.Envelope1_1Impl;
+import com.sun.xml.internal.messaging.saaj.soap.ver1_1.Fault1_1Impl;
+import com.sun.xml.internal.messaging.saaj.soap.ver1_1.FaultElement1_1Impl;
+import com.sun.xml.internal.messaging.saaj.soap.ver1_1.Header1_1Impl;
+import com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPPart1_1Impl;
+import com.sun.xml.internal.messaging.saaj.soap.ver1_2.Body1_2Impl;
+import com.sun.xml.internal.messaging.saaj.soap.ver1_2.Detail1_2Impl;
+import com.sun.xml.internal.messaging.saaj.soap.ver1_2.Envelope1_2Impl;
+import com.sun.xml.internal.messaging.saaj.soap.ver1_2.Fault1_2Impl;
+import com.sun.xml.internal.messaging.saaj.soap.ver1_2.Header1_2Impl;
+import com.sun.xml.internal.messaging.saaj.soap.ver1_2.SOAPPart1_2Impl;
+import org.w3c.dom.Element;
+
+import java.util.Objects;
public class ElementFactory {
@@ -54,6 +68,72 @@
name.getNamespaceURI());
}
+ /**
+ * Create element wrapper for existing DOM element.
+ *
+ * @param ownerDocument SOAP document wrapper not null
+ * @param element DOM element not null
+ * @return SOAP wrapper for DOM element
+ */
+ public static SOAPElement createElement(SOAPDocumentImpl ownerDocument, Element element) {
+ Objects.requireNonNull(ownerDocument);
+ Objects.requireNonNull(element);
+
+ String localName = element.getLocalName();
+ String namespaceUri = element.getNamespaceURI();
+ String prefix = element.getPrefix();
+
+ if ("Envelope".equalsIgnoreCase(localName)) {
+ if (NameImpl.SOAP11_NAMESPACE.equals(namespaceUri)) {
+ return new Envelope1_1Impl(ownerDocument, element);
+ } else if (NameImpl.SOAP12_NAMESPACE.equals(namespaceUri)) {
+ return new Envelope1_2Impl(ownerDocument, element);
+ }
+ }
+ if ("Body".equalsIgnoreCase(localName)) {
+ if (NameImpl.SOAP11_NAMESPACE.equals(namespaceUri)) {
+ return new Body1_1Impl(ownerDocument, element);
+ } else if (NameImpl.SOAP12_NAMESPACE.equals(namespaceUri)) {
+ return new Body1_2Impl(ownerDocument, element);
+ }
+ }
+ if ("Header".equalsIgnoreCase(localName)) {
+ if (NameImpl.SOAP11_NAMESPACE.equals(namespaceUri)) {
+ return new Header1_1Impl(ownerDocument, element);
+ } else if (NameImpl.SOAP12_NAMESPACE.equals(namespaceUri)) {
+ return new Header1_2Impl(ownerDocument, element);
+ }
+ }
+ if ("Fault".equalsIgnoreCase(localName)) {
+ if (NameImpl.SOAP11_NAMESPACE.equals(namespaceUri)) {
+ return new Fault1_1Impl(element, ownerDocument);
+ } else if (NameImpl.SOAP12_NAMESPACE.equals(namespaceUri)) {
+ return new Fault1_2Impl(element, ownerDocument);
+ }
+
+ }
+ if ("Detail".equalsIgnoreCase(localName)) {
+ if (NameImpl.SOAP11_NAMESPACE.equals(namespaceUri)) {
+ return new Detail1_1Impl(ownerDocument, element);
+ } else if (NameImpl.SOAP12_NAMESPACE.equals(namespaceUri)) {
+ return new Detail1_2Impl(ownerDocument, element);
+ }
+ }
+ if ("faultcode".equalsIgnoreCase(localName)
+ || "faultstring".equalsIgnoreCase(localName)
+ || "faultactor".equalsIgnoreCase(localName)) {
+ // SOAP 1.2 does not have fault(code/string/actor)
+ // So there is no else case required
+ if (NameImpl.SOAP11_NAMESPACE.equals(namespaceUri)) {
+ return new FaultElement1_1Impl(ownerDocument,
+ localName,
+ prefix);
+ }
+ }
+
+ return new ElementImpl(ownerDocument, element);
+ }
+
public static SOAPElement createElement(
SOAPDocumentImpl ownerDocument,
String localName,
@@ -92,28 +172,28 @@
prefix = NameImpl.SOAP_ENVELOPE_PREFIX;
}
- if (localName.equalsIgnoreCase("Envelope")) {
+ if ("Envelope".equalsIgnoreCase(localName)) {
if (NameImpl.SOAP11_NAMESPACE.equals(namespaceUri)) {
return new Envelope1_1Impl(ownerDocument, prefix);
} else if (NameImpl.SOAP12_NAMESPACE.equals(namespaceUri)) {
return new Envelope1_2Impl(ownerDocument, prefix);
}
}
- if (localName.equalsIgnoreCase("Body")) {
+ if ("Body".equalsIgnoreCase(localName)) {
if (NameImpl.SOAP11_NAMESPACE.equals(namespaceUri)) {
return new Body1_1Impl(ownerDocument, prefix);
} else if (NameImpl.SOAP12_NAMESPACE.equals(namespaceUri)) {
return new Body1_2Impl(ownerDocument, prefix);
}
}
- if (localName.equalsIgnoreCase("Header")) {
+ if ("Header".equalsIgnoreCase(localName)) {
if (NameImpl.SOAP11_NAMESPACE.equals(namespaceUri)) {
return new Header1_1Impl(ownerDocument, prefix);
} else if (NameImpl.SOAP12_NAMESPACE.equals(namespaceUri)) {
return new Header1_2Impl(ownerDocument, prefix);
}
}
- if (localName.equalsIgnoreCase("Fault")) {
+ if ("Fault".equalsIgnoreCase(localName)) {
SOAPFault fault = null;
if (NameImpl.SOAP11_NAMESPACE.equals(namespaceUri)) {
fault = new Fault1_1Impl(ownerDocument, prefix);
@@ -139,16 +219,16 @@
}
}
- if (localName.equalsIgnoreCase("Detail")) {
+ if ("Detail".equalsIgnoreCase(localName)) {
if (NameImpl.SOAP11_NAMESPACE.equals(namespaceUri)) {
return new Detail1_1Impl(ownerDocument, prefix);
} else if (NameImpl.SOAP12_NAMESPACE.equals(namespaceUri)) {
return new Detail1_2Impl(ownerDocument, prefix);
}
}
- if (localName.equalsIgnoreCase("faultcode")
- || localName.equalsIgnoreCase("faultstring")
- || localName.equalsIgnoreCase("faultactor")) {
+ if ("faultcode".equalsIgnoreCase(localName)
+ || "faultstring".equalsIgnoreCase(localName)
+ || "faultactor".equalsIgnoreCase(localName)) {
// SOAP 1.2 does not have fault(code/string/actor)
// So there is no else case required
if (NameImpl.SOAP11_NAMESPACE.equals(namespaceUri)) {