Author: dblevins
Date: Tue Mar 15 20:26:23 2005
New Revision: 157665

URL: http://svn.apache.org/viewcvs?view=rev&rev=157665
Log:
OperationBuilders set the method instance on the OperationDesc.
Note this will cause serialization failures at deploy time till AXIS-1878 is 
applied:
http://issues.apache.org/jira/secure/ManageAttachments.jspa?id=30933


Modified:
    
geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisBuilder.java
    
geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisServiceBuilder.java
    
geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/HeavyweightOperationDescBuilder.java
    
geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/LightweightOperationDescBuilder.java

Modified: 
geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisBuilder.java
URL: 
http://svn.apache.org/viewcvs/geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisBuilder.java?view=diff&r1=157664&r2=157665
==============================================================================
--- 
geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisBuilder.java
 (original)
+++ 
geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisBuilder.java
 Tue Mar 15 20:26:23 2005
@@ -280,7 +280,7 @@
             String operationName = operation.getName();
             BindingOperation bindingOperation = 
binding.getBindingOperation(operationName, operation.getInput().getName(), 
operation.getOutput() == null ? null : operation.getOutput().getName());
             ServiceEndpointMethodMappingType methodMapping = 
WSDescriptorParser.getMethodMappingForOperation(operationName, methodMappings);
-            OperationInfo operationInfo = 
buildOperationInfoHeavyweight(methodMapping, bindingOperation, portStyle, 
soapVersion, exceptionMap, complexTypeMap, mapping, classLoader);
+            OperationInfo operationInfo = 
buildOperationInfoHeavyweight(methodMapping, bindingOperation, portStyle, 
soapVersion, exceptionMap, complexTypeMap, mapping, classLoader, 
enhancedServiceEndpointClass);
             operationInfos[i++] = operationInfo;
         }
         JavaXmlTypeMappingType[] javaXmlTypeMappings = 
mapping.getJavaXmlTypeMappingArray();
@@ -474,8 +474,8 @@
         return operationDescBuilder.buildOperationInfo(soapVersion);
     }
 
-    public OperationInfo 
buildOperationInfoHeavyweight(ServiceEndpointMethodMappingType methodMapping, 
BindingOperation bindingOperation, Style defaultStyle, SOAPConstants 
soapVersion, Map exceptionMap, Map complexTypeMap, JavaWsdlMappingType mapping, 
ClassLoader classLoader) throws DeploymentException {
-        HeavyweightOperationDescBuilder operationDescBuilder = new 
HeavyweightOperationDescBuilder(bindingOperation, mapping, methodMapping, 
defaultStyle, exceptionMap, complexTypeMap, classLoader);
+    public OperationInfo 
buildOperationInfoHeavyweight(ServiceEndpointMethodMappingType methodMapping, 
BindingOperation bindingOperation, Style defaultStyle, SOAPConstants 
soapVersion, Map exceptionMap, Map complexTypeMap, JavaWsdlMappingType mapping, 
ClassLoader classLoader, Class serviceEndpointInterface) throws 
DeploymentException {
+        HeavyweightOperationDescBuilder operationDescBuilder = new 
HeavyweightOperationDescBuilder(bindingOperation, mapping, methodMapping, 
defaultStyle, exceptionMap, complexTypeMap, classLoader, 
serviceEndpointInterface);
         return operationDescBuilder.buildOperationInfo(soapVersion);
     }
 

Modified: 
geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisServiceBuilder.java
URL: 
http://svn.apache.org/viewcvs/geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisServiceBuilder.java?view=diff&r1=157664&r2=157665
==============================================================================
--- 
geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisServiceBuilder.java
 (original)
+++ 
geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisServiceBuilder.java
 Tue Mar 15 20:26:23 2005
@@ -261,7 +261,7 @@
                 String operationName = 
bindingOperation.getOperation().getName();
                 ServiceEndpointMethodMappingType[] methodMappings = 
portInfo.getServiceEndpointInterfaceMapping().getServiceEndpointMethodMappingArray();
                 ServiceEndpointMethodMappingType methodMapping = 
WSDescriptorParser.getMethodMappingForOperation(operationName, methodMappings);
-                operationDescBuilder = new 
HeavyweightOperationDescBuilder(bindingOperation, 
portInfo.getJavaWsdlMapping(), methodMapping, Style.RPC, exceptionMap, 
complexTypeMap, classLoader);
+                operationDescBuilder = new 
HeavyweightOperationDescBuilder(bindingOperation, 
portInfo.getJavaWsdlMapping(), methodMapping, Style.RPC, exceptionMap, 
complexTypeMap, classLoader, serviceEndpointInterface);
             }
 
             
