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 ba...@apache.org on 2006/11/03 02:33:03 UTC

svn commit: r470629 [6/8] - in /webservices/axis2/trunk/java/modules/jaxws: src/javax/xml/ws/spi/ src/org/apache/axis2/jaxws/ src/org/apache/axis2/jaxws/client/proxy/ src/org/apache/axis2/jaxws/context/utils/ src/org/apache/axis2/jaxws/description/ src...

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/ServiceDescription.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/ServiceDescription.java?view=diff&rev=470629&r1=470628&r2=470629
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/ServiceDescription.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/ServiceDescription.java Thu Nov  2 17:33:00 2006
@@ -1,386 +1,16 @@
-/*
- * Copyright 2004,2005 The Apache Software Foundation.
- * Copyright 2006 International Business Machines Corp.
- *
- * 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 org.apache.axis2.jaxws.description;
 
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.List;
-
-import javax.xml.namespace.QName;
-import javax.xml.ws.WebServiceException;
-import javax.jws.WebService;
-import javax.wsdl.Definition;
-import javax.wsdl.Port;
-import javax.wsdl.Service;
-import javax.wsdl.WSDLException;
 import javax.xml.namespace.QName;
 
-import org.apache.axis2.AxisFault;
 import org.apache.axis2.client.ServiceClient;
 import org.apache.axis2.context.ConfigurationContext;
-import org.apache.axis2.deployment.DeploymentException;
-import org.apache.axis2.description.AxisService;
-import org.apache.axis2.description.OutInAxisOperation;
-import org.apache.axis2.description.OutOnlyAxisOperation;
-import org.apache.axis2.description.Parameter;
-import org.apache.axis2.description.RobustOutOnlyAxisOperation;
-import org.apache.axis2.description.WSDL11ToAllAxisServicesBuilder;
-import org.apache.axis2.description.WSDL11ToAxisServiceBuilder;
-import org.apache.axis2.engine.AbstractDispatcher;
-import org.apache.axis2.jaxws.ClientConfigurationFactory;
-import org.apache.axis2.jaxws.ExceptionFactory;
-import org.apache.axis2.jaxws.description.builder.DescriptionBuilderComposite;
-import org.apache.axis2.jaxws.description.builder.MDQConstants;
-import org.apache.axis2.jaxws.description.builder.MethodDescriptionComposite;
-import org.apache.axis2.jaxws.description.builder.WebMethodAnnot;
-import org.apache.axis2.jaxws.i18n.Messages;
-import org.apache.axis2.jaxws.util.WSDL4JWrapper;
-import org.apache.axis2.jaxws.util.WSDLWrapper;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * A ServiceDescription corresponds to a Service under which there can be a
- * collection of enpdoints. In WSDL 1.1 terms, then, a ServiceDescription
- * corresponds to a wsdl:Service under which there are one or more wsdl:Port
- * entries. The ServiceDescription is the root of the metdata abstraction
- * Description hierachy.
- * 
- * The Description hierachy is:
- * <pre>
- * ServiceDescription
- *     EndpointDescription[]
- *         EndpointInterfaceDescription
- *             OperationDescription[]
- *                 ParameterDescription[]
- *                 FaultDescription[]       (Note: Not implemented yet)
- *
- * <b>ServiceDescription details</b>
- * 
- *     CORRESPONDS TO:      
- *         On the Client: The JAX-WS Service class or generated subclass.
- *         
- *         On the Server: The Service implementation.  Note that there is a 1..1 
- *         correspondence between a ServiceDescription and EndpointDescription 
- *         on the server side.
- *        
- *     AXIS2 DELEGATE:      None
- *     
- *     CHILDREN:            1..n EndpointDescription
- *     
- *     ANNOTATIONS:
- *         None
- *     
- *     WSDL ELEMENTS:
- *         service
- *         
- *  </pre>       
- */
-public class ServiceDescription {
-    private ClientConfigurationFactory clientConfigFactory;
-    private ConfigurationContext configContext;
-
-    private URL wsdlURL;
-    private QName serviceQName;
-    
-    // Only ONE of the following will be set in a ServiceDescription, depending on whether this Description
-    // was created from a service-requester or service-provider flow. 
-    private Class serviceClass;         // A service-requester generated service or generic service class
-    
-    // TODO: Possibly remove Definition and delegate to the Defn on the AxisSerivce set as a paramater by WSDLtoAxisServicBuilder?
-    private WSDLWrapper wsdlWrapper; 
-    
-    private Hashtable<QName, EndpointDescription> endpointDescriptions = new Hashtable<QName, EndpointDescription>();
-    
-    private static final Log log = LogFactory.getLog(ServiceDescription.class);
 
-    private HashMap<String, DescriptionBuilderComposite> dbcMap = null;
-    
-    private DescriptionBuilderComposite	composite = null;
-    private boolean isServerSide = false;
-    
-    /**
-     * This is (currently) the client-side-only constructor
-     * Construct a service description hierachy based on WSDL (may be null), the Service class, and 
-     * a service QName.
-     * 
-     * @param wsdlURL  The WSDL file (this may be null).
-     * @param serviceQName  The name of the service in the WSDL.  This can not be null since a 
-     *   javax.xml.ws.Service can not be created with a null service QName.
-     * @param serviceClass  The JAX-WS service class.  This could be an instance of
-     *   javax.xml.ws.Service or a generated service subclass thereof.  This will not be null.
-     */
-    ServiceDescription(URL wsdlURL, QName serviceQName, Class serviceClass) {
-        if (serviceQName == null) {
-            throw ExceptionFactory.makeWebServiceException(Messages.getMessage("serviceDescErr0"));
-        }
-        if (serviceClass == null) {
-            throw ExceptionFactory.makeWebServiceException(Messages.getMessage("serviceDescErr1", "null"));
-        }
-        if (!javax.xml.ws.Service.class.isAssignableFrom(serviceClass)) {
-            throw ExceptionFactory.makeWebServiceException(Messages.getMessage("serviceDescErr1", serviceClass.getName()));
-        }
-        
-        this.wsdlURL = wsdlURL;
-        // TODO: The serviceQName needs to be verified between the argument/WSDL/Annotation
-        this.serviceQName = serviceQName;
-        this.serviceClass = serviceClass;
-        
-        setupWsdlDefinition();
-    }
-
-    /**
-     * This is (currently) the service-provider-side-only constructor.
-     * Create a service Description based on a service implementation class
-     * 
-     * @param serviceImplClass
-     */
-    // NOTE: Taking an axisService on the call is TEMPORARY!  Eventually the AxisService should be constructed
-    //       based on the annotations in the ServiceImpl class.
-    // TODO: Remove axisService as paramater when the AxisService can be constructed from the annotations
-    ServiceDescription(Class serviceImplClass, AxisService axisService) {
-        // Create the EndpointDescription hierachy from the service impl annotations; Since the PortQName is null, 
-        // it will be set to the annotation value.
-        EndpointDescription endpointDescription = new EndpointDescription(serviceImplClass, null, axisService, this);
-        addEndpointDescription(endpointDescription);
-        
-        // TODO: The ServiceQName instance variable should be set based on annotation or default
-    }
-
-    /**
-     * This is (currently) the service-provider-side-only constructor.
-     * Create a service Description based on a service implementation class
-     * 
-     * @param serviceImplClass
-     */
-    ServiceDescription(	
-    		HashMap<String, DescriptionBuilderComposite> dbcMap,
-    		DescriptionBuilderComposite composite ) {
-    	this.composite = composite;
-    	
-    	String serviceImplName = this.composite.getClassName();
-    	
-    	this.dbcMap = dbcMap;
-//TODO: How to we get this when called from server side, create here for now
-    	this.isServerSide = true;
-	
-    	//capture the WSDL, if there is any...to be used for later processing
-    	setupWsdlDefinition();
-    	
-		// Do a first pass validation for this DescriptionBuilderComposite.
-    	// This is not intended to be a full integrity check, but rather a fail-fast mechanism
-    	validateDBCLIntegrity();
-    	
-        // The ServiceQName instance variable is set based on annotation or default
-        //TODO: When we get this, need to consider verifying service name between WSDL
-        //      and annotations, so
-    	String targetNamespace;
-    	String serviceName;
-    	if(this.composite.getWebServiceAnnot() != null) {
-    		targetNamespace = this.composite.getWebServiceAnnot().targetNamespace();
-    		serviceName = this.composite.getWebServiceAnnot().serviceName();
-    	}
-    	else {
-    		targetNamespace = this.composite.getWebServiceProviderAnnot().targetNamespace();
-    		serviceName = this.composite.getWebServiceProviderAnnot().serviceName();
-    	}
-		this.serviceQName = new QName(targetNamespace, serviceName);
-
-        // Create the EndpointDescription hierachy from the service impl annotations; Since the PortQName is null, 
-        // it will be set to the annotation value.
-        //EndpointDescription endpointDescription = new EndpointDescription(null, this, serviceImplName);
-        EndpointDescription endpointDescription = new EndpointDescription(this, serviceImplName);
-        addEndpointDescription(endpointDescription);       
-    }
-    
-    /*=======================================================================*/
-    /*=======================================================================*/
-    // START of public accessor methods
-    
-    /**
-     * Update or create an EndpointDescription. Updates to existing
-     * EndpointDescriptons will be based on the SEI class and its annotations.  Both declared
-     * ports and dynamic ports can be updated.  A declared port is one that is defined (e.g. in WSDL or
-     * via annotations); a dyamic port is one that is not defined (e.g. not via WSDL or annotations) and 
-     * has been added via Serivce.addPort.  
-     * 
-     * Notes on how an EndpointDescription can be updated or created:
-     * 1) Service.createDispatch can create a Dispatch client for either a declared or dynamic port
-     * 2) Note that creating a Dispatch does not associate an SEI with an endpoint
-     * 3) Service.getPort will associate an SEI with a port
-     * 4) A getPort on an endpoint which was originally created for a Distpatch will update that
-     *    EndpointDescription with the SEI provided on the getPort
-     * 5) Service.getPort can not be called on a dynamic port (per the JAX-WS spec)
-     * 6) Service.addPort can not be called for a declared port
-     * 
-     * @param sei
-     *            This will be non-null if the update is of type GET_PORT; it
-     *            will be null if the update is ADD_PORT or CREATE_DISPATCH
-     * @param portQName
-     * @param updateType
-     *            Indicates what is causing the update GET_PORT is an attempt to
-     *            get a declared SEI-based port ADD_PORT is an attempt to add a
-     *            previously non-existent dynamic port CREATE_DISPATCH is an
-     *            attempt to create a Dispatch-based client to either a declared
-     *            port or a pre-existing dynamic port.
-     */
+public interface ServiceDescription {
     public enum UpdateType {GET_PORT, ADD_PORT, CREATE_DISPATCH}
-    public void updateEndpointDescription(Class sei, QName portQName, UpdateType updateType) {
-        
-        // TODO: Add support: portQName can be null when called from Service.getPort(Class)
-        if (portQName == null) {
-            throw new UnsupportedOperationException("ServiceDescription.updateEndpointDescription null PortQName not supported");
-        }
-        
-        EndpointDescription endpointDescription = getEndpointDescription(portQName);
-        boolean isPortDeclared = isPortDeclared(portQName);
-
-        switch (updateType) {
-
-        case ADD_PORT:
-            // Port must NOT be declared (e.g. can not already exist in WSDL)
-            // If an EndpointDesc doesn't exist; create it as long as it doesn't exist in the WSDL
-            // TODO: This test can be simplified once isPortDeclared(QName) understands annotations and WSDL as ways to declare a port.
-            if (getWSDLWrapper() != null && isPortDeclared) {
-                // TODO: RAS & NLS
-                throw ExceptionFactory.makeWebServiceException("ServiceDescription.updateEndpointDescription: Can not do an addPort with a PortQN that exists in the WSDL.  PortQN: " + portQName.toString());
-            }
-            else if (endpointDescription == null) {
-                // Use the SEI Class and its annotations to finish creating the Description hierachy.  Note that EndpointInterface, Operations, Parameters, etc.
-                // are not created for dynamic ports.  It would be an error to later do a getPort against a dynamic port (per the JAX-WS spec)
-                endpointDescription = new EndpointDescription(sei, portQName, true, this);
-                addEndpointDescription(endpointDescription);
-            }
-            else {
-                // All error check above passed, the EndpointDescription already exists and needs no updating
-            }
-            break;
-
-        case GET_PORT:
-            // If an endpointDesc doesn't exist, and the port exists in the WSDL, create it
-            // If an endpointDesc already exists and has an associated SEI already, make sure they match
-            // If an endpointDesc already exists and was created for Dispatch (no SEI), update that with the SEI provided on the getPort
-
-            // Port must be declared (e.g. in WSDL or via annotations)
-            // TODO: Once isPortDeclared understands annotations and not just WSDL, the 2nd part of this check can possibly be removed.
-            //       Although consider the check below that updates an existing EndpointDescritpion with an SEI.
-            if (!isPortDeclared || (endpointDescription != null && endpointDescription.isDynamicPort())) {
-                // This guards against the case where an addPort was done previously and now a getPort is done on it.
-                // TODO: RAS & NLS
-                throw ExceptionFactory.makeWebServiceException("ServiceDescription.updateEndpointDescription: Can not do a getPort on a port added via addPort().  PortQN: " + portQName.toString());
-            }
-            else if (sei == null) {
-                // TODO: RAS & NLS
-                throw ExceptionFactory.makeWebServiceException("ServiceDescription.updateEndpointDescription: Can not do a getPort with a null SEI.  PortQN: " + portQName.toString());
-            }
-            else if (endpointDescription == null) {
-                // Use the SEI Class and its annotations to finish creating the Description hierachy: Endpoint, EndpointInterface, Operations, Parameters, etc.
-                // TODO: Need to create the Axis Description objects after we have all the config info (i.e. from this SEI)
-                endpointDescription = new EndpointDescription(sei, portQName, this);
-                addEndpointDescription(endpointDescription);
-            }
-            else if (getEndpointSEI(portQName) == null && !endpointDescription.isDynamicPort()) {
-                // Existing endpointDesc from a declared port needs to be updated with an SEI
-                // Note that an EndpointDescritption created from an addPort (i.e. a dynamic port) can not do this.
-                endpointDescription.updateWithSEI(sei);
-            }
-            else if (getEndpointSEI(portQName) != sei) {
-                // TODO: RAS & NLS
-                throw ExceptionFactory.makeWebServiceException("ServiceDescription.updateEndpointDescription: Can't do a getPort() specifiying a different SEI than the previous getPort().  PortQN: " 
-                        + portQName + "; current SEI: " + sei + "; previous SEI: " + getEndpointSEI(portQName));
-            }
-            else {
-                // All error check above passed, the EndpointDescription already exists and needs no updating
-            }
-            break;
-
-        case CREATE_DISPATCH:
-            // Port may or may not exist in WSDL.  
-            // If an endpointDesc doesn't exist and it is in the WSDL, it can be created
-            // Otherwise, it is an error.
-            if (endpointDescription != null) {
-                // The EndpoingDescription already exists; nothing needs to be done
-            }
-            else if (sei != null) {
-                // The Dispatch should not have an SEI associated with it on the update call.
-                // REVIEW: Is this a valid check?
-                throw ExceptionFactory.makeWebServiceException("ServiceDescription.updateEndpointDescription: Can not specify an SEI when creating a Dispatch. PortQN: " + portQName);
-            }
-            else if (isPortDeclared) {
-                // EndpointDescription doesn't exist and this is a declared Port, so create one
-                // Use the SEI Class and its annotations to finish creating the Description hierachy.  Note that EndpointInterface, Operations, Parameters, etc.
-                // are not created for Dipsatch-based ports, but might be updated later if a getPort is done against the same declared port.
-                // TODO: Need to create the Axis Description objects after we have all the config info (i.e. from this SEI)
-                endpointDescription = new EndpointDescription(sei, portQName, this);
-                addEndpointDescription(endpointDescription);
-            }
-            else {
-                // The port is not a declared port and it does not have an EndpointDescription, meaning an addPort has not been done for it
-                // This is an error.
-                // TODO: RAS & NLS
-                throw ExceptionFactory.makeWebServiceException("ServiceDescription.updateEndpointDescription: Attempt to create a Dispatch for a non-existant Dynamic por  PortQN: " + portQName);
-            }
-            break;
-        }
-    }
-
-    private Class getEndpointSEI(QName portQName) {
-        Class endpointSEI = null;
-        EndpointInterfaceDescription endpointInterfaceDesc = getEndpointDescription(portQName).getEndpointInterfaceDescription();
-        if (endpointInterfaceDesc != null ) {
-            endpointSEI = endpointInterfaceDesc.getSEIClass();
-        }
-        return endpointSEI;
-    }
-
-    private boolean isPortDeclared(QName portQName) {
-        // TODO: This needs to account for declaration of the port via annotations in addition to just WSDL
-        // TODO: Add logic to check the portQN namespace against the WSDL Definition NS
-        boolean portIsDeclared = false;
-        if (getWSDLWrapper() != null) {
-            Definition wsdlDefn = getWSDLWrapper().getDefinition();
-            Service wsdlService = wsdlDefn.getService(serviceQName);
-            Port wsdlPort = wsdlService.getPort(portQName.getLocalPart());
-            portIsDeclared = (wsdlPort != null);
-        }
-        else {
-            // TODO: Add logic to determine if port is declared via annotations when no WSDL is present.  For now, we have to assume it is declared 
-            // so getPort(...) and createDispatch(...) calls work when there is no WSDL.
-            portIsDeclared = true;
-        }
-        return portIsDeclared;
-    }
-    
-    public EndpointDescription[] getEndpointDescriptions() {
-        return endpointDescriptions.values().toArray(new EndpointDescription[0]);
-    }
     
-    public EndpointDescription getEndpointDescription(QName portQName) {
-        return endpointDescriptions.get(portQName);
-    }
-    
-    public DescriptionBuilderComposite getDescriptionBuilderComposite() {
-    	return composite;
-    }
+    public abstract EndpointDescription[] getEndpointDescriptions();
+
+    public abstract EndpointDescription getEndpointDescription(QName portQName);
 
     /**
      * Return the EndpointDescriptions corresponding to the SEI class.  Note that
@@ -388,419 +18,12 @@
      * @param seiClass
      * @return
      */
-    public EndpointDescription[] getEndpointDescription(Class seiClass) {
-        EndpointDescription[] returnEndpointDesc = null;
-        ArrayList<EndpointDescription> matchingEndpoints = new ArrayList<EndpointDescription>();
-        Enumeration<EndpointDescription> endpointEnumeration = endpointDescriptions.elements();
-        while (endpointEnumeration.hasMoreElements()) {
-            EndpointDescription endpointDescription = endpointEnumeration.nextElement();
-            EndpointInterfaceDescription endpointInterfaceDesc = endpointDescription.getEndpointInterfaceDescription();
-            // Note that Dispatch endpoints will not have an endpointInterface because the do not have an associated SEI
-            if (endpointInterfaceDesc != null) {
-                Class endpointSEIClass = endpointInterfaceDesc.getSEIClass(); 
-                if (endpointSEIClass != null && endpointSEIClass.equals(seiClass)) {
-                    matchingEndpoints.add(endpointDescription);
-                }
-            }
-        }
-        if (matchingEndpoints.size() > 0) {
-            returnEndpointDesc = matchingEndpoints.toArray(new EndpointDescription[0]);
-        }
-        return returnEndpointDesc;
-    }
-    
-    /*
-     * @return True - if we are processing with the DBC List instead of reflection
-     */
-    public boolean isDBCMap() {
-    	if (dbcMap == null)
-    		return false;
-    	else
-    		return true;
-    }
-    
-    // END of public accessor methods
-    /*=======================================================================*/
-    /*=======================================================================*/
-    private void addEndpointDescription(EndpointDescription endpoint) {
-        endpointDescriptions.put(endpoint.getPortQName(), endpoint);
-    }
-
-    private void setupWsdlDefinition() {
-        // Note that there may be no WSDL provided, for example when called from 
-        // Service.create(QName serviceName).
-    	
-    	if (isDBCMap()) {
-
-    		if (composite.getWsdlDefinition() != null) {
-    			this.wsdlURL = composite.getWsdlURL();
-                
-    			try {
-                    this.wsdlWrapper = new WSDL4JWrapper(this.wsdlURL, 
-                    				composite.getWsdlDefinition());
-
-                } catch (WSDLException e) {
-                    throw ExceptionFactory.makeWebServiceException(Messages.getMessage("wsdlException", e.getMessage()), e);
-                }
-    		}
-        //Deprecate this code block when MDQ is fully integrated
-    	} else if (wsdlURL != null) {
-            try {
-                this.wsdlWrapper = new WSDL4JWrapper(this.wsdlURL);
-            } catch (WSDLException e) {
-                throw ExceptionFactory.makeWebServiceException(Messages.getMessage("wsdlException", e.getMessage()), e);
-            }
-        }
-    }
-
-    // TODO: Remove these and replace with appropraite get* methods for WSDL information
-    public WSDLWrapper getWSDLWrapper() {
-        return wsdlWrapper;
-    }
-    
-    public URL getWSDLLocation() {
-        return wsdlURL;
-    }
-
-    public ConfigurationContext getAxisConfigContext() {
-        if (configContext == null) {
-            configContext = getClientConfigurationFactory().getClientConfigurationContext();
-        }
-    	return configContext;
-    	
-    }
-    
-    ClientConfigurationFactory getClientConfigurationFactory() {
-        
-        if (clientConfigFactory == null ) {
-            clientConfigFactory = ClientConfigurationFactory.newInstance();
-        }
-        return clientConfigFactory;
-    }
-    
-    public ServiceClient getServiceClient(QName portQName) {
-        // TODO: RAS if no portQName found
-        return getEndpointDescription(portQName).getServiceClient();
-    }
-    
-    public QName getServiceQName() {
-    	//It is assumed that this will always be set in the constructor rather than 
-    	//built up from the class or DBC 
-        return serviceQName;
-    }
-
-
-    public boolean isServerSide() {
- 		return isServerSide;
-    } 
-
-    public HashMap<String, DescriptionBuilderComposite> getDBCMap() {
-    	return dbcMap;
-    }
-    
-	private void validateDBCLIntegrity(){
-		
-		//First, check the integrity of this input composite
-		//and retrieve
-		//the composite that represents this impl
-		
-//TODO: Currently, we are calling this method on the DBC. However, the DBC
-//will eventually need access to to the whole DBC map to do proper validation.
-//We don't want to pass the map of DBC's back into a single DBC.
-//So, for starters, this method and all the privates that it calls should be 
-// moved to here. At some point, we should consider using a new class that we
-//can implement scenarios of, like validateServiceImpl implements validator
-		
-		try {
-			validateIntegrity();
-		}
-		catch (Exception ex) {
-			//com.ibm.ws.ffdc.FFDCFilter.processException(ex, "org.apache.axis2.jaxws.description.ServiceDescription", "329", this);				
-			//Tr.error(_tc, msg, inserts);
-		}
-	}
-
-	/*
-	 * Validates the integrity of an impl. class. This should not be called directly for an SEI composite
-	 */
-	public void validateIntegrity() {
-		//TODO: Consider moving this to a utils area, do we really want a public
-		//      method that checks integrity...possibly
-		
-		//In General, this integrity checker should do gross level checking
-		//It should not be setting spec-defined default values, but can look
-		//at things like empty strings or null values
-		
-		//TODO: This method will validate the integrity of this object. Basically, if 
-		//consumer set this up improperly, then we should fail fast, should consider placing
-		//this method in a utils class within the 'description' package
-		
-		//Verify that, if this implements a strongly typed provider interface, that it
-		// also contain a WebServiceProvider annotation per JAXWS Sec. 5.1
-		Iterator<String> iter = 
-					composite.getInterfacesList().iterator();
-
-		while (iter.hasNext()) {
-			String interfaceString = iter.next();
-			// REVIEW: These string compares may not be sufficient; they assume, for example Provider<SOAPMessage>.  What about endpoint impls that:
-			//         (1) ... implement Provider<javax.xml.soap.SOAPMessage>
-			//         (2) import wrong.package.SOAPMessage;
-			//             ... implement Provider<SOAPMessage>;
-			if (interfaceString.equals(MDQConstants.PROVIDER_SOURCE)
-					|| interfaceString.equals(MDQConstants.PROVIDER_SOAP)
-					|| interfaceString.equals(MDQConstants.PROVIDER_DATASOURCE)) {
-				//This is a provider based SEI, make sure the annotation exists
-				if (composite.getWebServiceProviderAnnot() == null) {
-					throw ExceptionFactory.makeWebServiceException("DescriptionBuilderComposite: This is a Provider based SEI that does not contain a WebServiceProvider annotation");
-				}
-			}
-		}
-					
-		//Verify that WebService and WebServiceProvider are not both specified
-		//per JAXWS - Sec. 7.7
-		if (composite.getWebServiceAnnot() != null && composite.getWebServiceProviderAnnot() != null) {
-			throw ExceptionFactory.makeWebServiceException("DescriptionBuilderComposite: WebService annotation and WebServiceProvider annotation cannot coexist");
-		}
-		
-//		Make sure that we're only validating against WSDL, if there is WSDL...duh
-		if (composite.getWebServiceProviderAnnot() != null ) {
-			// TODO: Verify that this Provider based WebService has a method named invoke
-			
-		} else if (composite.getWebServiceAnnot() != null) {
-			
-			if ( composite.getServiceModeAnnot() != null) {
-				throw ExceptionFactory.makeWebServiceException("DescriptionBuilderComposite: ServiceMode annotation can only be specified for WebServiceProvider");
-			}
-			
-			//TODO: hmmm, will we ever actually validate an interface directly...don't think so
-			if (!composite.isInterface()) {
-				// TODO: Validate on the class that this.classModifiers Array does not contain the strings
-				//        FINAL or ABSTRACT, but does contain PUBLIC
-				// TODO: Validate on the class that a public constructor exists
-				// TODO: Validate on the class that a finalize() method does not exist
-				if (!DescriptionUtils.isEmpty(composite.getWebServiceAnnot().wsdlLocation())) {
-					if (composite.getWsdlDefinition() == null || composite.getWsdlURL() == null) {
-						throw ExceptionFactory.makeWebServiceException("DescriptionBuilderComposite: cannot find WSDL Definition pertaining to this WebService annotation");
-					}
-				}
-				
-				//		setWebServiceAnnotDefaults(true=impl); Must happen before we start checking annot
-				if (!DescriptionUtils.isEmpty(composite.getWebServiceAnnot().endpointInterface())) {
-					
-					DescriptionBuilderComposite seic = 
-						dbcMap.get(composite.getWebServiceAnnot().endpointInterface());
-					
-					//Verify that we can find the SEI in the composite list
-					if (seic == null){
-						throw ExceptionFactory.makeWebServiceException("DescriptionBuilderComposite: cannot find SEI composite specified by the endpoint interface");
-					}
-					
-					//Verify that the only class annotations are WebService and HandlerChain
-					//(per JSR181 Sec. 3.1)
-					if ( composite.getBindingTypeAnnot()!= null 
-							|| composite.getSoapBindingAnnot() != null
-							|| composite.getWebFaultAnnot() != null
-							|| composite.getWebServiceClientAnnot() != null
-							|| composite.getWebServiceContextAnnot()!= null
-							|| composite.getAllWebServiceRefAnnots() != null
-					) {
-						throw ExceptionFactory.makeWebServiceException("DescriptionBuilderComposite: invalid annotations specified when WebService annotation specifies an endpoint interface");
-					}
-					
-					//Verify that WebService annotation does not contain a name attribute
-					//(per JSR181 Sec. 3.1)
-					if (composite.getWebServiceAnnot().name() != null) {
-						throw ExceptionFactory.makeWebServiceException("DescriptionBuilderComposite: invalid annotations specified when WebService annotation specifies an endpoint interface");
-					}
-					
-					//Verify that that this implementation class implements all methods in the interface
-					validateImplementation(seic);
-					
-					//Verify that this impl. class does not contain any @WebMethod annotations
-					if (webMethodAnnotationsExist()) {
-						throw ExceptionFactory.makeWebServiceException("DescriptionBuilderComposite: WebMethod annotations cannot exist on class when WebService.endpointInterface is set");	
-					}
-					
-					//TODO: validateSEI() ...this should really be done here. No sense in validating
-					//		an interface just because its in the list
-					validateSEI(seic);
-					
-				} else { //this is an implicit SEI (i.e. impl w/out endpointInterface
-					
-					checkImplicitSEIAgainstWSDL();
-					//	TODO:	Call ValidateWebMethodAnnots()
-					//			- this method will check that all methods are public - ???
-					//
-				}
-			} else { //this is an interface...we should not be processing interfaces here
-				throw ExceptionFactory.makeWebServiceException("ValidateIntegrity: Improper usage: cannot invoke this method with an interface");	
-			}
-					
-			//TODO: don't think this is necessary
-			checkMethodsAgainstWSDL();
-		}
-	}
-	
-	private void validateImplementation(DescriptionBuilderComposite seic) {
-		/*
-		 *	Verify that an impl class implements all the methods of the SEI. We
-		 *  have to verify this because an impl class is not required to actually use
-		 *  the 'implements' clause. So, if it doesn't, the Java compiler won't 
-		 *	catch it. Don't need to worry about chaining because only one EndpointInterface
-		 *  can be specified, and the SEI cannot specify an EndpointInterface, so the Java
-		 *	compiler will take care of everything else.
-		 */
-		
-		HashMap compositeHashMap = new HashMap();
-		Iterator<MethodDescriptionComposite> compIterator = 
-					composite.getMethodDescriptionsList().iterator();
-
-		while (compIterator.hasNext()) {
-			MethodDescriptionComposite mdc = compIterator.next();
-			compositeHashMap.put(mdc.getMethodName(),mdc);
-		}
-		
-		Iterator<MethodDescriptionComposite> seiIterator = 
-					seic.getMethodDescriptionsList().iterator();
-		
-		while (seiIterator.hasNext()) {
-			MethodDescriptionComposite mdc = seiIterator.next();
-
-			if (compositeHashMap.get(mdc.getMethodName()) == null) {
-				throw ExceptionFactory.makeWebServiceException("ServiceDescription: subclass does not implement method on specified interface");				
-			}
-		}
-		
-	}
-	
-	/*
-	 * This method verifies that, if there are any WebMethod with exclude == false, then
-	 * make sure that we find all of those methods represented in the wsdl. However, if 
-	 * there are no exclusions == false, or there are no WebMethod annotations, then verify
-	 * that all the public methods are in the wsdl
-	 */
-	private void checkMethodsAgainstWSDL() {	
-//Verify that, for ImplicitSEI, that all methods that should exist(if one false found, then
-//only look for WebMethods w/ False, else take all public methods but ignore those with
-//exclude == true
-		if (webMethodAnnotationsExist()) {
-			if (DescriptionUtils.falseExclusionsExist(composite))
-				verifyFalseExclusionsWithWSDL();
-			else
-				verifyPublicMethodsWithWSDL();
-		} else {
-			verifyPublicMethodsWithWSDL();
-		}
-	}
-	
-	private void checkImplicitSEIAgainstWSDL() {
-		
-		//TODO: If there is a WSDL, then verify that all WebMethods on this class and in the
-		//		superclasses chain are represented in the WSDL...Look at logic below to make
-		//		sure this really happening
-		
-		
-		if (webMethodAnnotationsExist()) {
-			if (DescriptionUtils.falseExclusionsExist(composite))
-				verifyFalseExclusionsWithWSDL();
-			else
-				verifyPublicMethodsWithWSDL();
-		} else {
-			verifyPublicMethodsWithWSDL();
-		}
-		
-	}
-	
-	private void checkSEIAgainstWSDL() {
-		//TODO: Place logic here to verify that each publicMethod with WebMethod annot
-		//      is contained in the WSDL (If there is a WSDL) If we find
-		//	    a WebMethod annotation, use its values for looking in the WSDL
-
-	}
-	
-	private void validateSEI(DescriptionBuilderComposite seic) {
-		
-		//TODO: Validate SEI superclasses -- hmmm, may be doing this below
-		//		
-		
-		if (!seic.getWebServiceAnnot().endpointInterface().equals("")) {
-			throw ExceptionFactory.makeWebServiceException("DescriptionBuilderComposite: WebService annotation contains a non-empty field for the SEI");
-		}
+    public abstract EndpointDescription[] getEndpointDescription(Class seiClass);
 
-		checkSEIAgainstWSDL();
-		
-		//TODO: More validation here
-		
-		//TODO: Make sure we don't find any WebMethod annotations with exclude == true 
-		//		anywhere in the superclasses chain
-		
-		//TODO: Check that all WebMethod annotations in the superclass chain are represented in 
-		//		WSDL, assuming there is WSDL
-		
-		
-		//TODO:	Validate that the interface is public 
-		
-		if (!composite.getWebServiceAnnot().endpointInterface().equals("")) {
-			throw ExceptionFactory.makeWebServiceException("DescriptionBuilderComposite: WebService annotation contains a non-empty field for the SEI");
-		}
-		//		Call ValidateWebMethodAnnots()
-		//
-		
-		//This will perform validation for all methods, regardless of WebMethod annotations
-		//It is called for the SEI, and an impl. class that does not specify an endpointInterface
-		validateMethods();
-	}
-	
-	/**
-	 * @return Returns TRUE if we find just one WebMethod Annotation 
-	 */
-	private boolean webMethodAnnotationsExist() {
-		MethodDescriptionComposite mdc = null;
-		Iterator<MethodDescriptionComposite> iter = composite.getMethodDescriptionsList().iterator();
-		
-		while (iter.hasNext()) {
-			mdc = iter.next();
+    public abstract ConfigurationContext getAxisConfigContext();
 
-			if (mdc.getWebMethodAnnot() != null)
-				return true;
-		}
-		
-		return false;
-	}
-	
-	private void verifyFalseExclusionsWithWSDL() {
-		//TODO: Place logic here to verify that each exclude==false WebMethod annot we find
-		//      is contained in the WSDL
-	}
-	
-	private void verifyPublicMethodsWithWSDL() {
-		//TODO: Place logic here to verify that each publicMethod with no WebMethod annot
-		//      is contained in the WSDL
+    public abstract ServiceClient getServiceClient(QName portQName);
 
-	}
+    public abstract QName getServiceQName();
 
-	
-	/**
-	 */
-	private void validateMethods() {
-		//TODO: Fill this out to validate all MethodDescriptionComposite (and their inclusive
-		//      annotations on this SEI (SEI is assumed here)
-		//check oneway
-		//
-		
-		//This could be an SEI, or an impl. class that doesn' specify an EndpointInterface (so, it
-		//is implicitly an SEI...need to consider this
-		//
-		
-		//TODO: Verify that, if this is an interface...that there are no Methods with WebMethod
-		//      annotations that contain exclude == true
-	
-		//TODO: Verify that, if a SOAPBinding annotation exists, that its style be set to
-		//      only DOCUMENT JSR181-Sec 4.7.1
-	
-	}
-	
-	private void validateWSDLOperations() {
-		//Verifies that all operations on the wsdl are found in the impl/sei class
-	}
-}
+}
\ No newline at end of file

