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);
}