You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by ek...@apache.org on 2005/12/07 08:25:13 UTC
svn commit: r354746 - in /beehive/trunk: system-controls/test/src/webservice/
system-controls/test/src/webservice/jcxgen-tests/
system-controls/test/src/webservice/schemas/
system-controls/test/src/webservice/servers/webapp/WEB-INF/src/web/
system-cont...
Author: ekoneil
Date: Tue Dec 6 23:24:25 2005
New Revision: 354746
URL: http://svn.apache.org/viewcvs?rev=354746&view=rev
Log:
WSM and service control stuff:
- add stub for JAX-RPC artifact generation (don't bother looking, nothing here yet)
- add tests for header values passed into WS methods in Axis
- fix the web service control tests to account for the 181 spec requirement that IN / INOUT params are usable for RPC encoding or headers. These tests were doc tests passing IN / INOUT not using headers.
- add TypeUtils class that does the introspection on Holders to determine the held type. This decouples wsm/src/core from some type stuff that needs to move into the service control.
BB: self
Test: WSM and service control tests pass
Added:
beehive/trunk/wsm/src/core/org/apache/beehive/wsm/processor/generator/jaxrpc/
beehive/trunk/wsm/src/core/org/apache/beehive/wsm/processor/generator/jaxrpc/JaxRpcResourceGenerator.java (with props)
beehive/trunk/wsm/src/core/org/apache/beehive/wsm/util/TypeUtils.java (with props)
beehive/trunk/wsm/test/src/junit-server/org/apache/beehive/wsm/test/misc/HeaderParamTest.java (with props)
beehive/trunk/wsm/test/webapp/src/org/apache/beehive/wsm/test/headers/NameHeader.java (with props)
beehive/trunk/wsm/test/webapp/src/org/apache/beehive/wsm/test/holders/NameHeaderHolder.java (with props)
beehive/trunk/wsm/test/webapp/src/webservice/HeaderService.java (with props)
Modified:
beehive/trunk/system-controls/test/src/webservice/build.xml
beehive/trunk/system-controls/test/src/webservice/jcxgen-tests/build.xml
beehive/trunk/system-controls/test/src/webservice/schemas/DocumentLiteralWrappedSample.wsdl
beehive/trunk/system-controls/test/src/webservice/servers/webapp/WEB-INF/src/web/Service.jws
beehive/trunk/system-controls/test/src/webservice/servers/webapp/WEB-INF/webservices/web/complex/DocumentLiteralWrappedSample.java
beehive/trunk/system-controls/test/src/webservice/tests/org/apache/beehive/controls/system/webservice/units/dlwservice/DocLitWrapWebServiceTest.java
beehive/trunk/wsm/src/axis/org/apache/beehive/wsm/axis/ServiceDescriptionFactory.java
beehive/trunk/wsm/test/build.xml
beehive/trunk/wsm/test/src/junit-server/org/apache/beehive/wsm/test/controls/SimpleControlsTest.java
Modified: beehive/trunk/system-controls/test/src/webservice/build.xml
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/test/src/webservice/build.xml?rev=354746&r1=354745&r2=354746&view=diff
==============================================================================
--- beehive/trunk/system-controls/test/src/webservice/build.xml (original)
+++ beehive/trunk/system-controls/test/src/webservice/build.xml Tue Dec 6 23:24:25 2005
@@ -90,8 +90,8 @@
<formatter type="plain"/>
<batchtest filtertrace="off" todir="${log.dir}">
<fileset dir="${junit-source.dir}">
-<!-- <include name="**/SanityTest.java"/> -->
-<include name="**/SoapMarshallingRpcLitArrayTypesTest.java"/>
+<!-- <include name="**/SanityTest.java"/> -->
+ <include name="**/SoapMarshallingRpcLitArrayTypesTest.java"/>
</fileset>
</batchtest>
</junit>
@@ -351,7 +351,6 @@
<mkdir dir="${webapp.build.dir}"/>
<mkdir dir="${log.dir}"/>
</target>
-
<!-- ================================================================ -->
<!-- -->
Modified: beehive/trunk/system-controls/test/src/webservice/jcxgen-tests/build.xml
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/test/src/webservice/jcxgen-tests/build.xml?rev=354746&r1=354745&r2=354746&view=diff
==============================================================================
--- beehive/trunk/system-controls/test/src/webservice/jcxgen-tests/build.xml (original)
+++ beehive/trunk/system-controls/test/src/webservice/jcxgen-tests/build.xml Tue Dec 6 23:24:25 2005
@@ -1,4 +1,22 @@
<?xml version="1.0" ?>
+
+<!--
+ Copyright 2004 The Apache Software Foundation.
+
+ Licensed 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.
+
+ $Header:$
+-->
<project name="Beehive/ServiceControl DRT For JCX Generation" default="drt" basedir=".">
<property environment="os"/>
@@ -102,7 +120,6 @@
<!-- generate_jcxs - Generate webservice controls from wsdls -->
<!-- =================================================================== -->
<target name="generate_jcxs" depends="gen_xmlbeans">
-
<taskdef name="scgen"
classname="org.apache.beehive.controls.system.webservice.generator.ServiceControlGeneratorTask"
Modified: beehive/trunk/system-controls/test/src/webservice/schemas/DocumentLiteralWrappedSample.wsdl
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/test/src/webservice/schemas/DocumentLiteralWrappedSample.wsdl?rev=354746&r1=354745&r2=354746&view=diff
==============================================================================
--- beehive/trunk/system-controls/test/src/webservice/schemas/DocumentLiteralWrappedSample.wsdl (original)
+++ beehive/trunk/system-controls/test/src/webservice/schemas/DocumentLiteralWrappedSample.wsdl Tue Dec 6 23:24:25 2005
@@ -54,15 +54,12 @@
</complexType>
</element>
<element name="createAddressInBody">
- <complexType>
- <sequence/>
- </complexType>
+ <complexType/>
</element>
<element name="createAddressInBodyResponse">
<complexType>
<sequence>
- <element name="ReturnCreateAddressInBodyResult" type="xsd:int"/>
- <element name="out_param_body" type="impl:Address"/>
+ <element name="ReturnCreateAddressInBodyResult" type="impl:Address"/>
</sequence>
</complexType>
</element>
@@ -89,8 +86,7 @@
<element name="changeAddressInBodyResponse">
<complexType>
<sequence>
- <element name="ChangeAddressInBodyResult" type="xsd:int"/>
- <element name="inout_param_body" type="impl:Address"/>
+ <element name="ChangeAddressInBodyResult" type="impl:Address"/>
</sequence>
</complexType>
</element>
Modified: beehive/trunk/system-controls/test/src/webservice/servers/webapp/WEB-INF/src/web/Service.jws
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/test/src/webservice/servers/webapp/WEB-INF/src/web/Service.jws?rev=354746&r1=354745&r2=354746&view=diff
==============================================================================
--- beehive/trunk/system-controls/test/src/webservice/servers/webapp/WEB-INF/src/web/Service.jws (original)
+++ beehive/trunk/system-controls/test/src/webservice/servers/webapp/WEB-INF/src/web/Service.jws Tue Dec 6 23:24:25 2005
@@ -33,16 +33,15 @@
import org.apache.beehive.sample.AddressBookImpl;
@WebService(targetNamespace="http://controlhaus.org/ServiceControlTestServer", serviceName="ServiceControlTest")
-//@SOAPBinding( style = SOAPBinding.Style.RPC, use = SOAPBinding.Use.ENCODED)
public class Service {
- AddressBook addressBook;
+ private AddressBook _addressBook;
/**
* Constructor.
*/
public Service() {
- addressBook = new AddressBookImpl();
+ _addressBook = new AddressBookImpl();
}
/**
@@ -53,7 +52,7 @@
@WebMethod
public void addEntry(String name, Address address) throws RemoteException {
try {
- addressBook.addEntry(name, address);
+ _addressBook.addEntry(name, address);
} catch (InvalidNameException e) {
throw new RemoteException("Invalid name: " +name , e);
}
@@ -76,7 +75,7 @@
return result;
}
if(0 == "bob".compareTo(name)) throw new RemoteException( "Invalid name", new InvalidNameException("Bob is invalid name!"));
- return addressBook.getAddressFromName(name);
+ return _addressBook.getAddressFromName(name);
} catch (InvalidNameException e) {
throw new RemoteException("Invalid name: " +name , e);
}
@@ -88,16 +87,16 @@
if(null == name) return null;
Address[] result = new Address[name.length];
for(int i=0; i< name.length; i++) {
- result[i] = addressBook.getAddressFromName(name[i]);
+ result[i] = _addressBook.getAddressFromName(name[i]);
}
return result;
} catch (InvalidNameException e) {
throw new RemoteException("Invalid name: " +name , e);
}
}
-
+ /*
@WebMethod
- public int FindClosestName(@WebParam( mode=WebParam.Mode.INOUT) StringHolder name) {
+ public int FindClosestName(@WebParam(mode=WebParam.Mode.INOUT) StringHolder name) {
System.out.println("Find the closest name for: " + name.value);
int res = 0;
if(name == null) {
@@ -110,6 +109,7 @@
}
return res;
}
+ */
@WebMethod
Modified: beehive/trunk/system-controls/test/src/webservice/servers/webapp/WEB-INF/webservices/web/complex/DocumentLiteralWrappedSample.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/test/src/webservice/servers/webapp/WEB-INF/webservices/web/complex/DocumentLiteralWrappedSample.java?rev=354746&r1=354745&r2=354746&view=diff
==============================================================================
--- beehive/trunk/system-controls/test/src/webservice/servers/webapp/WEB-INF/webservices/web/complex/DocumentLiteralWrappedSample.java (original)
+++ beehive/trunk/system-controls/test/src/webservice/servers/webapp/WEB-INF/webservices/web/complex/DocumentLiteralWrappedSample.java Tue Dec 6 23:24:25 2005
@@ -70,12 +70,11 @@
*/
@WebMethod
@WebResult(name="ReturnCreateAddressInBodyResult")
- public int createAddressInBody(@WebParam(name="out_param_body", mode=WebParam.Mode.OUT) AddressHolder addressHolder) {
+ public Address createAddressInBody() {
StateType state = new StateType("WA");
Phone phoneNumber = new Phone(425, "555", "1234");
Address address = new Address(10230, "NE Points Drive", "Kirkland", state, 98008, phoneNumber);
- addressHolder.value = address;
- return 22;
+ return address;
}
/**
@@ -100,10 +99,9 @@
*/
@WebMethod
@WebResult(name="ChangeAddressInBodyResult")
- public int changeAddressInBody(@WebParam(name="inout_param_body", mode=WebParam.Mode.INOUT) AddressHolder addressHolder) {
- Address address = addressHolder.value;
+ public Address changeAddressInBody(@WebParam(name="inout_param_body")Address address) {
address.setZip(address.getZip() + 1);
- return 6;
+ return address;
}
/**
Modified: beehive/trunk/system-controls/test/src/webservice/tests/org/apache/beehive/controls/system/webservice/units/dlwservice/DocLitWrapWebServiceTest.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/test/src/webservice/tests/org/apache/beehive/controls/system/webservice/units/dlwservice/DocLitWrapWebServiceTest.java?rev=354746&r1=354745&r2=354746&view=diff
==============================================================================
--- beehive/trunk/system-controls/test/src/webservice/tests/org/apache/beehive/controls/system/webservice/units/dlwservice/DocLitWrapWebServiceTest.java (original)
+++ beehive/trunk/system-controls/test/src/webservice/tests/org/apache/beehive/controls/system/webservice/units/dlwservice/DocLitWrapWebServiceTest.java Tue Dec 6 23:24:25 2005
@@ -17,6 +17,8 @@
*/
package org.apache.beehive.controls.system.webservice.units.dlwservice;
+import javax.xml.rpc.holders.IntHolder;
+
import junit.framework.Test;
import junit.framework.TestSuite;
import org.apache.beehive.controls.api.bean.Control;
@@ -25,8 +27,6 @@
import org.apache.log4j.Logger;
import test.DocumentLiteralWrappedSampleService;
-import javax.xml.rpc.holders.IntHolder;
-
public class DocLitWrapWebServiceTest extends ControlTestCase {
private static Logger logger = Logger.getLogger(DocLitWrapWebServiceTest.class);
@@ -99,17 +99,8 @@
assertTrue(phoneResult.isNilNumber());
}
-
public void testCreateAddressInBody() throws Exception {
- web.complex.Address addr = web.complex.Address.Factory.newInstance();
- GenericHolder gHolder = new GenericHolder(addr);
- IntHolder iHolder = new IntHolder();
-
- client.createAddressInBody(gHolder, iHolder);
-
- assertEquals(22, iHolder.value);
-
- addr = (web.complex.Address) gHolder.value;
+ web.complex.Address addr = client.createAddressInBody();
assertEquals("WA", addr.getState().getState());
assertEquals(425, addr.getPhoneNumber().getAreaCode());
assertEquals("555", addr.getPhoneNumber().getExchange());
@@ -120,8 +111,6 @@
assertEquals(98008, addr.getZip());
}
-
-
public void testCreateAddressInHeader() throws Exception {
web.complex.Address addr = web.complex.Address.Factory.newInstance();
GenericHolder gHolder = new GenericHolder(addr);
@@ -142,18 +131,12 @@
assertEquals(98008, addr.getZip());
}
-
-
public void testChangeAddressInBody() throws Exception {
web.complex.Address addr = web.complex.Address.Factory.newInstance();
addr.setCity("Boulder");
addr.setZip(66666);
- GenericHolder gHolder = new GenericHolder(addr);
- int result = client.changeAddressInBody(gHolder);
-
- assertEquals(6, result);
- web.complex.Address returnAddr = (web.complex.Address) gHolder.value;
+ web.complex.Address returnAddr = client.changeAddressInBody(addr);
assertEquals(addr.getCity(), returnAddr.getCity());
assertEquals(addr.getZip() + 1, returnAddr.getZip());
}
Modified: beehive/trunk/wsm/src/axis/org/apache/beehive/wsm/axis/ServiceDescriptionFactory.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/wsm/src/axis/org/apache/beehive/wsm/axis/ServiceDescriptionFactory.java?rev=354746&r1=354745&r2=354746&view=diff
==============================================================================
--- beehive/trunk/wsm/src/axis/org/apache/beehive/wsm/axis/ServiceDescriptionFactory.java (original)
+++ beehive/trunk/wsm/src/axis/org/apache/beehive/wsm/axis/ServiceDescriptionFactory.java Tue Dec 6 23:24:25 2005
@@ -61,9 +61,9 @@
import org.apache.beehive.wsm.model.BeehiveWsParameterMetadata;
import org.apache.beehive.wsm.model.BeehiveWsSOAPBindingInfo;
import org.apache.beehive.wsm.model.BeehiveWsTypeMetadata;
-import org.apache.beehive.wsm.registration.TypeRegistrar;
import org.apache.beehive.wsm.exception.InvalidTypeMappingException;
import org.apache.beehive.wsm.util.JavaClassUtils;
+import org.apache.beehive.wsm.util.TypeUtils;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.logging.Log;
import org.apache.xmlbeans.XmlBeans;
@@ -394,7 +394,7 @@
/* todo: may need to register the holder type also? */
if(Holder.class.isAssignableFrom(type))
- type = TypeRegistrar.getHoldersValueClass(type);
+ type = TypeUtils.getHolderValueClass(type);
/* the type needs to be registered */
TypeMapping tm = desc.getTypeMapping();
Added: beehive/trunk/wsm/src/core/org/apache/beehive/wsm/processor/generator/jaxrpc/JaxRpcResourceGenerator.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/wsm/src/core/org/apache/beehive/wsm/processor/generator/jaxrpc/JaxRpcResourceGenerator.java?rev=354746&view=auto
==============================================================================
--- beehive/trunk/wsm/src/core/org/apache/beehive/wsm/processor/generator/jaxrpc/JaxRpcResourceGenerator.java (added)
+++ beehive/trunk/wsm/src/core/org/apache/beehive/wsm/processor/generator/jaxrpc/JaxRpcResourceGenerator.java Tue Dec 6 23:24:25 2005
@@ -0,0 +1,50 @@
+/**
+ Copyright 2004 The Apache Software Foundation.
+
+ Licensed 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.
+
+ $Header:$
+ */
+package org.apache.beehive.wsm.processor.generator.jaxrpc;
+
+import org.apache.beehive.wsm.processor.generator.WsmResourceGenerator;
+import org.apache.beehive.wsm.processor.generator.AxisGenerator;
+import com.sun.mirror.apt.AnnotationProcessorEnvironment;
+import com.sun.mirror.declaration.TypeDeclaration;
+
+/**
+ *
+ */
+public class JaxRpcResourceGenerator
+ extends WsmResourceGenerator {
+
+ public static WsmResourceGenerator getInstance() {
+ return new JaxRpcResourceGenerator();
+ }
+
+ private JaxRpcResourceGenerator() {
+ }
+
+ /*
+ serviceEndpoint interface generation should be performed in implementations of this base class
+ depending on the service's target execution environment
+ */
+ public void generate(AnnotationProcessorEnvironment env, TypeDeclaration typeDeclaration) {
+
+ /* generate Service Endpoint Interface */
+
+ /* generate webservices.xml */
+
+ /* generate <service>.wsdl file */
+ }
+}
Propchange: beehive/trunk/wsm/src/core/org/apache/beehive/wsm/processor/generator/jaxrpc/JaxRpcResourceGenerator.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: beehive/trunk/wsm/src/core/org/apache/beehive/wsm/util/TypeUtils.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/wsm/src/core/org/apache/beehive/wsm/util/TypeUtils.java?rev=354746&view=auto
==============================================================================
--- beehive/trunk/wsm/src/core/org/apache/beehive/wsm/util/TypeUtils.java (added)
+++ beehive/trunk/wsm/src/core/org/apache/beehive/wsm/util/TypeUtils.java Tue Dec 6 23:24:25 2005
@@ -0,0 +1,68 @@
+/**
+ Copyright 2004 The Apache Software Foundation.
+
+ Licensed 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.
+
+ $Header:$
+ */
+package org.apache.beehive.wsm.util;
+
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.lang.reflect.GenericArrayType;
+import java.lang.reflect.Array;
+import java.lang.reflect.Field;
+
+import javax.xml.rpc.holders.Holder;
+
+import org.apache.beehive.wsm.databinding.GenericHolder;
+
+/**
+ *
+ */
+public final class TypeUtils {
+
+ private TypeUtils() {
+ }
+
+ public static Class getHolderValueClass(Type holderClass) {
+ Class res = null;
+
+ if(holderClass instanceof ParameterizedType) {
+ ParameterizedType pt = (ParameterizedType)holderClass;
+ Type raw = pt.getRawType();
+
+ if(GenericHolder.class.isAssignableFrom((Class)raw)) {
+ Type[] typeArgs = pt.getActualTypeArguments();
+ if(typeArgs[0] instanceof GenericArrayType) {
+ Class arrayElementType = (Class)((GenericArrayType)typeArgs[0]).getGenericComponentType();
+ res = Array.newInstance(arrayElementType, 0).getClass();
+ }
+ else res = (Class)typeArgs[0];
+ }
+ else throw new RuntimeException("Invalid parameterized type for holder: " + holderClass);
+ }
+ else if(holderClass instanceof Class) {
+ if(Holder.class.isAssignableFrom((Class)holderClass)) {
+ Field[] publicFields = ((Class)holderClass).getFields();
+ for(int i = 0; i < publicFields.length; i++) {
+ if(publicFields[i].getName().equals("value"))
+ return publicFields[i].getType();
+ }
+ }
+ else throw new RuntimeException("Invalid class. Type: " + holderClass + " is not a holder.");
+ }
+
+ return res;
+ }
+}
Propchange: beehive/trunk/wsm/src/core/org/apache/beehive/wsm/util/TypeUtils.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: beehive/trunk/wsm/test/build.xml
URL: http://svn.apache.org/viewcvs/beehive/trunk/wsm/test/build.xml?rev=354746&r1=354745&r2=354746&view=diff
==============================================================================
--- beehive/trunk/wsm/test/build.xml (original)
+++ beehive/trunk/wsm/test/build.xml Tue Dec 6 23:24:25 2005
@@ -62,6 +62,7 @@
<pathelement location="../build/jars/beehive-wsm.jar"/>
<pathelement location="../build/jars/beehive-wsm-axis.jar"/>
<fileset dir="${axis.lib.dir}" includes="*.jar"/>
+ <pathelement location="${webapp.dir}/WEB-INF/classes"/>
</path>
<target name="usage">
Modified: beehive/trunk/wsm/test/src/junit-server/org/apache/beehive/wsm/test/controls/SimpleControlsTest.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/wsm/test/src/junit-server/org/apache/beehive/wsm/test/controls/SimpleControlsTest.java?rev=354746&r1=354745&r2=354746&view=diff
==============================================================================
--- beehive/trunk/wsm/test/src/junit-server/org/apache/beehive/wsm/test/controls/SimpleControlsTest.java (original)
+++ beehive/trunk/wsm/test/src/junit-server/org/apache/beehive/wsm/test/controls/SimpleControlsTest.java Tue Dec 6 23:24:25 2005
@@ -46,11 +46,11 @@
Service service = new Service();
Call call = (Call)service.createCall();
- call.setTargetEndpointAddress(new java.net.URL(endpoint));
- call.setOperationName(new QName("http://soapinterop.org/", "sayHello"));
-
- String ret = (String)call.invoke(new Object[] {"Homer"});
- System.out.println("ret: " + ret);
- assertEquals("Hello, Homer", ret);
+ call.setTargetEndpointAddress(new java.net.URL(endpoint));
+ call.setOperationName(new QName("http://soapinterop.org/", "sayHello"));
+
+ String ret = (String)call.invoke(new Object[] {"Homer"});
+ System.out.println("ret: " + ret);
+ assertEquals("Hello, Homer", ret);
}
}
Added: beehive/trunk/wsm/test/src/junit-server/org/apache/beehive/wsm/test/misc/HeaderParamTest.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/wsm/test/src/junit-server/org/apache/beehive/wsm/test/misc/HeaderParamTest.java?rev=354746&view=auto
==============================================================================
--- beehive/trunk/wsm/test/src/junit-server/org/apache/beehive/wsm/test/misc/HeaderParamTest.java (added)
+++ beehive/trunk/wsm/test/src/junit-server/org/apache/beehive/wsm/test/misc/HeaderParamTest.java Tue Dec 6 23:24:25 2005
@@ -0,0 +1,159 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed 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.beehive.wsm.test.misc;
+
+import java.net.URL;
+import java.util.List;
+import java.util.ArrayList;
+import javax.xml.rpc.Call;
+import javax.xml.rpc.Service;
+import javax.xml.rpc.ServiceFactory;
+import javax.xml.rpc.ParameterMode;
+import javax.xml.rpc.handler.HandlerInfo;
+import javax.xml.namespace.QName;
+
+import junit.framework.TestCase;
+
+import org.apache.axis.encoding.ser.BeanSerializerFactory;
+import org.apache.axis.encoding.ser.BeanDeserializerFactory;
+
+import org.apache.beehive.wsm.test.headers.NameHeader;
+
+/**
+ *
+ */
+public class HeaderParamTest
+ extends TestCase {
+
+ private String echoServiceWsdl = "http://localhost:8080/wsmWeb/webservice/HeaderService.jws";
+ private String serviceName = "HeaderServiceService";
+ private String namespaceUri = "";
+
+ public void testSimpleInParam()
+ throws Exception {
+ Service axisService = new org.apache.axis.client.Service();
+ org.apache.axis.client.Call axisCall = (org.apache.axis.client.Call)axisService.createCall();
+ axisCall.setTargetEndpointAddress(new URL(echoServiceWsdl));
+ axisCall.setOperationName(new QName(namespaceUri, "simpleInParam"));
+ axisCall.addParameterAsHeader(new QName("http://webservice", "headerParam"),
+ new QName("http://www.w3.org/2001/XMLSchema", "int"),
+ ParameterMode.IN,
+ ParameterMode.IN);
+ Object axisRet = axisCall.invoke(new Object[] {new Integer(42)});
+ assertNull(axisRet);
+ }
+
+ public void testSimpleInOutParam()
+ throws Exception {
+ Service axisService = new org.apache.axis.client.Service();
+ org.apache.axis.client.Call axisCall = (org.apache.axis.client.Call)axisService.createCall();
+ axisCall.setTargetEndpointAddress(new URL(echoServiceWsdl));
+ axisCall.setOperationName(new QName(namespaceUri, "simpleInOutParam"));
+ axisCall.addParameterAsHeader(new QName("http://webservice", "headerParam"),
+ new QName("http://www.w3.org/2001/XMLSchema", "int"),
+ ParameterMode.INOUT,
+ ParameterMode.INOUT);
+ Object axisRet = axisCall.invoke(new Object[] {new Integer(42)});
+ assertEquals(43, ((Integer)axisRet).intValue());
+ }
+
+ public void testSimpleOutParam()
+ throws Exception {
+ Service axisService = new org.apache.axis.client.Service();
+ org.apache.axis.client.Call axisCall = (org.apache.axis.client.Call)axisService.createCall();
+ axisCall.setTargetEndpointAddress(new URL(echoServiceWsdl));
+ axisCall.setOperationName(new QName(namespaceUri, "simpleOutParam"));
+ axisCall.addParameterAsHeader(new QName("http://webservice", "headerParam"),
+ new QName("http://www.w3.org/2001/XMLSchema", "int"),
+ ParameterMode.OUT,
+ ParameterMode.OUT);
+ Object axisRet = axisCall.invoke(new Object[0]);
+ assertEquals(1234, ((Integer)axisRet).intValue());
+ }
+
+ public void testOnewayInParam()
+ throws Exception {
+ Service axisService = new org.apache.axis.client.Service();
+ org.apache.axis.client.Call axisCall = (org.apache.axis.client.Call)axisService.createCall();
+ axisCall.setTargetEndpointAddress(new URL(echoServiceWsdl));
+ axisCall.setOperationName(new QName(namespaceUri, "onewayInParam"));
+ axisCall.addParameterAsHeader(new QName("http://webservice", "headerParam"),
+ new QName("http://www.w3.org/2001/XMLSchema", "int"),
+ ParameterMode.IN,
+ ParameterMode.IN);
+ Object axisRet = axisCall.invoke(new Object[] {new Integer(42)});
+ assertNull(axisRet);
+ }
+
+ public void testComplexInParam()
+ throws Exception {
+ QName nameHeaderQName = new QName("http://webservice", "nameHeader");
+ Service axisService = new org.apache.axis.client.Service();
+ org.apache.axis.client.Call axisCall = (org.apache.axis.client.Call)axisService.createCall();
+ axisCall.setTargetEndpointAddress(new URL(echoServiceWsdl));
+ axisCall.setOperationName(new QName(namespaceUri, "complexInParam"));
+ axisCall.getTypeMapping().register(NameHeader.class,
+ nameHeaderQName,
+ new BeanSerializerFactory(NameHeader.class, nameHeaderQName),
+ new BeanDeserializerFactory(NameHeader.class, nameHeaderQName));
+ axisCall.addParameterAsHeader(new QName("http://webservice", "nameHeader"),
+ new QName("http://webservice", "nameHeader"),
+ ParameterMode.IN,
+ ParameterMode.IN);
+ Object axisRet = axisCall.invoke(new Object[] {new NameHeader("Homer")});
+ assertNull(axisRet);
+ }
+
+ public void testComplexInOutparam()
+ throws Exception {
+ QName nameHeaderQName = new QName("http://webservice", "nameHeader");
+ Service axisService = new org.apache.axis.client.Service();
+ org.apache.axis.client.Call axisCall = (org.apache.axis.client.Call)axisService.createCall();
+ axisCall.setTargetEndpointAddress(new URL(echoServiceWsdl));
+ axisCall.setOperationName(new QName(namespaceUri, "complexInOutParam"));
+ axisCall.getTypeMapping().register(NameHeader.class,
+ nameHeaderQName,
+ new BeanSerializerFactory(NameHeader.class, nameHeaderQName),
+ new BeanDeserializerFactory(NameHeader.class, nameHeaderQName));
+ axisCall.addParameterAsHeader(new QName("http://webservice", "nameHeader"),
+ new QName("http://webservice", "nameHeader"),
+ ParameterMode.INOUT,
+ ParameterMode.INOUT);
+ Object axisRet = axisCall.invoke(new Object[] {new NameHeader("Homer")});
+ assertTrue(axisRet instanceof NameHeader);
+ assertEquals("Homer--INOUT", ((NameHeader)axisRet).getName());
+ }
+ /*
+ public void testComplexOutparam()
+ throws Exception {
+ QName nameHeaderQName = new QName("http://webservice", "nameHeader");
+ Service axisService = new org.apache.axis.client.Service();
+ org.apache.axis.client.Call axisCall = (org.apache.axis.client.Call)axisService.createCall();
+ axisCall.setTargetEndpointAddress(new URL(echoServiceWsdl));
+ axisCall.setOperationName(new QName(namespaceUri, "complexOutParam"));
+ axisCall.getTypeMapping().register(NameHeader.class,
+ nameHeaderQName,
+ new BeanSerializerFactory(NameHeader.class, nameHeaderQName),
+ new BeanDeserializerFactory(NameHeader.class, nameHeaderQName));
+ axisCall.addParameterAsHeader(nameHeaderQName,
+ nameHeaderQName,
+ ParameterMode.OUT,
+ ParameterMode.OUT);
+ Object axisRet = axisCall.invoke(new Object[0]);
+ System.out.println("axisRet: " + axisRet);
+ }
+ */
+}
Propchange: beehive/trunk/wsm/test/src/junit-server/org/apache/beehive/wsm/test/misc/HeaderParamTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: beehive/trunk/wsm/test/webapp/src/org/apache/beehive/wsm/test/headers/NameHeader.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/wsm/test/webapp/src/org/apache/beehive/wsm/test/headers/NameHeader.java?rev=354746&view=auto
==============================================================================
--- beehive/trunk/wsm/test/webapp/src/org/apache/beehive/wsm/test/headers/NameHeader.java (added)
+++ beehive/trunk/wsm/test/webapp/src/org/apache/beehive/wsm/test/headers/NameHeader.java Tue Dec 6 23:24:25 2005
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed 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.beehive.wsm.test.headers;
+
+public class NameHeader {
+
+ private String _name;
+
+ public NameHeader() {
+ }
+
+ public NameHeader(String name) {
+ _name = name;
+ }
+
+ public void setName(String name) {
+ _name = name;
+ }
+
+ public String getName() {
+ return _name;
+ }
+
+ public String toString() {
+ return "NameHeader: " + _name;
+ }
+}
\ No newline at end of file
Propchange: beehive/trunk/wsm/test/webapp/src/org/apache/beehive/wsm/test/headers/NameHeader.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: beehive/trunk/wsm/test/webapp/src/org/apache/beehive/wsm/test/holders/NameHeaderHolder.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/wsm/test/webapp/src/org/apache/beehive/wsm/test/holders/NameHeaderHolder.java?rev=354746&view=auto
==============================================================================
--- beehive/trunk/wsm/test/webapp/src/org/apache/beehive/wsm/test/holders/NameHeaderHolder.java (added)
+++ beehive/trunk/wsm/test/webapp/src/org/apache/beehive/wsm/test/holders/NameHeaderHolder.java Tue Dec 6 23:24:25 2005
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed 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.beehive.wsm.test.holders;
+
+import javax.xml.rpc.holders.Holder;
+
+import org.apache.beehive.wsm.test.headers.NameHeader;
+
+/**
+ *
+ */
+public class NameHeaderHolder
+ implements Holder {
+
+ public NameHeader value;
+}
Propchange: beehive/trunk/wsm/test/webapp/src/org/apache/beehive/wsm/test/holders/NameHeaderHolder.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: beehive/trunk/wsm/test/webapp/src/webservice/HeaderService.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/wsm/test/webapp/src/webservice/HeaderService.java?rev=354746&view=auto
==============================================================================
--- beehive/trunk/wsm/test/webapp/src/webservice/HeaderService.java (added)
+++ beehive/trunk/wsm/test/webapp/src/webservice/HeaderService.java Tue Dec 6 23:24:25 2005
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed 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 webservice;
+
+import javax.jws.Oneway;
+import javax.jws.WebMethod;
+import javax.jws.WebParam;
+import javax.jws.WebService;
+import javax.xml.rpc.holders.IntHolder;
+
+import org.apache.beehive.wsm.test.headers.NameHeader;
+import org.apache.beehive.wsm.test.holders.NameHeaderHolder;
+
+@WebService
+public class HeaderService {
+
+ @WebMethod
+ public void simpleInParam(@WebParam(header=true)int headerParam) {
+ if(headerParam != 42)
+ throw new IllegalArgumentException("Received invalid header argument \"" + headerParam + "\" when expecting value 42");
+ }
+
+ @WebMethod
+ public void simpleInOutParam(@WebParam(mode=WebParam.Mode.INOUT, header=true)IntHolder headerParam) {
+ headerParam.value++;
+ }
+
+ @WebMethod
+ public void simpleOutParam(@WebParam(mode=WebParam.Mode.OUT, header=true)IntHolder headerParam) {
+ headerParam.value = 1234;
+ }
+
+ @Oneway
+ @WebMethod
+ public void onewayInParam(@WebParam(header=true)int headerParam) {
+ if(headerParam != 42)
+ throw new IllegalArgumentException("Received invalid header argument \"" + headerParam + "\" when expecting value 42");
+ }
+
+ /*
+ note, @Oneway does not support either INOUT or OUT parameters
+ */
+
+ @WebMethod
+ public void complexInParam(@WebParam(header=true)NameHeader nameHeader) {
+ if(!nameHeader.getName().equals("Homer"))
+ throw new IllegalArgumentException("Received invald header argument \"" + nameHeader.getName() + "\" when expecting value \"Homer\"");
+ }
+
+ @WebMethod
+ public void complexInOutParam(@WebParam(mode=WebParam.Mode.INOUT, header=true)NameHeaderHolder nameHeader) {
+ if(!nameHeader.value.getName().equals("Homer"))
+ throw new IllegalArgumentException("Received invald header argument \"" + nameHeader.value.getName() + "\" when expecting value \"Homer\"");
+
+ nameHeader.value.setName(nameHeader.value.getName() + "--INOUT");
+ }
+
+ @WebMethod
+ public void complexOutParam(@WebParam(mode=WebParam.Mode.OUT, header=true)NameHeaderHolder nameHeaderHolder) {
+ nameHeaderHolder.value = new NameHeader("Homer--OUT");
+ }
+}
Propchange: beehive/trunk/wsm/test/webapp/src/webservice/HeaderService.java
------------------------------------------------------------------------------
svn:eol-style = native