serviceDesc.addOperationDesc(operationDescBuilder.buildOperationDesc());

Modified: 
geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/HeavyweightOperationDescBuilder.java
URL: 
http://svn.apache.org/viewcvs/geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/HeavyweightOperationDescBuilder.java?view=diff&r1=157664&r2=157665
==============================================================================
--- 
geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/HeavyweightOperationDescBuilder.java
 (original)
+++ 
geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/HeavyweightOperationDescBuilder.java
 Tue Mar 15 20:26:23 2005
@@ -17,6 +17,7 @@
 package org.apache.geronimo.axis.builder;
 
 import java.lang.String;
+import java.lang.reflect.Method;
 import java.util.*;
 import javax.wsdl.*;
 import javax.wsdl.extensions.soap.SOAPBody;
@@ -53,8 +54,9 @@
      */
     private final Set inParamNames = new HashSet();
     private final Set outParamNames = new HashSet();
+    private final Class serviceEndpointInterface;
 
-    public HeavyweightOperationDescBuilder(BindingOperation bindingOperation, 
JavaWsdlMappingType mapping, ServiceEndpointMethodMappingType methodMapping, 
Style defaultStyle, Map exceptionMap, Map complexTypeMap, ClassLoader 
classLoader) throws DeploymentException {
+    public HeavyweightOperationDescBuilder(BindingOperation bindingOperation, 
JavaWsdlMappingType mapping, ServiceEndpointMethodMappingType methodMapping, 
Style defaultStyle, Map exceptionMap, Map complexTypeMap, ClassLoader 
classLoader, Class serviceEndpointInterface) throws DeploymentException {
         super(bindingOperation);
         this.mapping = mapping;
         this.methodMapping = methodMapping;
@@ -62,7 +64,7 @@
         this.exceptionMap = exceptionMap;
         this.complexTypeMap = complexTypeMap;
         this.classLoader = classLoader;
-
+        this.serviceEndpointInterface = serviceEndpointInterface;
         BindingInput bindingInput = bindingOperation.getBindingInput();
         this.soapBody = (SOAPBody) 
WSDescriptorParser.getExtensibilityElement(SOAPBody.class, 
bindingInput.getExtensibilityElements());
     }
@@ -105,7 +107,6 @@
         Use use = Use.getUse(soapBody.getUse());
         operationDesc.setUse(use);
 
-
         boolean isWrappedElement = methodMapping.isSetWrappedElement();
 
         MethodParamPartsMappingType[] paramMappings = 
methodMapping.getMethodParamPartsMappingArray();
@@ -131,14 +132,34 @@
             throw new DeploymentException("Not all input message parts were 
mapped for operation name" + operationName);
         }
 
-        //check that all the parameters are there
+        Class[] paramTypes = new Class[parameterDescriptions.length];
         for (int i = 0; i < parameterDescriptions.length; i++) {
             ParameterDesc parameterDescription = parameterDescriptions[i];
             if (parameterDescription == null) {
                 throw new DeploymentException("There is no mapping for 
parameter number " + i + " for operation " + operationName);
             }
             operationDesc.addParameter(parameterDescription);
+            paramTypes[i] = parameterDescription.getJavaType();
         }
+
+        String methodName = 
methodMapping.getJavaMethodName().getStringValue().trim();
+        Method method = null;
+        try {
+            method = serviceEndpointInterface.getMethod(methodName, 
paramTypes);
+        } catch (NoSuchMethodException e) {
+            String args = "(";
+            for (int i = 0; i < paramTypes.length; i++) {
+                args += paramTypes[i].getName();
+                if (i < paramTypes.length-1){
+                    args += ",";
+                }
+            }
+            args += ")";
+            
+            throw new DeploymentException("Mapping references non-existent 
method in service-endpoint: " + methodName+ args);
+        }
+
+        operationDesc.setMethod(method);
 
         // MAP RETURN TYPE
         if (methodMapping.isSetWsdlReturnValueMapping()) {

Modified: 
geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/LightweightOperationDescBuilder.java
URL: 
http://svn.apache.org/viewcvs/geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/LightweightOperationDescBuilder.java?view=diff&r1=157664&r2=157665
==============================================================================
--- 
geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/LightweightOperationDescBuilder.java
 (original)
+++ 
geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/LightweightOperationDescBuilder.java
 Tue Mar 15 20:26:23 2005
@@ -74,6 +74,8 @@
 
         built = true;
 
+        operationDesc.setMethod(method);
+        
         //section 7.3.2, we don't have to look at parameter ordering.
         //unless it turns out we have to validate it.
 //        List order = operation.getParameterOrdering();


Reply via email to