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/14 19:15:07 UTC

svn commit: r474901 - in /webservices/axis2/trunk/java/modules/jaxws: src/org/apache/axis2/jaxws/description/ src/org/apache/axis2/jaxws/description/impl/ src/org/apache/axis2/jaxws/description/validator/ test-resources/wsdl/ test/org/apache/axis2/jaxw...

Author: barrettj
Date: Tue Nov 14 10:15:06 2006
New Revision: 474901

URL: http://svn.apache.org/viewvc?view=rev&rev=474901
Log:
Add Description validator classes and initial post-construction validation

Added:
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/validator/
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/validator/EndpointDescriptionValidator.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/validator/EndpointInterfaceDescriptionValidator.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/validator/OperationDescriptionValidator.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/validator/ServiceDescriptionValidator.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/validator/ValidationFailures.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/validator/Validator.java
    webservices/axis2/trunk/java/modules/jaxws/test-resources/wsdl/ValidateWSDL1.wsdl
    webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/description/ValidateWSDLTests.java
Modified:
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/EndpointDescription.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/EndpointDescriptionWSDL.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/EndpointInterfaceDescriptionWSDL.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/ServiceDescriptionWSDL.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/impl/DescriptionFactoryImpl.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/impl/EndpointDescriptionImpl.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/impl/ServiceDescriptionImpl.java
    webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/framework/JAXWSTest.java

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/EndpointDescription.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/EndpointDescription.java?view=diff&rev=474901&r1=474900&r2=474901
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/EndpointDescription.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/EndpointDescription.java Tue Nov 14 10:15:06 2006
@@ -70,6 +70,7 @@
     public abstract boolean isProviderBased();
     public abstract boolean isEndpointBased();
     
+    public abstract String getName();
     public abstract String getTargetNamespace();
     public abstract String getBindingType();
     public abstract List<String> getHandlerList();

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/EndpointDescriptionWSDL.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/EndpointDescriptionWSDL.java?view=diff&rev=474901&r1=474900&r2=474901
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/EndpointDescriptionWSDL.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/EndpointDescriptionWSDL.java Tue Nov 14 10:15:06 2006
@@ -18,10 +18,20 @@
  */
 package org.apache.axis2.jaxws.description;
 
