You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@axis.apache.org by ba...@apache.org on 2011/02/11 02:46:35 UTC
svn commit: r1069659 - in /axis/axis2/java/core/trunk/modules:
addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java
jaxws/src/org/apache/axis2/jaxws/BindingProvider.java
jaxws/src/org/apache/axis2/jaxws/spi/ServiceDelegate.java
Author: barrettj
Date: Fri Feb 11 01:46:35 2011
New Revision: 1069659
URL: http://svn.apache.org/viewvc?rev=1069659&view=rev
Log:
AXIS2-4938
Patch submitted by Katherine Sanders. BindingProvider.getEndpointReference should put reference parameters from WSDL in returned EPR.
Modified:
axis/axis2/java/core/trunk/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/BindingProvider.java
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/spi/ServiceDelegate.java
Modified: axis/axis2/java/core/trunk/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java?rev=1069659&r1=1069658&r2=1069659&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java (original)
+++ axis/axis2/java/core/trunk/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java Fri Feb 11 01:46:35 2011
@@ -526,18 +526,30 @@ public class AddressingOutHandler extend
Iterator iterator = referenceparameters.iterator();
while (iterator.hasNext()) {
OMElement omElement = (OMElement)iterator.next();
- SOAPHeaderBlock newElement = ElementHelper.toSOAPHeaderBlock(omElement, factory);
- if (isFinalAddressingNamespace) {
- newElement.addAttribute(Final.WSA_IS_REFERENCE_PARAMETER_ATTRIBUTE,
- Final.WSA_TYPE_ATTRIBUTE_VALUE,
- addressingNamespaceObject);
- }
- addRoleToHeader(newElement);
- header.addChild(newElement);
+ // Only add the reference parameter from the WSDL if it does not already exist.
+ // This allows clients to override the values before invoking the service.
+ if (referenceInformation == null || !referenceInformation.containsKey(omElement.getQName())) {
+ SOAPHeaderBlock newElement = ElementHelper.toSOAPHeaderBlock(omElement, factory);
+ if (isFinalAddressingNamespace) {
+ newElement.addAttribute(Final.WSA_IS_REFERENCE_PARAMETER_ATTRIBUTE,
+ Final.WSA_TYPE_ATTRIBUTE_VALUE,
+ addressingNamespaceObject);
+ }
+ addRoleToHeader(newElement);
+ header.addChild(newElement);
+ } else {
+ if (LoggingControl.debugLoggingAllowed && log.isTraceEnabled()) {
+ log.trace("processToEPRReferenceInformation: Reference parameter already exists so ignoring value from WSDL: " + omElement);
+ }
+ }
}
}
}
}
+
+ if (log.isTraceEnabled()) {
+ log.trace("processToEPRReferenceInformation: Header after adding reference parameters: "+header);
+ }
}
/**
Modified: axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/BindingProvider.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/BindingProvider.java?rev=1069659&r1=1069658&r2=1069659&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/BindingProvider.java (original)
+++ axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/BindingProvider.java Fri Feb 11 01:46:35 2011
@@ -19,8 +19,11 @@
package org.apache.axis2.jaxws;
+import org.apache.axiom.om.OMElement;
import org.apache.axis2.addressing.AddressingConstants;
import org.apache.axis2.addressing.AddressingHelper;
+import org.apache.axis2.description.AxisEndpoint;
+import org.apache.axis2.description.AxisService;
import org.apache.axis2.jaxws.addressing.util.EndpointReferenceUtils;
import org.apache.axis2.jaxws.binding.BindingUtils;
import org.apache.axis2.jaxws.binding.SOAPBinding;
@@ -34,6 +37,7 @@ import org.apache.axis2.jaxws.handler.Ha
import org.apache.axis2.jaxws.i18n.Messages;
import org.apache.axis2.jaxws.spi.ServiceDelegate;
import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.axis2.util.LoggingControl;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -45,7 +49,11 @@ import javax.xml.ws.WebServiceFeature;
import javax.xml.ws.handler.HandlerResolver;
import javax.xml.ws.soap.AddressingFeature.Responses;
import javax.xml.ws.wsaddressing.W3CEndpointReference;
+
+import java.util.ArrayList;
+import java.util.HashMap;
import java.util.Hashtable;
+import java.util.Iterator;
import java.util.Map;
public class BindingProvider implements org.apache.axis2.jaxws.spi.BindingProvider {
@@ -404,6 +412,28 @@ public class BindingProvider implements
String wsdlLocation = ((ServiceDescriptionWSDL) endpointDesc.getServiceDescription()).getWSDLLocation();
epr = EndpointReferenceUtils.createAxis2EndpointReference(address, service, port, wsdlLocation, addressingNamespace);
+
+ // Add reference parameters from WSDL to the EPR
+ AxisService axisService = endpointDesc.getAxisService();
+ if (axisService != null) {
+ AxisEndpoint axisEndpoint = axisService.getEndpoint(axisService.getEndpointName());
+
+ if(axisEndpoint != null){
+ ArrayList referenceParameters = (ArrayList) axisEndpoint.getParameterValue(AddressingConstants.REFERENCE_PARAMETER_PARAMETER);
+ if (LoggingControl.debugLoggingAllowed && log.isTraceEnabled()) {
+ log.trace("getEndpointReference: Adding reference parameters to EPR from WSDL: axisService = " + axisService + ", axisEndpoint = " + axisEndpoint.getName() + ", referenceParameters = " + referenceParameters);
+ }
+ if(referenceParameters!=null){
+ Iterator iterator = referenceParameters.iterator();
+ HashMap<QName, OMElement> refParamMap = new HashMap<QName, OMElement>();
+ while (iterator.hasNext()) {
+ OMElement omElement = (OMElement)iterator.next();
+ refParamMap.put(omElement.getQName(), omElement);
+ }
+ epr.setReferenceParameters(refParamMap);
+ }
+ }
+ }
}
else if (!addressingNamespace.equals(binding.getAddressingNamespace())) {
throw ExceptionFactory.
Modified: axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/spi/ServiceDelegate.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/spi/ServiceDelegate.java?rev=1069659&r1=1069658&r2=1069659&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/spi/ServiceDelegate.java (original)
+++ axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/spi/ServiceDelegate.java Fri Feb 11 01:46:35 2011
@@ -43,7 +43,6 @@ import javax.xml.ws.Service.Mode;
import javax.xml.ws.handler.HandlerResolver;
import org.apache.axiom.om.OMElement;
-import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.axis2.client.ServiceClient;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.java.security.AccessController;
@@ -526,7 +525,10 @@ public class ServiceDelegate extends jav
* if both are not provided then throw exception.
* (JLB): I'm not sure lack of WSDL should cause an exception
*/
-
+
+ if (log.isTraceEnabled()) {
+ log.trace("getPort: jaxwsEPR = " + jaxwsEPR);
+ }
if (!isValidWSDLLocation()) {
//TODO: Should I throw Exception if no WSDL
@@ -555,6 +557,10 @@ public class ServiceDelegate extends jav
makeWebServiceException(Messages.getMessage("invalidEndpointReference",
e.toString()));
}
+
+ if (log.isTraceEnabled()) {
+ log.trace("getPort: Converted jaxwsEPR to axis2EPR = " + axis2EPR);
+ }
return getPort(axis2EPR, addressingNamespace, sei, features);
}