Author: veithen
Date: Sat Aug 13 19:45:07 2011
New Revision: 1157415

URL: http://svn.apache.org/viewvc?rev=1157415&view=rev
Log:
AXIS2-5115: Make sure that EndpointInterfaceDescriptionImpl and 
OperationDescriptionImpl discards all previously cached information when the 
SEI is set.

Modified:
    
axis/axis2/java/core/trunk/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl.java
    
axis/axis2/java/core/trunk/modules/metadata/src/org/apache/axis2/jaxws/description/impl/OperationDescriptionImpl.java

Modified: 
axis/axis2/java/core/trunk/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl.java?rev=1157415&r1=1157414&r2=1157415&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl.java
 Sat Aug 13 19:45:07 2011
@@ -66,11 +66,11 @@ import org.apache.commons.logging.LogFac
 public class EndpointInterfaceDescriptionImpl
         implements EndpointInterfaceDescription, 
EndpointInterfaceDescriptionJava,
         EndpointInterfaceDescriptionWSDL {
-    private EndpointDescriptionImpl parentEndpointDescription;
-    private ArrayList<OperationDescription> operationDescriptions =
+    private final EndpointDescriptionImpl parentEndpointDescription;
+    private final ArrayList<OperationDescription> operationDescriptions =
             new ArrayList<OperationDescription>();
     private Map<QName, List<OperationDescription>> dispatchableOperations;
-    private DescriptionBuilderComposite dbc;
+    private final DescriptionBuilderComposite dbc;
 
     //Logging setup
     private static final Log log = 
LogFactory.getLog(EndpointInterfaceDescriptionImpl.class);
@@ -354,6 +354,16 @@ public class EndpointInterfaceDescriptio
             return;
         }
         else if (sei != null) {
+            // Reset any cached state (see AXIS2-5115)
+            webServiceAnnotation = null;
+            webServiceTargetNamespace = null;
+            webService_Name = null;
+            soapBindingAnnotation = null;
+            soapBindingStyle = null;
+            soapBindingUse = null;
+            soapParameterStyle = null;
+            dispatchableOperations = null;
+            
             seiClass = sei;
             dbc.setCorrespondingClass(sei);
             // Update (or possibly add) the OperationDescription for each of 
the methods on the SEI.

Modified: 
axis/axis2/java/core/trunk/modules/metadata/src/org/apache/axis2/jaxws/description/impl/OperationDescriptionImpl.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/metadata/src/org/apache/axis2/jaxws/description/impl/OperationDescriptionImpl.java?rev=1157415&r1=1157414&r2=1157415&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/metadata/src/org/apache/axis2/jaxws/description/impl/OperationDescriptionImpl.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/metadata/src/org/apache/axis2/jaxws/description/impl/OperationDescriptionImpl.java
 Sat Aug 13 19:45:07 2011
@@ -100,11 +100,11 @@ import java.util.concurrent.Future;
 
 class OperationDescriptionImpl
         implements OperationDescription, OperationDescriptionJava, 
OperationDescriptionWSDL {
-    private EndpointInterfaceDescription parentEndpointInterfaceDescription;
-    private AxisOperation axisOperation;
-    private QName operationQName;
+    private final EndpointInterfaceDescription 
parentEndpointInterfaceDescription;
+    private final AxisOperation axisOperation;
+    private final QName operationQName;
     private Method seiMethod;
-    private MethodDescriptionComposite methodComposite;
+    private final MethodDescriptionComposite methodComposite;
     private ParameterDescription[] parameterDescriptions;
     private FaultDescription[] faultDescriptions;
     private static final Log log = 
LogFactory.getLog(OperationDescriptionImpl.class);
@@ -200,6 +200,7 @@ class OperationDescriptionImpl
 
     OperationDescriptionImpl(Method method, EndpointInterfaceDescription 
parent) {
         parentEndpointInterfaceDescription = parent;
+        methodComposite = null;
         partAttachmentMap = new HashMap<String, AttachmentDescription>();
         setSEIMethod(method);
                
@@ -210,7 +211,11 @@ class OperationDescriptionImpl
         if (getEndpointInterfaceDescription().getEndpointDescription() != 
null) {
             if 
(!getEndpointInterfaceDescription().getEndpointDescription().getServiceDescription().isServerSide())
 {
                 axisOperation = createClientAxisOperation();
+            } else {
+                axisOperation = null;
             }
+        } else {
+            axisOperation = null;
         }
         if(this.axisOperation != null) {
             try {
@@ -228,6 +233,7 @@ class OperationDescriptionImpl
         parentEndpointInterfaceDescription = parent;
         partAttachmentMap = new HashMap<String, AttachmentDescription>();
         axisOperation = operation;
+        methodComposite = null;
         if(this.axisOperation != null) {
             this.operationQName = axisOperation.getName();
             try {
@@ -237,6 +243,8 @@ class OperationDescriptionImpl
             catch(AxisFault af) {
                 throw 
ExceptionFactory.makeWebServiceException(Messages.getMessage("operationDescriptionErr1"));
             }
+        } else {
+            operationQName = null;
         }
         buildAttachmentInformation();
     }
@@ -637,6 +645,38 @@ class OperationDescriptionImpl
                throw ExceptionFactory.makeWebServiceException(
                                new 
UnsupportedOperationException(Messages.getMessage("seiMethodErr")));
         } else {
+            // Reset any cached state (see AXIS2-5115)
+            webMethodAnnotation = null;
+            webMethodOperationName = null;
+            webMethodAction = null;
+            webMethodExclude = null;
+            requestWrapperAnnotation = null;
+            requestWrapperLocalName = null;
+            requestWrapperTargetNamespace = null;
+            requestWrapperClassName = null;
+            requestWrapperPartName = null;
+            responseWrapperAnnotation = null;
+            responseWrapperLocalName = null;
+            responseWrapperTargetNamespace = null;
+            responseWrapperClassName = null;
+            responseWrapperPartName = null;
+            webParamNames = null;
+            webParamTargetNamespace = null;
+            webParamMode = null;
+            webResultAnnotation = null;
+            webResultName = null;
+            webResultPartName = null;
+            webResultTargetNamespace = null;
+            webResultHeader = null;
+            soapBindingAnnotation = null;
+            soapBindingStyle = null;
+            soapBindingUse = null;
+            soapBindingParameterStyle = null;
+            actionAnnotation = null;
+            onewayAnnotation = null;
+            onewayIsOneway = null;
+            resultActualTypeClazz = null;
+            
             seiMethod = method;
             webMethodAnnotation = (WebMethod)
                 getAnnotation(seiMethod, WebMethod.class);


Reply via email to