+import javax.wsdl.Binding;
+import javax.wsdl.Port;
+import javax.wsdl.PortType;
+import javax.wsdl.Service;
+
 /**
  * 
  */
 public interface EndpointDescriptionWSDL {
+    
+    public Service getWSDLService();
+    public Port getWSDLPort();
+    public Binding getWSDLBinding();
+    public String getWSDLBindingType();
     
     /**
      * Is the WSDL definition fully specified for the endpoint (WSDL 1.1 port)

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/EndpointInterfaceDescriptionWSDL.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/EndpointInterfaceDescriptionWSDL.java?view=diff&rev=474901&r1=474900&r2=474901
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/EndpointInterfaceDescriptionWSDL.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/EndpointInterfaceDescriptionWSDL.java Tue Nov 14 10:15:06 2006
@@ -18,6 +18,10 @@
 */
 package org.apache.axis2.jaxws.description;
 
+import javax.wsdl.PortType;
+
 public interface EndpointInterfaceDescriptionWSDL {
+    
+    public PortType getWSDLPortType();
     
 }

Modified: 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=diff&rev=474901&r1=474900&r2=474901
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/ServiceDescriptionWSDL.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/ServiceDescriptionWSDL.java Tue Nov 14 10:15:06 2006
@@ -2,6 +2,8 @@
 
 import java.net.URL;
 
+import javax.wsdl.Definition;
+
 import org.apache.axis2.jaxws.util.WSDLWrapper;
 
 public interface ServiceDescriptionWSDL {
@@ -10,5 +12,8 @@
     public abstract WSDLWrapper getGeneratedWsdlWrapper();
 
     public abstract URL getWSDLLocation();
+    
+    public Definition getWSDLDefinition();
+    public boolean isWSDLSpecified();
 
 }

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/impl/DescriptionFactoryImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/impl/DescriptionFactoryImpl.java?view=diff&rev=474901&r1=474900&r2=474901
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/impl/DescriptionFactoryImpl.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/impl/DescriptionFactoryImpl.java Tue Nov 14 10:15:06 2006
@@ -35,6 +35,7 @@
 import org.apache.axis2.description.AxisService;
 import org.apache.axis2.jaxws.ExceptionFactory;
 import org.apache.axis2.jaxws.description.builder.DescriptionBuilderComposite;
+import org.apache.axis2.jaxws.description.validator.ServiceDescriptionValidator;
 import org.apache.axis2.jaxws.description.ServiceDescription;
 
 /**
@@ -76,7 +77,15 @@
                 // process this impl class
                 ServiceDescription serviceDescription = new ServiceDescriptionImpl(
                         dbcMap, serviceImplComposite);
-                serviceDescriptionList.add(serviceDescription);
+                ServiceDescriptionValidator validator = new ServiceDescriptionValidator(serviceDescription);
+                if (validator.validate()) {
+                    serviceDescriptionList.add(serviceDescription);
+                }
+                else {
+                    // TODO: Validate all service descriptions before failing
+                    // TODO: Get more detailed failure information from the Validator
+                    throw ExceptionFactory.makeWebServiceException("ServiceDescription did not validate correctly");
+                }
             }
         }
 

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/impl/EndpointDescriptionImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/impl/EndpointDescriptionImpl.java?view=diff&rev=474901&r1=474900&r2=474901
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/impl/EndpointDescriptionImpl.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/impl/EndpointDescriptionImpl.java Tue Nov 14 10:15:06 2006
@@ -26,8 +26,10 @@
 import java.util.StringTokenizer;
 
 import javax.jws.WebService;
+import javax.wsdl.Binding;
 import javax.wsdl.Definition;
 import javax.wsdl.Port;
+import javax.wsdl.PortType;
 import javax.xml.namespace.QName;
 import javax.xml.ws.BindingType;
 import javax.xml.ws.Service;
@@ -50,6 +52,7 @@
 import org.apache.axis2.jaxws.description.EndpointDescriptionWSDL;
 import org.apache.axis2.jaxws.description.EndpointInterfaceDescription;
 import org.apache.axis2.jaxws.description.ServiceDescription;
+import org.apache.axis2.jaxws.description.ServiceDescriptionWSDL;
 import org.apache.axis2.jaxws.description.builder.DescriptionBuilderComposite;
 import org.apache.axis2.jaxws.description.builder.MDQConstants;
 import org.apache.axis2.jaxws.i18n.Messages;
@@ -67,6 +70,7 @@
  * somehow from an AxisService/AxisPort combination, and not directly from the WSDL.
  */
 class EndpointDescriptionImpl implements EndpointDescription, EndpointDescriptionJava, EndpointDescriptionWSDL {
+    
     private ServiceDescriptionImpl parentServiceDescription;
     private AxisService axisService;
 
@@ -234,8 +238,7 @@
         //      Remember that this will only happen when we generate an AxisService from existing
         //		WSDL and then need to perform further processing because we have annotations as well
         //		If there is no WSDL, we would never process the Method to begin with.
-
-       
+        
         buildDescriptionHierachy();
         
         //Invoke the callback for generating the wsdl
@@ -551,7 +554,7 @@
         //Save the Port Type name
         Parameter portTypeNameParameter = new Parameter();
         portTypeNameParameter.setName(MDQConstants.WSDL_PORTTYPE_NAME);
-        portTypeNameParameter.setValue(getAnnoWebServiceName());
+        portTypeNameParameter.setValue(getName());
         
         // Save the Service QName as a parameter.
         Parameter serviceNameParameter = new Parameter();
@@ -602,7 +605,7 @@
     		else 
     			serviceBuilder.setServerSide(false);
     		
-    		axisService = serviceBuilder.populateService();    		
+    		axisService = serviceBuilder.populateService();
     		axisService.setName(createAxisServiceName());
             isBuiltFromWSDL = true;
     	} catch (AxisFault e) {
@@ -1073,11 +1076,6 @@
         return getAnnoServiceModeValue();
     }
     
-    public String getTargetNamespace() {
-        // TODO: (JLB) WSDL/Anno Merge
-        return getAnnoWebServiceTargetNamespace();
-    }
-    
     public Service.Mode getAnnoServiceModeValue() {
         // This annotation is only valid on Provider-based endpoints. 
         if (isProviderBased() && serviceModeValue == null) {
@@ -1141,7 +1139,50 @@
     public List<String> getHandlerList() {
         return handlerList;
     }
-    
+    private Definition getWSDLDefinition() {
+        return ((ServiceDescriptionWSDL) getServiceDescription()).getWSDLDefinition();
+    }
+    public javax.wsdl.Service getWSDLService() {
+        Definition defn = getWSDLDefinition();
+        if (defn != null) {
+            return defn.getService(getServiceQName());
+        }
+        else {
+            return null;
+        }
+    }
+    public Port getWSDLPort() {
+        javax.wsdl.Service service = getWSDLService();
+        if (service != null) {
+            return service.getPort(getPortQName().getLocalPart());
+        }
+        else {
+            return null;
+        }
+    }
+    public Binding getWSDLBinding() {
+        Binding wsdlBinding = null;
+        Port wsdlPort = getWSDLPort();
+        Definition wsdlDef = getWSDLDefinition();
+        if (wsdlPort != null && wsdlDef != null) {
+            wsdlBinding = wsdlPort.getBinding();
+        }
+        return wsdlBinding;
+    }
+    public String getWSDLBindingType() {
+        String wsdlBindingType = null;
+        Binding wsdlBinding = getWSDLBinding();
+        if (wsdlBinding != null) {
+            wsdlBindingType = wsdlBinding.getQName().getNamespaceURI();
+        }
+        return wsdlBindingType;
+    }
+    public String getName() {
+        return getAnnoWebServiceName();
+    }
+    public String getTargetNamespace() {
+        return getAnnoWebServiceTargetNamespace();
+    }
     /**
      * Returns the packages that are needed to marshal/unmarshal the 
      * data objects.  Example: this set of packages is used to construct a 

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl.java?view=diff&rev=474901&r1=474900&r2=474901
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl.java Tue Nov 14 10:15:06 2006
@@ -25,16 +25,21 @@
 import java.util.List;
 
 import javax.jws.soap.SOAPBinding;
+import javax.wsdl.Binding;
+import javax.wsdl.Definition;
+import javax.wsdl.PortType;
 import javax.xml.namespace.QName;
 
 import org.apache.axis2.description.AxisOperation;
 import org.apache.axis2.description.AxisService;
 import org.apache.axis2.jaxws.ExceptionFactory;
 import org.apache.axis2.jaxws.description.EndpointDescription;
+import org.apache.axis2.jaxws.description.EndpointDescriptionWSDL;
 import org.apache.axis2.jaxws.description.EndpointInterfaceDescription;
 import org.apache.axis2.jaxws.description.EndpointInterfaceDescriptionJava;
 import org.apache.axis2.jaxws.description.EndpointInterfaceDescriptionWSDL;
 import org.apache.axis2.jaxws.description.OperationDescription;
+import org.apache.axis2.jaxws.description.ServiceDescriptionWSDL;
 import org.apache.axis2.jaxws.description.builder.DescriptionBuilderComposite;
 import org.apache.axis2.jaxws.description.builder.MDQConstants;
 import org.apache.axis2.jaxws.description.builder.MethodDescriptionComposite;
@@ -119,8 +124,8 @@
      * @param parent
      */
     EndpointInterfaceDescriptionImpl(   DescriptionBuilderComposite dbc, 
-                                    	boolean isClass,
-                                    	EndpointDescriptionImpl parent){
+                                    boolean isClass,
+                                    EndpointDescriptionImpl parent){
         
         parentEndpointDescription = parent;
         this.dbc = dbc;
@@ -614,6 +619,25 @@
         }
                 
         return retrieveList;
+    }
+
+    private Definition getWSDLDefinition() {
+        return ((ServiceDescriptionWSDL) getEndpointDescription().getServiceDescription()).getWSDLDefinition();
+    }
+    public PortType getWSDLPortType() {
+        PortType portType = null;
+//        EndpointDescriptionWSDL endpointDescWSDL = (EndpointDescriptionWSDL) getEndpointDescription();
+//        Binding wsdlBinding = endpointDescWSDL.getWSDLBinding();
+//        if (wsdlBinding != null) {
+//            portType = wsdlBinding.getPortType();
+//        }
+        Definition wsdlDefn = getWSDLDefinition();
+        if (wsdlDefn != null) {
+            String tns = getEndpointDescription().getTargetNamespace();
+            String localPart = getEndpointDescription().getName();
+            portType = wsdlDefn.getPortType(new QName(tns, localPart));
+        }
+        return portType;
     }
 
 }

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/impl/ServiceDescriptionImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/impl/ServiceDescriptionImpl.java?view=diff&rev=474901&r1=474900&r2=474901
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/impl/ServiceDescriptionImpl.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/impl/ServiceDescriptionImpl.java Tue Nov 14 10:15:06 2006
@@ -143,6 +143,7 @@
     	
 		// Do a first pass validation for this DescriptionBuilderComposite.
     	// This is not intended to be a full integrity check, but rather a fail-fast mechanism
+        // TODO: Refactor this to a seperate validator class?
     	validateDBCLIntegrity();
     	
         // The ServiceQName instance variable is set based on annotation or default
@@ -155,7 +156,6 @@
         // it will be set to the annotation value.
         //EndpointDescription endpointDescription = new EndpointDescription(null, this, serviceImplName);
         EndpointDescriptionImpl endpointDescription = new EndpointDescriptionImpl(this, serviceImplName);
-        
         addEndpointDescription(endpointDescription);       
     }
     
