You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by ja...@apache.org on 2005/06/29 16:23:41 UTC
svn commit: r202381 - in
/webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc:
ServiceFactoryImpl.java client/ client/Service.java
client/ServiceFactoryImpl.java
Author: jayachandra
Date: Wed Jun 29 07:23:40 2005
New Revision: 202381
URL: http://svn.apache.org/viewcvs?rev=202381&view=rev
Log:
Moving client api related implementation to o.a.a.jaxrpc.client package
Added:
webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/
webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/Service.java
webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/ServiceFactoryImpl.java
Removed:
webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/ServiceFactoryImpl.java
Added: webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/Service.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/Service.java?rev=202381&view=auto
==============================================================================
--- webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/Service.java (added)
+++ webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/Service.java Wed Jun 29 07:23:40 2005
@@ -0,0 +1,307 @@
+package org.apache.axis.jaxrpc.client;
+
+import java.net.URI;
+import java.net.URL;
+import java.rmi.Remote;
+import java.util.Iterator;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.namespace.QName;
+import javax.xml.rpc.Call;
+import javax.xml.rpc.Dispatch;
+import javax.xml.rpc.ServiceException;
+import javax.xml.rpc.Service.Mode;
+import javax.xml.rpc.encoding.TypeMappingRegistry;
+import javax.xml.rpc.handler.HandlerRegistry;
+import javax.xml.rpc.security.SecurityConfiguration;
+
+/**
+ * @author sunja07
+ *
+ */
+public class Service implements javax.xml.rpc.Service {
+
+ /**
+ * Method createCall
+ * Creates a Call object not associated with specific operation or target
+ * service endpoint. This Call object needs to be configured using the
+ * setter methods on the Call interface.
+ * @return Call object
+ * @throws ServiceException If any error in the creation of the Call object
+ */
+ public Call createCall() throws ServiceException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /**
+ * Method createCall
+ * Creates a Call instance.
+ * @param portName Qualified name for the target service endpoint
+ * @param operationName Qualified Name of the operation for which this
+ * Call object is to be created.
+ * @return Call instance
+ * @throws ServiceException If any error in the creation of the Call object
+ */
+ public Call createCall(QName portName, QName operationName) throws
+ ServiceException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /**
+ * Method createCall
+ * Creates a Call instance.
+ * @param portName Qualified name for the target service endpoint
+ * @param operationName Name of the operation for which this Call object
+ * is to be created.
+ * @return Call instance
+ * @throws ServiceException If any error in the creation of the Call
+ * object
+ */
+ public Call createCall(QName portName, String operationName) throws
+ ServiceException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /**
+ * Method createCall
+ * Creates a Call instance.
+ * @param portName Qualified name for the target service endpoint
+ * @return Call instance
+ * @throws ServiceException If any error in the creation of the Call
+ * object
+ */
+ public Call createCall(QName portName) throws ServiceException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ // This involves generics, needs a revisit
+ /**
+ * Method createDispatch
+ * Creates a Dispatch instance for use with objects of the users choosing.
+ *
+ * @param - Qualified name for the target service endpoint
+ * @param - The class of object used to messages or message payloads.
+ * Implementations are required to support javax.xml.transform.Source and
+ * javax.xml.soap.SOAPMessage.
+ * @param - Controls whether the created dispatch instance is message or
+ * payload oriented, i.e. whether the user will work with complete protocol
+ * messages or message payloads. E.g. when using the SOAP protocol, this
+ * parameter controls whether the user will work with SOAP messages or the
+ * contents of a SOAP body. Mode must be MESSAGE when type is SOAPMessage.
+ * @return Dispatch instance
+ * @throws ServiceException - If any error in the creation of the Dispatch
+ * object
+ * @see javax.xml.transform.Source, javax.xml.soap.SOAPMessage
+ */
+ public <T> Dispatch<T> createDispatch(QName portName, Class<T> type,
+ Mode mode) throws ServiceException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ // This involves generics, needs a revisit
+ /**
+ * Method createDispatch
+ * Creates a Dispatch instance for use with JAXB generated objects.
+ *
+ * @param portName - Qualified name for the target service endpoint
+ * @param context - The JAXB context used to marshall and unmarshall
+ * messages or message payloads.
+ * @param mode - Controls whether the created dispatch instance is message
+ * or payload oriented, i.e. whether the user will work with complete
+ * protocol messages or message payloads. E.g. when using the SOAP
+ * protocol, this parameter controls whether the user will work with
+ * SOAP messages or the contents of a SOAP body.
+ * @return Dispatch instance
+ * @throws ServiceException - If any error in the creation of the Dispatch
+ * object
+ * @see JAXBContext
+ */
+ public Dispatch<Object> createDispatch(QName portName, JAXBContext context,
+ Mode mode) throws ServiceException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /**
+ * Method createPort
+ * Creates a new port for the service. Ports created in this way contain
+ * no WSDL port type information and can only be used for creating Dispatch
+ * and Call instances.
+ * @param portName Qualified name for the target service endpoint
+ * @param bindingId A URI identifier of a binding.
+ * @param endpointAddress Address of the target service endpoint as a URI
+ * @throws ServiceException If any error in the creation of the port
+ * @see javax.xml.rpc.soap.SOAPBinding.SOAP11HTTP_BINDING
+ */
+ public void createPort(QName portName, URI bindingId,
+ String endpointAddress) throws ServiceException {
+ // TODO Auto-generated method stub
+
+ }
+
+ /**
+ * Method getCalls
+ * Gets an array of preconfigured Call objects for invoking operations on
+ * the specified port. There is one Call object per operation that can be
+ * invoked on the specified port. Each Call object is pre-configured and
+ * does not need to be configured using the setter methods on Call
+ * interface.
+ * Each invocation of the getCalls method returns a new array of
+ * preconfigured Call objects
+ * This method requires the Service implementation class to have access to
+ * the WSDL related metadata.
+ * @param portName Qualified name for the target service endpoint
+ * @return Call[] Array of pre-configured Call objects
+ * @throws ServiceException If this Service class does not have access to
+ * the required WSDL metadata or if an illegal portName is specified.
+ */
+ public Call[] getCalls(QName portName) throws ServiceException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /**
+ * Method getHandlerRegistry
+ * Returns the configured HandlerRegistry instance for this Service
+ * instance.
+ * @return HandlerRegistry
+ * @throws java.lang.UnsupportedOperationException if the Service class
+ * does not support the configuration of a HandlerRegistry
+ */
+ public HandlerRegistry getHandlerRegistry() throws
+ UnsupportedOperationException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /**
+ * Method getPort
+ * The getPort method returns either an instance of a generated stub
+ * implementation class or a dynamic proxy. The parameter
+ * serviceEndpointInterface specifies the service endpoint interface that
+ * is supported by the returned stub or proxy. In the implementation of
+ * this method, the JAX-RPC runtime system takes the responsibility of
+ * selecting a protocol binding (and a port) and configuring the stub
+ * accordingly. The returned Stub instance should not be reconfigured by
+ * the client.
+ * @param serviceEndpointInterface Service endpoint interface
+ * @return Stub instance or dynamic proxy that supports the specified
+ * service endpoint interface
+ * @throws ServiceException This exception is thrown in the following
+ * cases:
+ * 1. If there is an error during creation of stub instance or dynamic
+ * proxy
+ * 2. If there is any missing WSDL metadata as required by this method
+ * 3. Optionally, if an illegal serviceEndpointInterface is specified
+ */
+ public Remote getPort(Class serviceEndpointInterface) throws
+ ServiceException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /**
+ * Method getPort
+ * The getPort method returns either an instance of a generated stub
+ * implementation class or a dynamic proxy. A service client uses this
+ * dynamic proxy to invoke operations on the target service endpoint. The
+ * serviceEndpointInterface specifies the service endpoint interface that
+ * is supported by the created dynamic proxy or stub instance.
+ * @param portName Qualified name of the service endpoint in the WSDL
+ * service description
+ * @param serviceEndpointInterface Service endpoint interface supported by
+ * the dynamic proxy or stub instance
+ * @return java.rmi.Remote Stub instance or dynamic proxy that supports the
+ * specified service endpoint interface
+ * @throws ServiceException This exception is thrown in the following
+ * cases:
+ * 1. If there is an error in creation of the dynamic proxy or stub
+ * instance
+ * 2. If there is any missing WSDL metadata as required by this method
+ * 3. Optionally, if an illegal serviceEndpointInterface or portName is
+ * specified
+ * @see java.lang.reflect.Proxy, java.lang.reflect.InvocationHandler
+ */
+ public Remote getPort(QName portName, Class serviceEndpointInterface)
+ throws ServiceException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /**
+ * Method getPorts
+ * Returns an Iterator for the list of QNames of service endpoints grouped
+ * by this service
+ * @return Returns java.util.Iterator with elements of type
+ * javax.xml.namespace.QName
+ * @throws ServiceException If this Service class does not have access to
+ * the required WSDL metadata
+ */
+ public Iterator getPorts() throws ServiceException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /**
+ * Method getSecurityConfiguration
+ * Gets the SecurityConfiguration for this Service object. The returned
+ * SecurityConfiguration instance is used to initialize the security
+ * configuration of BindingProvider instance created using this Service
+ * object.
+ * @return The SecurityConfiguration for this Service object.
+ * @throws java.lang.UnsupportedOperationException if the Service class
+ * does not support the configuration of SecurityConfiguration.
+ */
+ public SecurityConfiguration getSecurityConfiguration() throws
+ UnsupportedOperationException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /**
+ * Method getServiceName
+ * Gets the name of this service.
+ * @return Qualified name of this service
+ */
+ public QName getServiceName() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /**
+ * Method getTypeMappingRegistry
+ * Gets the TypeMappingRegistry for this Service object. The returned
+ * TypeMappingRegistry instance is pre-configured to support the standard
+ * type mapping between XML and Java types types as required by the
+ * JAX-RPC specification.
+ * @return The TypeMappingRegistry for this Service object.
+ * @throws java.lang.UnsupportedOperationException if the Service class
+ * does not support the configuration of TypeMappingRegistry.
+ */
+ public TypeMappingRegistry getTypeMappingRegistry() throws
+ UnsupportedOperationException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /**
+ * Method getWSDLDocumentLocation
+ * Gets the location of the WSDL document for this Service.
+ * @return URL for the location of the WSDL document for this service
+ */
+ public URL getWSDLDocumentLocation() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Service() {
+ super();
+ // TODO Auto-generated constructor stub
+ }
+
+}
Added: webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/ServiceFactoryImpl.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/ServiceFactoryImpl.java?rev=202381&view=auto
==============================================================================
--- webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/ServiceFactoryImpl.java (added)
+++ webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/ServiceFactoryImpl.java Wed Jun 29 07:23:40 2005
@@ -0,0 +1,162 @@
+package org.apache.axis.jaxrpc.client;
+
+import java.net.URL;
+import java.util.Properties;
+
+import javax.xml.namespace.QName;
+import javax.xml.rpc.Service;
+import javax.xml.rpc.ServiceException;
+import javax.xml.rpc.ServiceFactory;
+
+public class ServiceFactoryImpl extends ServiceFactory {
+
+ private Service serviceClass = null;
+
+ public ServiceFactoryImpl() {
+ super();
+ }
+
+ /**
+ * Method createService
+ * Create a Service instance.
+ * @param wsdlDocumentLocation URL for the WSDL document location for the service
+ * @param serviceName QName for the service.
+ * @return a <code>Service</code> instance
+ * @throws ServiceException
+ */
+ @Override
+ public Service createService(URL wsdlDocumentLocation, QName serviceName)
+ throws ServiceException {
+
+ if(serviceClass == null) {
+ //As of now properties isn't finalized. So send null
+ //TODO Revisit this after finalizing how property resources
+ // would be fed to our implementation.
+ serviceClass = loadService(wsdlDocumentLocation, serviceName, null);
+ }
+ return serviceClass;
+ }
+
+ /**
+ * Method loadService
+ * Create an instance of the generated service implementation class for a given service interface, if available.
+ * @param serviceInterface Service interface
+ * @return ??? read the spec once again
+ * @throws ServiceException If there is any error while creating the specified service, including the case where a generated service implementation class cannot be located
+ */
+ @Override
+ public Service loadService(Class serviceInterface) throws ServiceException {
+ return loadService(null, serviceInterface, null);
+ }
+
+ /**
+ * Method loadService
+ * Create an instance of the generated service implementation class for a
+ * given service interface, if available. An implementation may use the
+ * provided wsdlDocumentLocation and properties to help locate the
+ * generated implementation class. If no such class is present, a
+ * ServiceException will be thrown.
+ * @param wsdlDocumentLocation URL for the WSDL document location for the service or null
+ * @param serviceInterface Service interface
+ * @param properties A set of implementation-specific properties to help locate the generated service implementation class
+ * @return ??? read the spec once again
+ * @throws ServiceException If there is any error while creating the specified service, including the case where a generated service implementation class cannot be located
+ */
+ @Override
+ public Service loadService(URL wsdlDocumentLocation,
+ Class serviceInterface, Properties properties)
+ throws ServiceException {
+ Service returnClass;
+ //Check if serviceInterface is already available to load and return
+ try {
+ returnClass = (Service)serviceInterface.newInstance();
+ } catch (InstantiationException e) {
+ //attempt to load the interface failed, so lets check other
+ //alternative - interpret the generated service class using wsdl
+ //location and or properties and see if you have any luck
+ String serviceClassName;
+ serviceClassName = interpretServiceClassName(wsdlDocumentLocation, properties);
+ Class loadedClass;
+ try {
+ loadedClass = Thread.currentThread().getContextClassLoader().loadClass(serviceClassName);
+ returnClass = (Service)loadedClass.newInstance();
+ } catch (Exception e1) {
+ throw new ServiceException(e1);
+ }
+ } catch (IllegalAccessException e) {
+ throw new ServiceException(e);
+ }
+ return returnClass;
+ }
+
+ /**
+ * Method loadService
+ * Create an instance of the generated service implementation class for a
+ * given service, if available. The service is uniquely identified by the
+ * wsdlDocumentLocation and serviceName arguments. An implementation may
+ * use the provided properties to help locate the generated implementation
+ * class. If no such class is present, a ServiceException will be thrown.
+ * @param wsdlDocumentLocation URL for the WSDL document location for the service or null
+ * @param serviceName Qualified name for the service
+ * @param properties A set of implementation-specific properties to help locate the generated service implementation class
+ * @return ??? read the spec once again
+ * @throws ServiceException If there is any error while creating the specified service, including the case where a generated service implementation class cannot be located
+ */
+ @Override
+ public Service loadService(URL wsdlDocumentLocation, QName serviceName,
+ Properties properties) throws ServiceException {
+ Service returnClass = null;
+ // TODO Need to consult someone, I'm not fully clear abt this implmntn
+ // as to how should wsdlDocumentLocation be used etc.
+ if (properties != null) {
+ //TODO Do something and get the name of the generated service
+ //implementation class name
+ //load the class with that name, instantiate it and return
+ return null;
+ }
+ else {
+ //Interpreting the name of generated class for this service
+ //WITHOUT taking into consideration name-collisions.
+ //TODO Revisit to embedd name collision logic
+ String localPart = serviceName.getLocalPart();
+ String packageName = getGeneratedClassPackageName(serviceName);
+ try {
+ returnClass = (Service)Thread.currentThread().getContextClassLoader().loadClass(packageName + "." + localPart).newInstance();
+ } catch (Exception e) {
+ throw new ServiceException(e);
+ }
+ }
+ return returnClass;
+ }
+
+ /**
+ * Method getServiceClassName
+ * This will interpret and return the name of the generated Service
+ * implementation class using wsdl location and or properties
+ * @param wsdlDocumentLocation
+ * @param properties
+ */
+ private String interpretServiceClassName(URL wsdlDocumentLocation, Properties properties) {
+ //This code could be a tiny beast, code little by little
+ String serviceClassName = null;
+ if (wsdlDocumentLocation==null && properties == null) {
+ //Not wise to spend time trying to interpret serviceName out of nulls :)
+ return null;
+ }
+ //TODO method implementation is not complete
+
+ return serviceClassName;
+ }
+
+ /**
+ * Method getGeneratedClassPackageName
+ * Returns the package in which requested class was generated
+ * @param className
+ * @return
+ */
+ public String getGeneratedClassPackageName (QName className) {
+ //TODO Providing just a hard coded makeshift implementation for now
+ //Need to properly code the method.
+ return new String("defaultPackage");
+ }
+}//class ServiceFactoryImpl.