Copied: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/ServiceDescriptionImpl.java (from r469229, webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/ServiceDescription.java)
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/ServiceDescriptionImpl.java?view=diff&rev=470629&p1=webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/ServiceDescription.java&r1=469229&p2=webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/ServiceDescriptionImpl.java&r2=470629
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/ServiceDescription.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/ServiceDescriptionImpl.java Thu Nov  2 17:33:00 2006
@@ -49,6 +49,7 @@
 import org.apache.axis2.jaxws.ClientConfigurationFactory;
 import org.apache.axis2.jaxws.ExceptionFactory;
 import org.apache.axis2.jaxws.description.builder.DescriptionBuilderComposite;
+import org.apache.axis2.jaxws.description.builder.MDQConstants;
 import org.apache.axis2.jaxws.description.builder.MethodDescriptionComposite;
 import org.apache.axis2.jaxws.description.builder.WebMethodAnnot;
 import org.apache.axis2.jaxws.i18n.Messages;
@@ -94,7 +95,7 @@
  *         
  *  </pre>       
  */
-public class ServiceDescription {
+class ServiceDescriptionImpl implements ServiceDescription, ServiceDescriptionWSDL, ServiceDescriptionJava {
     private ClientConfigurationFactory clientConfigFactory;
     private ConfigurationContext configContext;
 
@@ -108,9 +109,9 @@
     // TODO: Possibly remove Definition and delegate to the Defn on the AxisSerivce set as a paramater by WSDLtoAxisServicBuilder?
     private WSDLWrapper wsdlWrapper; 
     
-    private Hashtable<QName, EndpointDescription> endpointDescriptions = new Hashtable<QName, EndpointDescription>();
+    private Hashtable<QName, EndpointDescriptionImpl> endpointDescriptions = new Hashtable<QName, EndpointDescriptionImpl>();
     
-    private static final Log log = LogFactory.getLog(ServiceDescription.class);
+    private static final Log log = LogFactory.getLog(ServiceDescriptionImpl.class);
 
     private HashMap<String, DescriptionBuilderComposite> dbcMap = null;
     
@@ -128,7 +129,7 @@
      * @param serviceClass  The JAX-WS service class.  This could be an instance of
      *   javax.xml.ws.Service or a generated service subclass thereof.  This will not be null.
      */
-    ServiceDescription(URL wsdlURL, QName serviceQName, Class serviceClass) {
+    ServiceDescriptionImpl(URL wsdlURL, QName serviceQName, Class serviceClass) {
         if (serviceQName == null) {
             throw ExceptionFactory.makeWebServiceException(Messages.getMessage("serviceDescErr0"));
         }
@@ -153,13 +154,10 @@
      * 
      * @param serviceImplClass
      */
-    // NOTE: Taking an axisService on the call is TEMPORARY!  Eventually the AxisService should be constructed
-    //       based on the annotations in the ServiceImpl class.
-    // TODO: Remove axisService as paramater when the AxisService can be constructed from the annotations
-    ServiceDescription(Class serviceImplClass, AxisService axisService) {
+    ServiceDescriptionImpl(Class serviceImplClass, AxisService axisService) {
         // Create the EndpointDescription hierachy from the service impl annotations; Since the PortQName is null, 
         // it will be set to the annotation value.
-        EndpointDescription endpointDescription = new EndpointDescription(serviceImplClass, null, axisService, this);
+        EndpointDescriptionImpl endpointDescription = new EndpointDescriptionImpl(serviceImplClass, null, axisService, this);
         addEndpointDescription(endpointDescription);
         
         // TODO: The ServiceQName instance variable should be set based on annotation or default
@@ -171,7 +169,7 @@
      * 
      * @param serviceImplClass
      */
-    ServiceDescription(	
+    ServiceDescriptionImpl(	
     		HashMap<String, DescriptionBuilderComposite> dbcMap,
     		DescriptionBuilderComposite composite ) {
     	this.composite = composite;
@@ -207,7 +205,7 @@
         // Create the EndpointDescription hierachy from the service impl annotations; Since the PortQName is null, 
         // it will be set to the annotation value.
         //EndpointDescription endpointDescription = new EndpointDescription(null, this, serviceImplName);
-        EndpointDescription endpointDescription = new EndpointDescription(this, serviceImplName);
+        EndpointDescriptionImpl endpointDescription = new EndpointDescriptionImpl(this, serviceImplName);
         addEndpointDescription(endpointDescription);       
     }
     
@@ -242,15 +240,15 @@
      *            attempt to create a Dispatch-based client to either a declared
      *            port or a pre-existing dynamic port.
      */
-    public enum UpdateType {GET_PORT, ADD_PORT, CREATE_DISPATCH}
-    public void updateEndpointDescription(Class sei, QName portQName, UpdateType updateType) {
+
+    void updateEndpointDescription(Class sei, QName portQName, UpdateType updateType) {
         
         // TODO: Add support: portQName can be null when called from Service.getPort(Class)
         if (portQName == null) {
             throw new UnsupportedOperationException("ServiceDescription.updateEndpointDescription null PortQName not supported");
         }
         
-        EndpointDescription endpointDescription = getEndpointDescription(portQName);
+        EndpointDescriptionImpl endpointDescription = getEndpointDescriptionImpl(portQName);
         boolean isPortDeclared = isPortDeclared(portQName);
 
         switch (updateType) {
@@ -266,7 +264,7 @@
             else if (endpointDescription == null) {
                 // Use the SEI Class and its annotations to finish creating the Description hierachy.  Note that EndpointInterface, Operations, Parameters, etc.
                 // are not created for dynamic ports.  It would be an error to later do a getPort against a dynamic port (per the JAX-WS spec)
-                endpointDescription = new EndpointDescription(sei, portQName, true, this);
+                endpointDescription = new EndpointDescriptionImpl(sei, portQName, true, this);
                 addEndpointDescription(endpointDescription);
             }
             else {
@@ -294,7 +292,7 @@
             else if (endpointDescription == null) {
                 // Use the SEI Class and its annotations to finish creating the Description hierachy: Endpoint, EndpointInterface, Operations, Parameters, etc.
                 // TODO: Need to create the Axis Description objects after we have all the config info (i.e. from this SEI)
-                endpointDescription = new EndpointDescription(sei, portQName, this);
+                endpointDescription = new EndpointDescriptionImpl(sei, portQName, this);
                 addEndpointDescription(endpointDescription);
             }
             else if (getEndpointSEI(portQName) == null && !endpointDescription.isDynamicPort()) {
@@ -329,7 +327,7 @@
                 // Use the SEI Class and its annotations to finish creating the Description hierachy.  Note that EndpointInterface, Operations, Parameters, etc.
                 // are not created for Dipsatch-based ports, but might be updated later if a getPort is done against the same declared port.
                 // TODO: Need to create the Axis Description objects after we have all the config info (i.e. from this SEI)
-                endpointDescription = new EndpointDescription(sei, portQName, this);
+                endpointDescription = new EndpointDescriptionImpl(sei, portQName, this);
                 addEndpointDescription(endpointDescription);
             }
             else {
@@ -369,30 +367,37 @@
         return portIsDeclared;
     }
     
+    /* (non-Javadoc)
+     * @see org.apache.axis2.jaxws.description.ServiceDescription#getEndpointDescriptions()
+     */
     public EndpointDescription[] getEndpointDescriptions() {
-        return endpointDescriptions.values().toArray(new EndpointDescription[0]);
+        return endpointDescriptions.values().toArray(new EndpointDescriptionImpl[0]);
     }
     
+    /* (non-Javadoc)
+     * @see org.apache.axis2.jaxws.description.ServiceDescription#getEndpointDescription(javax.xml.namespace.QName)
+     */
     public EndpointDescription getEndpointDescription(QName portQName) {
         return endpointDescriptions.get(portQName);
     }
     
-    public DescriptionBuilderComposite getDescriptionBuilderComposite() {
+    EndpointDescriptionImpl getEndpointDescriptionImpl(QName portQName) {
+        return (EndpointDescriptionImpl) getEndpointDescription(portQName);
+    }
+    
+    DescriptionBuilderComposite getDescriptionBuilderComposite() {
     	return composite;
     }
 
-    /**
-     * Return the EndpointDescriptions corresponding to the SEI class.  Note that
-     * Dispatch endpoints will never be returned because they do not have an associated SEI.
-     * @param seiClass
-     * @return
+    /* (non-Javadoc)
+     * @see org.apache.axis2.jaxws.description.ServiceDescription#getEndpointDescription(java.lang.Class)
      */
     public EndpointDescription[] getEndpointDescription(Class seiClass) {
         EndpointDescription[] returnEndpointDesc = null;
-        ArrayList<EndpointDescription> matchingEndpoints = new ArrayList<EndpointDescription>();
-        Enumeration<EndpointDescription> endpointEnumeration = endpointDescriptions.elements();
+        ArrayList<EndpointDescriptionImpl> matchingEndpoints = new ArrayList<EndpointDescriptionImpl>();
+        Enumeration<EndpointDescriptionImpl> endpointEnumeration = endpointDescriptions.elements();
         while (endpointEnumeration.hasMoreElements()) {
-            EndpointDescription endpointDescription = endpointEnumeration.nextElement();
+            EndpointDescriptionImpl endpointDescription = endpointEnumeration.nextElement();
             EndpointInterfaceDescription endpointInterfaceDesc = endpointDescription.getEndpointInterfaceDescription();
             // Note that Dispatch endpoints will not have an endpointInterface because the do not have an associated SEI
             if (endpointInterfaceDesc != null) {
@@ -403,7 +408,7 @@
             }
         }
         if (matchingEndpoints.size() > 0) {
-            returnEndpointDesc = matchingEndpoints.toArray(new EndpointDescription[0]);
+            returnEndpointDesc = matchingEndpoints.toArray(new EndpointDescriptionImpl[0]);
         }
         return returnEndpointDesc;
     }
@@ -411,7 +416,7 @@
     /*
      * @return True - if we are processing with the DBC List instead of reflection
      */
-    public boolean isDBCMap() {
+    boolean isDBCMap() {
     	if (dbcMap == null)
     		return false;
     	else
@@ -421,7 +426,7 @@
     // END of public accessor methods
     /*=======================================================================*/
     /*=======================================================================*/
-    private void addEndpointDescription(EndpointDescription endpoint) {
+    private void addEndpointDescription(EndpointDescriptionImpl endpoint) {
         endpointDescriptions.put(endpoint.getPortQName(), endpoint);
     }
 
@@ -453,14 +458,23 @@
     }
 
     // TODO: Remove these and replace with appropraite get* methods for WSDL information
+    /* (non-Javadoc)
+     * @see org.apache.axis2.jaxws.description.ServiceDescriptionWSDL#getWSDLWrapper()
+     */
     public WSDLWrapper getWSDLWrapper() {
         return wsdlWrapper;
     }
     
+    /* (non-Javadoc)
+     * @see org.apache.axis2.jaxws.description.ServiceDescriptionWSDL#getWSDLLocation()
+     */
     public URL getWSDLLocation() {
         return wsdlURL;
     }
 
+    /* (non-Javadoc)
+     * @see org.apache.axis2.jaxws.description.ServiceDescription#getAxisConfigContext()
+     */
     public ConfigurationContext getAxisConfigContext() {
         if (configContext == null) {
             configContext = getClientConfigurationFactory().getClientConfigurationContext();
@@ -477,11 +491,17 @@
         return clientConfigFactory;
     }
     
+    /* (non-Javadoc)
+     * @see org.apache.axis2.jaxws.description.ServiceDescription#getServiceClient(javax.xml.namespace.QName)
+     */
     public ServiceClient getServiceClient(QName portQName) {
         // TODO: RAS if no portQName found
         return getEndpointDescription(portQName).getServiceClient();
     }
     
+    /* (non-Javadoc)
+     * @see org.apache.axis2.jaxws.description.ServiceDescription#getServiceQName()
+     */
     public QName getServiceQName() {
     	//It is assumed that this will always be set in the constructor rather than 
     	//built up from the class or DBC 
@@ -489,11 +509,11 @@
     }
 
 
-    public boolean isServerSide() {
+    boolean isServerSide() {
  		return isServerSide;
     } 
 
-    public HashMap<String, DescriptionBuilderComposite> getDBCMap() {
+    HashMap<String, DescriptionBuilderComposite> getDBCMap() {
     	return dbcMap;
     }
     
@@ -522,7 +542,7 @@
 	/*
 	 * Validates the integrity of an impl. class. This should not be called directly for an SEI composite
 	 */
-	public void validateIntegrity() {
+	void validateIntegrity() {
 		//TODO: Consider moving this to a utils area, do we really want a public
 		//      method that checks integrity...possibly
 		
@@ -533,7 +553,29 @@
 		//TODO: This method will validate the integrity of this object. Basically, if 
 		//consumer set this up improperly, then we should fail fast, should consider placing
 		//this method in a utils class within the 'description' package
-		
+
+        //Verify that, if this implements a strongly typed provider interface, that it
+        // also contain a WebServiceProvider annotation per JAXWS Sec. 5.1
+        Iterator<String> iter = 
+                    composite.getInterfacesList().iterator();
+
+        while (iter.hasNext()) {
+            String interfaceString = iter.next();
+            // REVIEW: These string compares may not be sufficient; they assume, for example Provider<SOAPMessage>.  What about endpoint impls that:
+            //         (1) ... implement Provider<javax.xml.soap.SOAPMessage>
+            //         (2) import wrong.package.SOAPMessage;
+            //             ... implement Provider<SOAPMessage>;
+            if (interfaceString.equals(MDQConstants.PROVIDER_SOURCE)
+                    || interfaceString.equals(MDQConstants.PROVIDER_SOAP)
+                    || interfaceString.equals(MDQConstants.PROVIDER_DATASOURCE)) {
+                //This is a provider based SEI, make sure the annotation exists
+                if (composite.getWebServiceProviderAnnot() == null) {
+                    throw ExceptionFactory.makeWebServiceException("DescriptionBuilderComposite: This is a Provider based SEI that does not contain a WebServiceProvider annotation");
+                }
+            }
+        }
+                    
+
 		
 		//Verify that WebService and WebServiceProvider are not both specified
 		//per JAXWS - Sec. 7.7

Added: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/ServiceDescriptionJava.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/ServiceDescriptionJava.java?view=auto&rev=470629
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/ServiceDescriptionJava.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/ServiceDescriptionJava.java Thu Nov  2 17:33:00 2006
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.axis2.jaxws.description;
+
+/**
+ * 
+ */
+public interface ServiceDescriptionJava {
+
+}

Added: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/ServiceDescriptionWSDL.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/ServiceDescriptionWSDL.java?view=auto&rev=470629
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/ServiceDescriptionWSDL.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/ServiceDescriptionWSDL.java Thu Nov  2 17:33:00 2006
@@ -0,0 +1,14 @@
+package org.apache.axis2.jaxws.description;
+
+import java.net.URL;
+
+import org.apache.axis2.jaxws.util.WSDLWrapper;
+
+public interface ServiceDescriptionWSDL {
+
+    // TODO: Remove these and replace with appropraite get* methods for WSDL information
+    public abstract WSDLWrapper getWSDLWrapper();
+
+    public abstract URL getWSDLLocation();
+
+}
\ No newline at end of file

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/DocLitBareMethodMarshallerImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/DocLitBareMethodMarshallerImpl.java?view=diff&rev=470629&r1=470628&r2=470629
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/DocLitBareMethodMarshallerImpl.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/DocLitBareMethodMarshallerImpl.java Thu Nov  2 17:33:00 2006
@@ -142,11 +142,11 @@
 	public Message marshalResponse(Object returnObject, Object[] holderObjects) throws ClassNotFoundException, JAXBException, MessageException, JAXBWrapperException, XMLStreamException, InstantiationException, IllegalAccessException{
 		// Response wrapper is basically the return type. so the return object is a jaxbObject. If there is a holder objects then that is the responsewrapper.
 		Class wrapperClazz = getReturnType();
-		String wrapperClazzName = operationDesc.getWebResultName();
+		String wrapperClazzName = operationDesc.getResultName();
 		if(wrapperClazzName == null || wrapperClazzName.trim().length() == 0){
 			wrapperClazzName = wrapperClazz.getName();
 		}
-		String wrapperTNS = operationDesc.getWebResultTargetNamespace();
+		String wrapperTNS = operationDesc.getResultTargetNamespace();
 		
 		ArrayList<MethodParameter> mps = new ArrayList<MethodParameter>();
 		mps = toInputMethodParameters(holderObjects);
@@ -210,7 +210,7 @@
 			int numberOfBodyPart =0;
 			for(MethodParameter mp:mps){
 				ParameterDescription pd = mp.getParameterDescription();
-				if(!pd.getWebParamHeader()){
+				if(!pd.isHeader()){
 					numberOfBodyPart++;
 				}
 			}

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/DocLitWrappedMethodMarshallerImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/DocLitWrappedMethodMarshallerImpl.java?view=diff&rev=470629&r1=470628&r2=470629
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/DocLitWrappedMethodMarshallerImpl.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/DocLitWrappedMethodMarshallerImpl.java Thu Nov  2 17:33:00 2006
@@ -23,6 +23,7 @@
 
 import org.apache.axis2.jaxws.description.EndpointDescription;
 import org.apache.axis2.jaxws.description.OperationDescription;
+import org.apache.axis2.jaxws.description.OperationDescriptionJava;
 import org.apache.axis2.jaxws.description.ServiceDescription;
 import org.apache.axis2.jaxws.marshaller.DocLitWrappedMethodMarshaller;
 import org.apache.axis2.jaxws.marshaller.MethodParameter;
@@ -64,14 +65,14 @@
 		else{		
 			wrapperClazz = loadClass(className);
 		}
-		String resultName = operationDesc.getWebResultName();
+		String resultName = operationDesc.getResultName();
 		Object bo = createBusinessObject(wrapperClazz, message);
 		createResponseHolders(bo, inputArgs, false);
         // REVIEW: Is the the appropriate logic, to be checking for the existence of the annotation
         //         as the decision point for getting into the property logic?  Note that even if the annotation
         //         is not present, a default result name will be returned.
 		// If the WebResult annotation is present, then look up the result Name
-		if(operationDesc.isWebResultAnnotationSpecified()){
+		if(((OperationDescriptionJava) operationDesc).isWebResultAnnotationSpecified()){
 		//if ReturnType is not of same type as JAXBBlock business Object then I will look for resultName in Business Object and return that.
 			Object resultObject = findProperty(resultName, bo);
 			return resultObject;
@@ -117,9 +118,10 @@
 	public Message marshalResponse(Object returnObject, Object[] holderObjects)throws ClassNotFoundException, JAXBException, MessageException, JAXBWrapperException, XMLStreamException, InstantiationException, IllegalAccessException {
 		Class wrapperClazz = null;
 		String wrapperClazzName = operationDesc.getResponseWrapperClassName();
-		String wrapperXMLElementName = operationDesc.getRequestWrapperLocalName();
+        // TODO: (JLB) REVIEW: I changed this from getRequestWrapper to getRewponseWrapper...
+		String wrapperXMLElementName = operationDesc.getResponseWrapperLocalName();
 		String wrapperTNS = operationDesc.getResponseWrapperTargetNamespace();
-		String webResult = operationDesc.getWebResultName();
+		String webResult = operationDesc.getResultName();
 		//TODO Move this to Operation Description.
 		if(wrapperClazzName == null || (wrapperClazzName!=null && wrapperClazzName.length()==0)){
 			wrapperClazz = getReturnType();

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/MethodMarshallerImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/MethodMarshallerImpl.java?view=diff&rev=470629&r1=470628&r2=470629
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/MethodMarshallerImpl.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/MethodMarshallerImpl.java Thu Nov  2 17:33:00 2006
@@ -195,8 +195,8 @@
 		if(webResultValue == null){
 			return mps;
 		}
-		String webResultName = operationDesc.getWebResultName();
-		String webResultTNS = operationDesc.getWebResultTargetNamespace();
+		String webResultName = operationDesc.getResultName();
+		String webResultTNS = operationDesc.getResultTargetNamespace();
 		Class webResultClass = null;
 		if(webResultValue !=null){
 			webResultClass = webResultValue.getClass();
@@ -221,7 +221,7 @@
 		ArrayList<Object> paramValues = toArrayList(holderObjects);
 		ArrayList<MethodParameter> mps = createMethodParameters(pds.toArray(new ParameterDescription[0]), paramValues);
 		if(webResultObject!=null){
-			MethodParameter outputResult = new MethodParameter(operationDesc.getWebResultName(), operationDesc.getWebResultTargetNamespace(), webResultObject.getClass(), webResultObject);
+			MethodParameter outputResult = new MethodParameter(operationDesc.getResultName(), operationDesc.getResultTargetNamespace(), webResultObject.getClass(), webResultObject);
 			mps.add(outputResult);
 		}
 		return mps;
@@ -233,7 +233,7 @@
 		if(jaxbObject == null){
 			return mps;
 		}
-        ArrayList<String> webParam = toArrayList(operationDesc.getWebParamNames());
+        ArrayList<String> webParam = toArrayList(operationDesc.getParamNames());
                 
         if (log.isDebugEnabled()) {
             log.debug("Attempting to unwrap object from WrapperClazz");
@@ -289,9 +289,9 @@
 		ArrayList<Object> paramValues = new ArrayList<Object>(); 
 		for (int index = 0; index < paramDescs.length; index++) {
 			ParameterDescription paramDesc = paramDescs[index];
-			String paramName = paramDesc.getWebParamName();
-			String paramTNS = paramDesc.getWebParamTargetNamespace();
-			boolean isHeader = paramDesc.getWebParamHeader();
+			String paramName = paramDesc.getParameterName();
+			String paramTNS = paramDesc.getTargetNamespace();
+			boolean isHeader = paramDesc.isHeader();
 			Class actualType = paramDesc.getParameterActualType();
 			Object bo = null;
 			if(isHeader){
@@ -315,12 +315,12 @@
 		for (Object paramValue : paramValues) {
 			ParameterDescription paramDesc = paramDescs[index];
 			Class paramType = paramDesc.getParameterType();
-			Mode paramMode = paramDesc.getWebParamMode();
+			Mode paramMode = paramDesc.getMode();
 			boolean isHolderType = paramDesc.isHolderType();
 			MethodParameter mp = null;
 			// If call is Async call then lets filter AsyncHandler object name
 			// and value;
-			if (!isParamAsyncHandler(paramDesc.getWebParamName(), paramValue)) {
+			if (!isParamAsyncHandler(paramDesc.getParameterName(), paramValue)) {
 				if (paramType != null) {
 					// Identify Holders and get Holder Values, this if condition
 					// will mostly execute during client side call
@@ -563,10 +563,10 @@
 			if (!mp.isWebResult()) {
 				ParameterDescription pd = mp.getParameterDescription();
 				object = mp.getValue();
-				objectName = pd.getWebParamName();
+				objectName = pd.getParameterName();
 				objectType = pd.getParameterActualType();
-				objectTNS = pd.getWebParamTargetNamespace();
-				isHeader = pd.getWebParamHeader();
+				objectTNS = pd.getTargetNamespace();
+				isHeader = pd.isHeader();
 			} else {
 				object = mp.getValue();
 				objectName = mp.getWebResultName();
@@ -703,12 +703,12 @@
 		int index = 0;
 		for(MethodParameter mp:mps){
 			ParameterDescription pd = mp.getParameterDescription();
-			if (pd.getWebParamHeader() && pd.isHolderType()) {
+			if (pd.isHeader() && pd.isHolderType()) {
 				bo = createBOFromHeaderBlock(pd.getParameterActualType(),
-						message, pd.getWebParamTargetNamespace(), pd
-								.getWebParamName());
+						message, pd.getTargetNamespace(), pd
+								.getParameterName());
 			}
-			else if(!pd.getWebParamHeader() && pd.isHolderType()){
+			else if(!pd.isHeader() && pd.isHolderType()){
 				bo = createBOFromBodyBlock(pd.getParameterActualType(), message);
 			}
 			try{

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/util/MessageUtils.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/util/MessageUtils.java?view=diff&rev=470629&r1=470628&r2=470629
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/util/MessageUtils.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/util/MessageUtils.java Thu Nov  2 17:33:00 2006
@@ -44,7 +44,6 @@
 import org.apache.axis2.client.Options;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.jaxws.ExceptionFactory;
-import org.apache.axis2.jaxws.description.EndpointDescription;
 import org.apache.axis2.jaxws.message.Attachment;
 import org.apache.axis2.jaxws.message.Message;
 import org.apache.axis2.jaxws.message.MessageException;

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaBeanDispatcher.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaBeanDispatcher.java?view=diff&rev=470629&r1=470628&r2=470629
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaBeanDispatcher.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaBeanDispatcher.java Thu Nov  2 17:33:00 2006
@@ -104,7 +104,7 @@
         EndpointInterfaceDescription epInterfaceDesc = operationDesc.getEndpointInterfaceDescription();
         EndpointDescription epDesc = epInterfaceDesc.getEndpointDescription();
         
-        String bindingType = epDesc.getBindingTypeValue();
+        String bindingType = epDesc.getBindingType();
         if (bindingType != null) {
             if (bindingType.equals(SOAPBinding.SOAP11HTTP_MTOM_BINDING) ||
                 bindingType.equals(SOAPBinding.SOAP12HTTP_MTOM_BINDING)) {
@@ -219,7 +219,7 @@
 	        String localPart = opName.getLocalPart();
 	        Method[] methods = serviceImplClass.getMethods();
 	        for (int i = 0; i < methods.length; ++i) {
-	        	String webMethodName = operationDesc.getWebMethodOperationName();
+	        	String webMethodName = operationDesc.getOperationName();
 	            if (localPart.equals(methods[i].getName())){
 	                return methods[i];
 	            }

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/ProviderDispatcher.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/ProviderDispatcher.java?view=diff&rev=470629&r1=470628&r2=470629
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/ProviderDispatcher.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/ProviderDispatcher.java Thu Nov  2 17:33:00 2006
@@ -109,7 +109,7 @@
             
             // REVIEW: This assumes there is only one endpoint description on the service.  Is that always the case?
             EndpointDescription endpointDesc = mc.getServiceDescription().getEndpointDescriptions()[0];
-            providerServiceMode = endpointDesc.getServiceModeValue();
+            providerServiceMode = endpointDesc.getServiceMode();
             
             if (providerServiceMode != null && providerServiceMode == Service.Mode.MESSAGE) {
                 // For MESSAGE mode, work with the entire message, Headers and Body

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/spi/ServiceDelegate.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/spi/ServiceDelegate.java?view=diff&rev=470629&r1=470628&r2=470629
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/spi/ServiceDelegate.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/spi/ServiceDelegate.java Thu Nov  2 17:33:00 2006
@@ -44,6 +44,7 @@
 import org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler;
 import org.apache.axis2.jaxws.description.DescriptionFactory;
 import org.apache.axis2.jaxws.description.ServiceDescription;
+import org.apache.axis2.jaxws.description.ServiceDescriptionWSDL;
 import org.apache.axis2.jaxws.handler.PortData;
 import org.apache.axis2.jaxws.handler.PortInfoImpl;
 import org.apache.axis2.jaxws.i18n.Messages;
@@ -302,7 +303,7 @@
      * @see javax.xml.ws.spi.ServiceDelegate#getWSDLDocumentLocation()
      */
     public URL getWSDLDocumentLocation() {
-        return serviceDescription.getWSDLLocation();
+        return ((ServiceDescriptionWSDL) serviceDescription).getWSDLLocation();
     }
     
     /*
@@ -390,7 +391,7 @@
     
     // TODO: Remove this method and put the WSDLWrapper methods on the ServiceDescriptor directly
     private WSDLWrapper getWSDLWrapper() {
-    	return serviceDescription.getWSDLWrapper();
+    	return ((ServiceDescriptionWSDL) serviceDescription).getWSDLWrapper();
     }
     
     private boolean isServiceDefined(QName serviceName){

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/impl/JAXBWrapperToolImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/impl/JAXBWrapperToolImpl.java?view=diff&rev=470629&r1=470628&r2=470629
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/impl/JAXBWrapperToolImpl.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/impl/JAXBWrapperToolImpl.java Thu Nov  2 17:33:00 2006
@@ -121,7 +121,7 @@
 			ParameterDescription pd = mp.getParameterDescription();
 			String name = null;
 			if(!mp.isWebResult()){
-				name = pd.getWebParamName();
+				name = pd.getParameterName();
 			}else{
 				name = mp.getWebResultName();
 			}

Modified: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/description/AnnotationProviderImplDescriptionTests.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/description/AnnotationProviderImplDescriptionTests.java?view=diff&rev=470629&r1=470628&r2=470629
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/description/AnnotationProviderImplDescriptionTests.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/description/AnnotationProviderImplDescriptionTests.java Thu Nov  2 17:33:00 2006
@@ -41,16 +41,16 @@
         assertEquals(1, endpointDesc.length);
         
         // TODO: How will the JAX-WS dispatcher get the appropriate port (i.e. endpoint)?  Currently assumes [0]
-        EndpointDescription testEndpointDesc = endpointDesc[0];
+        EndpointDescriptionImpl testEndpointDesc = (EndpointDescriptionImpl) endpointDesc[0];
         assertNotNull(testEndpointDesc);
-        assertEquals(Service.Mode.MESSAGE, testEndpointDesc.getServiceModeValue());
-        assertEquals("http://www.w3.org/2003/05/soap/bindings/HTTP/", testEndpointDesc.getBindingTypeValue());
+        assertEquals(Service.Mode.MESSAGE, testEndpointDesc.getAnnoServiceModeValue());
+        assertEquals("http://www.w3.org/2003/05/soap/bindings/HTTP/", testEndpointDesc.getAnnoBindingTypeValue());
         // The WebServiceProvider annotation specified no values on it.
         // TODO: When the Description package changes to provide default values when no annotation present, this may need to change.
-        assertEquals("", testEndpointDesc.getWebServiceWSDLLocation());
-        assertEquals("BasicProviderTestImplService", testEndpointDesc.getWebServiceServiceName());
-        assertEquals("BasicProviderTestImplPort", testEndpointDesc.getWebServicePortName());
-        assertEquals("http://description.jaxws.axis2.apache.org/", testEndpointDesc.getWebServiceTargetNamespace());
+        assertEquals("", testEndpointDesc.getAnnoWebServiceWSDLLocation());
+        assertEquals("BasicProviderTestImplService", testEndpointDesc.getAnnoWebServiceServiceName());
+        assertEquals("BasicProviderTestImplPort", testEndpointDesc.getAnnoWebServicePortName());
+        assertEquals("http://description.jaxws.axis2.apache.org/", testEndpointDesc.getAnnoWebServiceTargetNamespace());
     }
 
     public void testWebServiceProvider() {
@@ -64,15 +64,15 @@
         assertEquals(1, endpointDesc.length);
         
         // TODO: How will the JAX-WS dispatcher get the appropriate port (i.e. endpoint)?  Currently assumes [0]
-        EndpointDescription testEndpointDesc = endpointDesc[0];
+        EndpointDescriptionJava testEndpointDesc = (EndpointDescriptionJava) endpointDesc[0];
         assertNotNull(testEndpointDesc);
-        assertEquals(Service.Mode.PAYLOAD, testEndpointDesc.getServiceModeValue());
-        assertEquals("http://www.w3.org/2003/05/soap/bindings/HTTP/", testEndpointDesc.getBindingTypeValue());
+        assertEquals(Service.Mode.PAYLOAD, testEndpointDesc.getAnnoServiceModeValue());
+        assertEquals("http://www.w3.org/2003/05/soap/bindings/HTTP/", testEndpointDesc.getAnnoBindingTypeValue());
 
-        assertEquals("http://wsdl.test", testEndpointDesc.getWebServiceWSDLLocation());
-        assertEquals("ProviderService", testEndpointDesc.getWebServiceServiceName());
-        assertEquals("ProviderServicePort", testEndpointDesc.getWebServicePortName());
-        assertEquals("http://namespace.test", testEndpointDesc.getWebServiceTargetNamespace());
+        assertEquals("http://wsdl.test", testEndpointDesc.getAnnoWebServiceWSDLLocation());
+        assertEquals("ProviderService", testEndpointDesc.getAnnoWebServiceServiceName());
+        assertEquals("ProviderServicePort", testEndpointDesc.getAnnoWebServicePortName());
+        assertEquals("http://namespace.test", testEndpointDesc.getAnnoWebServiceTargetNamespace());
     }
     
     public void testDefaultServiceModeProvider() {
@@ -86,10 +86,10 @@
         assertEquals(1, endpointDesc.length);
         
         // TODO: How will the JAX-WS dispatcher get the appropriate port (i.e. endpoint)?  Currently assumes [0]
-        EndpointDescription testEndpointDesc = endpointDesc[0];
+        EndpointDescriptionJava testEndpointDesc = (EndpointDescriptionJava) endpointDesc[0];
         // Default ServiceMode is PAYLOAD per JAXWS p. 80
-        assertEquals(Service.Mode.PAYLOAD, testEndpointDesc.getServiceModeValue());
-        assertEquals("", testEndpointDesc.getBindingTypeValue());
+        assertEquals(Service.Mode.PAYLOAD, testEndpointDesc.getAnnoServiceModeValue());
+        assertEquals("", testEndpointDesc.getAnnoBindingTypeValue());
     }
     
     public void testNoServiceModeProvider() {
@@ -103,9 +103,9 @@
         assertEquals(1, endpointDesc.length);
         
         // TODO: How will the JAX-WS dispatcher get the appropriate port (i.e. endpoint)?  Currently assumes [0]
-        EndpointDescription testEndpointDesc = endpointDesc[0];
-        assertEquals(javax.xml.ws.Service.Mode.PAYLOAD, testEndpointDesc.getServiceModeValue());
-        assertEquals(javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_BINDING, testEndpointDesc.getBindingTypeValue());
+        EndpointDescriptionJava testEndpointDesc = (EndpointDescriptionJava) endpointDesc[0];
+        assertEquals(javax.xml.ws.Service.Mode.PAYLOAD, testEndpointDesc.getAnnoServiceModeValue());
+        assertEquals(javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_BINDING, testEndpointDesc.getAnnoBindingTypeValue());
     }
     
     public void testNoWebServiceProvider() {
@@ -149,9 +149,9 @@
         assertEquals(1, endpointDesc.length);
         
         // TODO: How will the JAX-WS dispatcher get the appropriate port (i.e. endpoint)?  Currently assumes [0]
-        EndpointDescription testEndpointDesc = endpointDesc[0];
-        assertNull(testEndpointDesc.getServiceModeValue());
-        assertEquals(javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_BINDING, testEndpointDesc.getBindingTypeValue());
+        EndpointDescriptionJava testEndpointDesc = (EndpointDescriptionJava) endpointDesc[0];
+        assertNull(testEndpointDesc.getAnnoServiceModeValue());
+        assertEquals(javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_BINDING, testEndpointDesc.getAnnoBindingTypeValue());
     }
 }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org