diff options
Diffstat (limited to 'branches/sca-java-1.5/itest/promotion-interface-missmatch')
10 files changed, 494 insertions, 0 deletions
diff --git a/branches/sca-java-1.5/itest/promotion-interface-missmatch/pom.xml b/branches/sca-java-1.5/itest/promotion-interface-missmatch/pom.xml new file mode 100644 index 0000000000..034895c4fe --- /dev/null +++ b/branches/sca-java-1.5/itest/promotion-interface-missmatch/pom.xml @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<project> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-itest</artifactId> + <version>1.5-SNAPSHOT</version> + <relativePath>../pom.xml</relativePath> + </parent> + <artifactId>itest-promotion-interface-missmatch</artifactId> + <name>Apache Tuscany Test for Missmatched Interfaces During Promotion</name> + + <dependencies> + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-host-embedded</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-implementation-java-runtime</artifactId> + <version>1.5-SNAPSHOT</version> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-binding-ws-axis2</artifactId> + <version>1.5-SNAPSHOT</version> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-host-tomcat</artifactId> + <version>1.5-SNAPSHOT</version> + <scope>runtime</scope> + </dependency> + </dependencies> +</project> diff --git a/branches/sca-java-1.5/itest/promotion-interface-missmatch/src/main/java/com/example/BusinessException.java b/branches/sca-java-1.5/itest/promotion-interface-missmatch/src/main/java/com/example/BusinessException.java new file mode 100644 index 0000000000..764f31b7cd --- /dev/null +++ b/branches/sca-java-1.5/itest/promotion-interface-missmatch/src/main/java/com/example/BusinessException.java @@ -0,0 +1,43 @@ +/* + * 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 com.example; + +public class BusinessException extends Exception { + + private String clientName; + + public BusinessException(String message) { + super(message); + } + + public BusinessException(String message, String clientName) { + super(message); + this.clientName = clientName; + } + + public String getClientName() { + return clientName; + } + + public void setClientName(String clientName) { + this.clientName = clientName; + } + +} + diff --git a/branches/sca-java-1.5/itest/promotion-interface-missmatch/src/main/java/com/example/ExampleClient.java b/branches/sca-java-1.5/itest/promotion-interface-missmatch/src/main/java/com/example/ExampleClient.java new file mode 100644 index 0000000000..0c72b52ed9 --- /dev/null +++ b/branches/sca-java-1.5/itest/promotion-interface-missmatch/src/main/java/com/example/ExampleClient.java @@ -0,0 +1,23 @@ +/* + * 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 com.example; + +public interface ExampleClient { + void runTest(); +} diff --git a/branches/sca-java-1.5/itest/promotion-interface-missmatch/src/main/java/com/example/ExampleClientImpl.java b/branches/sca-java-1.5/itest/promotion-interface-missmatch/src/main/java/com/example/ExampleClientImpl.java new file mode 100644 index 0000000000..d6545b5a23 --- /dev/null +++ b/branches/sca-java-1.5/itest/promotion-interface-missmatch/src/main/java/com/example/ExampleClientImpl.java @@ -0,0 +1,44 @@ +/* + * 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 com.example; + +import org.osoa.sca.annotations.Reference; +import org.osoa.sca.annotations.Scope; +import org.osoa.sca.annotations.Service; + +@Service(ExampleClient.class) +@Scope("COMPOSITE") +public class ExampleClientImpl implements ExampleClient { + + private ExampleService myService; + + @Reference + public void setMyService(ExampleService myService) { + this.myService = myService; + } + + public void runTest() { + try { + Object result = myService.hello("John"); + System.out.println("myService returned " + result.getClass().getName()); + } catch (BusinessException e) { + System.out.println("caught exception from hello(): " + e.getMessage() + " for " + e.getClientName()); + } + } +} diff --git a/branches/sca-java-1.5/itest/promotion-interface-missmatch/src/main/java/com/example/ExampleService.java b/branches/sca-java-1.5/itest/promotion-interface-missmatch/src/main/java/com/example/ExampleService.java new file mode 100644 index 0000000000..30ea559694 --- /dev/null +++ b/branches/sca-java-1.5/itest/promotion-interface-missmatch/src/main/java/com/example/ExampleService.java @@ -0,0 +1,27 @@ +/* + * 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 com.example; + +import org.osoa.sca.annotations.Remotable; + +@Remotable +public interface ExampleService { + + String hello(String name) throws BusinessException; +} diff --git a/branches/sca-java-1.5/itest/promotion-interface-missmatch/src/main/java/com/example/ExampleServiceImpl.java b/branches/sca-java-1.5/itest/promotion-interface-missmatch/src/main/java/com/example/ExampleServiceImpl.java new file mode 100644 index 0000000000..b3b6f033e5 --- /dev/null +++ b/branches/sca-java-1.5/itest/promotion-interface-missmatch/src/main/java/com/example/ExampleServiceImpl.java @@ -0,0 +1,26 @@ +/* + * 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 com.example; + +public class ExampleServiceImpl implements ExampleService { + public String hello(String name) throws BusinessException { + throw new BusinessException("bad news", name); + // return "Hello, " + name; + } +} diff --git a/branches/sca-java-1.5/itest/promotion-interface-missmatch/src/main/resources/example.composite b/branches/sca-java-1.5/itest/promotion-interface-missmatch/src/main/resources/example.composite new file mode 100644 index 0000000000..cddf951d65 --- /dev/null +++ b/branches/sca-java-1.5/itest/promotion-interface-missmatch/src/main/resources/example.composite @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" + targetNamespace="/model/common/" + xmlns:hw="/model/common/" + name="example"> + + <component name="ExampleClientComponent"> + <implementation.java class="com.example.ExampleClientImpl" /> + <reference name="myService" /> + </component> + + <reference name="myService" + promote="ExampleClientComponent/myService"> + <!-- + The following interface definition violates the SCA specification because it + uses has a different namespace ("/model/common/") than the namespace of the + implicit interface.java on the promoted coponent service ("http://example.com"). + The runtime should report an error for this mismatch. + --> + <interface.wsdl interface="/model/common/#wsdl.interface(ExampleServicePortType)" /> + <binding.ws uri="http://localhost:8085/axis2/services/ExampleService" /> + </reference> + + <component name="ExampleComponent"> + <implementation.java class="com.example.ExampleServiceImpl"/> + <service name="ExampleService"> + <interface.wsdl interface="/model/common/#wsdl.interface(ExampleServicePortType)" /> + <binding.ws wsdlElement="/model/common/#wsdl.binding(ExampleServiceSOAP11Binding)" + uri="http://localhost:8085/axis2/services/ExampleService" /> + </service> + </component> +</composite> diff --git a/branches/sca-java-1.5/itest/promotion-interface-missmatch/src/main/resources/wsdl/ExampleService.wsdl b/branches/sca-java-1.5/itest/promotion-interface-missmatch/src/main/resources/wsdl/ExampleService.wsdl new file mode 100644 index 0000000000..a8ccde2e11 --- /dev/null +++ b/branches/sca-java-1.5/itest/promotion-interface-missmatch/src/main/resources/wsdl/ExampleService.wsdl @@ -0,0 +1,133 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<!--definitions + name="EmpFlexFieldService" + targetNamespace="/model/common/" + xmlns="http://schemas.xmlsoap.org/wsdl/" + xmlns:tns="/model/common/" + xmlns:errors="http://xmlns.oracle.com/adf/svc/errors/" + xmlns:types="/model/common/types/" + xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" + --> +<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" + xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" + xmlns:ns0="http://example.com" + xmlns:ns2="/model/common/types/" + xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" + xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" + xmlns:ns1="http://example.com/xsd" + xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" + xmlns:xs="http://www.w3.org/2001/XMLSchema" + xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" + targetNamespace="/model/common/" + xmlns:tns="/model/common/"> + <wsdl:types> + <xs:schema> + <import namespace="/model/common/types/" schemaLocation="ExampleServiceTypes.xsd"/> + </xs:schema> + <xs:schema xmlns:ns="http://example.com" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://example.com"> + <xs:element name="BusinessException"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" name="BusinessException" nillable="true" type="ns1:BusinessException"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:schema> + <xs:schema xmlns:ax21="http://example.com/xsd" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://example.com/xsd"> + <xs:complexType name="BusinessException"> + <xs:complexContent> + <xs:extension base="tns:Exception"> + <xs:sequence/> + </xs:extension> + </xs:complexContent> + </xs:complexType> + </xs:schema> + </wsdl:types> + <wsdl:message name="helloRequest"> + <wsdl:part name="parameters" element="ns2:hello"/> + </wsdl:message> + <wsdl:message name="helloResponse"> + <wsdl:part name="parameters" element="ns2:helloResponse"/> + </wsdl:message> + <wsdl:message name="BusinessException"> + <wsdl:part name="parameters" element="ns0:BusinessException"/> + </wsdl:message> + <wsdl:portType name="ExampleServicePortType"> + <wsdl:operation name="hello"> + <wsdl:input message="tns:helloRequest" wsaw:Action="urn:hello"/> + <wsdl:output message="tns:helloResponse" wsaw:Action="urn:helloResponse"/> + <wsdl:fault message="tns:BusinessException" name="BusinessException" wsaw:Action="urn:helloBusinessException"/> + </wsdl:operation> + </wsdl:portType> + <wsdl:binding name="ExampleServiceSOAP11Binding" type="tns:ExampleServicePortType"> + <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> + <wsdl:operation name="hello"> + <soap:operation soapAction="urn:hello" style="document"/> + <wsdl:input> + <soap:body use="literal"/> + </wsdl:input> + <wsdl:output> + <soap:body use="literal"/> + </wsdl:output> + <wsdl:fault name="BusinessException"> + <soap:fault use="literal" name="BusinessException"/> + </wsdl:fault> + </wsdl:operation> + </wsdl:binding> + <wsdl:binding name="ExampleServiceSOAP12Binding" type="tns:ExampleServicePortType"> + <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> + <wsdl:operation name="hello"> + <soap12:operation soapAction="urn:hello" style="document"/> + <wsdl:input> + <soap12:body use="literal"/> + </wsdl:input> + <wsdl:output> + <soap12:body use="literal"/> + </wsdl:output> + <wsdl:fault name="BusinessException"> + <soap12:fault use="literal" name="BusinessException"/> + </wsdl:fault> + </wsdl:operation> + </wsdl:binding> + <wsdl:binding name="ExampleServiceHttpBinding" type="tns:ExampleServicePortType"> + <http:binding verb="POST"/> + <wsdl:operation name="hello"> + <http:operation location="ExampleService/hello"/> + <wsdl:input> + <mime:content type="text/xml" part="hello"/> + </wsdl:input> + <wsdl:output> + <mime:content type="text/xml" part="hello"/> + </wsdl:output> + </wsdl:operation> + </wsdl:binding> + <wsdl:service name="ExampleService"> + <wsdl:port name="ExampleServiceSOAP11port_http" binding="tns:ExampleServiceSOAP11Binding"> + <soap:address location="http://localhost:8085/axis2/services/ExampleService"/> + </wsdl:port> + <wsdl:port name="ExampleServiceSOAP12port_http" binding="tns:ExampleServiceSOAP12Binding"> + <soap12:address location="http://localhost:8085/axis2/services/ExampleService"/> + </wsdl:port> + <wsdl:port name="ExampleServiceHttpport" binding="tns:ExampleServiceHttpBinding"> + <http:address location="http://localhost:8085/axis2/services/ExampleService"/> + </wsdl:port> + </wsdl:service> +</wsdl:definitions> diff --git a/branches/sca-java-1.5/itest/promotion-interface-missmatch/src/main/resources/wsdl/ExampleServiceTypes.xsd b/branches/sca-java-1.5/itest/promotion-interface-missmatch/src/main/resources/wsdl/ExampleServiceTypes.xsd new file mode 100644 index 0000000000..2caec0f20d --- /dev/null +++ b/branches/sca-java-1.5/itest/promotion-interface-missmatch/src/main/resources/wsdl/ExampleServiceTypes.xsd @@ -0,0 +1,45 @@ +<!-- + * 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. +--> + + <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" + xmlns:ns="/model/common/" + attributeFormDefault="qualified" + elementFormDefault="qualified" + xmlns:tns="/model/common/types/" + targetNamespace="/model/common/types/"> + <xs:complexType name="Exception"> + <xs:sequence> + <xs:element minOccurs="0" name="Exception" nillable="true" type="xs:anyType"/> + </xs:sequence> + </xs:complexType> + <xs:element name="hello"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" name="param0" nillable="true" type="xs:string"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="helloResponse"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" name="return" nillable="true" type="xs:string"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:schema> diff --git a/branches/sca-java-1.5/itest/promotion-interface-missmatch/src/test/java/com/example/ExampleTestCase.java b/branches/sca-java-1.5/itest/promotion-interface-missmatch/src/test/java/com/example/ExampleTestCase.java new file mode 100644 index 0000000000..740af4f43d --- /dev/null +++ b/branches/sca-java-1.5/itest/promotion-interface-missmatch/src/test/java/com/example/ExampleTestCase.java @@ -0,0 +1,44 @@ +/* + * 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 com.example; + +import junit.framework.TestCase; + +import org.apache.tuscany.sca.host.embedded.SCADomain; + +public class ExampleTestCase extends TestCase { + + private SCADomain scaDomain; + private ExampleClient client; + + @Override + protected void setUp() throws Exception { + scaDomain = SCADomain.newInstance("example.composite"); + client = scaDomain.getService(ExampleClient.class, "ExampleClientComponent"); + } + + @Override + protected void tearDown() throws Exception { + scaDomain.close(); + } + + public void test() throws Exception { + client.runTest(); + } +} |