changeset 368:a5e7c2f093c9 jdk8-b86

Merge
author lana
date Tue, 16 Apr 2013 08:11:41 -0700
parents 26c840af7720 0989ad8c0860
children 8abe95530f58 ebbd87e3a8b2
files src/share/jaxws_classes/com/sun/tools/internal/ws/wscompile/DefaultAuthenticator.java src/share/jaxws_classes/com/sun/tools/internal/xjc/api/impl/j2s/JAXBModelImpl.java src/share/jaxws_classes/com/sun/tools/internal/xjc/api/impl/j2s/JavaCompilerImpl.java src/share/jaxws_classes/com/sun/tools/internal/xjc/generator/annotation/ri/OverrideAnnotationOfWriter.java src/share/jaxws_classes/com/sun/tools/internal/xjc/generator/annotation/ri/XmlIsSetWriter.java src/share/jaxws_classes/com/sun/tools/internal/xjc/generator/annotation/ri/XmlLocationWriter.java src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/output/InPlaceDOMOutput.java src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/ws/EnvelopeStyle.java src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/ws/EnvelopeStyleFeature.java src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/ws/databinding/Databinding.java src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/ws/databinding/DatabindingFactory.java src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/ws/databinding/DatabindingMode.java src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/ws/databinding/DatabindingModeFeature.java src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/ws/databinding/JavaCallInfo.java src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/ws/message/ContentType.java src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/ws/message/DistributedPropertySet.java src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/ws/message/MessageContext.java src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/ws/message/MessageContextFactory.java src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/ws/message/PropertySet.java src/share/jaxws_classes/com/sun/xml/internal/ws/util/ReadOnlyPropertyException.java src/share/jaxws_classes/com/sun/xml/internal/ws/util/localization/Localizable.java src/share/jaxws_classes/com/sun/xml/internal/ws/util/localization/LocalizableImpl.java src/share/jaxws_classes/com/sun/xml/internal/ws/util/localization/LocalizableMessage.java src/share/jaxws_classes/com/sun/xml/internal/ws/util/localization/LocalizableMessageFactory.java src/share/jaxws_classes/com/sun/xml/internal/ws/util/localization/Localizer.java src/share/jaxws_classes/com/sun/xml/internal/ws/util/localization/NullLocalizable.java
diffstat 2136 files changed, 68717 insertions(+), 11427 deletions(-) [+]
line wrap: on
line diff
--- a/makefiles/BuildJaxws.gmk	Thu Apr 11 09:40:09 2013 -0700
+++ b/makefiles/BuildJaxws.gmk	Tue Apr 16 08:11:41 2013 -0700
@@ -55,7 +55,8 @@
 		BIN:=$(JAXWS_OUTPUTDIR)/jaxws_classes,\
 		COPY:=.xsd,\
 		COPY_FILES:=$(JAXWS_TOPDIR)/src/share/jaxws_classes/com/sun/tools/internal/xjc/runtime/JAXBContextFactory.java \
-			    $(JAXWS_TOPDIR)/src/share/jaxws_classes/com/sun/tools/internal/xjc/runtime/ZeroOneBooleanAdapter.java,\
+			    $(JAXWS_TOPDIR)/src/share/jaxws_classes/com/sun/tools/internal/xjc/runtime/ZeroOneBooleanAdapter.java \
+  			    $(JAXWS_TOPDIR)/src/share/jaxws_classes/com/sun/xml/internal/ws/assembler/jaxws-tubes-default.xml,\
 		ADD_JAVAC_FLAGS=-cp $(OUTPUT_ROOT)/jaxp/dist/lib/classes.jar))
 
 $(JAXWS_OUTPUTDIR)/jaxws_classes/META-INF/services/com.sun.tools.internal.ws.wscompile.Plugin: \
@@ -98,7 +99,7 @@
 
 $(eval $(call SetupArchive,ARCHIVE_JAXWS,$(BUILD_JAXWS) $(BUILD_JAF) $(TARGET_PROP_FILES),\
 		SRCS:=$(JAXWS_OUTPUTDIR)/jaxws_classes $(JAXWS_OUTPUTDIR)/jaf_classes,\
-		SUFFIXES:=.class .properties .xsd .java \
+		SUFFIXES:=.class .properties .xsd .xml .java \
 			  com.sun.mirror.apt.AnnotationProcessorFactory \
                           com.sun.tools.internal.xjc.Plugin,\
 		JAR:=$(JAXWS_OUTPUTDIR)/dist/lib/classes.jar))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/jaxws_classes/com/oracle/webservices/internal/api/EnvelopeStyle.java	Tue Apr 16 08:11:41 2013 -0700
