Author: scheu
Date: Sat Jul 3 11:45:45 2010
New Revision: 960205
URL: http://svn.apache.org/viewvc?rev=960205&view=rev
Log:
AXIS2-4761
Contributor:Lori VanGulick
Ensure that output header parameters are "understood" by the header "must
understand" checking.
A validation test is also added.
Modified:
axis/axis2/java/core/trunk/modules/metadata/src/org/apache/axis2/jaxws/description/impl/OperationDescriptionImpl.java
axis/axis2/java/core/trunk/modules/metadata/test/org/apache/axis2/jaxws/description/MustUnderstandTests.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=960205&r1=960204&r2=960205&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 Jul 3 11:45:45 2010
@@ -2265,11 +2265,27 @@ class OperationDescriptionImpl
paramDesc.getParameterName());
understoodQNames.add(headerQN);
if (log.isDebugEnabled()) {
- log.debug("OpDesc: understoodQName added to
AxisOperation (if not null) " + headerQN);
+ log.debug("OpDesc: understoodQName added to
AxisOperation (if not null) as IN or INOUT param " + headerQN);
+ }
+ } else if (paramDesc.isHeader()
+ && (paramDesc.getMode() == WebParam.Mode.OUT)) {
+ QName headerQN = new QName(paramDesc.getTargetNamespace(),
+ paramDesc.getParameterName());
+ understoodQNames.add(headerQN);
+ if (log.isDebugEnabled()) {
+ log.debug("OpDesc: understoodQName added to
AxisOperation (if not null) as OUT param " + headerQN);
}
}
}
}
+ // Also check for result in header
+ if (isResultHeader() && (getResultName() != null)) {
+ QName headerQN = new QName(getResultTargetNamespace(),
getResultName());
+ understoodQNames.add(headerQN);
+ if (log.isDebugEnabled()) {
+ log.debug("OpDesc: understoodQName added to AxisOperation (if
not null) as result param " + headerQN);
+ }
+ }
if (!understoodQNames.isEmpty()) {
Parameter headerQNParameter = new
Parameter(OperationDescription.HEADER_PARAMETER_QNAMES,
Modified:
axis/axis2/java/core/trunk/modules/metadata/test/org/apache/axis2/jaxws/description/MustUnderstandTests.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/metadata/test/org/apache/axis2/jaxws/description/MustUnderstandTests.java?rev=960205&r1=960204&r2=960205&view=diff
==============================================================================
---
axis/axis2/java/core/trunk/modules/metadata/test/org/apache/axis2/jaxws/description/MustUnderstandTests.java
(original)
+++
axis/axis2/java/core/trunk/modules/metadata/test/org/apache/axis2/jaxws/description/MustUnderstandTests.java
Sat Jul 3 11:45:45 2010
@@ -23,7 +23,9 @@ import junit.framework.TestCase;
import org.apache.axis2.description.AxisOperation;
import org.apache.axis2.description.Parameter;
+import javax.jws.WebMethod;
import javax.jws.WebParam;
+import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.namespace.QName;
import javax.xml.ws.Holder;
@@ -55,23 +57,26 @@ public class MustUnderstandTests extends
Parameter understoodQNamesParameter =
axisOperation.getParameter(OperationDescription.HEADER_PARAMETER_QNAMES);
assertNotNull(understoodQNamesParameter);
ArrayList understoodQNames = (ArrayList)
understoodQNamesParameter.getValue();
- assertEquals(4, understoodQNames.size());
+ assertEquals(6, understoodQNames.size());
assertTrue(understoodQNames.contains(new QName("webservice.namespace",
"renamedParam1")));
assertTrue(understoodQNames.contains(new QName("webservice.namespace",
"arg1")));
assertTrue(understoodQNames.contains(new QName("webparam.namespace",
"arg2")));
assertFalse(understoodQNames.contains(new
QName("webservice.namespace", "outOnly")));
- assertFalse(understoodQNames.contains(new
QName("webservice.namespace", "arg3")));
+ assertTrue(understoodQNames.contains(new QName("webservice.namespace",
"arg3")));
assertTrue(understoodQNames.contains(new QName("webservice.namespace",
"inOut")));
assertFalse(understoodQNames.contains(new
QName("webservice.namespace", "arg4")));
assertFalse(understoodQNames.contains(new
QName("webservice.namespace", "notInHeader")));
assertFalse(understoodQNames.contains(new
QName("webservice.namespace", "arg5")));
+ assertTrue(understoodQNames.contains(new QName("webservice.namespace",
"headerReturn")));
}
}
@WebService(targetNamespace="webservice.namespace")
class HeaderParameters {
+ @WebMethod
+ @WebResult(name = "headerReturn", header=true)
public String echoString(
@WebParam(name="renamedParam1", header=true) String param1,
@WebParam(header=true) String param2,
@@ -79,6 +84,8 @@ class HeaderParameters {
@WebParam(mode=WebParam.Mode.OUT, header=true) Holder<String>
outOnly,
@WebParam(name="inOut", mode=WebParam.Mode.INOUT, header=true)
Holder<String> inOut,
String notInHeader) {
- return null;
+ String headerReturn = param2;
+ return headerReturn;
}
}
+