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 di...@apache.org on 2005/12/23 05:59:37 UTC

svn commit: r358705 [2/2] - in /webservices/axis2/trunk/java/modules/jaxws: ./ src/ src/javax/ src/javax/xml/ src/javax/xml/ws/ src/javax/xml/ws/handler/ src/javax/xml/ws/handler/soap/ src/javax/xml/ws/http/ src/javax/xml/ws/soap/ src/javax/xml/ws/spi/...

Added: webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/http/HTTPException.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/http/HTTPException.java?rev=358705&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/http/HTTPException.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/http/HTTPException.java Thu Dec 22 20:59:16 2005
@@ -0,0 +1,31 @@
+/*
+* Copyright 2004,2005 The Apache Software Foundation.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*      http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package javax.xml.ws.http;
+
+import javax.xml.ws.ProtocolException;
+
+public class HTTPException extends ProtocolException {
+
+    public HTTPException(int statusCode) {
+        this.statusCode = statusCode;
+    }
+
+    public int getStatusCode() {
+        return statusCode;
+    }
+
+    private int statusCode;
+}

Added: webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/soap/SOAPBinding.class
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/soap/SOAPBinding.class?rev=358705&view=auto
==============================================================================
Binary file - no diff available.

Propchange: webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/soap/SOAPBinding.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/soap/SOAPBinding.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/soap/SOAPBinding.java?rev=358705&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/soap/SOAPBinding.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/soap/SOAPBinding.java Thu Dec 22 20:59:16 2005
@@ -0,0 +1,41 @@
+/*
+* Copyright 2004,2005 The Apache Software Foundation.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*      http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package javax.xml.ws.soap;
+
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.SOAPFactory;
+import javax.xml.ws.Binding;
+import java.util.Set;
+
+public interface SOAPBinding
+        extends Binding {
+
+    public abstract Set<java.net.URI> getRoles();
+
+    public abstract void setRoles(Set<java.net.URI> set);
+
+    public abstract boolean isMTOMEnabled();
+
+    public abstract void setMTOMEnabled(boolean flag);
+
+    public abstract SOAPFactory getSOAPFactory();
+
+    public abstract MessageFactory getMessageFactory();
+
+    public static final String SOAP11HTTP_BINDING = "http://schemas.xmlsoap.org/wsdl/soap/http";
+    public static final String SOAP12HTTP_BINDING = "http://www.w3.org/2003/05/soap/bindings/HTTP/";
+}

Added: webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/soap/SOAPFaultException.class
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/soap/SOAPFaultException.class?rev=358705&view=auto
==============================================================================
Binary file - no diff available.

Propchange: webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/soap/SOAPFaultException.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/soap/SOAPFaultException.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/soap/SOAPFaultException.java?rev=358705&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/soap/SOAPFaultException.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/soap/SOAPFaultException.java Thu Dec 22 20:59:16 2005
@@ -0,0 +1,34 @@
+/*
+* Copyright 2004,2005 The Apache Software Foundation.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*      http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package javax.xml.ws.soap;
+
+import javax.xml.soap.SOAPFault;
+import javax.xml.ws.ProtocolException;
+
+public class SOAPFaultException extends ProtocolException {
+
+    public SOAPFaultException(SOAPFault fault) {
+        super(fault.getFaultString());
+        this.fault = fault;
+    }
+
+    public SOAPFault getFault() {
+        return fault;
+    }
+
+    private SOAPFault fault;
+}

Added: webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/spi/FactoryFinder.class
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/spi/FactoryFinder.class?rev=358705&view=auto
==============================================================================
Binary file - no diff available.

Propchange: webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/spi/FactoryFinder.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/spi/FactoryFinder.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/spi/FactoryFinder.java?rev=358705&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/spi/FactoryFinder.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/spi/FactoryFinder.java Thu Dec 22 20:59:16 2005
@@ -0,0 +1,243 @@
+/*
+* Copyright 2004,2005 The Apache Software Foundation.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*      http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package javax.xml.ws.spi;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Properties;
+
+/**
+ * This code is designed to implement the pluggability
+ * feature and is designed to both compile and run on JDK version 1.1 and
+ * later.  The code also runs both as part of an unbundled jar file and
+ * when bundled as part of the JDK.
+ * <p/>
+ * This class is duplicated for each subpackage so keep it in sync.
+ * It is package private and therefore is not exposed as part of the JAXRPC
+ * API.
+ */
+class FactoryFinder {
+    /**
+     * Set to true for debugging.
+     */
+    private static final boolean debug = false;
+
+    private static void debugPrintln(String msg) {
+        if (debug) {
+            System.err.println("JAXWS: " + msg);
+        }
+    }
+
+    /**
+     * Figure out which ClassLoader to use.  For JDK 1.2 and later use
+     * the context ClassLoader.
+     *
+     * @return the <code>ClassLoader</code>
+     * @throws ConfigurationError if this class is unable to work with the
+     *                            host JDK
+     */
+    private static ClassLoader findClassLoader()
+            throws ConfigurationError {
+        Method m = null;
+
+        try {
+
+            m = Thread.class.getMethod("getContextClassLoader", null);
+        } catch (NoSuchMethodException e) {
+            // Assume that we are running JDK 1.1, use the current ClassLoader
+            debugPrintln("assuming JDK 1.1");
+            return FactoryFinder.class.getClassLoader();
+        }
+
+        try {
+            return (ClassLoader) m.invoke(Thread.currentThread(), null);
+        } catch (IllegalAccessException e) {
+            // assert(false)
+            throw new ConfigurationError("Unexpected IllegalAccessException",
+                    e);
+        } catch (InvocationTargetException e) {
+            // assert(e.getTargetException() instanceof SecurityException)
+            throw new ConfigurationError("Unexpected InvocationTargetException",
+                    e);
+        }
+    }
+
+    /**
+     * Create an instance of a class using the specified
+     * <code>ClassLoader</code>, or if that fails from the
+     * <code>ClassLoader</code> that loaded this class.
+     *
+     * @param className   the name of the class to instantiate
+     * @param classLoader a <code>ClassLoader</code> to load the class from
+     * @return a new <code>Object</code> that is an instance of the class of
+     *         the given name from the given class loader
+     * @throws ConfigurationError if the class could not be found or
+     *                            instantiated
+     */
+    private static Object newInstance(String className,
+                                      ClassLoader classLoader)
+            throws ConfigurationError {
+        try {
+            if (classLoader != null) {
+                try {
+                    return classLoader.loadClass(className).newInstance();
+                } catch (ClassNotFoundException x) {
+                    // try again
+                }
+            }
+            return Class.forName(className).newInstance();
+        } catch (ClassNotFoundException x) {
+            throw new ConfigurationError(
+                    "Provider " + className + " not found", x);
+        } catch (Exception x) {
+            throw new ConfigurationError(
+                    "Provider " + className + " could not be instantiated: " + x,
+                    x);
+        }
+    }
+
+    /**
+     * Finds the implementation Class object in the specified order.  Main
+     * entry point.
+     *
+     * @param factoryId         Name of the factory to find, same as
+     *                          a property name
+     * @param fallbackClassName Implementation class name, if nothing else
+     *                          is found.  Use null to mean no fallback.
+     * @return Class object of factory, never null
+     * @throws FactoryFinder.ConfigurationError
+     *          Package private so this code can be shared.
+     */
+    static Object find(String factoryId, String fallbackClassName)
+            throws ConfigurationError {
+        debugPrintln("debug is on");
+
+        ClassLoader classLoader = findClassLoader();
+
+        // Use the system property first
+        try {
+            String systemProp =
+                    System.getProperty(factoryId);
+            if (systemProp != null) {
+                debugPrintln("found system property " + systemProp);
+                return newInstance(systemProp, classLoader);
+            }
+        } catch (SecurityException se) {
+        }
+
+        // try to read from $java.home/lib/xml.properties
+        try {
+            String javah = System.getProperty("java.home");
+            String configFile = javah + File.separator +
+                    "lib" + File.separator + "jaxrpc.properties";
+            File f = new File(configFile);
+            if (f.exists()) {
+                Properties props = new Properties();
+                props.load(new FileInputStream(f));
+                String factoryClassName = props.getProperty(factoryId);
+                debugPrintln("found java.home property " + factoryClassName);
+                return newInstance(factoryClassName, classLoader);
+            }
+        } catch (Exception ex) {
+            if (debug) ex.printStackTrace();
+        }
+
+        String serviceId = "META-INF/services/" + factoryId;
+        // try to find services in CLASSPATH
+        try {
+            InputStream is = null;
+            if (classLoader == null) {
+                is = ClassLoader.getSystemResourceAsStream(serviceId);
+            } else {
+                is = classLoader.getResourceAsStream(serviceId);
+            }
+
+            if (is != null) {
+                debugPrintln("found " + serviceId);
+
+                // Read the service provider name in UTF-8 as specified in
+                // the jar spec.  Unfortunately this fails in Microsoft
+                // VJ++, which does not implement the UTF-8
+                // encoding. Theoretically, we should simply let it fail in
+                // that case, since the JVM is obviously broken if it
+                // doesn't support such a basic standard.  But since there
+                // are still some users attempting to use VJ++ for
+                // development, we have dropped in a fallback which makes a
+                // second attempt using the platform's default encoding. In
+                // VJ++ this is apparently ASCII, which is a subset of
+                // UTF-8... and since the strings we'll be reading here are
+                // also primarily limited to the 7-bit ASCII range (at
+                // least, in English versions), this should work well
+                // enough to keep us on the air until we're ready to
+                // officially decommit from VJ++. [Edited comment from
+                // jkesselm]
+                BufferedReader rd;
+                try {
+                    rd = new BufferedReader(new InputStreamReader(is, "UTF-8"));
+                } catch (java.io.UnsupportedEncodingException e) {
+                    rd = new BufferedReader(new InputStreamReader(is));
+                }
+
+                String factoryClassName = rd.readLine();
+                rd.close();
+
+                if (factoryClassName != null &&
+                        ! "".equals(factoryClassName)) {
+                    debugPrintln("loaded from services: " + factoryClassName);
+                    return newInstance(factoryClassName, classLoader);
+                }
+            }
+        } catch (Exception ex) {
+            if (debug) ex.printStackTrace();
+        }
+
+        if (fallbackClassName == null) {
+            throw new ConfigurationError(
+                    "Provider for " + factoryId + " cannot be found", null);
+        }
+
+        debugPrintln("loaded from fallback value: " + fallbackClassName);
+        return newInstance(fallbackClassName, classLoader);
+    }
+
+    static class ConfigurationError extends Error {
+        // fixme: should this be refactored to use the jdk1.4 exception
+        // wrapping?
+
+        private Exception exception;
+
+        /**
+         * Construct a new instance with the specified detail string and
+         * exception.
+         *
+         * @param msg the Message for this error
+         * @param x   an Exception that caused this failure, or null
+         */
+        ConfigurationError(String msg, Exception x) {
+            super(msg);
+            this.exception = x;
+        }
+
+        Exception getException() {
+            return exception;
+        }
+    }
+}