@@ -782,4 +782,16 @@
 	private void validateWSDLOperations() {
 		//Verifies that all operations on the wsdl are found in the impl/sei class
 	}
+
+    public boolean isWSDLSpecified() {
+        return getWSDLWrapper().getDefinition() != null;
+    }
+
+    public Definition getWSDLDefinition() {
+        Definition defn = null;
+        if (getWSDLWrapper() != null) {
+            defn = getWSDLWrapper().getDefinition();
+        }
+        return defn;
+    }
 }

Added: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/validator/EndpointDescriptionValidator.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/validator/EndpointDescriptionValidator.java?view=auto&rev=474901
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/validator/EndpointDescriptionValidator.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/validator/EndpointDescriptionValidator.java Tue Nov 14 10:15:06 2006
@@ -0,0 +1,105 @@
+/*
+ * 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.validator;
+
+import javax.wsdl.Port;
+import javax.wsdl.Service;
+
+import org.apache.axis2.jaxws.description.EndpointDescription;
+import org.apache.axis2.jaxws.description.EndpointDescriptionJava;
+import org.apache.axis2.jaxws.description.EndpointDescriptionWSDL;
+import org.apache.axis2.jaxws.description.EndpointInterfaceDescription;
+import org.apache.axis2.jaxws.description.ServiceDescriptionWSDL;
+import org.apache.axis2.jaxws.description.validator.Validator.ValidationLevel;
+
+/**
+ * 
+ */
+public class EndpointDescriptionValidator extends Validator {
+    EndpointDescription endpointDesc;
+    EndpointDescriptionJava endpointDescJava;
+    EndpointDescriptionWSDL endpointDescWSDL;
+    
+    public EndpointDescriptionValidator(EndpointDescription toValidate) {
+        endpointDesc = toValidate;
+        endpointDescJava = (EndpointDescriptionJava) endpointDesc;
+        endpointDescWSDL = (EndpointDescriptionWSDL) endpointDesc;
+    }
+    
+    public boolean validate() {
+
+        if (getValidationLevel() == ValidationLevel.OFF) {
+            return VALID;
+        }
+
+        if (!validateWSDLPort()) {
+            return INVALID;
+        }
+        
+        if (!validateWSDLBindingType()) {
+            return INVALID;
+        }
+        
+        if (!validateEndpointInterface()) {
+            return INVALID;
+        }
+        return VALID;
+    }
+
+    private boolean validateWSDLBindingType() {
+        // TODO: The getWSDLBindingType is not getting the correct value; it needs to return the
+        //       <soap:binding transport> value
+        if (true) return VALID;
+        String bindingType = endpointDesc.getBindingType();
+        String wsdlBindingType = endpointDescWSDL.getWSDLBindingType();
+        if (wsdlBindingType != null && !wsdlBindingType.equals(bindingType)) {
+            addValidationFailure(this, "Binding type is invald");
+            return INVALID;
+        }
+        return VALID;
+    }
+
+    private boolean validateWSDLPort() {
+        // VALIDATION: If the service is specified in the WSDL, then the port must also be specified.
+        //             If the service is NOT in the WSDL, then this is "partial wsdl" and there is nothing to validate
+        //             against the WSDL
+        Service wsdlService = endpointDescWSDL.getWSDLService();
+        if (wsdlService != null) {
+            Port wsdlPort = endpointDescWSDL.getWSDLPort();
+            if (wsdlPort == null) {
+                addValidationFailure(this, "Serivce exists in WSDL, but Port does not.  Not a valid Partial WSDL");
+                return INVALID;
+            }
+        }
+        return VALID;
+    }
+    
+    private boolean validateEndpointInterface() {
+        EndpointInterfaceDescription eid = endpointDesc.getEndpointInterfaceDescription();
+        if (eid != null) {
+            EndpointInterfaceDescriptionValidator eidValidator = new EndpointInterfaceDescriptionValidator(eid);
+            boolean isEndpointInterfaceValid = eidValidator.validate();
+            if (!isEndpointInterfaceValid) {
+                addValidationFailure(eidValidator, "Invalid Endpoint Interface");
+                return INVALID;
+            }
+        }
+        return VALID;
+    }
+}