@@ -0,0 +1,126 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * http://glassfish.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.oracle.webservices.internal.api;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+import javax.xml.ws.http.HTTPBinding;
+import javax.xml.ws.soap.SOAPBinding;
+import javax.xml.ws.spi.WebServiceFeatureAnnotation;
+
+/**
+ * The EnvelopeStyle annotation is used to specify the message envelope style(s)
+ * for a web service endpoint implementation class. To smooth the migration from
+ * the BindingType annotation to this EnvelopeStyle annotation, each of the
+ * styles is mapped to a binding identifier defined in JAX-WS specification.
+ * Though a binding identifier includes both the envelope style and transport,
+ * an envelope style defined herein does NOT imply or mandate any transport protocol
+ * to be use together; HTTP is the default transport. An implementation may
+ * chose to support other transport with any of the envelope styles.
+ *
+ * This annotation may be overriden programmatically or via deployment
+ * descriptors, depending on the platform in use.
+ *
+ * @author shih-chang.chen@oracle.com
+ */
+@WebServiceFeatureAnnotation(id="", bean=com.oracle.webservices.internal.api.EnvelopeStyleFeature.class)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface EnvelopeStyle {
+
+    /**
+     * The envelope styles. If not specified, the default is the SOAP 1.1.
+     *
+     * @return The enveloping styles
+     */
+    Style[] style() default { Style.SOAP11 };
+
+    public enum Style {
+
+        /**
+         * SOAP1.1. For JAX-WS, this is mapped from:
+         * javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_BINDING
+         */
+        SOAP11(SOAPBinding.SOAP11HTTP_BINDING),
+
+        /**
+         * SOAP1.2. For JAX-WS, this is mapped from:
+         * javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING
+         */
+        SOAP12(SOAPBinding.SOAP12HTTP_BINDING),
+
+        /**
+         * The raw XML. For JAX-WS, this is mapped from:
+         * javax.xml.ws.http.HTTPBinding.HTTP_BINDING
+         */
+        XML(HTTPBinding.HTTP_BINDING);
+
+        /**
+         * The BindingID used by the BindingType annotation.
+         */
+        public final String bindingId;
+
+        private Style(String id) {
+            bindingId = id;
+        }
+
+        /**
+         * Checks if the style is SOAP 1.1.
+         *
+         * @return true if the style is SOAP 1.1.
+         */
+        public boolean isSOAP11() { return this.equals(SOAP11); }
+
+        /**
+         * Checks if the style is SOAP 1.2.
+         *
+         * @return true if the style is SOAP 1.2.
+         */
+        public boolean isSOAP12() { return this.equals(SOAP12); }
+
+        /**
+         * Checks if the style is XML.
+         *
+         * @return true if the style is XML.
+         */
+        public boolean isXML() { return this.equals(XML); }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/jaxws_classes/com/oracle/webservices/internal/api/EnvelopeStyleFeature.java	Tue Apr 16 08:11:41 2013 -0700
@@ -0,0 +1,60 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * http://glassfish.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.oracle.webservices.internal.api;
+
+import javax.xml.ws.WebServiceFeature;
+
+public class EnvelopeStyleFeature extends WebServiceFeature {
+
+    private EnvelopeStyle.Style[] styles;
+
+    public EnvelopeStyleFeature(EnvelopeStyle.Style... s) {
+        styles = s;
+    }
+
+    public EnvelopeStyle.Style[] getStyles() {
+        return styles;
+    }
+
+    public String getID() {
+        return EnvelopeStyleFeature.class.getName();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/jaxws_classes/com/oracle/webservices/internal/api/databinding/Databinding.java	Tue Apr 16 08:11:41 2013 -0700
@@ -0,0 +1,262 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * http://glassfish.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.oracle.webservices.internal.api.databinding;
+
+import java.lang.reflect.Method;
+import java.net.URL;
+
+import javax.xml.namespace.QName;
+import javax.xml.transform.Source;
+import javax.xml.ws.WebServiceFeature;
+
+import org.xml.sax.EntityResolver;
+
+import com.oracle.webservices.internal.api.message.MessageContext;
+
+/**
+ * {@code Databinding} is the entry point for all the WebService Databinding
+ * functionality. Primarily, a Databinding is to serialize/deserialize an
+ * XML(SOAP) message to/from a JAVA method invocation and return which are
+ * represented as <code>JavaCallInfo</code> instances. A WSDLGenerator can
+ * be created from a Databinding object to genreate WSDL representation of
+ * a JAVA service endpoint interface.
+ * <p>
+ * </p>
+ * The supported databinding modes(flavors) are:
+ * <ul>
+ * <li>"toplink.jaxb"</li>
+ * <li>"glassfish.jaxb"</li>
+ * </ul>
+ * <blockquote> Following is an example that creates a {@code Databinding} which
+ * provides the operations to serialize/deserialize a JavaCallInfo to/from a
+ * SOAP message:<br/>
+ *
+ * <pre>
+ * DatabindingFactory factory = DatabindingFactory.newInstance();
+ * Databinding.Builder builder = factory.createBuilder(seiClass, endpointClass);
+ * Databinding databinding = builder.build();
+ * </pre>
+ *
+ * </blockquote>
+ *
+ * @see com.oracle.webservices.internal.api.databinding.DatabindingFactory
+ *
+ * @author shih-chang.chen@oracle.com
+ */
+public interface Databinding {
+
+        /**
+         * Creates a new instance of a <code>JavaCallInfo</code>.
+         *
+     * @param method The JAVA method
+     * @param args The parameter objects
+         *
+         * @return New instance of a <code>JavaCallInfo</code>
+         */
+        JavaCallInfo createJavaCallInfo(Method method, Object[] args);
+
+        /**
+         * Serializes a JavaCallInfo instance representing a JAVA method call to a
+         * request XML(SOAP) message.
+         *
+         * @param call The JavaCallInfo representing a method call
+         *
+         * @return The request XML(SOAP) message
+         */
+        MessageContext serializeRequest(JavaCallInfo call);
+
+        /**
+         * Deserializes a response XML(SOAP) message to a JavaCallInfo instance
+         * representing the return value or exception of a JAVA method call.
+         *
+         * @param message The response message
+         * @param call The JavaCallInfo instance to be updated
+         *
+         * @return The JavaCallInfo updated with the return value or exception of a
+         *         JAVA method call
+         */
+        JavaCallInfo deserializeResponse(MessageContext message, JavaCallInfo call);
+
+        /**
+         * Deserializes a request XML(SOAP) message to a JavaCallInfo instance
+         * representing a JAVA method call.
+         *
+         * @param message The request message
+         *
+         * @return The JavaCallInfo representing a method call
+         */
+        JavaCallInfo deserializeRequest(MessageContext message);
+
+        /**
+         * Serializes a JavaCallInfo instance representing the return value or
+         * exception of a JAVA method call to a response XML(SOAP) message.
+         *
+         * @param call The JavaCallInfo representing the return value or exception
+         *             of a JAVA method call
+         *
+         * @return The response XML(SOAP) message
+         */
+        MessageContext serializeResponse(JavaCallInfo call);
+
+    /**
+     * Gets the MessageContextFactory
+     *
+     * @return The MessageContextFactory
+     */
+//Wait for WLS/src1212 - wls.jaxrpc wrapper
+//      MessageContextFactory getMessageContextFactory();
+
+        /**
+         * {@code Databinding.Builder}, created from the DatabindingFactory, is used to
+         * configure how a Databinding instance is to be built from this builder.
+         *
+     * @see com.oracle.webservices.internal.api.databinding.DatabindingFactory
+         * @author shih-chang.chen@oracle.com
+         */
+        public interface Builder {
+
+                /**
+                 * Sets the targetNamespace of the WSDL
+                 *
+                 * @param targetNamespace The targetNamespace to set
+                 *
+         * @return this Builder instance
+                 */
+                Builder targetNamespace(String targetNamespace);
+
+                /**
+                 * Sets the service name of the WSDL
+                 *
+                 * @param serviceName The serviceName to set
+                 *
+         * @return this Builder instance
+                 */
+                Builder serviceName(QName serviceName);
+
+                /**
+                 * Sets the port name of the WSDL
+                 *
+                 * @param portName The portName to set
+                 *
+         * @return this Builder instance
+                 */
+                Builder portName(QName portName);
+
+                /**
+                 * @deprecated - no replacement - this was never implemented
+                 *
+                 * Sets the WSDL URL where the WSDL can be read from
+                 *
+                 * @param wsdlURL The wsdlURL to set
+                 *
+         * @return this Builder instance
+                 */
+                Builder wsdlURL(URL wsdlURL);
+
+                /**
+                 * @deprecated - no replacement - this was never implemented
+                 *
+                 * Sets the WSDL Source where the WSDL can be read from
+                 *
+                 * @param wsdlSource The wsdlSource to set
+                 *
+         * @return this Builder instance
+                 */
+                Builder wsdlSource(Source wsdlSource);
+
+                /**
+                 * @deprecated - no replacement - this was never implemented
+                 *
+                 * Sets the {@link EntityResolver} for reading the WSDL
+                 *
+                 * @param entityResolver The {@link EntityResolver} to set
+                 *
+         * @return this Builder instance
+                 */
+                Builder entityResolver(EntityResolver entityResolver);
+
+                /**
+                 * Sets the ClassLoader which is used to load the service endpoint
+                 * interface, implementation bean, and all the value types. If this
+                 * value is not set, the default it uses contractClass.getClassLoader().
+                 *
+                 * @param classLoader The classLoader to set
+                 *
+         * @return this Builder instance
+                 */
+                Builder classLoader(ClassLoader classLoader);
+
+                /**
+                 * Sets A list of WebServiceFeatures
+                 *
+                 * @param features The list of WebServiceFeatures
+                 *
+         * @return this Builder instance
+                 */
+                Builder feature(WebServiceFeature... features);
+
+                /**
+                 * Sets A property of the Databinding object to be created
+                 *
+                 * @param name The name of the property
+                 * @param value The value of the property
+                 *
+         * @return this Builder instance
+                 */
+                Builder property(String name, Object value);
+
+                /**
+                 * Builds a new Databinding instance
+                 *
+         * @return The Builder instance
+                 */
+                Databinding build();
+
+            /**
+             * Creates the WSDLGenerator which can be used to generate the WSDL
+             * representation of the service endpoint interface of this Databinding
+             * object.
+             *
+             * @return WSDLGenerator The WSDLGenerator
+             */
+                com.oracle.webservices.internal.api.databinding.WSDLGenerator createWSDLGenerator();
+        }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/jaxws_classes/com/oracle/webservices/internal/api/databinding/DatabindingFactory.java	Tue Apr 16 08:11:41 2013 -0700
@@ -0,0 +1,120 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * http://glassfish.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.oracle.webservices.internal.api.databinding;
+
+import java.util.Map;
+
+/**
+ * {@code DatabindingFactory} is the entry point of all the WebService
+ * Databinding APIs. A DatabindingFactory instance can be used to create
+ * <code>Databinding.Builder</code> instances, and <code>Databinding.Builder</code>
+ * instances are used to configure and build <code>Databinding</code> instances.
+ * <p>
+ * </P>
+ * <blockquote>
+ * Following is an example that creates a {@code Databinding} which provides the
+ * operations to serialize/deserialize a JavaCallInfo to/from a SOAP message:<br/>
+ * <pre>
+ * DatabindingFactory factory = DatabindingFactory.newInstance();
+ * Databinding.Builder builder = factory.createBuilder(seiClass, endpointClass);
+ * Databinding databinding = builder.build();
+ * </pre>
+ * </blockquote>
+ *
+ * @see com.oracle.webservices.internal.api.databinding.Databinding
+ *
+ * @author shih-chang.chen@oracle.com
+ */
+public abstract class DatabindingFactory {
+
+  /**
+   * Creates a new instance of a <code>Databinding.Builder</code> which is
+   * initialized with the specified contractClass and endpointClass. The most
+   * importance initial states of a Builder object is the contract class which
+   * is also called "service endpoint interface" or "SEI" in JAX-WS and JAX-RPC,
+   * and the implementation bean class (endpointClass). The the implementation
+   * bean class (endpointClass) should be null if the Builder is to create
+   * the client side proxy databinding.
+   *
+   * @param contractClass The service endpoint interface class
+   * @param endpointClass The service implementation bean class
+   *
+   * @return New instance of a <code>Databinding.Builder</code>
+   */
+  abstract public Databinding.Builder createBuilder(Class<?> contractClass, Class<?> endpointClass);
+
+  /**
+   * Access properties on the <code>DatabindingFactory</code> instance.
+   *
+   * @return properties of this WsFactory
+   */
+   abstract public Map<String, Object> properties();
+
+        /**
+         * The default implementation class name.
+         */
+   static final String ImplClass = "com.sun.xml.internal.ws.db.DatabindingFactoryImpl";
+
+  /**
+   * Create a new instance of a <code>DatabindingFactory</code>. This static method
+   * creates a new factory instance.
+   *
+   * Once an application has obtained a reference to a <code>DatabindingFactory</code>
+   * it can use the factory to obtain and configure a <code>Databinding.Builder</code>
+   * to build a <code>Databinding</code> instances.
+   *
+   * @return New instance of a <code>DatabindingFactory</code>
+   */
+        static public DatabindingFactory newInstance() {
+                try {
+                        Class<?> cls = Class.forName(ImplClass);
+                        return convertIfNecessary(cls);
+                } catch (Exception e) {
+                        e.printStackTrace();
+                }
+                return null;
+        }
+
+    @SuppressWarnings("deprecation")
+    private static DatabindingFactory convertIfNecessary(Class<?> cls) throws InstantiationException, IllegalAccessException {
+        return (DatabindingFactory) cls.newInstance();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/jaxws_classes/com/oracle/webservices/internal/api/databinding/DatabindingMode.java	Tue Apr 16 08:11:41 2013 -0700
@@ -0,0 +1,52 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * http://glassfish.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.oracle.webservices.internal.api.databinding;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+import javax.xml.ws.spi.WebServiceFeatureAnnotation;
+
+@WebServiceFeatureAnnotation(id="", bean=com.oracle.webservices.internal.api.databinding.DatabindingModeFeature.class)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface DatabindingMode {
+        String value();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/jaxws_classes/com/oracle/webservices/internal/api/databinding/DatabindingModeFeature.java	Tue Apr 16 08:11:41 2013 -0700
@@ -0,0 +1,92 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * http://glassfish.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.oracle.webservices.internal.api.databinding;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.xml.ws.WebServiceFeature;
+
+public class DatabindingModeFeature extends WebServiceFeature {
+    /**
+     * Constant value identifying the DatabindingFeature
+     */
+    static public final String ID = "http://jax-ws.java.net/features/databinding";
+
+    static public final String GLASSFISH_JAXB = "glassfish.jaxb";
+
+    //These constants should be defined in the corresponding plugin package
+//    static public final String ECLIPSELINK_JAXB = "eclipselink.jaxb";
+//    static public final String ECLIPSELINK_SDO = "eclipselink.sdo";
+//    static public final String TOPLINK_JAXB = "toplink.jaxb";
+//    static public final String TOPLINK_SDO = "toplink.sdo";
+
+    private String mode;
+    private Map<String, Object> properties;
+
+    public DatabindingModeFeature(String mode) {
+        super();
+        this.mode = mode;
+        properties = new HashMap<String, Object>();
+    }
+
+    public String getMode() {
+        return mode;
+    }
+
+    public String getID() {
+        return ID;
+    }
+
+    public Map<String, Object> getProperties() {
+        return properties;
+    }
+
+    public static Builder builder() { return new Builder(new DatabindingModeFeature(null)); }
+
+    public final static class Builder {
+        final private DatabindingModeFeature o;
+        Builder(final DatabindingModeFeature x) { o = x; }
+        public DatabindingModeFeature build() { return o; }
+//        public DatabindingModeFeature build() { return (DatabindingModeFeature) FeatureValidator.validate(o); }
+        public Builder value(final String x) { o.mode = x; return this; }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/jaxws_classes/com/oracle/webservices/internal/api/databinding/ExternalMetadataFeature.java	Tue Apr 16 08:11:41 2013 -0700
@@ -0,0 +1,172 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * http://glassfish.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.oracle.webservices.internal.api.databinding;
+
+import com.sun.xml.internal.ws.api.databinding.MetadataReader;
+import com.sun.xml.internal.ws.model.ExternalMetadataReader;
+
+import javax.xml.ws.WebServiceFeature;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * WebServiceFeature allowing to define either on server or client side external xml descriptors replacing/supplementing
+ * WS metadata provided by class annotations. This can be useful if those annotations are missing (existing non-WS
+ * components) or if it is necessary to override those.
+ *
+ * @author Miroslav Kos (miroslav.kos at oracle.com)
+ */
+public class ExternalMetadataFeature extends WebServiceFeature {
+
+    private static final String ID = "com.oracle.webservices.internal.api.databinding.ExternalMetadataFeature";
+
+    /**
+     * Enable this feature.  Defaults to true.
+     */
+    private boolean enabled = true;
+
+    private List<String> resourceNames;
+    private List<File> files;
+
+    private ExternalMetadataFeature() {
+    }
+
+    public void addResources(String... resourceNames) {
+        if (this.resourceNames == null) {
+            this.resourceNames = new ArrayList<String>();
+        }
+        Collections.addAll(this.resourceNames, resourceNames);
+    }
+
+    public List<String> getResourceNames() { return resourceNames; }
+
+    public void addFiles(File... files) {
+        if (this.files == null) {
+            this.files = new ArrayList<File>();
+        }
+        Collections.addAll(this.files, files);
+    }
+
+    public List<File> getFiles() { return files; }
+
+    public boolean isEnabled() {
+        return enabled;
+    }
+
+    private void setEnabled(final boolean x) {
+        enabled = x;
+    }
+
+    @Override
+    public String getID() {
+        return ID;
+    }
+
+    public MetadataReader getMetadataReader(ClassLoader classLoader, boolean disableSecureXmlProcessing) {
+        return enabled ? new ExternalMetadataReader(files, resourceNames, classLoader, true, disableSecureXmlProcessing) : null;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        ExternalMetadataFeature that = (ExternalMetadataFeature) o;
+
+        if (enabled != that.enabled) return false;
+        if (files != null ? !files.equals(that.files) : that.files != null) return false;
+        if (resourceNames != null ? !resourceNames.equals(that.resourceNames) : that.resourceNames != null)
+            return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (enabled ? 1 : 0);
+        result = 31 * result + (resourceNames != null ? resourceNames.hashCode() : 0);
+        result = 31 * result + (files != null ? files.hashCode() : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return "[" + getID() +
+                ", enabled=" + enabled +
+                ", resourceNames=" + resourceNames +
+                ", files=" + files +
+                ']';
+    }
+
+    public static Builder builder() {
+        return new Builder(new ExternalMetadataFeature());
+    }
+
+    public final static class Builder {
+        final private ExternalMetadataFeature o;
+
+        Builder(final ExternalMetadataFeature x) {
+            o = x;
+        }
+
+        public ExternalMetadataFeature build() {
+            return o;
+        }
+
+        public Builder addResources(String... res) {
+            o.addResources(res);
+            return this;
+        }
+
+        public Builder addFiles(File... files) {
+            o.addFiles(files);
+            return this;
+        }
+
+        public Builder setEnabled(boolean enabled) {
+            o.setEnabled(enabled);
+            return this;
+        }
+
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/jaxws_classes/com/oracle/webservices/internal/api/databinding/JavaCallInfo.java	Tue Apr 16 08:11:41 2013 -0700
@@ -0,0 +1,123 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * http://glassfish.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.oracle.webservices.internal.api.databinding;
+
+import java.lang.reflect.Method;
+
+/**
+ * On the client or service-requestor side, a JavaCallInfo object represents a
+ * method call on the service proxy to be serialized as a SOAP request message
+ * to be sent to the service. A SOAP response message returned to the service
+ * client is deserialized as an update to the JavaCallInfo object which is used
+ * to generated the request.
+ * <p>
+ * </p>
+ * On the server or service provider side, a SOAP request message is
+ * deserialized to a JavaCallInfo object which can be used to determine which
+ * method to call, and get the parameter values to call the back-end service
+ * implementation object. The return value or exception returned from the
+ * service implementation should be set to the JavaCallInfo object which then
+ * can be used to serialize to a A SOAP response or fault message to be sent
+ * back to the service client.
+ *
+ * @author shih-chang.chen@oracle.com
+ */
+public interface JavaCallInfo {
+
+        /**
+         * Gets the method of this JavaCallInfo
+         *
+         * @return the method
+         */
+        public Method getMethod();
+
+//      /**
+//       * Sets the method of this JavaCallInfo
+//       *
+//       * @param method The method to set
+//       */
+//      public void setMethod(Method method);
+
+        /**
+         * Gets the parameters of this JavaCallInfo
+         *
+         * @return The parameters
+         */
+        public Object[] getParameters();
+
+//      /**
+//       * Sets the parameters of this JavaCallInfo
+//       *
+//       * @param parameters
+//       *            the parameters to set
+//       */
+//      public void setParameters(Object[] parameters);
+
+        /**
+         * Gets the returnValue of this JavaCallInfo
+         *
+         * @return the returnValue
+         */
+        public Object getReturnValue();
+
+        /**
+         * Sets the returnValue of this JavaCallInfo
+         *
+         * @param returnValue
+         *            the returnValue to set
+         */
+        public void setReturnValue(Object returnValue);
+
+        /**
+         * Gets the exception of this JavaCallInfo
+         *
+         * @return the exception
+         */
+        public Throwable getException();
+
+        /**
+         * Sets the exception of this JavaCallInfo
+         *
+         * @param exception
+         *            the exception to set
+         */
+        public void setException(Throwable exception);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/jaxws_classes/com/oracle/webservices/internal/api/databinding/WSDLGenerator.java	Tue Apr 16 08:11:41 2013 -0700
@@ -0,0 +1,88 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * http://glassfish.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.oracle.webservices.internal.api.databinding;
+
+import java.io.File;
+
+/**
+ * WSDLGenerator is used to generate the WSDL representation of the service
+ * endpoint interface of the parent Databinding object.
+ */
+public interface WSDLGenerator {
+
+        /**
+         * Sets the inlineSchema boolean. When the inlineSchema is true, the
+         * generated schema documents are embedded within the type element of
+         * the generated WSDL. When the inlineSchema is false, the generated
+         * schema documents are generated as standalone schema documents and
+         * imported into the generated WSDL.
+         *
+         * @param inline the inlineSchema boolean.
+         * @return
+         */
+        WSDLGenerator inlineSchema(boolean inline);
+
+        /**
+         * Sets A property of the WSDLGenerator
+         *
+         * @param name The name of the property
+         * @param value The value of the property
+         *
+     * @return this WSDLGenerator instance
+         */
+        WSDLGenerator property(String name, Object value);
+
+        /**
+         * Generates the WSDL using the wsdlResolver to output the generated
+         * documents.
+         *
+         * @param wsdlResolver The WSDLResolver
+         */
+        void generate(com.oracle.webservices.internal.api.databinding.WSDLResolver wsdlResolver);
+
+        /**
+         * Generates the WSDL into the file directory
+         *
+         * @param outputDir The output file directory
+         * @param name The file name of the main WSDL document
+         */
+        void generate(File outputDir, String name);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/jaxws_classes/com/oracle/webservices/internal/api/databinding/WSDLResolver.java	Tue Apr 16 08:11:41 2013 -0700
@@ -0,0 +1,88 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * http://glassfish.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.oracle.webservices.internal.api.databinding;
+
+import javax.xml.transform.Result;
+import javax.xml.ws.Holder;
+
+/**
+ * WSDLResolver is used by WSDLGenerator while generating WSDL and its associated
+ * documents. It is used to control what documents need to be generated and what
+ * documents need to be picked from metadata. If endpont's document metadata
+ * already contains some documents, their systemids may be used for wsdl:import,
+ * and schema:import. The suggested filenames are relative urls(for e.g: EchoSchema1.xsd)
+ * The Result object systemids are also relative urls(for e.g: AbsWsdl.wsdl).
+ *
+ * @author Jitendra Kotamraju
+ */
+public interface WSDLResolver {
+    /**
+     * Create a Result object into which concrete WSDL is to be generated.
+     *
+     * @return Result for the concrete WSDL
+     */
+    public Result getWSDL(String suggestedFilename);
+
+    /**
+     * Create a Result object into which abstract WSDL is to be generated. If the the
+     * abstract WSDL is already in metadata, it is not generated.
+     *
+     * Update filename if the suggested filename need to be changed in wsdl:import.
+     * This needs to be done if the metadata contains abstract WSDL, and that systemid
+     * needs to be reflected in concrete WSDL's wsdl:import
+     *
+     * @return null if abstract WSDL need not be generated
+     */
+    public Result getAbstractWSDL(Holder<String> filename);
+
+    /**
+     * Create a Result object into which schema doc is to be generated. Typically if
+     * there is a schema doc for namespace in metadata, then it is not generated.
+     *
+     * Update filename if the suggested filename need to be changed in xsd:import. This
+     * needs to be done if the metadata contains the document, and that systemid
+     * needs to be reflected in some other document's xsd:import
+     *
+     * @return null if schema need not be generated
+     */
+    public Result getSchemaOutput(String namespace, Holder<String> filename);
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/jaxws_classes/com/oracle/webservices/internal/api/message/BaseDistributedPropertySet.java	Tue Apr 16 08:11:41 2013 -0700
@@ -0,0 +1,323 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * http://glassfish.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.oracle.webservices.internal.api.message;
+
+import com.sun.istack.internal.NotNull;
+import com.sun.istack.internal.Nullable;
+import com.sun.xml.internal.ws.api.message.Packet;
+import com.sun.xml.internal.ws.client.RequestContext;
+import com.sun.xml.internal.ws.client.ResponseContext;
+
+import javax.xml.ws.WebServiceContext;
+
+import java.util.AbstractMap;
+import java.util.Map.Entry;
+import java.util.HashSet;
+import java.util.IdentityHashMap;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * {@link PropertySet} that combines properties exposed from multiple
+ * {@link PropertySet}s into one.
+ *
+ * <p>
+ * This implementation allows one {@link PropertySet} to assemble
+ * all properties exposed from other "satellite" {@link PropertySet}s.
+ * (A satellite may itself be a {@link DistributedPropertySet}, so
+ * in general this can form a tree.)
+ *
+ * <p>
+ * This is useful for JAX-WS because the properties we expose to the application
+ * are contributed by different pieces, and therefore we'd like each of them
+ * to have a separate {@link PropertySet} implementation that backs up
+ * the properties. For example, this allows FastInfoset to expose its
+ * set of properties to {@link RequestContext} by using a strongly-typed fields.
+ *
+ * <p>
+ * This is also useful for a client-side transport to expose a bunch of properties
+ * into {@link ResponseContext}. It simply needs to create a {@link PropertySet}
+ * object with methods for each property it wants to expose, and then add that
+ * {@link PropertySet} to {@link Packet}. This allows property values to be
+ * lazily computed (when actually asked by users), thus improving the performance
+ * of the typical case where property values are not asked.
+ *
+ * <p>
+ * A similar benefit applies on the server-side, for a transport to expose
+ * a bunch of properties to {@link WebServiceContext}.
+ *
+ * <p>
+ * To achieve these benefits, access to {@link DistributedPropertySet} is slower
+ * compared to {@link PropertySet} (such as get/set), while adding a satellite
+ * object is relatively fast.
+ *
+ * @author Kohsuke Kawaguchi
+ */
+public abstract class BaseDistributedPropertySet extends BasePropertySet implements DistributedPropertySet {
+
+    /**
+     * All {@link PropertySet}s that are bundled into this {@link PropertySet}.
+     */
+    private final Map<Class<? extends com.oracle.webservices.internal.api.message.PropertySet>, PropertySet> satellites
+        = new IdentityHashMap<Class<? extends com.oracle.webservices.internal.api.message.PropertySet>, PropertySet>();
+
+    private final Map<String, Object> viewthis;
+
+    public BaseDistributedPropertySet() {
+        this.viewthis = super.createView();
+    }
+
+    @Override
+    public void addSatellite(@NotNull PropertySet satellite) {
+        addSatellite(satellite.getClass(), satellite);
+    }
+
+    @Override
+    public void addSatellite(@NotNull Class<? extends com.oracle.webservices.internal.api.message.PropertySet> keyClass, @NotNull PropertySet satellite) {
+        satellites.put(keyClass, satellite);
+    }
+
+    @Override
+    public void removeSatellite(PropertySet satellite) {
+        satellites.remove(satellite.getClass());
+    }
+
+    public void copySatelliteInto(@NotNull DistributedPropertySet r) {
+        for (Map.Entry<Class<? extends com.oracle.webservices.internal.api.message.PropertySet>, PropertySet> entry : satellites.entrySet()) {
+            r.addSatellite(entry.getKey(), entry.getValue());
+        }
+    }
+
+    @Override
+    public void copySatelliteInto(MessageContext r) {
+        copySatelliteInto((DistributedPropertySet)r);
+    }
+
+    @Override
+    public @Nullable <T extends com.oracle.webservices.internal.api.message.PropertySet> T getSatellite(Class<T> satelliteClass) {
+        T satellite = (T) satellites.get(satelliteClass);
+        if (satellite != null) {
+            return satellite;
+        }
+
+        for (PropertySet child : satellites.values()) {
+            if (satelliteClass.isInstance(child)) {
+                return satelliteClass.cast(child);
+            }
+
+            if (DistributedPropertySet.class.isInstance(child)) {
+                satellite = DistributedPropertySet.class.cast(child).getSatellite(satelliteClass);
+                if (satellite != null) {
+                    return satellite;
+                }
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public Map<Class<? extends com.oracle.webservices.internal.api.message.PropertySet>, com.oracle.webservices.internal.api.message.PropertySet> getSatellites() {
+        return satellites;
+    }
+
+    @Override
+    public Object get(Object key) {
+        // check satellites
+        for (PropertySet child : satellites.values()) {
+            if (child.supports(key)) {
+                return child.get(key);
+            }
+        }
+
+        // otherwise it must be the master
+        return super.get(key);
+    }
+
+    @Override
+    public Object put(String key, Object value) {
+        // check satellites
+        for (PropertySet child : satellites.values()) {
+            if(child.supports(key)) {
+                return child.put(key,value);
+            }
+        }
+
+        // otherwise it must be the master
+        return super.put(key,value);
+    }
+
+    @Override
+    public boolean containsKey(Object key) {
+        if (viewthis.containsKey(key))
+            return true;
+        for (PropertySet child : satellites.values()) {
+            if (child.containsKey(key)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    @Override
+    public boolean supports(Object key) {
+        // check satellites
+        for (PropertySet child : satellites.values()) {
+            if (child.supports(key)) {
+                return true;
+            }
+        }
+
+        return super.supports(key);
+    }
+
+    @Override
+    public Object remove(Object key) {
+        // check satellites
+        for (PropertySet child : satellites.values()) {
+            if (child.supports(key)) {
+                return child.remove(key);
+            }
+        }
+
+        return super.remove(key);
+    }
+
+    @Override
+    protected void createEntrySet(Set<Entry<String, Object>> core) {
+        super.createEntrySet(core);
+        for (PropertySet child : satellites.values()) {
+            ((BasePropertySet) child).createEntrySet(core);
+        }
+    }
+
+    protected Map<String, Object> asMapLocal() {
+        return viewthis;
+    }
+
+    protected boolean supportsLocal(Object key) {
+        return super.supports(key);
+    }
+
+    class DistributedMapView extends AbstractMap<String, Object> {
+        @Override
+        public Object get(Object key) {
+            for (PropertySet child : satellites.values()) {
+                if (child.supports(key)) {
+                    return child.get(key);
+                }
+            }
+
+            return viewthis.get(key);
+        }
+
+        @Override
+        public int size() {
+            int size = viewthis.size();
+            for (PropertySet child : satellites.values()) {
+                size += child.asMap().size();
+            }
+            return size;
+        }
+
+        @Override
+        public boolean containsKey(Object key) {
+            if (viewthis.containsKey(key))
+                return true;
+            for (PropertySet child : satellites.values()) {
+                if (child.containsKey(key))
+                    return true;
+            }
+            return false;
+        }
+
+        @Override
+        public Set<Entry<String, Object>> entrySet() {
+            Set<Entry<String, Object>> entries = new HashSet<Entry<String, Object>>();
+            for (PropertySet child : satellites.values()) {
+                for (Entry<String,Object> entry : child.asMap().entrySet()) {
+                    // the code below is here to avoid entries.addAll(child.asMap().entrySet()); which works differently on JDK6/7
+                    // see DMI_ENTRY_SETS_MAY_REUSE_ENTRY_OBJECTS
+                    entries.add(new SimpleImmutableEntry<String, Object>(entry.getKey(), entry.getValue()));
+                }
+            }
+            for (Entry<String,Object> entry : viewthis.entrySet()) {
+                // the code below is here to avoid entries.addAll(child.asMap().entrySet()); which works differently on JDK6/7
+                // see DMI_ENTRY_SETS_MAY_REUSE_ENTRY_OBJECTS
+                entries.add(new SimpleImmutableEntry<String, Object>(entry.getKey(), entry.getValue()));
+            }
+
+            return entries;
+        }
+
+        @Override
+        public Object put(String key, Object value) {
+            for (PropertySet child : satellites.values()) {
+                if (child.supports(key)) {
+                    return child.put(key, value);
+                }
+            }
+
+            return viewthis.put(key, value);
+        }
+
+        @Override
+        public void clear() {
+            satellites.clear();
+            viewthis.clear();
+        }
+
+        @Override
+        public Object remove(Object key) {
+            for (PropertySet child : satellites.values()) {
+                if (child.supports(key)) {
+                    return child.remove(key);
+                }
+            }
+
+            return viewthis.remove(key);
+        }
+    }
+
+    @Override
+    protected Map<String, Object> createView() {
+        return new DistributedMapView();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/jaxws_classes/com/oracle/webservices/internal/api/message/BasePropertySet.java	Tue Apr 16 08:11:41 2013 -0700
@@ -0,0 +1,563 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * http://glassfish.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.oracle.webservices.internal.api.message;
+
+import com.sun.istack.internal.NotNull;
+import com.sun.istack.internal.Nullable;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.util.AbstractMap;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+
+/**
+ * A set of "properties" that can be accessed via strongly-typed fields
+ * as well as reflexibly through the property name.
+ *
+ * @author Kohsuke Kawaguchi
+ */
+@SuppressWarnings("SuspiciousMethodCalls")
+public abstract class BasePropertySet implements PropertySet {
+
+    /**
+     * Creates a new instance of TypedMap.
+     */
+    protected BasePropertySet() {
+    }
+
+    private Map<String,Object> mapView;
+
+    /**
+     * Represents the list of strongly-typed known properties
+     * (keyed by property names.)
+     *
+     * <p>
+     * Just giving it an alias to make the use of this class more fool-proof.
+     */
+    protected static class PropertyMap extends HashMap<String,Accessor> {
+
+        // the entries are often being iterated through so performance can be improved
+        // by their caching instead of iterating through the original (immutable) map each time
+        transient PropertyMapEntry[] cachedEntries = null;
+
+        PropertyMapEntry[] getPropertyMapEntries() {
+            if (cachedEntries == null) {
+                cachedEntries = createPropertyMapEntries();
+            }
+            return cachedEntries;
+        }
+
+        private PropertyMapEntry[] createPropertyMapEntries() {
+            final PropertyMapEntry[] modelEntries = new PropertyMapEntry[size()];
+            int i = 0;
+            for (final