Added: webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/spi/Provider.class
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/spi/Provider.class?rev=358705&view=auto
==============================================================================
Binary file - no diff available.

Propchange: webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/spi/Provider.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/spi/Provider.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/spi/Provider.java?rev=358705&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/spi/Provider.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/spi/Provider.java Thu Dec 22 20:59:16 2005
@@ -0,0 +1,40 @@
+/*
+* Copyright 2004,2005 The Apache Software Foundation.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*      http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package javax.xml.ws.spi;
+
+import javax.xml.namespace.QName;
+import javax.xml.ws.Endpoint;
+import java.net.URL;
+
+public abstract class Provider {
+
+    protected Provider() {
+    }
+
+    public static Provider provider() {
+        return (Provider) FactoryFinder.find("javax.xml.ws.spi.Provider", DEFAULT_JAXWSPROVIDER);
+    }
+
+    public abstract ServiceDelegate createServiceDelegate(URL url, QName qname, Class class1);
+
+    public abstract Endpoint createEndpoint(String s, Object obj);
+
+    public abstract Endpoint createAndPublishEndpoint(String s, Object obj);
+
+    public static final String JAXWSPROVIDER_PROPERTY = "javax.xml.ws.spi.Provider";
+    private static final String DEFAULT_JAXWSPROVIDER = "org.apache.ws.spi.ProviderImpl";
+}

Added: webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/spi/ServiceDelegate.class
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/spi/ServiceDelegate.class?rev=358705&view=auto
==============================================================================
Binary file - no diff available.

Propchange: webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/spi/ServiceDelegate.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/spi/ServiceDelegate.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/spi/ServiceDelegate.java?rev=358705&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/spi/ServiceDelegate.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/src/javax/xml/ws/spi/ServiceDelegate.java Thu Dec 22 20:59:16 2005
@@ -0,0 +1,55 @@
+/*
+* Copyright 2004,2005 The Apache Software Foundation.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*      http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package javax.xml.ws.spi;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.namespace.QName;
+import javax.xml.ws.Dispatch;
+import javax.xml.ws.handler.HandlerResolver;
+import java.net.URI;
+import java.net.URL;
+import java.util.Iterator;
+import java.util.concurrent.Executor;
+
+public abstract class ServiceDelegate {
+
+    protected ServiceDelegate() {
+    }
+
+    public abstract <T> T getPort(QName qname, Class<T> class1);
+
+    public abstract <T> T getPort(Class<T> class1);
+
+    public abstract void addPort(QName qname, URI uri, String s);
+
+    public abstract <T>Dispatch<T> createDispatch(QName qname, Class<T> class1, javax.xml.ws.Service.Mode mode);
+
+    public abstract Dispatch<java.lang.Object> createDispatch(QName qname, JAXBContext jaxbcontext, javax.xml.ws.Service.Mode mode);
+
+    public abstract QName getServiceName();
+
+    public abstract Iterator<javax.xml.namespace.QName> getPorts();
+
+    public abstract URL getWSDLDocumentLocation();
+
+    public abstract HandlerResolver getHandlerResolver();
+
+    public abstract void setHandlerResolver(HandlerResolver handlerresolver);
+
+    public abstract Executor getExecutor();
+
+    public abstract void setExecutor(Executor executor);
+}