blob: f78ccd06975368372939dbb1b9ff55933a3d6144 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.axis2.jaxws.description;
import junit.framework.TestCase;
import org.apache.axis2.description.AxisService;
import org.apache.axis2.description.Parameter;
import org.apache.axis2.jaxws.description.echo.EchoServiceImplWithSEI;
import org.apache.log4j.BasicConfigurator;
import javax.jws.Oneway;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.xml.ws.Holder;
import javax.xml.ws.RequestWrapper;
import javax.xml.ws.ResponseWrapper;
/**
* Tests the creation of the Description classes based on a service implementation bean and various
* combinations of annotations
*/
public class AnnotationServiceImplDescriptionTests extends TestCase {
static {
// Note you will probably need to increase the java heap size, for example
// -Xmx512m. This can be done by setting maven.junit.jvmargs in project.properties.
// To change the settings, edit the log4j.property file
// in the test-resources directory.
BasicConfigurator.configure();
}
/**
* Create the description classes with a service implementation that contains the @WebService
* JSR-181 annotation which references an SEI.
*/
public void testServiceImplWithSEI() {
// Use the description factory directly; this will be done within the JAX-WS runtime
ServiceDescription serviceDesc =
DescriptionFactory.createServiceDescription(EchoServiceImplWithSEI.class);
assertNotNull(serviceDesc);
EndpointDescription[] endpointDesc = serviceDesc.getEndpointDescriptions();
assertNotNull(endpointDesc);
assertEquals(endpointDesc.length, 1);
assertNotNull(endpointDesc[0].getAxisService());
// TODO: How will the JAX-WS dispatcher get the appropriate port (i.e. endpoint)? Currently assumes [0]
EndpointInterfaceDescription endpointIntfDesc =
endpointDesc[0].getEndpointInterfaceDescription();
assertNotNull(endpointIntfDesc);
OperationDescription[] operations =
endpointIntfDesc.getOperationForJavaMethod("badMethodName");
assertNull(operations);
operations = endpointIntfDesc.getOperationForJavaMethod("");
assertNull(operations);
operations = endpointIntfDesc.getOperationForJavaMethod((String)null);
assertNull(operations);
operations = endpointIntfDesc.getOperationForJavaMethod("echo");
assertNotNull(operations);
assertEquals(operations.length, 1);
assertEquals(operations[0].getJavaMethodName(), "echo");
String[] paramTypes = operations[0].getJavaParameters();
assertNotNull(paramTypes);
assertEquals(paramTypes.length, 1);
assertEquals("javax.xml.ws.Holder<java.lang.String>", paramTypes[0]);
// Test RequestWrapper annotations
assertEquals(operations[0].getRequestWrapperLocalName(), "Echo");
assertEquals(operations[0].getRequestWrapperTargetNamespace(),
"http://ws.apache.org/axis2/tests");
assertEquals(operations[0].getRequestWrapperClassName(), "org.apache.ws.axis2.tests.Echo");
// Test ResponseWrapper annotations
assertEquals(operations[0].getResponseWrapperLocalName(), "EchoResponse");
assertEquals(operations[0].getResponseWrapperTargetNamespace(),
"http://ws.apache.org/axis2/tests");
assertEquals(operations[0].getResponseWrapperClassName(),
"org.apache.ws.axis2.tests.EchoResponse");
// Test SOAPBinding default; that annotation is not present in the SEI
// Note that annotation could occur on the operation or the type
// (although on this SEI it doesn't occur either place).
assertEquals(SOAPBinding.Style.DOCUMENT, operations[0].getSoapBindingStyle());
assertEquals(SOAPBinding.Style.DOCUMENT, endpointIntfDesc.getSoapBindingStyle());
}
public void testOverloadedServiceImplWithSEI() {
ServiceDescription serviceDesc =
DescriptionFactory.createServiceDescription(DocLitWrappedImplWithSEI.class);
assertNotNull(serviceDesc);
EndpointDescription[] endpointDesc = serviceDesc.getEndpointDescriptions();
assertNotNull(endpointDesc);
assertEquals(endpointDesc.length, 1);
// TODO: Using hardcoded endpointDesc[0] from ServiceDesc
EndpointInterfaceDescription endpointIntfDesc =
endpointDesc[0].getEndpointInterfaceDescription();
assertNotNull(endpointIntfDesc);
// Test for overloaded methods
// SEI defines two Java methods with this name
OperationDescription[] operations =
endpointIntfDesc.getOperationForJavaMethod("invokeAsync");
assertNotNull(operations);
assertEquals(operations.length, 2);
assertEquals(operations[0].getJavaMethodName(), "invokeAsync");
assertEquals(operations[1].getJavaMethodName(), "invokeAsync");
// Check the Java parameters, WebParam names, and WebResult (actually lack thereof) for each of these operations
// Note regarding WebParam names:
//In the client Async Call the the WebParam name will not remove JAX-WS AsyncHandler.
//Proxy invoking the the Async Call will check the input method object and if
//its of type JAX-WS AsyncHandler then that WebParam will be skipped.
//This is done because AsyncHandler is NOT part of the contract, and thus it is NOT part of
// the JAXB object constructed for the method invocation. The AsyncHandler is part of the
// JAX-WS programming model to support an asynchronous callback to receive the response.
// Note regarding WebResult annotation:
// The async methods on this SEI do not carry a WebResult annotations.
boolean twoArgSignatureChecked = false;
boolean oneArgSignatureChecked = false;
for (OperationDescription operation : operations) {
String[] checkParams = operation.getJavaParameters();
String[] webParamNames = operation.getParamNames();
if (checkParams.length == 1) {
// Check the one arguement signature
if (oneArgSignatureChecked) {
fail("One Arg signature occured more than once");
} else {
oneArgSignatureChecked = true;
// Check the Java parameter
assertEquals(checkParams[0], "java.lang.String");
// Check the WebParam Names (see note above)
assertEquals(1, webParamNames.length);
assertEquals("invoke_str", webParamNames[0]);
// Check the lack of a WebResult annotation and the default values for
// SOAPBinding Style=DOCUMENT, Use=LITERAL, ParamStyle=WRAPPED
// Note that the SOAPBinding annotation is also not present and thus fully defaulted.
assertNull(((OperationDescriptionJava)operation).getAnnoWebResult());
assertEquals("return", operation.getResultName());
assertEquals("return", operation.getResultPartName());
assertEquals("", operation.getResultTargetNamespace());
assertFalse(operation.isResultHeader());
}
} else if (checkParams.length == 2) {
// Check the two arguement signature
if (twoArgSignatureChecked) {
fail("Two Arg signature occured more than once");
} else {
twoArgSignatureChecked = true;
// Check the Java parameter
assertEquals(checkParams[0], "java.lang.String");
assertEquals(checkParams[1],
"javax.xml.ws.AsyncHandler<org.test.proxy.doclitwrapped.ReturnType>");
// Check the WebParam Names (see note above)
assertEquals(2, webParamNames.length);
assertEquals("invoke_str", webParamNames[0]);
// Check the lack of a WebResult annotation and the default values for
// SOAPBinding Style=DOCUMENT, Use=LITERAL, ParamStyle=WRAPPED
// Note that the SOAPBinding annotation is also not present and thus fully defaulted.
assertNull(((OperationDescriptionJava)operation).getAnnoWebResult());
assertEquals("return", operation.getResultName());
assertEquals("return", operation.getResultPartName());
assertEquals("", operation.getResultTargetNamespace());
assertFalse(operation.isResultHeader());
}
} else {
fail("Wrong number of parameters returned");
}
}
// Test for a method with parameters of primitive types. Note
// this method IS overloaded
operations = endpointIntfDesc.getOperationForJavaMethod("twoWayHolderAsync");
assertNotNull(operations);
assertEquals(operations.length, 2);
assertEquals(operations[0].getJavaMethodName(), "twoWayHolderAsync");
assertEquals(operations[1].getJavaMethodName(), "twoWayHolderAsync");
// Check the parameters for each operation
twoArgSignatureChecked = false;
boolean threeArgSignatureChecked = false;
for (OperationDescription operation : operations) {
String[] checkParams = operation.getJavaParameters();
String[] webParamNames = operation.getParamNames();
if (checkParams.length == 3) {
// Check the one arguement signature
if (threeArgSignatureChecked) {
fail("Three Arg signature occured more than once");
} else {
threeArgSignatureChecked = true;
assertEquals(checkParams[0], "java.lang.String");
assertEquals(checkParams[1], "int");
assertEquals(checkParams[2],
"javax.xml.ws.AsyncHandler<org.test.proxy.doclitwrapped.TwoWayHolder>");
// Check the WebParam Names (see note above)
assertEquals(3, webParamNames.length);
assertEquals("twoWayHolder_str", webParamNames[0]);
assertEquals("twoWayHolder_int", webParamNames[1]);
// Check the lack of a WebResult annotation and the default values for
// SOAPBinding Style=DOCUMENT, Use=LITERAL, ParamStyle=WRAPPED
// Note that the SOAPBinding annotation is also not present and thus fully defaulted.
assertNull(((OperationDescriptionJava)operation).getAnnoWebResult());
assertEquals("return", operation.getResultName());
assertEquals("return", operation.getResultPartName());
assertEquals("", operation.getResultTargetNamespace());
assertFalse(operation.isResultHeader());
}
} else if (checkParams.length == 2) {
// Check the two arguement signature
if (twoArgSignatureChecked) {
fail("Two Arg signature occured more than once");
} else {
twoArgSignatureChecked = true;
assertEquals(checkParams[0], "java.lang.String");
assertEquals(checkParams[1], "int");
// Check the WebParam Names (see note above)
assertEquals(2, webParamNames.length);
assertEquals("twoWayHolder_str", webParamNames[0]);
assertEquals("twoWayHolder_int", webParamNames[1]);
// Check the lack of a WebResult annotation and the default values for
// SOAPBinding Style=DOCUMENT, Use=LITERAL, ParamStyle=WRAPPED
// Note that the SOAPBinding annotation is also not present and thus fully defaulted.
assertNull(((OperationDescriptionJava)operation).getAnnoWebResult());
assertEquals("return", operation.getResultName());
assertEquals("return", operation.getResultPartName());
assertEquals("", operation.getResultTargetNamespace());
assertFalse(operation.isResultHeader());
}
} else {
fail("Wrong number of parameters returned");
}
}
// Test for a one-way, void method with no parameters which also is not overloaded
operations = endpointIntfDesc.getOperationForJavaMethod("oneWayVoid");
assertNotNull(operations);
assertEquals(operations.length, 1);
assertEquals(operations[0].getJavaMethodName(), "oneWayVoid");
String[] checkEmptyParams = operations[0].getJavaParameters();
assertNotNull(checkEmptyParams);
assertEquals(checkEmptyParams.length, 0);
assertEquals(true, operations[0].isOneWay());
// Check the lack of a WebResult annotation and the default values for
// a ONE-WAY / VOID operation with a SOAPBinding Style=DOCUMENT, Use=LITERAL, ParamStyle=WRAPPED
// Note that the SOAPBinding annotation is also not present and thus fully defaulted.
assertNull(((OperationDescriptionJava)operations[0]).getAnnoWebResult());
assertFalse(((OperationDescriptionJava)operations[0]).isWebResultAnnotationSpecified());
assertFalse(operations[0].isOperationReturningResult());
assertEquals(null, operations[0].getResultName());
assertEquals(null, operations[0].getResultPartName());
assertEquals(null, operations[0].getResultTargetNamespace());
assertFalse(operations[0].isResultHeader());
// Test two-way method for lack of OneWay annotation and WebResult annotation
operations = endpointIntfDesc.getOperationForJavaMethod("invoke");
assertNotNull(operations);
assertEquals(1, operations.length);
assertEquals(false, operations[0].isOneWay());
assertNotNull(((OperationDescriptionJava)operations[0]).getAnnoWebResult());
assertEquals("return_str", operations[0].getResultName());
assertEquals("return_str", operations[0].getResultPartName());
assertEquals("", operations[0].getResultTargetNamespace());
assertFalse(operations[0].isResultHeader());
}
// ===========================================
// The following tests use implementation classes defined below
// in order to test various specific annotation settings
// ===========================================
public void testSOAPBindingDefault() {
EndpointInterfaceDescription testEndpointInterfaceDesc =
getEndpointInterfaceDesc(SOAPBindingDefaultTestImpl.class);
assertNull(
((EndpointInterfaceDescriptionJava)testEndpointInterfaceDesc).getAnnoSoapBinding());
assertEquals(javax.jws.soap.SOAPBinding.Style.DOCUMENT,
testEndpointInterfaceDesc.getSoapBindingStyle());
assertEquals(javax.jws.soap.SOAPBinding.Use.LITERAL,
testEndpointInterfaceDesc.getSoapBindingUse());
assertEquals(javax.jws.soap.SOAPBinding.ParameterStyle.WRAPPED,
testEndpointInterfaceDesc.getSoapBindingParameterStyle());
OperationDescription operationDesc =
testEndpointInterfaceDesc.getOperationForJavaMethod("echoString")[0];
// Verify WebResult annotation default values for DOC/LIT/WRAPPED from a defaulted SOAPBinding
assertNull(((OperationDescriptionJava)operationDesc).getAnnoWebResult());
assertEquals("return", operationDesc.getResultName());
assertEquals("return", operationDesc.getResultPartName());
assertEquals("", operationDesc.getResultTargetNamespace());
assertFalse(operationDesc.isResultHeader());
}
public void testSOAPBindingDocEncBare() {
//verify that we throw an exception when SOAPBinding.Use == ENCODED is specified
try {
EndpointInterfaceDescription testEndpointInterfaceDesc =
getEndpointInterfaceDesc(SOAPBindingDocEncBareTestImpl.class);
fail("Should have caused exception");
} catch (Exception e) {
// Expected path, SOAPBinding.Use == ENCODED is not supported
}
}
public void testSOAPBindingDocLitBare() {
EndpointInterfaceDescription testEndpointInterfaceDesc =
getEndpointInterfaceDesc(SOAPBindingDocLitBareTestImpl.class);
assertNotNull(
((EndpointInterfaceDescriptionJava)testEndpointInterfaceDesc).getAnnoSoapBinding());
assertEquals(javax.jws.soap.SOAPBinding.Style.DOCUMENT,
testEndpointInterfaceDesc.getSoapBindingStyle());
assertEquals(javax.jws.soap.SOAPBinding.Use.LITERAL,
testEndpointInterfaceDesc.getSoapBindingUse());
assertEquals(javax.jws.soap.SOAPBinding.ParameterStyle.BARE,
testEndpointInterfaceDesc.getSoapBindingParameterStyle());
}
public void testSOAPBindingMethodAnnotation() {
// Verify that an impl without the method annotation uses the settings from the type
EndpointInterfaceDescription testEndpointInterfaceDesc =
getEndpointInterfaceDesc(SOAPBindingDocLitBareTestImpl.class);
assertNotNull(
((EndpointInterfaceDescriptionJava)testEndpointInterfaceDesc).getAnnoSoapBinding());
assertEquals(javax.jws.soap.SOAPBinding.Style.DOCUMENT,
testEndpointInterfaceDesc.getSoapBindingStyle());
assertEquals(javax.jws.soap.SOAPBinding.Use.LITERAL,
testEndpointInterfaceDesc.getSoapBindingUse());
assertEquals(javax.jws.soap.SOAPBinding.ParameterStyle.BARE,
testEndpointInterfaceDesc.getSoapBindingParameterStyle());
OperationDescription operationDesc =
testEndpointInterfaceDesc.getOperationForJavaMethod("echoString")[0];
assertNotNull(operationDesc);
assertNull(((OperationDescriptionJava)operationDesc).getAnnoSoapBinding());
assertEquals(javax.jws.soap.SOAPBinding.Style.DOCUMENT,
operationDesc.getSoapBindingStyle());
assertEquals(javax.jws.soap.SOAPBinding.Use.LITERAL, operationDesc.getSoapBindingUse());
assertEquals(javax.jws.soap.SOAPBinding.ParameterStyle.BARE,
operationDesc.getSoapBindingParameterStyle());
// Verify that the method annotation setting overrides the type annotatino setting
testEndpointInterfaceDesc =
getEndpointInterfaceDesc(SOAPBindingDefaultMethodTestImpl.class);
assertNull(
((EndpointInterfaceDescriptionJava)testEndpointInterfaceDesc).getAnnoSoapBinding());
assertEquals(javax.jws.soap.SOAPBinding.Style.DOCUMENT,
testEndpointInterfaceDesc.getSoapBindingStyle());
assertEquals(javax.jws.soap.SOAPBinding.Use.LITERAL,
testEndpointInterfaceDesc.getSoapBindingUse());
assertEquals(javax.jws.soap.SOAPBinding.ParameterStyle.WRAPPED,
testEndpointInterfaceDesc.getSoapBindingParameterStyle());
operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("echoString")[0];
assertNotNull(operationDesc);
assertNotNull(((OperationDescriptionJava)operationDesc).getAnnoSoapBinding());
assertEquals(javax.jws.soap.SOAPBinding.Style.DOCUMENT,
operationDesc.getSoapBindingStyle());
assertEquals(javax.jws.soap.SOAPBinding.Use.LITERAL, operationDesc.getSoapBindingUse());
assertEquals(javax.jws.soap.SOAPBinding.ParameterStyle.BARE,
operationDesc.getSoapBindingParameterStyle());
}
public void testDefaultReqRspWrapper() {
// Test paramaterStyle = WRAPPED set a the type level with various combinations of method annotation setting
EndpointInterfaceDescription testEndpointInterfaceDesc =
getEndpointInterfaceDesc(DefaultReqRspWrapperTestImpl.class);
OperationDescription operationDesc =
testEndpointInterfaceDesc.getOperationForJavaMethod("wrappedParams")[0];
assertNotNull(operationDesc);
assertEquals("wrappedParams", operationDesc.getRequestWrapperLocalName());
assertEquals("wrappedParamsResponse", operationDesc.getResponseWrapperLocalName());
assertEquals("http://description.jaxws.axis2.apache.org/",
operationDesc.getRequestWrapperTargetNamespace());
assertEquals("http://description.jaxws.axis2.apache.org/",
operationDesc.getResponseWrapperTargetNamespace());
assertNull(operationDesc.getRequestWrapperClassName());
assertNull(operationDesc.getResponseWrapperClassName());
// Test WebResult annotation defaults
assertNull(((OperationDescriptionJava)operationDesc).getAnnoWebResult());
assertFalse(((OperationDescriptionJava)operationDesc).isWebResultAnnotationSpecified());
assertTrue(operationDesc.isOperationReturningResult());
assertEquals("return", operationDesc.getResultName());
assertEquals("return", operationDesc.getResultPartName());
assertEquals("", operationDesc.getResultTargetNamespace());
assertFalse(operationDesc.isResultHeader());
operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("bareParams")[0];
assertNotNull(operationDesc);
assertNull(operationDesc.getRequestWrapperLocalName());
assertNull(operationDesc.getResponseWrapperLocalName());
assertNull(operationDesc.getRequestWrapperTargetNamespace());
assertNull(operationDesc.getResponseWrapperTargetNamespace());
assertNull(operationDesc.getRequestWrapperClassName());
assertNull(operationDesc.getResponseWrapperClassName());
// Test WebResult annotation defaults
assertNull(((OperationDescriptionJava)operationDesc).getAnnoWebResult());
assertFalse(((OperationDescriptionJava)operationDesc).isWebResultAnnotationSpecified());
assertTrue(operationDesc.isOperationReturningResult());
assertEquals("bareParamsResponse", operationDesc.getResultName());
assertEquals("bareParamsResponse", operationDesc.getResultPartName());
assertEquals("http://description.jaxws.axis2.apache.org/",
operationDesc.getResultTargetNamespace());
assertFalse(operationDesc.isResultHeader());
// Test paramaterStyle = BARE set a the type level with various combinations of method annotation setting
testEndpointInterfaceDesc =
getEndpointInterfaceDesc(DefaultReqRspWrapperBareTestImpl.class);
operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("wrappedParams")[0];
assertNotNull(operationDesc);
assertEquals("wrappedParams", operationDesc.getRequestWrapperLocalName());
assertEquals("wrappedParamsResponse", operationDesc.getResponseWrapperLocalName());
assertEquals("http://description.jaxws.axis2.apache.org/",
operationDesc.getRequestWrapperTargetNamespace());
assertEquals("http://description.jaxws.axis2.apache.org/",
operationDesc.getResponseWrapperTargetNamespace());
assertNull(operationDesc.getRequestWrapperClassName());
assertNull(operationDesc.getResponseWrapperClassName());
operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("bareParams")[0];
assertNotNull(operationDesc);
assertNull(operationDesc.getRequestWrapperLocalName());
assertNull(operationDesc.getResponseWrapperLocalName());
assertNull(operationDesc.getRequestWrapperTargetNamespace());
assertNull(operationDesc.getResponseWrapperTargetNamespace());
assertNull(operationDesc.getRequestWrapperClassName());
assertNull(operationDesc.getResponseWrapperClassName());
}
public void testReqRspWrapper() {
EndpointInterfaceDescription testEndpointInterfaceDesc =
getEndpointInterfaceDesc(ReqRspWrapperTestImpl.class);
OperationDescription operationDesc =
testEndpointInterfaceDesc.getOperationForJavaMethod("method1")[0];
assertNotNull(operationDesc);
assertEquals("method1ReqWrapper", operationDesc.getRequestWrapperLocalName());
assertEquals("method1RspWrapper", operationDesc.getResponseWrapperLocalName());
assertEquals("http://a.b.c.method1ReqTNS",
operationDesc.getRequestWrapperTargetNamespace());
assertEquals("http://a.b.c.method1RspTNS",
operationDesc.getResponseWrapperTargetNamespace());
assertEquals(
"org.apache.axis2.jaxws.description.AnnotationServiceImplDescriptionTests.ReqRspWrapperTestImpl.method1ReqWrapper",
operationDesc.getRequestWrapperClassName());
assertEquals(
"org.apache.axis2.jaxws.description.AnnotationServiceImplDescriptionTests.ReqRspWrapperTestImpl.method1RspWrapper",
operationDesc.getResponseWrapperClassName());
operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method2")[0];
assertEquals("method2", operationDesc.getRequestWrapperLocalName());
assertEquals("method2RspWrapper", operationDesc.getResponseWrapperLocalName());
assertEquals("http://a.b.c.method2ReqTNS",
operationDesc.getRequestWrapperTargetNamespace());
assertEquals("http://a.b.c.method2RspTNS",
operationDesc.getResponseWrapperTargetNamespace());
assertEquals(
"org.apache.axis2.jaxws.description.AnnotationServiceImplDescriptionTests.ReqRspWrapperTestImpl.method2ReqWrapper",
operationDesc.getRequestWrapperClassName());
assertNull(operationDesc.getResponseWrapperClassName());
}
public void testWebMethod() {
EndpointInterfaceDescription testEndpointInterfaceDesc =
getEndpointInterfaceDesc(WebMethodTestImpl.class);
// Test results from method with no annotation
OperationDescription[] operationDescs =
testEndpointInterfaceDesc.getOperationForJavaMethod("method1");
assertNull(operationDescs);
OperationDescription operationDesc =
testEndpointInterfaceDesc.getOperationForJavaMethod("method2")[0];
assertNotNull(operationDesc);
assertEquals("renamedMethod2", operationDesc.getOperationName());
assertEquals("", operationDesc.getAction());
assertFalse(operationDesc.isExcluded());
operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method3")[0];
assertNotNull(operationDesc);
assertEquals("method3", operationDesc.getOperationName());
assertEquals("ActionMethod3", operationDesc.getAction());
assertFalse(operationDesc.isExcluded());
operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method4")[0];
assertNotNull(operationDesc);
assertEquals("renamedMethod4", operationDesc.getOperationName());
assertEquals("ActionMethod4", operationDesc.getAction());
assertFalse(operationDesc.isExcluded());
operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method4")[0];
assertNotNull(operationDesc);
assertEquals("renamedMethod4", operationDesc.getOperationName());
assertEquals("ActionMethod4", operationDesc.getAction());
assertFalse(operationDesc.isExcluded());
operationDescs = testEndpointInterfaceDesc.getOperationForJavaMethod("method5");
assertNull(operationDescs);
}
public void testWebResult() {
EndpointInterfaceDescription testEndpointInterfaceDesc =
getEndpointInterfaceDesc(WebResultTestImpl.class);
// DOCUMENT / LITERAL / WRAPPED methods
OperationDescription[] operationDescs =
testEndpointInterfaceDesc.getOperationForJavaMethod("method0");
assertNull(operationDescs);
OperationDescription operationDesc =
testEndpointInterfaceDesc.getOperationForJavaMethod("method1")[0];
assertNotNull(operationDesc);
assertNull(((OperationDescriptionJava)operationDesc).getAnnoWebResult());
assertFalse(((OperationDescriptionJava)operationDesc).isWebResultAnnotationSpecified());
assertTrue(operationDesc.isOperationReturningResult());
assertEquals("return", operationDesc.getResultName());
assertEquals("return", operationDesc.getResultPartName());
assertEquals("", operationDesc.getResultTargetNamespace());
assertFalse(operationDesc.isResultHeader());
operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method2")[0];
assertNotNull(operationDesc);
assertNotNull(((OperationDescriptionJava)operationDesc).getAnnoWebResult());
assertTrue(((OperationDescriptionJava)operationDesc).isWebResultAnnotationSpecified());
assertTrue(operationDesc.isOperationReturningResult());
assertEquals("return", operationDesc.getResultName());
assertEquals("return", operationDesc.getResultPartName());
assertEquals("", operationDesc.getResultTargetNamespace());
assertFalse(operationDesc.isResultHeader());
operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method3")[0];
assertNotNull(operationDesc);
assertNotNull(((OperationDescriptionJava)operationDesc).getAnnoWebResult());
assertTrue(((OperationDescriptionJava)operationDesc).isWebResultAnnotationSpecified());
assertTrue(operationDesc.isOperationReturningResult());
assertEquals("resultName", operationDesc.getResultName());
assertEquals("resultName", operationDesc.getResultPartName());
assertEquals("", operationDesc.getResultTargetNamespace());
assertFalse(operationDesc.isResultHeader());
operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method4")[0];
assertNotNull(operationDesc);
assertNotNull(((OperationDescriptionJava)operationDesc).getAnnoWebResult());
assertTrue(((OperationDescriptionJava)operationDesc).isWebResultAnnotationSpecified());
assertTrue(operationDesc.isOperationReturningResult());
assertEquals("resultName", operationDesc.getResultName());
assertEquals("partName", operationDesc.getResultPartName());
assertEquals("http://result.test.target.namespace/",
operationDesc.getResultTargetNamespace());
assertFalse(operationDesc.isResultHeader());
operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method5")[0];
assertNotNull(operationDesc);
assertNotNull(((OperationDescriptionJava)operationDesc).getAnnoWebResult());
assertTrue(((OperationDescriptionJava)operationDesc).isWebResultAnnotationSpecified());
assertTrue(operationDesc.isOperationReturningResult());
assertEquals("resultName5", operationDesc.getResultName());
assertEquals("partName5", operationDesc.getResultPartName());
assertEquals("http://result.test.target.namespace.5/",
operationDesc.getResultTargetNamespace());
assertTrue(operationDesc.isResultHeader());
operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method6")[0];
assertNotNull(operationDesc);
assertNull(((OperationDescriptionJava)operationDesc).getAnnoWebResult());
assertFalse(((OperationDescriptionJava)operationDesc).isWebResultAnnotationSpecified());
assertFalse(operationDesc.isOperationReturningResult());
assertEquals(null, operationDesc.getResultName());
assertEquals(null, operationDesc.getResultPartName());
assertEquals(null, operationDesc.getResultTargetNamespace());
assertFalse(operationDesc.isResultHeader());
operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method7")[0];
assertNotNull(operationDesc);
assertNotNull(((OperationDescriptionJava)operationDesc).getAnnoWebResult());
assertTrue(((OperationDescriptionJava)operationDesc).isWebResultAnnotationSpecified());
assertTrue(operationDesc.isOperationReturningResult());
assertEquals("resultName7", operationDesc.getResultName());
assertEquals("partName7", operationDesc.getResultPartName());
assertEquals("http://service.test.target.namespace/",
operationDesc.getResultTargetNamespace());
assertTrue(operationDesc.isResultHeader());
// DOCUMENT / LITERAL / BARE methods
operationDescs = testEndpointInterfaceDesc.getOperationForJavaMethod("method0_bare");
assertNull(operationDescs);
operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method1_bare")[0];
assertNotNull(operationDesc);
assertNull(((OperationDescriptionJava)operationDesc).getAnnoWebResult());
assertFalse(((OperationDescriptionJava)operationDesc).isWebResultAnnotationSpecified());
assertTrue(operationDesc.isOperationReturningResult());
assertEquals("renamedMethod1BareResponse", operationDesc.getResultName());
assertEquals("renamedMethod1BareResponse", operationDesc.getResultPartName());
assertEquals("http://service.test.target.namespace/",
operationDesc.getResultTargetNamespace());
assertFalse(operationDesc.isResultHeader());
operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method2_bare")[0];
assertNotNull(operationDesc);
assertNotNull(((OperationDescriptionJava)operationDesc).getAnnoWebResult());
assertTrue(((OperationDescriptionJava)operationDesc).isWebResultAnnotationSpecified());
assertTrue(operationDesc.isOperationReturningResult());
assertEquals("renamedMethod2BareResponse", operationDesc.getResultName());
assertEquals("renamedMethod2BareResponse", operationDesc.getResultPartName());
assertEquals("http://service.test.target.namespace/",
operationDesc.getResultTargetNamespace());
assertFalse(operationDesc.isResultHeader());
operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method3_bare")[0];
assertNotNull(operationDesc);
assertNotNull(((OperationDescriptionJava)operationDesc).getAnnoWebResult());
assertTrue(((OperationDescriptionJava)operationDesc).isWebResultAnnotationSpecified());
assertTrue(operationDesc.isOperationReturningResult());
assertEquals("resultName", operationDesc.getResultName());
assertEquals("resultName", operationDesc.getResultPartName());
assertEquals("http://service.test.target.namespace/",
operationDesc.getResultTargetNamespace());
assertFalse(operationDesc.isResultHeader());
operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method4_bare")[0];
assertNotNull(operationDesc);
assertNotNull(((OperationDescriptionJava)operationDesc).getAnnoWebResult());
assertTrue(((OperationDescriptionJava)operationDesc).isWebResultAnnotationSpecified());
assertTrue(operationDesc.isOperationReturningResult());
assertEquals("resultName", operationDesc.getResultName());
assertEquals("partName", operationDesc.getResultPartName());
assertEquals("http://result.bare.test.target.namespace/",
operationDesc.getResultTargetNamespace());
assertFalse(operationDesc.isResultHeader());
operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method5_bare")[0];
assertNotNull(operationDesc);
assertNotNull(((OperationDescriptionJava)operationDesc).getAnnoWebResult());
assertTrue(((OperationDescriptionJava)operationDesc).isWebResultAnnotationSpecified());
assertTrue(operationDesc.isOperationReturningResult());
assertEquals("resultName5", operationDesc.getResultName());
assertEquals("partName5", operationDesc.getResultPartName());
assertEquals("http://result.bare.test.target.namespace.5/",
operationDesc.getResultTargetNamespace());
assertTrue(operationDesc.isResultHeader());
operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method6_bare")[0];
assertNotNull(operationDesc);
assertNull(((OperationDescriptionJava)operationDesc).getAnnoWebResult());
assertFalse(((OperationDescriptionJava)operationDesc).isWebResultAnnotationSpecified());
assertFalse(operationDesc.isOperationReturningResult());
assertEquals(null, operationDesc.getResultName());
assertEquals(null, operationDesc.getResultPartName());
assertEquals(null, operationDesc.getResultTargetNamespace());
assertFalse(operationDesc.isResultHeader());
operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method7")[0];
assertNotNull(operationDesc);
assertNotNull(((OperationDescriptionJava)operationDesc).getAnnoWebResult());
assertTrue(((OperationDescriptionJava)operationDesc).isWebResultAnnotationSpecified());
assertTrue(operationDesc.isOperationReturningResult());
assertEquals("resultName7", operationDesc.getResultName());
assertEquals("partName7", operationDesc.getResultPartName());
assertEquals("http://service.test.target.namespace/",
operationDesc.getResultTargetNamespace());
assertTrue(operationDesc.isResultHeader());
}
public void testWebParamWrapped() {
EndpointInterfaceDescription testEndpointInterfaceDesc =
getEndpointInterfaceDesc(WebParamTestImpl.class);
// DOCUMENT / LITERAL / WRAPPED methods
// method0
OperationDescription[] operationDescs =
testEndpointInterfaceDesc.getOperationForJavaMethod("method0");
assertNull(operationDescs);
// method00
operationDescs = testEndpointInterfaceDesc.getOperationForJavaMethod("method00");
assertNull(operationDescs);
// method1
OperationDescription operationDesc =
testEndpointInterfaceDesc.getOperationForJavaMethod("method1")[0];
assertNotNull(operationDesc);
ParameterDescription[] paramDesc = operationDesc.getParameterDescriptions();
assertEquals(1, paramDesc.length);
ParameterDescription checkParamDesc = paramDesc[0];
assertNull(((ParameterDescriptionJava)checkParamDesc).getAnnoWebParam());
assertEquals("arg0", checkParamDesc.getParameterName());
assertEquals("arg0", checkParamDesc.getPartName());
assertEquals(checkParamDesc, operationDesc.getParameterDescription(0));
assertEquals(checkParamDesc, operationDesc.getParameterDescription("arg0"));
assertEquals(String.class, checkParamDesc.getParameterType());
assertEquals("", checkParamDesc.getTargetNamespace());
assertEquals(WebParam.Mode.IN, checkParamDesc.getMode());
assertFalse(checkParamDesc.isHeader());
// method2
operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method2")[0];
assertNotNull(operationDesc);
paramDesc = operationDesc.getParameterDescriptions();
assertEquals(1, paramDesc.length);
checkParamDesc = paramDesc[0];
assertNotNull(((ParameterDescriptionJava)checkParamDesc).getAnnoWebParam());
assertEquals("arg0", checkParamDesc.getParameterName());
assertEquals("arg0", checkParamDesc.getPartName());
assertEquals(checkParamDesc, operationDesc.getParameterDescription(0));
assertEquals(checkParamDesc, operationDesc.getParameterDescription("arg0"));
assertEquals(String.class, checkParamDesc.getParameterType());
assertEquals("", checkParamDesc.getTargetNamespace());
assertEquals(WebParam.Mode.IN, checkParamDesc.getMode());
assertFalse(checkParamDesc.isHeader());
// method3
operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method3")[0];
assertNotNull(operationDesc);
paramDesc = operationDesc.getParameterDescriptions();
assertEquals(5, paramDesc.length);
checkParamDesc = paramDesc[0];
assertNotNull(((ParameterDescriptionJava)checkParamDesc).getAnnoWebParam());
assertEquals("param0NameMethod3", checkParamDesc.getParameterName());
assertEquals("param0NameMethod3", checkParamDesc.getPartName());
assertEquals(checkParamDesc, operationDesc.getParameterDescription(0));
assertEquals(checkParamDesc, operationDesc.getParameterDescription("param0NameMethod3"));
assertEquals(String.class, checkParamDesc.getParameterType());
assertEquals("", checkParamDesc.getTargetNamespace());
assertEquals(WebParam.Mode.IN, checkParamDesc.getMode());
assertFalse(checkParamDesc.isHeader());
checkParamDesc = paramDesc[1];
assertNotNull(((ParameterDescriptionJava)checkParamDesc).getAnnoWebParam());
assertEquals("param1NameMethod3", checkParamDesc.getParameterName());
assertEquals("param1NameMethod3", checkParamDesc.getPartName());
assertEquals(checkParamDesc, operationDesc.getParameterDescription(1));
assertEquals(checkParamDesc, operationDesc.getParameterDescription("param1NameMethod3"));
assertEquals(Holder.class, checkParamDesc.getParameterType());
assertEquals(Integer.class, checkParamDesc.getParameterActualType());
assertTrue(checkParamDesc.isHolderType());
assertEquals("", checkParamDesc.getTargetNamespace());
assertEquals(WebParam.Mode.INOUT, checkParamDesc.getMode());
assertFalse(checkParamDesc.isHeader());
checkParamDesc = paramDesc[2];
assertNull(((ParameterDescriptionJava)checkParamDesc).getAnnoWebParam());
assertEquals("arg2", checkParamDesc.getParameterName());
assertEquals("arg2", checkParamDesc.getPartName());
assertEquals(checkParamDesc, operationDesc.getParameterDescription(2));
assertEquals(checkParamDesc, operationDesc.getParameterDescription("arg2"));
assertEquals(Object.class, checkParamDesc.getParameterType());
assertEquals("", checkParamDesc.getTargetNamespace());
assertEquals(WebParam.Mode.IN, checkParamDesc.getMode());
assertFalse(checkParamDesc.isHeader());
checkParamDesc = paramDesc[3];
assertNull(((ParameterDescriptionJava)checkParamDesc).getAnnoWebParam());
assertEquals("arg3", checkParamDesc.getParameterName());
assertEquals("arg3", checkParamDesc.getPartName());
assertEquals(checkParamDesc, operationDesc.getParameterDescription(3));
assertEquals(checkParamDesc, operationDesc.getParameterDescription("arg3"));
assertEquals(Integer.TYPE, checkParamDesc.getParameterType());
assertEquals("", checkParamDesc.getTargetNamespace());
assertEquals(WebParam.Mode.IN, checkParamDesc.getMode());
assertFalse(checkParamDesc.isHeader());
checkParamDesc = paramDesc[4];
assertNotNull(((ParameterDescriptionJava)checkParamDesc).getAnnoWebParam());
assertEquals("lastParamNameMethod3", checkParamDesc.getParameterName());
assertEquals("lastParamNameMethod3", checkParamDesc.getPartName());
assertEquals(checkParamDesc, operationDesc.getParameterDescription(4));
assertEquals(checkParamDesc, operationDesc.getParameterDescription("lastParamNameMethod3"));
assertEquals(String.class, checkParamDesc.getParameterType());
assertEquals("", checkParamDesc.getTargetNamespace());
assertEquals(WebParam.Mode.IN, checkParamDesc.getMode());
assertFalse(checkParamDesc.isHeader());
// method4
operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method4")[0];
assertNotNull(operationDesc);
paramDesc = operationDesc.getParameterDescriptions();
assertEquals(5, paramDesc.length);
checkParamDesc = paramDesc[0];
assertNotNull(((ParameterDescriptionJava)checkParamDesc).getAnnoWebParam());
assertEquals("param0NameMethod4", checkParamDesc.getParameterName());
assertEquals("param0PartName", checkParamDesc.getPartName());
assertEquals(checkParamDesc, operationDesc.getParameterDescription(0));
assertEquals(checkParamDesc, operationDesc.getParameterDescription("param0NameMethod4"));
assertEquals(String.class, checkParamDesc.getParameterType());
assertEquals("http://param.4.0.result.test.target.namespace/",
checkParamDesc.getTargetNamespace());
assertEquals(WebParam.Mode.IN, checkParamDesc.getMode());
assertFalse(checkParamDesc.isHeader());
checkParamDesc = paramDesc[1];
assertNotNull(((ParameterDescriptionJava)checkParamDesc).getAnnoWebParam());
assertEquals("param1NameMethod4", checkParamDesc.getParameterName());
assertEquals("param1PartName", checkParamDesc.getPartName());
assertEquals(checkParamDesc, operationDesc.getParameterDescription(1));
assertEquals(checkParamDesc, operationDesc.getParameterDescription("param1NameMethod4"));
assertEquals(Integer.TYPE, checkParamDesc.getParameterType());
assertEquals("http://param.4.1.result.test.target.namespace/",
checkParamDesc.getTargetNamespace());
assertEquals(WebParam.Mode.IN, checkParamDesc.getMode());
assertFalse(checkParamDesc.isHeader());
checkParamDesc = paramDesc[2];
assertNull(((ParameterDescriptionJava)checkParamDesc).getAnnoWebParam());
assertEquals("arg2", checkParamDesc.getParameterName());
assertEquals("arg2", checkParamDesc.getPartName());
assertEquals(checkParamDesc, operationDesc.getParameterDescription(2));
assertEquals(checkParamDesc, operationDesc.getParameterDescription("arg2"));
assertEquals(Object.class, checkParamDesc.getParameterType());
assertEquals("", checkParamDesc.getTargetNamespace());
assertEquals(WebParam.Mode.IN, checkParamDesc.getMode());
assertFalse(checkParamDesc.isHeader());
checkParamDesc = paramDesc[3];
assertNull(((ParameterDescriptionJava)checkParamDesc).getAnnoWebParam());
assertEquals("arg3", checkParamDesc.getParameterName());
assertEquals("arg3", checkParamDesc.getPartName());
assertEquals(checkParamDesc, operationDesc.getParameterDescription(3));
assertEquals(checkParamDesc, operationDesc.getParameterDescription("arg3"));
assertEquals(Holder.class, checkParamDesc.getParameterType());
assertEquals(Integer.class, checkParamDesc.getParameterActualType());
assertTrue(checkParamDesc.isHolderType());
assertEquals("", checkParamDesc.getTargetNamespace());
assertEquals(WebParam.Mode.INOUT, checkParamDesc.getMode());
assertFalse(checkParamDesc.isHeader());
checkParamDesc = paramDesc[4];
assertNotNull(((ParameterDescriptionJava)checkParamDesc).getAnnoWebParam());
assertEquals("lastParamNameMethod4", checkParamDesc.getParameterName());
assertEquals("lastParamNameMethod4", checkParamDesc.getPartName());
assertEquals(checkParamDesc, operationDesc.getParameterDescription(4));
assertEquals(checkParamDesc, operationDesc.getParameterDescription("lastParamNameMethod4"));
assertEquals(String.class, checkParamDesc.getParameterType());
assertEquals("", checkParamDesc.getTargetNamespace());
assertEquals(WebParam.Mode.IN, checkParamDesc.getMode());
assertFalse(checkParamDesc.isHeader());
// method5
operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method5")[0];
assertNotNull(operationDesc);
paramDesc = operationDesc.getParameterDescriptions();
assertEquals(5, paramDesc.length);
checkParamDesc = paramDesc[0];
assertNotNull(((ParameterDescriptionJava)checkParamDesc).getAnnoWebParam());
assertEquals("param0NameMethod5", checkParamDesc.getParameterName());
assertEquals("param0PartName", checkParamDesc.getPartName());
assertEquals(checkParamDesc, operationDesc.getParameterDescription(0));
assertEquals(checkParamDesc, operationDesc.getParameterDescription("param0NameMethod5"));
assertEquals(String.class, checkParamDesc.getParameterType());
assertFalse(checkParamDesc.isHolderType());
assertEquals("http://param.5.0.result.test.target.namespace/",
checkParamDesc.getTargetNamespace());
assertEquals(WebParam.Mode.IN, checkParamDesc.getMode());
assertTrue(checkParamDesc.isHeader());
checkParamDesc = paramDesc[1];
assertNotNull(((ParameterDescriptionJava)checkParamDesc).getAnnoWebParam());
assertEquals("param1NameMethod5", checkParamDesc.getParameterName());
assertEquals("param1PartName", checkParamDesc.getPartName());
assertEquals(checkParamDesc, operationDesc.getParameterDescription(1));
assertEquals(checkParamDesc, operationDesc.getParameterDescription("param1NameMethod5"));
assertEquals(Integer.TYPE, checkParamDesc.getParameterType());
assertFalse(checkParamDesc.isHolderType());
assertEquals("http://param.5.1.result.test.target.namespace/",
checkParamDesc.getTargetNamespace());
assertEquals(WebParam.Mode.IN, checkParamDesc.getMode());
assertFalse(checkParamDesc.isHeader());
checkParamDesc = paramDesc[2];
assertNull(((ParameterDescriptionJava)checkParamDesc).getAnnoWebParam());
assertEquals("arg2", checkParamDesc.getParameterName());
assertEquals("arg2", checkParamDesc.getPartName());
assertEquals(checkParamDesc, operationDesc.getParameterDescription(2));
assertEquals(checkParamDesc, operationDesc.getParameterDescription("arg2"));
assertEquals(Holder.class, checkParamDesc.getParameterType());
assertEquals(Object.class, checkParamDesc.getParameterActualType());
assertTrue(checkParamDesc.isHolderType());
assertEquals("", checkParamDesc.getTargetNamespace());
assertEquals(WebParam.Mode.INOUT, checkParamDesc.getMode());
assertFalse(checkParamDesc.isHeader());
checkParamDesc = paramDesc[3];
assertNull(((ParameterDescriptionJava)checkParamDesc).getAnnoWebParam());
assertEquals("arg3", checkParamDesc.getParameterName());
assertEquals("arg3", checkParamDesc.getPartName());
assertEquals(checkParamDesc, operationDesc.getParameterDescription(3));
assertEquals(checkParamDesc, operationDesc.getParameterDescription("arg3"));
assertEquals(Integer.TYPE, checkParamDesc.getParameterType());
assertEquals("", checkParamDesc.getTargetNamespace());
assertEquals(WebParam.Mode.IN, checkParamDesc.getMode());
assertFalse(checkParamDesc.isHeader());
checkParamDesc = paramDesc[4];
assertNotNull(((ParameterDescriptionJava)checkParamDesc).getAnnoWebParam());
assertEquals("lastParamNameMethod5", checkParamDesc.getParameterName());
assertEquals("lastParamNameMethod5", checkParamDesc.getPartName());
assertEquals(checkParamDesc, operationDesc.getParameterDescription(4));
assertEquals(checkParamDesc, operationDesc.getParameterDescription("lastParamNameMethod5"));
assertEquals(Holder.class, checkParamDesc.getParameterType());
assertEquals(String.class, checkParamDesc.getParameterActualType());
assertTrue(checkParamDesc.isHolderType());
assertEquals("", checkParamDesc.getTargetNamespace());
assertEquals(WebParam.Mode.OUT, checkParamDesc.getMode());
assertFalse(checkParamDesc.isHeader());
// method6
operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method6")[0];
assertNotNull(operationDesc);
paramDesc = operationDesc.getParameterDescriptions();
assertEquals(5, paramDesc.length);
checkParamDesc = paramDesc[0];
assertNotNull(((ParameterDescriptionJava)checkParamDesc).getAnnoWebParam());
assertEquals("param0NameMethod6", checkParamDesc.getParameterName());
assertEquals("param0PartName", checkParamDesc.getPartName());
assertEquals(checkParamDesc, operationDesc.getParameterDescription(0));
assertEquals(checkParamDesc, operationDesc.getParameterDescription("param0NameMethod6"));
assertEquals(String.class, checkParamDesc.getParameterType());
assertEquals("http://param.service.test.target.namespace/",
checkParamDesc.getTargetNamespace());
assertEquals(WebParam.Mode.IN, checkParamDesc.getMode());
assertTrue(checkParamDesc.isHeader());
checkParamDesc = paramDesc[1];
assertNotNull(((ParameterDescriptionJava)checkParamDesc).getAnnoWebParam());
assertEquals("param1NameMethod6", checkParamDesc.getParameterName());
assertEquals("param1PartName", checkParamDesc.getPartName());
assertEquals(checkParamDesc, operationDesc.getParameterDescription(1));
assertEquals(checkParamDesc, operationDesc.getParameterDescription("param1NameMethod6"));
assertEquals(Integer.TYPE, checkParamDesc.getParameterType());
assertEquals("", checkParamDesc.getTargetNamespace());
assertEquals(WebParam.Mode.IN, checkParamDesc.getMode());
assertFalse(checkParamDesc.isHeader());
checkParamDesc = paramDesc[2];
assertNull(((ParameterDescriptionJava)checkParamDesc).getAnnoWebParam());
assertEquals("arg2", checkParamDesc.getParameterName());
assertEquals("arg2", checkParamDesc.getPartName());
assertEquals(checkParamDesc, operationDesc.getParameterDescription(2));
assertEquals(checkParamDesc, operationDesc.getParameterDescription("arg2"));
assertEquals(Object.class, checkParamDesc.getParameterType());
assertEquals("", checkParamDesc.getTargetNamespace());
assertEquals(WebParam.Mode.IN, checkParamDesc.getMode());
assertFalse(checkParamDesc.isHeader());
checkParamDesc = paramDesc[3];
assertNull(((ParameterDescriptionJava)checkParamDesc).getAnnoWebParam());
assertEquals("arg3", checkParamDesc.getParameterName());
assertEquals("arg3", checkParamDesc.getPartName());
assertEquals(checkParamDesc, operationDesc.getParameterDescription(3));
assertEquals(checkParamDesc, operationDesc.getParameterDescription("arg3"));
assertEquals(Integer.TYPE, checkParamDesc.getParameterType());
assertEquals("", checkParamDesc.getTargetNamespace());
assertEquals(WebParam.Mode.IN, checkParamDesc.getMode());
assertFalse(checkParamDesc.isHeader());
checkParamDesc = paramDesc[4];
assertNotNull(((ParameterDescriptionJava)checkParamDesc).getAnnoWebParam());
assertEquals("lastParamNameMethod6", checkParamDesc.getParameterName());
assertEquals("lastParamNameMethod6", checkParamDesc.getPartName());
assertEquals(checkParamDesc, operationDesc.getParameterDescription(4));
assertEquals(checkParamDesc, operationDesc.getParameterDescription("lastParamNameMethod6"));
assertEquals(String.class, checkParamDesc.getParameterType());
assertEquals("", checkParamDesc.getTargetNamespace());
assertEquals(WebParam.Mode.IN, checkParamDesc.getMode());
assertFalse(checkParamDesc.isHeader());
}
public void testWebParamBare() {
EndpointInterfaceDescription testEndpointInterfaceDesc =
getEndpointInterfaceDesc(WebParamTestImpl.class);
// DOCUMENT / LITERAL / BARE methods
OperationDescription[] operationDescs =
testEndpointInterfaceDesc.getOperationForJavaMethod("method0_bare");
assertNull(operationDescs);
// method00
operationDescs = testEndpointInterfaceDesc.getOperationForJavaMethod("method00_bare");
assertNull(operationDescs);
// method1
OperationDescription operationDesc =
testEndpointInterfaceDesc.getOperationForJavaMethod("method1_bare")[0];
assertNotNull(operationDesc);
ParameterDescription[] paramDesc = operationDesc.getParameterDescriptions();
assertEquals(1, paramDesc.length);
ParameterDescription checkParamDesc = paramDesc[0];
assertNull(((ParameterDescriptionJava)checkParamDesc).getAnnoWebParam());
assertEquals("renamedMethod1", checkParamDesc.getParameterName());
assertEquals("renamedMethod1", checkParamDesc.getPartName());
assertEquals(checkParamDesc, operationDesc.getParameterDescription(0));
assertEquals(checkParamDesc, operationDesc.getParameterDescription("renamedMethod1"));
assertEquals(String.class, checkParamDesc.getParameterType());
assertEquals("http://param.service.test.target.namespace/",
checkParamDesc.getTargetNamespace());
assertEquals(WebParam.Mode.IN, checkParamDesc.getMode());
assertFalse(checkParamDesc.isHeader());
// method2
operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method2_bare")[0];
assertNotNull(operationDesc);
paramDesc = operationDesc.getParameterDescriptions();
assertEquals(1, paramDesc.length);
checkParamDesc = paramDesc[0];
assertNotNull(((ParameterDescriptionJava)checkParamDesc).getAnnoWebParam());
assertEquals("renamedMethod2", checkParamDesc.getParameterName());
assertEquals("renamedMethod2", checkParamDesc.getPartName());
assertEquals(checkParamDesc, operationDesc.getParameterDescription(0));
assertEquals(checkParamDesc, operationDesc.getParameterDescription("renamedMethod2"));
assertEquals(String.class, checkParamDesc.getParameterType());
assertEquals("http://param.service.test.target.namespace/",
checkParamDesc.getTargetNamespace());
assertEquals(WebParam.Mode.IN, checkParamDesc.getMode());
assertFalse(checkParamDesc.isHeader());
// method3
operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method3_bare")[0];
assertNotNull(operationDesc);
paramDesc = operationDesc.getParameterDescriptions();
assertEquals(1, paramDesc.length);
checkParamDesc = paramDesc[0];
assertNotNull(((ParameterDescriptionJava)checkParamDesc).getAnnoWebParam());
assertEquals("param1NameMethod3", checkParamDesc.getParameterName());
assertEquals("param1NameMethod3", checkParamDesc.getPartName());
assertEquals(checkParamDesc, operationDesc.getParameterDescription(0));
assertEquals(checkParamDesc, operationDesc.getParameterDescription("param1NameMethod3"));
assertEquals(Holder.class, checkParamDesc.getParameterType());
assertEquals(Integer.class, checkParamDesc.getParameterActualType());
assertTrue(checkParamDesc.isHolderType());
assertEquals("http://param.service.test.target.namespace/",
checkParamDesc.getTargetNamespace());
assertEquals(WebParam.Mode.INOUT, checkParamDesc.getMode());
assertFalse(checkParamDesc.isHeader());
// method4
operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method4_bare")[0];
assertNotNull(operationDesc);
paramDesc = operationDesc.getParameterDescriptions();
assertEquals(1, paramDesc.length);
checkParamDesc = paramDesc[0];
assertNull(((ParameterDescriptionJava)checkParamDesc).getAnnoWebParam());
assertEquals("renamedMethod4", checkParamDesc.getParameterName());
assertEquals("renamedMethod4", checkParamDesc.getPartName());
assertEquals(checkParamDesc, operationDesc.getParameterDescription(0));
assertEquals(checkParamDesc, operationDesc.getParameterDescription("renamedMethod4"));
assertEquals(Holder.class, checkParamDesc.getParameterType());
assertEquals(Integer.class, checkParamDesc.getParameterActualType());
assertEquals("http://param.service.test.target.namespace/",
checkParamDesc.getTargetNamespace());
assertEquals(WebParam.Mode.INOUT, checkParamDesc.getMode());
assertFalse(checkParamDesc.isHeader());
// method5
operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method5_bare")[0];
assertNotNull(operationDesc);
paramDesc = operationDesc.getParameterDescriptions();
assertEquals(1, paramDesc.length);
checkParamDesc = paramDesc[0];
assertNotNull(((ParameterDescriptionJava)checkParamDesc).getAnnoWebParam());
assertEquals("lastParamNameMethod5", checkParamDesc.getParameterName());
assertEquals("lastParamNameMethod5", checkParamDesc.getPartName());
assertEquals(checkParamDesc, operationDesc.getParameterDescription(0));
assertEquals(checkParamDesc, operationDesc.getParameterDescription("lastParamNameMethod5"));
assertEquals(Holder.class, checkParamDesc.getParameterType());
assertEquals(String.class, checkParamDesc.getParameterActualType());
assertTrue(checkParamDesc.isHolderType());
assertEquals("http://method5.bare.result.test.target.namespace.5/",
checkParamDesc.getTargetNamespace());
assertEquals(WebParam.Mode.OUT, checkParamDesc.getMode());
assertFalse(checkParamDesc.isHeader());
// method6
operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method6_bare")[0];
assertNotNull(operationDesc);
paramDesc = operationDesc.getParameterDescriptions();
assertEquals(1, paramDesc.length);
checkParamDesc = paramDesc[0];
assertNotNull(((ParameterDescriptionJava)checkParamDesc).getAnnoWebParam());
assertEquals("param0NameMethod6", checkParamDesc.getParameterName());
assertEquals("param0PartName", checkParamDesc.getPartName());
assertEquals(checkParamDesc, operationDesc.getParameterDescription(0));
assertEquals(checkParamDesc, operationDesc.getParameterDescription("param0NameMethod6"));
assertEquals(Holder.class, checkParamDesc.getParameterType());
assertEquals(String.class, checkParamDesc.getParameterActualType());
assertEquals("http://param.service.test.target.namespace/",
checkParamDesc.getTargetNamespace());
assertEquals(WebParam.Mode.INOUT, checkParamDesc.getMode());
assertTrue(checkParamDesc.isHeader());
}
/*
* Method to return the endpoint interface description for a given implementation class.
*/
private EndpointInterfaceDescription getEndpointInterfaceDesc(Class implementationClass) {
// Use the description factory directly; this will be done within the JAX-WS runtime
ServiceDescription serviceDesc =
DescriptionFactory.createServiceDescription(implementationClass);
assertNotNull(serviceDesc);
EndpointDescription[] endpointDesc = serviceDesc.getEndpointDescriptions();
assertNotNull(endpointDesc);
assertEquals(1, endpointDesc.length);
// TODO: How will the JAX-WS dispatcher get the appropriate port (i.e. endpoint)? Currently assumes [0]
EndpointDescription testEndpointDesc = endpointDesc[0];
EndpointInterfaceDescription testEndpointInterfaceDesc =
testEndpointDesc.getEndpointInterfaceDescription();
assertNotNull(testEndpointInterfaceDesc);
return testEndpointInterfaceDesc;
}
}
// ============================================================================
// SOAPBindingDefaultTest service implementation class
// @SOAPBinding values: style=DOCUMENT, use=LITERAL, paramaterStyle=WRAPPED
// @WebResult values: are all defaulted
// ============================================================================
@WebService()
class SOAPBindingDefaultTestImpl {
public String echoString(String s) {
return s;
}
}
// ============================================================================
// SOAPBindingDocLiBareTestImpl service implementation class
// Note that Style should default
// ============================================================================
@WebService()
@SOAPBinding(use = javax.jws.soap.SOAPBinding.Use.LITERAL,
parameterStyle = javax.jws.soap.SOAPBinding.ParameterStyle.BARE)
class SOAPBindingDocLitBareTestImpl {
public String echoString(String s) {
return s;
}
}
//============================================================================
//SOAPBindingDocEncBareTestImpl service implementation class
//Note that Style should default
//============================================================================
@WebService()
@SOAPBinding(use = javax.jws.soap.SOAPBinding.Use.ENCODED,
parameterStyle = javax.jws.soap.SOAPBinding.ParameterStyle.BARE)
class SOAPBindingDocEncBareTestImpl {
public String echoString(String s) {
return s;
}
}
// ============================================================================
// SOAPBindingDefaultMethodTest service implementation class
// Note that style will default to DOCUMENT based on Type annotation
// ============================================================================
@WebService()
class SOAPBindingDefaultMethodTestImpl {
@SOAPBinding(use = javax.jws.soap.SOAPBinding.Use.LITERAL,
parameterStyle = javax.jws.soap.SOAPBinding.ParameterStyle.BARE)
public String echoString(String s) {
return s;
}
}
// =============================================================================
// testDefaultReqRspWrapper service implementation classes
// =============================================================================
@WebService
//Note the default parameterStyle is WRAPPED, so no type-level annotation is required.
class DefaultReqRspWrapperTestImpl {
public String wrappedParams(String s) {
return s;
}
@SOAPBinding(parameterStyle = javax.jws.soap.SOAPBinding.ParameterStyle.BARE)
public String bareParams(String s) {
return s;
}
}
@WebService
@SOAPBinding(parameterStyle = javax.jws.soap.SOAPBinding.ParameterStyle.BARE)
class DefaultReqRspWrapperBareTestImpl {
@SOAPBinding(parameterStyle = javax.jws.soap.SOAPBinding.ParameterStyle.WRAPPED)
public String wrappedParams(String s) {
return s;
}
public String bareParams(String s) {
return s;
}
}
// =============================================================================
// testReqRspWrapper service implementation class
// =============================================================================
@WebService
//Note the default parameterStyle is WRAPPED, so no type-level annotation is required.
class ReqRspWrapperTestImpl {
@RequestWrapper(localName = "method1ReqWrapper", targetNamespace = "http://a.b.c.method1ReqTNS",
className = "org.apache.axis2.jaxws.description.AnnotationServiceImplDescriptionTests.ReqRspWrapperTestImpl.method1ReqWrapper")
@ResponseWrapper(localName = "method1RspWrapper",
targetNamespace = "http://a.b.c.method1RspTNS",
className = "org.apache.axis2.jaxws.description.AnnotationServiceImplDescriptionTests.ReqRspWrapperTestImpl.method1RspWrapper")
public String method1(String s) {
return s;
}
@RequestWrapper(targetNamespace = "http://a.b.c.method2ReqTNS",
className = "org.apache.axis2.jaxws.description.AnnotationServiceImplDescriptionTests.ReqRspWrapperTestImpl.method2ReqWrapper")
@ResponseWrapper(localName = "method2RspWrapper",
targetNamespace = "http://a.b.c.method2RspTNS")
public String method2(String s) {
return s;
}
public class method1ReqWrapper {
}
public class method2ReqWrapper {
}
public class method1RspWrapper {
}
}
// =============================================================================
// testWebMethod service implementaiton class
// =============================================================================
@WebService
class WebMethodTestImpl {
// No web method annotation
public String method1(String s) {
return s;
}
@WebMethod(operationName = "renamedMethod2")
public String method2(String s) {
return s;
}
@WebMethod(action = "ActionMethod3")
public String method3(String s) {
return s;
}
@WebMethod(operationName = "renamedMethod4", action = "ActionMethod4")
public String method4(String s) {
return s;
}
@WebMethod(exclude = true)
public String method5(String s) {
return s;
}
}
// ===============================================
// Web Result
// ===============================================
@WebService(targetNamespace = "http://service.test.target.namespace/")
// Default SOAPBinding Style=DOCUMENT, Use=LITERAL, ParamStyle=WRAPPED
class WebResultTestImpl {
// DOCUMENT / LITERAL / WRAPPED methods
public String method0(String s) {
return s;
}
@WebMethod(operationName = "renamedMethod1")
public String method1(String s) {
return s;
}
@WebMethod(operationName = "renamedMethod2")
@WebResult()
public String method2(String s) {
return s;
}
@WebMethod(operationName = "renamedMethod3")
@WebResult(name = "resultName")
public String method3(String s) {
return s;
}
@WebMethod(operationName = "renamedMethod4")
@WebResult(name = "resultName", partName = "partName",
targetNamespace = "http://result.test.target.namespace/")
public String method4(String s) {
return s;
}
@WebMethod(operationName = "renamedMethod5")
@WebResult(name = "resultName5", partName = "partName5",
targetNamespace = "http://result.test.target.namespace.5/", header = true)
public String method5(String s) {
return s;
}
@WebMethod(operationName = "renamedMethod6")
@Oneway
public void method6(String s) {
return;
}
@WebMethod(operationName = "renamedMethod7")
@WebResult(name = "resultName7", partName = "partName7", header = true)
public String method7(String s) {
return s;
}
// DOCUMENT / LITERAL / BARE methods
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
public String method0_bare(String s) {
return s;
}
@WebMethod(operationName = "renamedMethod1Bare")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
public String method1_bare(String s) {
return s;
}
@WebMethod(operationName = "renamedMethod2Bare")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
@WebResult()
public String method2_bare(String s) {
return s;
}
@WebMethod(operationName = "renamedMethod3Bare")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
@WebResult(name = "resultName")
public String method3_bare(String s) {
return s;
}
@WebMethod(operationName = "renamedMethod4Bare")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
@WebResult(name = "resultName", partName = "partName",
targetNamespace = "http://result.bare.test.target.namespace/")
public String method4_bare(String s) {
return s;
}
@WebMethod(operationName = "renamedMethod5Bare")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
@WebResult(name = "resultName5", partName = "partName5",
targetNamespace = "http://result.bare.test.target.namespace.5/", header = true)
public String method5_bare(String s) {
return s;
}
@WebMethod(operationName = "renamedMethod6Bare")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
@Oneway
public void method6_bare(String s) {
return;
}
@WebMethod(operationName = "renamedMethod7Bare")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
@WebResult(name = "resultName7", partName = "partName7", header = true)
public String method7_bare(String s) {
return s;
}
}
// ===============================================
// Web Param test impl
// ===============================================
@WebService(targetNamespace = "http://param.service.test.target.namespace/")
//Default SOAPBinding Style=DOCUMENT, Use=LITERAL, ParamStyle=WRAPPED
class WebParamTestImpl {
// DOCUMENT / LITERAL / WRAPPED methods
public String method0(String s) {
return s;
}
public void method00() {
return;
}
@WebMethod(operationName = "renamedMethod1")
public String method1(String s) {
return s;
}
@WebMethod(operationName = "renamedMethod2")
@WebResult()
public String method2(
@WebParam() String s) {
return s;
}
@WebMethod(operationName = "renamedMethod3")
@WebResult(name = "resultName")
public String method3(
@WebParam(name = "param0NameMethod3") String s,
@WebParam(name = "param1NameMethod3") javax.xml.ws.Holder<Integer> holderInteger,
Object objNoWebParamAnno,
int intNoWebParamAnno,
@WebParam(name = "lastParamNameMethod3") String last) {
return s;
}
@WebMethod(operationName = "renamedMethod4")
@WebResult(name = "resultName", partName = "partName",
targetNamespace = "http://result.test.target.namespace/")
public String method4(
@WebParam(name = "param0NameMethod4", partName = "param0PartName",
targetNamespace = "http://param.4.0.result.test.target.namespace/") String s,
@WebParam(name = "param1NameMethod4", partName = "param1PartName",
targetNamespace = "http://param.4.1.result.test.target.namespace/") int i,
Object objNoWebParamAnno,
javax.xml.ws.Holder<Integer> intNoWebParamAnno,
@WebParam(name = "lastParamNameMethod4") String last) {
return s;
}
@WebMethod(operationName = "renamedMethod5")
@WebResult(name = "resultName5", partName = "partName5",
targetNamespace = "http://result.test.target.namespace.5/", header = true)
public String method5(
@WebParam(name = "param0NameMethod5", partName = "param0PartName",
targetNamespace = "http://param.5.0.result.test.target.namespace/",
header = true) String s,
@WebParam(name = "param1NameMethod5", partName = "param1PartName",
targetNamespace = "http://param.5.1.result.test.target.namespace/",
header = false) int i,
javax.xml.ws.Holder<Object> objNoWebParamAnno,
int intNoWebParamAnno,
@WebParam(name = "lastParamNameMethod5", mode = WebParam.Mode.OUT)
javax.xml.ws.Holder<String> last) {
return s;
}
@WebMethod(operationName = "renamedMethod6")
@WebResult(name = "resultName5", partName = "partName5", header = true)
public String method6(
@WebParam(name = "param0NameMethod6", partName = "param0PartName", header = true)
String s,
@WebParam(name = "param1NameMethod6", partName = "param1PartName", header = false)
int i,
Object objNoWebParamAnno,
int intNoWebParamAnno,
@WebParam(name = "lastParamNameMethod6") String last) {
return s;
}
// DOCUMENT / LITERAL / BARE methods
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
public String method0_bare(String s) {
return s;
}
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
public void method00_bare() {
return;
}
@WebMethod(operationName = "renamedMethod1")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
public String method1_bare(String s) {
return s;
}
@WebMethod(operationName = "renamedMethod2")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
@WebResult()
public String method2_bare(
@WebParam() String s) {
return s;
}
@WebMethod(operationName = "renamedMethod3")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
@WebResult(name = "resultName")
public String method3_bare(
@WebParam(name = "param1NameMethod3") javax.xml.ws.Holder<Integer> holderInteger) {
return null;
}
@WebMethod(operationName = "renamedMethod4")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
@WebResult(name = "resultName", partName = "partName",
targetNamespace = "http://result.test.target.namespace/")
public String method4_bare(
javax.xml.ws.Holder<Integer> intNoWebParamAnno) {
return null;
}
@WebMethod(operationName = "renamedMethod5")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
@WebResult(name = "resultName5", partName = "partName5",
targetNamespace = "http://result.test.target.namespace.5/", header = true)
public void method5_bare(
@WebParam(name = "lastParamNameMethod5", mode = WebParam.Mode.OUT,
targetNamespace = "http://method5.bare.result.test.target.namespace.5/")
javax.xml.ws.Holder<String> last) {
return;
}
@WebMethod(operationName = "renamedMethod6")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
@WebResult(name = "resultName5", partName = "partName5", header = true)
public String method6_bare(
@WebParam(name = "param0NameMethod6", partName = "param0PartName", header = true)
javax.xml.ws.Holder<String> s) {
return null;
}
}