Added: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/validator/EndpointInterfaceDescriptionValidator.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/validator/EndpointInterfaceDescriptionValidator.java?view=auto&rev=474901
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/validator/EndpointInterfaceDescriptionValidator.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/validator/EndpointInterfaceDescriptionValidator.java Tue Nov 14 10:15:06 2006
@@ -0,0 +1,83 @@
+/*
+ * 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.validator;
+
+import java.util.List;
+
+import javax.wsdl.Binding;
+import javax.wsdl.Operation;
+import javax.wsdl.PortType;
+
+import org.apache.axis2.jaxws.description.EndpointDescription;
+import org.apache.axis2.jaxws.description.EndpointDescriptionWSDL;
+import org.apache.axis2.jaxws.description.EndpointInterfaceDescription;
+import org.apache.axis2.jaxws.description.EndpointInterfaceDescriptionJava;
+import org.apache.axis2.jaxws.description.EndpointInterfaceDescriptionWSDL;
+import org.apache.axis2.jaxws.description.OperationDescription;
+import org.apache.axis2.jaxws.description.validator.Validator.ValidationLevel;
+
+/**
+ * 
+ */
+public class EndpointInterfaceDescriptionValidator extends Validator {
+    EndpointInterfaceDescription epInterfaceDesc;
+    EndpointInterfaceDescriptionJava epInterfaceDescJava;
+    EndpointInterfaceDescriptionWSDL epInterfaceDescWSDL;
+
+    public EndpointInterfaceDescriptionValidator(EndpointInterfaceDescription toValidate) {
+        epInterfaceDesc = toValidate;
+        epInterfaceDescJava = (EndpointInterfaceDescriptionJava) epInterfaceDesc;
+        epInterfaceDescWSDL = (EndpointInterfaceDescriptionWSDL) epInterfaceDesc;
+        
+    }
+    /* (non-Javadoc)
+     * @see org.apache.axis2.jaxws.description.validator.Validator#validate()
+     */
+    @Override
+    public boolean validate() {
+        if (getValidationLevel() == ValidationLevel.OFF) {
+            return VALID;
+        }
+        if (!validateSEIvsWSDLPortType()) {
+            return INVALID;
+        }
+        if (!validateSEIvsImplementation()) {
+            return INVALID;
+        }
+        return VALID;
+    }
+    
+    private boolean validateSEIvsWSDLPortType() {
+        PortType portType = epInterfaceDescWSDL.getWSDLPortType();
+        if (portType != null) {
+            // TODO: Need more validation here, including: operation name, parameters, faults
+            List wsdlOperationList = portType.getOperations(); 
+            OperationDescription[] opDescArray = epInterfaceDesc.getOperations();
+            if (wsdlOperationList.size() != opDescArray.length) {
+                addValidationFailure(this, "Operations did not match WSDL");
+                return INVALID;
+            }
+        }
+        return VALID;
+    }
+    private boolean validateSEIvsImplementation() {
+        // REVIEW: This level of validation is currently being done by the DBC Composite validation
+        return VALID;
+    }
+}

