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/30 19:49:35 UTC

svn commit: r208651 - in /webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client: CallImpl.java DispatchImpl.java Service.java ServiceImpl.java

Author: jayachandra
Date: Thu Jun 30 10:49:34 2005
New Revision: 208651

URL: http://svn.apache.org/viewcvs?rev=208651&view=rev
Log: (empty)

Added:
    webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/CallImpl.java
    webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/DispatchImpl.java
    webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/ServiceImpl.java
Removed:
    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/CallImpl.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/CallImpl.java?rev=208651&view=auto
==============================================================================
--- webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/CallImpl.java (added)
+++ webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/CallImpl.java Thu Jun 30 10:49:34 2005
@@ -0,0 +1,380 @@
+/**
+ * 
+ */
+package org.apache.axis.jaxrpc.client;
+
+import java.rmi.RemoteException;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+import javax.xml.rpc.Binding;
+import javax.xml.rpc.JAXRPCContext;
+import javax.xml.rpc.JAXRPCException;
+import javax.xml.rpc.ParameterMode;
+import javax.xml.rpc.soap.SOAPFaultException;
+
+/**
+ * @author sunja07
+ *
+ */
+public class CallImpl extends BindingProviderImpl implements javax.xml.rpc.Call {
+
+	/**
+	 * 
+	 */
+	public CallImpl() {
+		super();
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * Method isParameterAndReturnSpecRequired
+	 * Indicates whether addParameter and setReturnType methods are to be 
+	 * invoked to specify the parameter and return type specification for a 
+	 * specific operation.
+	 * @param operationName Qualified name of the operation
+	 * @return Returns true if the Call implementation class requires 
+	 * addParameter and setReturnType to be invoked in the client code for 
+	 * the specified operation. This method returns false otherwise.
+	 * @throws java.lang.IllegalArgumentException - If invalid operation name 
+	 * is specified
+	 */
+	public boolean isParameterAndReturnSpecRequired(QName operationName)
+			throws IllegalArgumentException {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	/**
+	 * Method addParameter
+	 * Adds a parameter type and mode for a specific operation. Note that the 
+	 * client code may not call any addParameter and setReturnType methods 
+	 * before calling the invoke method. In this case, the Call implementation 
+	 * class determines the parameter types by using reflection on parameters, 
+	 * using the WSDL description and configured type mapping registry.
+	 * @param paramName Name of the parameter
+	 * @param xmlType XML type of the parameter
+	 * @param parameterMode Mode of the parameter-whether ParameterMode.IN, 
+	 * ParameterMode.OUT, or ParameterMode.INOUT
+	 * @throws javax.xml.rpc.JAXRPCException This exception may be thrown if 
+	 * the method isParameterAndReturnSpecRequired returns false for this 
+	 * operation.
+	 * @throws java.lang.IllegalArgumentException If any illegal parameter 
+	 * name or XML type is specified
+	 */
+	public void addParameter(String paramName, QName xmlType,
+			ParameterMode parameterMode) throws JAXRPCException,
+			IllegalArgumentException {
+		// TODO Auto-generated method stub
+
+	}
+
+	/**
+	 * Method addParameter
+	 * Adds a parameter type and mode for a specific operation. This method is 
+	 * used to specify the Java type for either OUT or INOUT parameters. 
+	 * @param paramName Name of the parameter
+	 * @param xmlType XML type of the parameter
+	 * @param javaType Java class of the parameter
+	 * @param parameterMode Mode of the parameter-whether ParameterMode.IN, 
+	 * OUT or INOUT 
+	 * @throws java.lang.IllegalArgumentException If any illegal parameter 
+	 * name or XML type is specified 
+	 * @throws java.lang.UnsupportedOperationException If this method is not 
+	 * supported
+	 * @throws javax.xml.rpc.JAXRPCException 
+	 * 1.This exception may be thrown if this method is invoked when the 
+	 * method isParameterAndReturnSpecRequired returns false.
+	 * 2.If specified XML type and Java type mapping is not valid. For 
+	 * example, TypeMappingRegistry has no serializers for this mapping. 
+	 */
+	public void addParameter(String paramName, QName xmlType, Class javaType,
+			ParameterMode parameterMode) throws IllegalArgumentException,
+			UnsupportedOperationException, JAXRPCException {
+		// TODO Auto-generated method stub
+
+	}
+
+	/**
+	 * Method getParameterTypeByName
+	 * Gets the XML type of a parameter by name 
+	 * @param paramName Name of the parameter
+	 * @return Returns XML type for the specified parameter
+	 */
+	public QName getParameterTypeByName(String paramName) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/**
+	 * Method setReturnType
+	 * Sets the return type for a specific operation. Invoking 
+	 * setReturnType(null) removes the return type for this Call object. 
+	 * @param xmlType XML data type of the return value
+	 * @throws javax.xml.rpc.JAXRPCException This exception may be thrown when 
+	 * the method isParameterAndReturnSpecRequired returns false. 
+	 * @throws java.lang.IllegalArgumentException If an illegal XML type is 
+	 * specified 
+	 */
+	public void setReturnType(QName xmlType) throws JAXRPCException,
+			IllegalArgumentException, UnsupportedOperationException {
+		// TODO Auto-generated method stub
+
+	}
+
+	/**
+	 * Method setReturnType
+	 * Sets the return type for a specific operation.
+	 * @param xmlType XML data type of the return value
+	 * @param javaType Java Class of the return value
+	 * @throws java.lang.UnsupportedOperationException If this method is not 
+	 * supported 
+	 * @throws java.lang.IllegalArgumentException If an illegal XML type is 
+	 * specified
+	 * @throws javax.xml.rpc.JAXRPCException
+	 * 1. This exception may be thrown if this method is invoked when the 
+	 * method isParameterAndReturnSpecRequired returns false.
+	 * 2. If XML type and Java type cannot be mapped using the standard type 
+	 * mapping or TypeMapping registry
+	 */
+	public void setReturnType(QName xmlType, Class javaType)
+			throws UnsupportedOperationException, IllegalArgumentException,
+			JAXRPCException {
+		// TODO Auto-generated method stub
+
+	}
+
+	/**
+	 * Method getReturnType
+	 * Gets the return type for a specific operation
+	 * @return Returns the XML type for the return value
+	 */
+	public QName getReturnType() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/**
+	 * Method removeAllParameters
+	 * Removes all specified parameters from this Call instance. Note that 
+	 * this method removes only the parameters and not the return type. The 
+	 * setReturnType(null) is used to remove the return type.
+	 * @throws javax.xml.rpc.JAXRPCException This exception may be thrown If 
+	 * this method is called when the method isParameterAndReturnSpecRequired 
+	 * returns false for this Call's operation.
+	 */
+	public void removeAllParameters() throws JAXRPCException {
+		// TODO Auto-generated method stub
+
+	}
+
+	/**
+	 * Method getOperationName
+	 * Gets the name of the operation to be invoked using this Call instance.
+	 * @return Qualified name of the operation
+	 */
+	public QName getOperationName() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/**
+	 * Method setOperationName
+	 * Sets the name of the operation to be invoked using this Call instance. 
+	 * @param operationName QName of the operation to be invoked using the 
+	 * Call instance
+	 */
+	public void setOperationName(QName operationName) {
+		// TODO Auto-generated method stub
+
+	}
+
+	/**
+	 * Method getPortTypeName
+	 * Gets the qualified name of the port type.
+	 * @return Qualified name of the port type
+	 */
+	public QName getPortTypeName() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/**
+	 * Method setPortTypeName
+	 * Sets the qualified name of the port type. 
+	 * @param portType Qualified name of the port type
+	 */
+	public void setPortTypeName(QName portType) {
+		// TODO Auto-generated method stub
+
+	}
+
+	/**
+	 * Method setTargetEndpointAddress
+	 * Sets the address of the target service endpoint. This address must 
+	 * correspond to the transport specified in the binding for this Call 
+	 * instance.
+	 * @param address Address of the target service endpoint; specified as an 
+	 * URI
+	 */
+	public void setTargetEndpointAddress(String address) {
+		// TODO Auto-generated method stub
+
+	}
+
+	/**
+	 * Method getTargetEndpointAddress
+	 * Gets the address of a target service endpoint. 
+	 * @return Address of the target service endpoint as an URI
+	 */
+	public String getTargetEndpointAddress() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/**
+	 * Method setProperty
+	 * Sets the value for a named property. JAX-RPC specification specifies a 
+	 * standard set of properties that may be passed to the Call.setProperty 
+	 * method.
+	 * @param name Name of the property
+	 * @param value Value of the property
+	 * @throws javax.xml.rpc.JAXRPCException
+	 * 1. If an optional standard property name is specified, however this 
+	 * Call implementation class does not support the configuration of this 
+	 * property.
+	 * 2. If an invalid (or unsupported) property name is specified or if a 
+	 * value of mismatched property type is passed.
+	 * 3. If there is any error in the configuration of a valid property.
+	 */
+	public void setProperty(String name, Object value) throws JAXRPCException {
+		// TODO Auto-generated method stub
+
+	}
+
+	/**
+	 * Method getProperty
+	 * Gets the value of a named property. 
+	 * @param name Name of the property
+	 * @return Value of the named property
+	 * @throws javax.xml.rpc.JAXRPCException if an invalid or unsupported 
+	 * property name is passed.
+	 */
+	public Object getProperty(String name) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/**
+	 * Method removeProperty
+	 * Removes a named property.
+	 * @param name Name of the property
+	 * @throws javax.xml.rpc.JAXRPCException if an invalid or unsupported 
+	 * property name is passed.
+	 */
+	public void removeProperty(String name) {
+		// TODO Auto-generated method stub
+
+	}
+
+	/**
+	 * Method getPropertyNames
+	 * Gets the names of configurable properties supported by this Call object.
+	 * @return Iterator for the property names
+	 */
+	public Iterator getPropertyNames() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/**
+	 * Method invoke
+	 * Invokes a specific operation using a synchronous request-response 
+	 * interaction mode.
+	 * @param inputParams Object[]--Parameters for this invocation. This 
+	 * includes only the input params
+	 * @return Returns the return value or null
+	 * @throws java.rmi.RemoteException if there is any error in the remote 
+	 * method invocation
+	 * @throws javax.xml.rpc.soap.SOAPFaultException Indicates a SOAP fault
+	 * @throws javax.xml.rpc.JAXRPCException 
+	 * 1. If there is an error in the configuration of the Call object
+	 * 2. If inputParams do not match the required parameter set (as specified
+	 *    through the addParameter invocations or in the corresponding WSDL)
+	 * 3. If parameters and return type are incorrectly specified 
+	 */
+	public Object invoke(Object[] inputParams) throws RemoteException,
+			SOAPFaultException, JAXRPCException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/**
+	 * Method invoke
+	 * Invokes a specific operation using a synchronous request-response 
+	 * interaction mode.
+	 * @param operationName QName of the operation
+	 * @param inputParams Object[]--Parameters for this invocation. This 
+	 * includes only the input params.
+	 * @return Returns the return value or null
+	 * @throws java.rmi.RemoteException if there is any error in the remote 
+	 * method invocation
+	 * @throws javax.xml.rpc.soap.SOAPFaultException Indicates a SOAP fault
+	 * @throws javax.xml.rpc.JAXRPCException 
+	 * 1. If there is an error in the configuration of the Call object
+	 * 2. If inputParams do not match the required parameter set (as specified 
+	 *    through the addParameter invocations or in the corresponding WSDL)
+	 * 3. If parameters and return type are incorrectly specified
+	 */
+	public Object invoke(QName operationName, Object[] inputParams)
+			throws RemoteException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/**
+	 * Method invokeOneWay
+	 * @param inputParams Object[]--Parameters for this invocation. This 
+	 * includes only the input params.
+	 * @throws javax.xml.rpc.JAXRPCException if there is an error in the 
+	 * configuration of the Call object (example: a non-void return type has 
+	 * been incorrectly specified for the one-way call) or if there is any 
+	 * error during the invocation of the one-way remote call
+	 */
+	public void invokeOneWay(Object[] inputParams) throws JAXRPCException {
+		// TODO Auto-generated method stub
+
+	}
+
+	/**
+	 * Method getOutputParams
+	 * Returns a Map of {name, value} for the output parameters of the last 
+	 * invoked operation. The parameter names in the returned Map are of type 
+	 * java.lang.String.
+	 * @return Map Output parameters for the last Call.invoke(). Empty Map is 
+	 * returned if there are no output parameters.
+	 * @throws JAXRPCException If this method is invoked for a one-way 
+	 * operation or is invoked before any invoke method has been called.
+	 */
+	public Map getOutputParams() throws JAXRPCException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/**
+	 * Method getOutputValues
+	 * Returns a List values for the output parameters of the last invoked 
+	 * operation.
+	 * @return java.util.List Values for the output parameters. An empty List 
+	 * is returned if there are no output values.
+	 * @throws JAXRPCException If this method is invoked for a one-way 
+	 * operation or is invoked before any invoke method has been called.
+	 */
+	public List getOutputValues() throws JAXRPCException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+}

Added: webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/DispatchImpl.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/DispatchImpl.java?rev=208651&view=auto
==============================================================================
--- webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/DispatchImpl.java (added)
+++ webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/DispatchImpl.java Thu Jun 30 10:49:34 2005
@@ -0,0 +1,106 @@
+package org.apache.axis.jaxrpc.client;
+
+import java.rmi.RemoteException;
+import java.util.concurrent.Future;
+
+import javax.xml.rpc.AsyncHandler;
+import javax.xml.rpc.Dispatch;
+import javax.xml.rpc.JAXRPCException;
+import javax.xml.rpc.Response;
+
+public class DispatchImpl extends BindingProviderImpl implements Dispatch {
+
+	
+	public DispatchImpl() {
+		super();
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * Method invoke
+	 * Invoke a service operation synchronously. The client is responsible 
+	 * for ensuring that the msg object when marshalled is formed according 
+	 * to the requirements of the protocol binding in use.
+	 * 
+	 * @param msg - An object that will form the message or payload of the 
+	 * message used to invoke the operation.
+	 * @return The response message or message payload to the operation 
+	 * invocation.
+	 * @throws java.rmi.RemoteException - If a fault occurs during 
+	 * communication with the service
+	 * @throws JAXRPCException - If there is any error in the configuration 
+	 * of the Dispatch instance. 
+	 */
+	public Object invoke(Object msg) throws RemoteException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/**
+	 * Method invokeAsync
+	 * Invoke a service operation asynchronously. The method returns without 
+	 * waiting for the response to the operation invocation, the results of 
+	 * the operation are obtained by polling the returned Response. The 
+	 * client is responsible for ensuring that the msg object when marshalled 
+	 * is formed according to the requirements of the protocol binding in use.
+	 * 
+	 * @param msg - An object that will form the message or payload of the 
+	 * message used to invoke the operation.
+	 * @return The response message or message payload to the operation 
+	 * invocation.
+	 * @throws JAXRPCException - If there is any error in the configuration 
+	 * of the Dispatch instance.
+	 */
+	public Response invokeAsync(Object msg) throws JAXRPCException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/**
+	 * Method invokeAsync
+	 * Invoke a service operation asynchronously. The method returns without 
+	 * waiting for the response to the operation invocation, the results of 
+	 * the operation are communicated to the client via the passed in handler.
+	 * The client is responsible for ensuring that the msg object when 
+	 * marshalled is formed according to the requirements of the protocol 
+	 * binding in use.
+	 * 
+	 * @param msg - An object that will form the message or payload of the 
+	 * message used to invoke the operation.
+	 * @param handler - The handler object that will receive the response to 
+	 * the operation invocation.
+	 * @return A Future object that may be used to check the status of the 
+	 * operation invocation. This object must not be used to try to obtain 
+	 * the results of the operation - the object returned from Future.get() 
+	 * is implementation dependent and any use of it will result in 
+	 * non-portable behaviour.
+	 * @throws JAXRPCException - If there is any error in the configuration 
+	 * of the Dispatch instance
+	 */
+	public Future invokeAsync(Object msg, AsyncHandler handler)
+			throws JAXRPCException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/**
+	 * Method invokeOneWay
+	 * Invokes a service operation using the one-way interaction mode. The 
+	 * operation invocation is logically non-blocking, subject to the 
+	 * capabilities of the underlying protocol, no results are returned. 
+	 * When the protocol in use is SOAP/HTTP, this method must block until an 
+	 * HTTP response code has been received or an error occurs. The client is 
+	 * responsible for ensuring that the msg object when marshalled is formed 
+	 * according to the requirements of the protocol binding in use.
+	 * 
+	 * @param msg - An object that will form the message or payload of the 
+	 * message used to invoke the operation.
+	 * @throws JAXRPCException - If there is any error in the configuration 
+	 * of the Dispatch instance or if an error occurs during the invocation.
+	 */
+	public void invokeOneWay(Object msg) throws JAXRPCException {
+		// TODO Auto-generated method stub
+
+	}
+
+}

Added: webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/ServiceImpl.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/ServiceImpl.java?rev=208651&view=auto
==============================================================================
--- webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/ServiceImpl.java (added)
+++ webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/jaxws/src/org/apache/axis/jaxrpc/client/ServiceImpl.java Thu Jun 30 10:49:34 2005
@@ -0,0 +1,365 @@
+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 ServiceImpl implements javax.xml.rpc.Service {
+	
+	private HandlerRegistry handlerRegistry;
+	
+	private TypeMappingRegistry typeMappingRegistry;
+
+	public static boolean JAXB_USAGE = true;
+	
+	public String wsdlLoc = null;
+	/**
+	 * 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 {
+		Call call = new CallImpl();
+		return call;
+	}
+
+	/**
+	 * 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 {
+		Call call = createCall(portName);
+		call.setOperationName(operationName);
+		
+		return call;
+	}
+
+	/**
+	 * 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 {
+		QName dummyQNameForOperationName = new QName(operationName);
+		return createCall(portName, dummyQNameForOperationName);
+	}
+
+	/**
+	 * 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 {
+		
+		Call call = new CallImpl();
+
+		//portName and portType name needn't be matching. So...
+		QName portTypeName = getPortTypeNameForPort(portName); 
+		call.setPortTypeName(portTypeName);
+		
+		
+		prefillPortFromWSDL(portName);
+		return null;
+	}
+	
+	public QName getPortTypeNameForPort(QName portName) {
+		//TODO Corresponding to a portName we can avail a binding linkage and 
+		//from the binding we can get the unique portType it binds
+		
+		//but for now. Lets assume our portName is exactly our portTypeName
+		//Will revisit once WSDL handling mechanism is in place.
+		return portName;
+	}
+	
+	public void prefillPortFromWSDL(QName portName) { 
+		//TODO Actually there is lot amount of info that can be prefetched
+		//from wsdl for a given port. But WSDL handling is yet to be thought
+		//over and finalized. Once that done, we will prefill as much info
+		//from wsdl as we can in this method.
+		//From port, we can get targetEndPointAddress, binding and from 
+		//binding the portType information. Using which may be the call
+		//object can be better configured with parameters and returnType
+		//info.
+	}
+
+	// This involves generics, needs a revisit
+	/**
+	 * Method createDispatch
+	 * Creates a Dispatch instance for use with objects of the users choosing.
+	 * 
+	 * @param portName - Qualified name for the target service endpoint
+	 * @param type - 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 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. 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 {
+		
+		//Logic here is that corresponding to this portName
+		//identify the portType and within it identify all the
+		//operations in it.
+		//For each operation, create a call object, configure it and
+		//add it to an array of call objects. Configuring of call
+		//objects would be typically setting the TargetEndPointAddress, 
+		//setting the operationName, portName, portType, adding 
+		//parameters and returnType.
+
+		// 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 {
+		//Actually at the deployment configuration time positively the handler
+		//registry must be populated with handler chain info.
+		return handlerRegistry;
+	}
+
+	/**
+	 * 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 {
+		//If the implementation is using JAXB, we should throw exception
+		//Usage of JAXB might be using a flag. This flag, I feel, is most
+		//appropriate if placed in the way the ServiceFactory itself is 
+		//instantiated. ServiceFactory.newInstance(boolean JAXB_USAGE)
+		//The flag can be copied to a boolean value in the Service object
+		//that gets created with sf.createService(...) method.
+		
+		if (JAXB_USAGE)
+			throw new UnsupportedOperationException();
+		else
+			return typeMappingRegistry;
+			//But positively at some point of execution flow
+			//typeMappingRegistry must be populated.
+	}
+
+	/**
+	 * 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() {
+		return null;
+	}
+
+	public ServiceImpl() {
+		super();
+		// TODO Auto-generated constructor stub
+	}
+
+}