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); +}