Added: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/validator/OperationDescriptionValidator.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/validator/OperationDescriptionValidator.java?view=auto&rev=474901
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/validator/OperationDescriptionValidator.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/validator/OperationDescriptionValidator.java Tue Nov 14 10:15:06 2006
@@ -0,0 +1,53 @@
+/*
+ * 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.validator;
+
+import org.apache.axis2.jaxws.description.OperationDescription;
+import org.apache.axis2.jaxws.description.OperationDescriptionJava;
+import org.apache.axis2.jaxws.description.OperationDescriptionWSDL;
+import org.apache.axis2.jaxws.description.validator.Validator.ValidationLevel;
+
+/**
+ * 
+ */
+public class OperationDescriptionValidator extends Validator {
+    private OperationDescription opDesc;
+    private OperationDescriptionJava opDescJava;
+    private OperationDescriptionWSDL opDescWSDL;
+
+
+    public OperationDescriptionValidator(OperationDescription toValidate) {
+        opDesc = toValidate;
+        opDescJava = (OperationDescriptionJava) opDesc;
+        opDescWSDL = (OperationDescriptionWSDL) opDesc;
+    }
+    /* (non-Javadoc)
+     * @see org.apache.axis2.jaxws.description.validator.Validator#validate()
+     */
+    @Override
+    public boolean validate() {
+        if (getValidationLevel() == ValidationLevel.OFF) {
+            return VALID;
+        }
+
+        // TODO Auto-generated method stub
+        return VALID;
+    }
+
+}

Added: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/validator/ServiceDescriptionValidator.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/validator/ServiceDescriptionValidator.java?view=auto&rev=474901
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/validator/ServiceDescriptionValidator.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/validator/ServiceDescriptionValidator.java Tue Nov 14 10:15:06 2006
@@ -0,0 +1,79 @@
+/*
+ * 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.validator;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import org.apache.axis2.jaxws.description.EndpointDescription;
+import org.apache.axis2.jaxws.description.ServiceDescription;
+import org.apache.axis2.jaxws.description.ServiceDescriptionJava;
+import org.apache.axis2.jaxws.description.ServiceDescriptionWSDL;
+
+/**
+ * 
+ */
+public class ServiceDescriptionValidator extends Validator {
+    
+    private ServiceDescription serviceDesc;
+    private ServiceDescriptionJava serviceDescJava;
+    private ServiceDescriptionWSDL serviceDescWSDL;
+    
+    public ServiceDescriptionValidator(ServiceDescription toValidate) {
+        serviceDesc = toValidate;
+        serviceDescJava = (ServiceDescriptionJava) serviceDesc;
+        serviceDescWSDL = (ServiceDescriptionWSDL) serviceDesc;
+    }
+    
+    /**
+     * Validate the ServiceDescription as follows
+     * 1) Validate that annotations and whatever WSDL is specified is valid
+     * 2) Validate that Java implementations are correc
+     *    a) Service Implementations match SEIs if specified
+     *    b) Operations match SEI methods
+     *    
+     * @return true if the ServiceDescription is valid
+     */
+    public boolean validate() {
+        if (getValidationLevel() == ValidationLevel.OFF) {
+            return VALID;
+        }
+        
+        if (!validateEndpointDescriptions()) {
+            return INVALID;
+        }
+        
+        return VALID;
+    }
+    
+    private boolean validateEndpointDescriptions() {
+        boolean areAllValid = true;
+        // Validate all the Endpoints that were created under this Service Description
+        EndpointDescription[] endpointDescArray = serviceDesc.getEndpointDescriptions();
+        for (EndpointDescription endpointDesc:endpointDescArray) {
+            EndpointDescriptionValidator endpointValidator = new EndpointDescriptionValidator(endpointDesc);
+            boolean isEndpointValid = endpointValidator.validate();
+            if (!isEndpointValid) {
+                addValidationFailure(endpointValidator, "Endpoint failed validation");
+                areAllValid = false;
+            }
+        }
+        return areAllValid;
+    }
+}

