Author: barrettj Date: Fri Mar 19 20:21:32 2010 New Revision: 925405 URL: http://svn.apache.org/viewvc?rev=925405&view=rev Log: Correct logic so that newly created AxisOperations are added to AxisService when the SEI contains an @Action(input=) where input matches the operation name localpart.
Modified: 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/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=925405&r1=925404&r2=925405&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 Fri Mar 19 20:21:32 2010 @@ -570,8 +570,14 @@ class OperationDescriptionImpl void addToAxisService(AxisService axisService) { AxisOperation newAxisOperation = getAxisOperation(); QName axisOpQName = newAxisOperation.getName(); - AxisOperation axisOperation = axisService.getOperation(axisOpQName); - if (axisOperation == null) { + // See if this operation is already added to the AxisService. Note that we need to check the + // children of the service rather than using the getOperation(axisOpQName) method. The reason is + // that method checks the alias table in addition to the children, and it is possible at this point + // for an operation to have just been added to the alias table but not yet as a child. It is this method + // that will add that newly-created operation to the service. + AxisOperation existingAxisOperation = (AxisOperation) axisService.getChild(axisOpQName); + + if (existingAxisOperation == null) { axisService.addOperation(newAxisOperation); // For a Doc/Lit/Bare operation, we also need to add the element mapping } @@ -581,8 +587,8 @@ class OperationDescriptionImpl .BARE) { AxisMessage axisMessage = null; - if (axisOperation!=null) { - axisMessage = axisOperation.getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE); + if (existingAxisOperation!=null) { + axisMessage = existingAxisOperation.getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE); } else { axisMessage = newAxisOperation.getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE); }