diff options
Diffstat (limited to 'sca-java-1.x/branches/java-post-M1/sca/bindings/binding.celtix/src/test')
4 files changed, 445 insertions, 0 deletions
diff --git a/sca-java-1.x/branches/java-post-M1/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/assembly/WebServiceAssemblyFactoryTestCase.java b/sca-java-1.x/branches/java-post-M1/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/assembly/WebServiceAssemblyFactoryTestCase.java new file mode 100644 index 0000000000..dc6389ef93 --- /dev/null +++ b/sca-java-1.x/branches/java-post-M1/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/assembly/WebServiceAssemblyFactoryTestCase.java @@ -0,0 +1,110 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * 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.tuscany.binding.celtix.assembly; + +import java.net.URL; +import java.util.ArrayList; +import java.util.List; + +import javax.wsdl.Definition; +import javax.wsdl.factory.WSDLFactory; +import javax.wsdl.xml.WSDLReader; + +import junit.framework.TestCase; + +import org.apache.tuscany.binding.celtix.assembly.impl.WebServiceAssemblyFactoryImpl; +import org.apache.tuscany.binding.celtix.assembly.impl.WebServiceBindingImpl; +import org.apache.tuscany.core.loader.WSDLDefinitionRegistry; +import org.apache.tuscany.model.assembly.AssemblyContext; +import org.easymock.EasyMock; + +public class WebServiceAssemblyFactoryTestCase extends TestCase { + + + private void setupMocks(WSDLDefinitionRegistry reg, + List<Definition> wsdlList) { + EasyMock.reset(new Object[] {reg}); + + //FIXME pass the current ResourceLoader + reg.getDefinitionsForNamespace("http://objectweb.org/hello_world_soap_http", null); + EasyMock.expectLastCall().andReturn(wsdlList); + + EasyMock.replay(new Object[] {reg}); + } + + public void testCreate() throws Exception { + WSDLDefinitionRegistry reg = EasyMock.createNiceMock(WSDLDefinitionRegistry.class); + + WebServiceAssemblyFactoryImpl impl = new WebServiceAssemblyFactoryImpl(); + WebServiceBinding bind = impl.createWebServiceBinding(reg); + assertNotNull("Did not create the binding", bind); + assertTrue("bind object wrong class: " + bind.getClass(), + bind instanceof WebServiceBindingImpl); + + assertNull("Should be initialized with null WSDL", bind.getWSDLDefinition()); + assertNull("Should be initialized with null port", bind.getWSDLPort()); + assertNull("Should be initialized with null service", bind.getWSDLService()); + assertNull("Should be initialized with null URI", bind.getURI()); + assertNull("Should be initialized with null TypeHelper", + bind.getTypeHelper()); + assertNull("Should be initialized with null ResourceLoader", + bind.getResourceLoader()); + + bind.setURI("http://objectweb.org/hello_world_soap_http"); + bind.setPortURI("http://objectweb.org/hello_world_soap_http#SoapPort"); + + AssemblyContext modelContext = EasyMock.createNiceMock(AssemblyContext.class); + + WSDLReader reader = WSDLFactory.newInstance().newWSDLReader(); + reader.setFeature("javax.wsdl.verbose", false); + URL url = getClass().getResource("/wsdl/hello_world.wsdl"); + Definition definition = reader.readWSDL(url.toString()); + + List<Definition> wsdlList = new ArrayList<Definition>(); + + setupMocks(reg, wsdlList); + try { + bind.initialize(modelContext); + fail("Should have failed getting the wsdl"); + } catch (IllegalArgumentException ex) { + //expected + } + + setupMocks(reg, wsdlList); + + + wsdlList.add(definition); + bind = impl.createWebServiceBinding(reg); + bind.setURI("http://objectweb.org/hello_world_soap_http"); + bind.setPortURI("http://objectweb.org/hello_world_soap_http#SoapPort"); + bind.initialize(modelContext); + + setupMocks(reg, wsdlList); + + wsdlList.add(definition); + bind = impl.createWebServiceBinding(reg); + bind.setURI("http://objectweb.org/hello_world_soap_http"); + bind.setPortURI("http://objectweb.org/hello_world_soap_http#FooPort"); + + try { + bind.initialize(modelContext); + fail("Should have failed finding the port"); + } catch (IllegalArgumentException ex) { + //expected + } + } +} diff --git a/sca-java-1.x/branches/java-post-M1/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataWriterTestCase.java b/sca-java-1.x/branches/java-post-M1/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataWriterTestCase.java new file mode 100644 index 0000000000..be4d910069 --- /dev/null +++ b/sca-java-1.x/branches/java-post-M1/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataWriterTestCase.java @@ -0,0 +1,103 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * 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.tuscany.binding.celtix.handler.io; + +import java.net.URL; + +import javax.wsdl.Definition; +import javax.wsdl.Port; +import javax.wsdl.factory.WSDLFactory; +import javax.wsdl.xml.WSDLReader; +import javax.xml.namespace.QName; +import javax.xml.parsers.DocumentBuilderFactory; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; + + +import commonj.sdo.helper.TypeHelper; + +import junit.framework.TestCase; + +import org.apache.tuscany.common.resource.impl.ResourceLoaderImpl; +import org.apache.tuscany.sdo.helper.XSDHelperImpl; +import org.apache.tuscany.sdo.util.DataObjectUtil; +import org.apache.tuscany.sdo.util.SDOUtil; +import org.objectweb.celtix.bindings.DataReader; +import org.objectweb.celtix.bindings.DataWriter; +import org.objectweb.celtix.bus.bindings.WSDLMetaDataCache; +import org.objectweb.celtix.context.ObjectMessageContext; +import org.objectweb.celtix.context.ObjectMessageContextImpl; + + + +public class NodeDataWriterTestCase extends TestCase { + + private TypeHelper typeHelper; + + protected void setUp() throws Exception { + super.setUp(); + DataObjectUtil.initRuntime(); + ClassLoader cl = Thread.currentThread().getContextClassLoader(); + try { + Thread.currentThread().setContextClassLoader(getClass().getClassLoader()); + typeHelper = SDOUtil.createTypeHelper(); + URL url = getClass().getResource("/wsdl/hello_world.wsdl"); + new XSDHelperImpl(typeHelper).define(url.openStream(), null); + } finally { + Thread.currentThread().setContextClassLoader(cl); + } + + + } + + public void testWriteWrapper() throws Exception { + WSDLReader wreader = WSDLFactory.newInstance().newWSDLReader(); + wreader.setFeature("javax.wsdl.verbose", false); + URL url = getClass().getResource("/wsdl/hello_world.wsdl"); + Definition definition = wreader.readWSDL(url.toString()); + Port port = definition.getService(new QName("http://objectweb.org/hello_world_soap_http", + "SOAPService")).getPort("SoapPort"); + + WSDLMetaDataCache wsdlCache = new WSDLMetaDataCache(definition, + port); + + + ResourceLoaderImpl loader = new ResourceLoaderImpl(getClass().getClassLoader()); + SCADataBindingCallback callback = new SCADataBindingCallback(wsdlCache.getOperationInfo("greetMe"), + typeHelper, + loader, + false); + + DataWriter<Node> writer = callback.createWriter(Node.class); + Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); + Element element = doc.createElement("ROOT"); + + ObjectMessageContext objCtx = new ObjectMessageContextImpl(); + objCtx.setMessageObjects(new Object[] {"Hello"}); + writer.writeWrapper(objCtx , false, element); + + assertEquals("Value not written", "Hello", element.getFirstChild().getTextContent().trim()); + + DataReader<Node> reader = callback.createReader(Node.class); + reader.readWrapper(objCtx , true, element); + + assertEquals("Hello", objCtx.getReturn()); + } + +} diff --git a/sca-java-1.x/branches/java-post-M1/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/loader/WebServiceBindingLoaderTestCase.java b/sca-java-1.x/branches/java-post-M1/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/loader/WebServiceBindingLoaderTestCase.java new file mode 100644 index 0000000000..a27d866191 --- /dev/null +++ b/sca-java-1.x/branches/java-post-M1/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/loader/WebServiceBindingLoaderTestCase.java @@ -0,0 +1,54 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * 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.tuscany.binding.celtix.loader; + +import javax.xml.stream.XMLStreamReader; + +import junit.framework.TestCase; + +import org.apache.tuscany.core.loader.LoaderContext; +import org.apache.tuscany.core.loader.StAXLoaderRegistry; +import org.apache.tuscany.model.assembly.AssemblyContext; +import org.easymock.EasyMock; + +public class WebServiceBindingLoaderTestCase extends TestCase { + + @SuppressWarnings("deprecation") + public void testLoad() throws Exception { + + WebServiceBindingLoader loader = new WebServiceBindingLoader(); + StAXLoaderRegistry reg = EasyMock.createNiceMock(StAXLoaderRegistry.class); + reg.getContext(); + EasyMock.expectLastCall().andReturn(EasyMock.createNiceMock(AssemblyContext.class)); + EasyMock.replay(reg); + + loader.setRegistry(reg); + + XMLStreamReader reader = EasyMock.createNiceMock(XMLStreamReader.class); + reader.getAttributeValue(null, "uri"); + EasyMock.expectLastCall().andReturn("http://objectweb.org/hello_world_soap_http"); + reader.getAttributeValue(null, "port"); + EasyMock.expectLastCall().andReturn("SoapPort"); + EasyMock.replay(reader); + + LoaderContext loaderContext = new LoaderContext(null); + + assertNotNull("Did not load binding", loader.load(reader, loaderContext)); + + } + +} diff --git a/sca-java-1.x/branches/java-post-M1/sca/bindings/binding.celtix/src/test/resources/wsdl/hello_world.wsdl b/sca-java-1.x/branches/java-post-M1/sca/bindings/binding.celtix/src/test/resources/wsdl/hello_world.wsdl new file mode 100644 index 0000000000..a1d40daf26 --- /dev/null +++ b/sca-java-1.x/branches/java-post-M1/sca/bindings/binding.celtix/src/test/resources/wsdl/hello_world.wsdl @@ -0,0 +1,178 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Copyright (c) 2005 The Apache Software Foundation or its licensors, as applicable. + + 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. + --> +<wsdl:definitions name="HelloWorld" targetNamespace="http://objectweb.org/hello_world_soap_http" + xmlns="http://schemas.xmlsoap.org/wsdl/" + xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" + xmlns:tns="http://objectweb.org/hello_world_soap_http" + xmlns:x1="http://objectweb.org/hello_world_soap_http/types" + xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" + xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <wsdl:types> + <schema targetNamespace="http://objectweb.org/hello_world_soap_http/types" + xmlns="http://www.w3.org/2001/XMLSchema" + xmlns:tns="http://objectweb.org/hello_world_soap_http/types" + elementFormDefault="qualified"> + <simpleType name="MyStringType"> + <restriction base="string"> + <maxLength value="30" /> + </restriction> + </simpleType> + + <element name="sayHi"> + <complexType/> + </element> + <element name="sayHiResponse"> + <complexType> + <sequence> + <element name="responseType" type="string"/> + </sequence> + </complexType> + </element> + <element name="greetMe"> + <complexType> + <sequence> + <element name="requestType" type="tns:MyStringType"/> + </sequence> + </complexType> + </element> + <element name="greetMeResponse"> + <complexType> + <sequence> + <element name="responseType" type="string"/> + </sequence> + </complexType> + </element> + <element name="greetMeOneWay"> + <complexType> + <sequence> + <element name="requestType" type="string"/> + </sequence> + </complexType> + </element> + <element name="pingMe"> + <complexType/> + </element> + <element name="pingMeResponse"> + <complexType/> + </element> + <element name="faultDetail"> + <complexType> + <sequence> + <element name="minor" type="short"/> + <element name="major" type="short"/> + </sequence> + </complexType> + </element> + </schema> + </wsdl:types> + <wsdl:message name="sayHiRequest"> + <wsdl:part element="x1:sayHi" name="in"/> + </wsdl:message> + <wsdl:message name="sayHiResponse"> + <wsdl:part element="x1:sayHiResponse" name="out"/> + </wsdl:message> + <wsdl:message name="greetMeRequest"> + <wsdl:part element="x1:greetMe" name="in"/> + </wsdl:message> + <wsdl:message name="greetMeResponse"> + <wsdl:part element="x1:greetMeResponse" name="out"/> + </wsdl:message> + <wsdl:message name="greetMeOneWayRequest"> + <wsdl:part element="x1:greetMeOneWay" name="in"/> + </wsdl:message> + <wsdl:message name="pingMeRequest"> + <wsdl:part name="in" element="x1:pingMe"/> + </wsdl:message> + <wsdl:message name="pingMeResponse"> + <wsdl:part name="out" element="x1:pingMeResponse"/> + </wsdl:message> + <wsdl:message name="pingMeFault"> + <wsdl:part name="faultDetail" element="x1:faultDetail"/> + </wsdl:message> + + <wsdl:portType name="Greeter"> + <wsdl:operation name="sayHi"> + <wsdl:input message="tns:sayHiRequest" name="sayHiRequest"/> + <wsdl:output message="tns:sayHiResponse" name="sayHiResponse"/> + </wsdl:operation> + + <wsdl:operation name="greetMe"> + <wsdl:input message="tns:greetMeRequest" name="greetMeRequest"/> + <wsdl:output message="tns:greetMeResponse" name="greetMeResponse"/> + </wsdl:operation> + + <wsdl:operation name="greetMeOneWay"> + <wsdl:input message="tns:greetMeOneWayRequest" name="greetMeOneWayRequest"/> + </wsdl:operation> + + <wsdl:operation name="pingMe"> + <wsdl:input name="pingMeRequest" message="tns:pingMeRequest"/> + <wsdl:output name="pingMeResponse" message="tns:pingMeResponse"/> + <wsdl:fault name="pingMeFault" message="tns:pingMeFault"/> + </wsdl:operation> + </wsdl:portType> + <wsdl:binding name="Greeter_SOAPBinding" type="tns:Greeter"> + <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> + + <wsdl:operation name="sayHi"> + <soap:operation soapAction="" style="document"/> + <wsdl:input name="sayHiRequest"> + <soap:body use="literal"/> + </wsdl:input> + <wsdl:output name="sayHiResponse"> + <soap:body use="literal"/> + </wsdl:output> + </wsdl:operation> + + <wsdl:operation name="greetMe"> + <soap:operation soapAction="" style="document"/> + <wsdl:input name="greetMeRequest"> + <soap:body use="literal"/> + </wsdl:input> + <wsdl:output name="greetMeResponse"> + <soap:body use="literal"/> + </wsdl:output> + </wsdl:operation> + + <wsdl:operation name="greetMeOneWay"> + <soap:operation soapAction="" style="document"/> + <wsdl:input name="greetMeOneWayRequest"> + <soap:body use="literal"/> + </wsdl:input> + </wsdl:operation> + + <wsdl:operation name="pingMe"> + <soap:operation style="document"/> + <wsdl:input> + <soap:body use="literal"/> + </wsdl:input> + <wsdl:output> + <soap:body use="literal"/> + </wsdl:output> + <wsdl:fault name="pingMeFault"> + <soap:fault name="pingMeFault" use="literal"/> + </wsdl:fault> + </wsdl:operation> + + </wsdl:binding> + <wsdl:service name="SOAPService"> + <wsdl:port binding="tns:Greeter_SOAPBinding" name="SoapPort"> + <soap:address location="http://localhost:9000/SoapContext/SoapPort"/> + </wsdl:port> + </wsdl:service> +</wsdl:definitions> + |