Added: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/validator/ValidationFailures.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/validator/ValidationFailures.java?view=auto&rev=474901
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/validator/ValidationFailures.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/validator/ValidationFailures.java Tue Nov 14 10:15:06 2006
@@ -0,0 +1,44 @@
+/*
+ * 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.validator;
+
+import java.util.ArrayList;
+
+
+/**
+ * 
+ */
+public class ValidationFailures {
+
+    ArrayList <ValidationFailure> validationFailures = new ArrayList<ValidationFailure>();
+    
+    public void add(Validator failingValidator, String message) {
+        validationFailures.add(new ValidationFailure(failingValidator, message));
+    }
+}
+
+class ValidationFailure {
+    Validator validator;
+    String message;
+    
+    ValidationFailure(Validator validator, String message) {
+        this.validator = validator;
+        this.message = message;
+    }
+}

Added: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/validator/Validator.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/validator/Validator.java?view=auto&rev=474901
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/validator/Validator.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/validator/Validator.java Tue Nov 14 10:15:06 2006
@@ -0,0 +1,43 @@
+/*
+ * 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.validator;
+
+/**
+ * 
+ */
+public abstract class Validator {
+    public enum ValidationLevel {OFF, FULL};
+    public static final boolean VALID = true;
+    public static final boolean INVALID = false;
+    
+    private ValidationFailures validationFailures = new ValidationFailures();
+    // TODO: turn on validation and change the ValidateWSDL test to start checking for failures.
+    private ValidationLevel validationLevel = ValidationLevel.FULL;
+
+    abstract public boolean validate();
+    
+    void addValidationFailure(Validator failingValidator, String message) {
+        validationFailures.add(failingValidator, message);
+    }
+    
+    ValidationLevel getValidationLevel() {
+        return validationLevel;
+    }
+
+}

Added: webservices/axis2/trunk/java/modules/jaxws/test-resources/wsdl/ValidateWSDL1.wsdl
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test-resources/wsdl/ValidateWSDL1.wsdl?view=auto&rev=474901
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test-resources/wsdl/ValidateWSDL1.wsdl (added)
+++ webservices/axis2/trunk/java/modules/jaxws/test-resources/wsdl/ValidateWSDL1.wsdl Tue Nov 14 10:15:06 2006
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<definitions targetNamespace="http://serverPartial1.checkexception.webfault.annotations/" name="AddNumbersImplPartial1Service" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://serverPartial1.checkexception.webfault.annotations/" xmlns="http://schemas.xmlsoap.org/wsdl/">
+  <types>
+    <xsd:schema>
+      <xsd:import namespace="http://serverPartial1.checkexception.webfault.annotations/" schemaLocation="PartialWSDL1_schema.xsd"/>
+    </xsd:schema>
+  </types>
+  <message name="addTwoNumbers">
+    <part name="parameters" element="tns:addTwoNumbers"/>
+  </message>
+  <message name="addTwoNumbersResponse">
+    <part name="parameters" element="tns:addTwoNumbersResponse"/>
+  </message>
+  <message name="AddNegativeNumbersException">
+    <part name="fault" element="tns:AddNegativeNumbersException"/>
+  </message>
+  <portType name="ValidateWSDLImpl1">
+    <operation name="addTwoNumbers">
+      <input message="tns:addTwoNumbers"/>
+      <output message="tns:addTwoNumbersResponse"/>
+      <fault name="AddNegativeNumbersException" message="tns:AddNegativeNumbersException"/>
+    </operation>
+    <operation name="addTwoNumbers2">
+      <input message="tns:addTwoNumbers"/>
+      <output message="tns:addTwoNumbersResponse"/>
+      <fault name="AddNegativeNumbersException" message="tns:AddNegativeNumbersException"/>
+    </operation>
+  </portType>
+
+  <binding name="AddNumbersImplPartial1PortBinding" type="tns:ValidateWSDLImpl1">
+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+    <operation name="addTwoNumbers">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+      <fault name="AddNegativeNumbersException">
+        <soap:fault name="AddNegativeNumbersException" use="literal"/>
+      </fault>
+    </operation>
+    <operation name="addTwoNumbers2">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+      <fault name="AddNegativeNumbersException">
+        <soap:fault name="AddNegativeNumbersException" use="literal"/>
+      </fault>
+    </operation>
+  </binding>
+  <service name="ValidateWSDLImpl1ServiceInvalidPort">
+    <port name="ValidateWSDLImpl1Port" binding="tns:AddNumbersImplPartial1PortBinding">
+      <soap:address location="http://@REPLACE_WITH_HOST_NAME@:@REPLACE_WITH_PORT_NUM@/webfaultchkexc/webfaultchkexcp1"/>
+    </port>
+  </service>
+  
+</definitions>
+

Added: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/description/ValidateWSDLTests.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/description/ValidateWSDLTests.java?view=auto&rev=474901
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/description/ValidateWSDLTests.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/description/ValidateWSDLTests.java Tue Nov 14 10:15:06 2006
@@ -0,0 +1,164 @@
+/*
+ * 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;
+
+import java.net.URL;
+import java.util.HashMap;
+import java.util.List;
+
+import javax.jws.WebService;
+import javax.wsdl.Definition;
+import javax.xml.ws.WebServiceException;
+
+import org.apache.axis2.jaxws.description.builder.DescriptionBuilderComposite;
+import org.apache.axis2.jaxws.description.builder.MethodDescriptionComposite;
+import org.apache.axis2.jaxws.description.builder.ParameterDescriptionComposite;
+import org.apache.axis2.jaxws.description.builder.WebServiceAnnot;
+
+import junit.framework.TestCase;
+
+/**
+ * Tests validation against the WSDL for invalid configurations
+ */
+public class ValidateWSDLTests extends TestCase {
+    
+    /**
+     * The SEI used by the service impl does not contain all the methods
+     * defined on the PortType
+     */
+    public void testValidatePortType() {
+        String wsdlRelativeLocation = "test-resources/wsdl/";
+        String wsdlFileName = "ValidateWSDL1.wsdl"; 
+        
+        String targetNamespace = "http://serverPartial1.checkexception.webfault.annotations/";
+        String wsdlLocation = wsdlRelativeLocation + wsdlFileName;
+
+        // Build up a DBC, including the WSDL Definition and the annotation information for the impl class.
+        DescriptionBuilderComposite dbc = new DescriptionBuilderComposite();
+        
+        URL wsdlURL = DescriptionTestUtils.getWSDLURL(wsdlFileName);
+        Definition wsdlDefn = DescriptionTestUtils.createWSDLDefinition(wsdlURL);
+        assertNotNull(wsdlDefn);
+        
+        WebServiceAnnot webServiceAnnot = WebServiceAnnot.createWebServiceAnnotImpl();
+        assertNotNull(webServiceAnnot);
+        webServiceAnnot.setWsdlLocation(wsdlLocation);
+        webServiceAnnot.setTargetNamespace(targetNamespace);
+        
+        MethodDescriptionComposite mdc = new MethodDescriptionComposite();
+        mdc.setMethodName("addTwoNumbers");
+        mdc.setReturnType("int");
+        
+        ParameterDescriptionComposite pdc1 = new ParameterDescriptionComposite();
+        pdc1.setParameterType("int");
+        ParameterDescriptionComposite pdc2 = new ParameterDescriptionComposite();
+        pdc1.setParameterType("int");
+        
+        mdc.addParameterDescriptionComposite(pdc1);
+        mdc.addParameterDescriptionComposite(pdc2);
+        
+        dbc.addMethodDescriptionComposite(mdc);
+        dbc.setWebServiceAnnot(webServiceAnnot);
+        dbc.setClassName(ValidateWSDLImpl1.class.getName());
+        dbc.setWsdlDefinition(wsdlDefn);
+        dbc.setwsdlURL(wsdlURL);
+        
+        HashMap<String, DescriptionBuilderComposite> dbcMap = new HashMap<String, DescriptionBuilderComposite>();
+        dbcMap.put(ValidateWSDLImpl1.class.getName(), dbc);
+        
+        try {
+            List<ServiceDescription> serviceDescList = DescriptionFactory.createServiceDescriptionFromDBCMap(dbcMap);
+            fail();
+        }
+        catch (WebServiceException e) {
+            // Expected code path
+        }
+    }
+    
+    /**
+     * Reference a Port (which does not exist) under a Service that does.  This is not a 
+     * valid partial WSDL case and so is an error.
+     */
+    public void testValidatePort() {
+        String wsdlRelativeLocation = "test-resources/wsdl/";
+        String wsdlFileName = "ValidateWSDL1.wsdl"; 
+        
+        String targetNamespace = "http://serverPartial1.checkexception.webfault.annotations/";
+        String wsdlLocation = wsdlRelativeLocation + wsdlFileName;
+
+        // Build up a DBC, including the WSDL Definition and the annotation information for the impl class.
+        DescriptionBuilderComposite dbc = new DescriptionBuilderComposite();
+        
+        URL wsdlURL = DescriptionTestUtils.getWSDLURL(wsdlFileName);
+        Definition wsdlDefn = DescriptionTestUtils.createWSDLDefinition(wsdlURL);
+        assertNotNull(wsdlDefn);
+        
+        WebServiceAnnot webServiceAnnot = WebServiceAnnot.createWebServiceAnnotImpl();
+        assertNotNull(webServiceAnnot);
+        webServiceAnnot.setWsdlLocation(wsdlLocation);
+        webServiceAnnot.setTargetNamespace(targetNamespace);
+        webServiceAnnot.setServiceName("ValidateWSDLImpl1ServiceInvalidPort");
+        
+        MethodDescriptionComposite mdc = new MethodDescriptionComposite();
+        mdc.setMethodName("addTwoNumbers");
+        mdc.setReturnType("int");
+        
+        ParameterDescriptionComposite pdc1 = new ParameterDescriptionComposite();
+        pdc1.setParameterType("int");
+        ParameterDescriptionComposite pdc2 = new ParameterDescriptionComposite();
+        pdc1.setParameterType("int");
+        
+        mdc.addParameterDescriptionComposite(pdc1);
+        mdc.addParameterDescriptionComposite(pdc2);
+        
+        dbc.addMethodDescriptionComposite(mdc);
+        dbc.setWebServiceAnnot(webServiceAnnot);
+        dbc.setClassName(ValidateWSDLImpl2.class.getName());
+        dbc.setWsdlDefinition(wsdlDefn);
+        dbc.setwsdlURL(wsdlURL);
+        
+        HashMap<String, DescriptionBuilderComposite> dbcMap = new HashMap<String, DescriptionBuilderComposite>();
+        dbcMap.put(ValidateWSDLImpl1.class.getName(), dbc);
+        
+        try {
+            List<ServiceDescription> serviceDescList = DescriptionFactory.createServiceDescriptionFromDBCMap(dbcMap);
+            fail();
+        }
+        catch (WebServiceException e) {
+            // Expected code path
+        }
+    }
+}
+
+@WebService(wsdlLocation = "test-resources/wsdl/ValidateWSDL2.wsdl",
+            targetNamespace = "http://serverPartial1.checkexception.webfault.annotations/")
+class ValidateWSDLImpl1 {
+    public int addTwoNumbers(int number1, int number2) {
+        return number1 + number2;
+    }
+}
+
+@WebService(serviceName = "ValidateWSDLImpl1ServiceInvalidPort",
+        wsdlLocation = "test-resources/wsdl/ValidateWSDL2.wsdl",
+        targetNamespace = "http://serverPartial1.checkexception.webfault.annotations/")
+class ValidateWSDLImpl2 {
+public int addTwoNumbers(int number1, int number2) {
+    return number1 + number2;
+}
+}

Modified: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/framework/JAXWSTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/framework/JAXWSTest.java?view=diff&rev=474901&r1=474900&r2=474901
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/framework/JAXWSTest.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/framework/JAXWSTest.java Tue Nov 14 10:15:06 2006
@@ -28,6 +28,7 @@
 import org.apache.axis2.jaxws.description.AnnotationServiceImplWithDBCTests;
 import org.apache.axis2.jaxws.description.PartialWSDLTests;
 import org.apache.axis2.jaxws.description.ServiceAnnotationTests;
+import org.apache.axis2.jaxws.description.ValidateWSDLTests;
 import org.apache.axis2.jaxws.description.WSDLDescriptionTests;
 import org.apache.axis2.jaxws.description.WSDLTests;
 import org.apache.axis2.jaxws.description.builder.DescriptionBuilderTests;
@@ -102,6 +103,7 @@
         suite.addTestSuite(AnnotationProviderImplDescriptionTests.class);
         suite.addTestSuite(AnnotationServiceImplWithDBCTests.class);
         suite.addTestSuite(PartialWSDLTests.class);
+        suite.addTestSuite(ValidateWSDLTests.class);
         
         suite.addTestSuite(HandlerChainProcessorTests.class);
         suite.addTestSuite(JaxwsMessageBundleTests.class);



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