/* * 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.tuscany.sca.itest.builder; import javax.wsdl.Definition; import javax.wsdl.Port; import javax.xml.namespace.QName; import junit.framework.Assert; import org.apache.tuscany.sca.assembly.Component; import org.apache.tuscany.sca.assembly.ComponentService; import org.apache.tuscany.sca.assembly.Composite; import org.apache.tuscany.sca.binding.ws.WebServiceBinding; import org.junit.After; import org.junit.Before; import org.junit.Test; /** * Load and build some composites and inspect the results. * * @version $Rev$ $Date$ */ public class BuilderTestCase { private CustomCompositeBuilder customBuilder; @Before public void setUp() throws Exception { } @After public void tearDown() throws Exception { } /* OASIS doesn't take notice of top level composite services * // Scenario 1: <binding.ws> on outer composite service CompositeA/Service1 @Ignore @Test public void testScenario1() throws Exception { System.out.println("====>Running testScenario1"); customBuilder = new CustomCompositeBuilder(false); customBuilder.loadContribution("scenario1.composite", "TestContribution", "src/main/resources/scenario1/"); //TestUtils.printResults(customBuilder); TestUtils.checkProblems(customBuilder); checkScenario1Results(false); } @Ignore @Test public void testScenario1NonWiring() throws Exception { System.out.println("====>Running testScenario1NonWiring"); customBuilder = new CustomCompositeBuilder(true); customBuilder.loadContribution("scenario1.composite", "TestContribution", "src/main/resources/scenario1/"); //TestUtils.printResults(customBuilder); TestUtils.checkProblems(customBuilder); checkScenario1Results(true); } private void checkScenario1Results(boolean nonWiring) { Composite domainComposite = customBuilder.getDomainComposite(); Component componentD = TestUtils.getComponent(domainComposite, "ComponentD"); if (!nonWiring) { // Should create component service $promoted$Service1 on innermost component // ComponentD, with <binding.ws> and uri="/Service1" // No other services on ComponentD should have <binding.ws> WebServiceBinding wsBinding = null; for (ComponentService service : componentD.getServices()) { WebServiceBinding wsb = service.getBinding(WebServiceBinding.class); if ("$promoted$Service1".equals(service.getName())) { wsBinding = wsb; } else { assert wsb == null; } } assert "/Service1".equals(wsBinding.getURI()); // Should create WSDL document for ComponentD/$promoted$Service1 with endpoint uri="/Service1" Definition def = wsBinding.getWSDLDocument(); javax.wsdl.Service svc = def.getService(new QName("http://builder.itest.sca.tuscany.apache.org/", "Service3Service")); Port port = svc.getPort("Service3Port"); assert "/Service1".equals(TestUtils.getPortAddress(port)); } else { // Should not create component service $promoted$Service1 on innermost component ComponentD // No component services on ComponentD should have <binding.ws> for (ComponentService service : componentD.getServices()) { assert !"$promoted$Service1".equals(service.getName()); assert service.getBinding(WebServiceBinding.class) == null; } } // No services on ComponentB should have <binding.ws> Component componentB = TestUtils.getComponent(domainComposite, "ComponentB"); for (ComponentService service : componentB.getServices()) { assert service.getBinding(WebServiceBinding.class) == null; } // No services on CompositeC should have <binding.ws> Composite compositeC = TestUtils.getComposite(domainComposite, new QName("http://scenario1", "CompositeC")); for (Service service : compositeC.getServices()) { assert service.getBinding(WebServiceBinding.class) == null; } if (nonWiring) { // Should not add a WSDL document to domain composite service Service1 WebServiceBinding wsBinding = null; for (Service service : domainComposite.getServices()) { if ("Service1".equals(service.getName())) { wsBinding = service.getBinding(WebServiceBinding.class); } } assert wsBinding.getWSDLDocument() == null; } String expectedEndpoints = "Component - ComponentB\n" + "Service - Service2\n" + "Endpoint - Service2\n" + "Service - Service2a\n" + "Endpoint - Service2a\n" + "Reference - reference2\n" + "Component - ComponentB has composite impl\n" + " Component - ComponentD\n" + " Service - Service3\n" + " Endpoint - Service3\n" + " Service - Service3a\n" + " Endpoint - Service3a\n" + " Reference - reference3"; String actualEndpoints = TestUtils.printEndpoints(domainComposite); System.out.println(actualEndpoints); Assert.assertEquals(expectedEndpoints, actualEndpoints); } */ // Scenario 2: <binding.ws> on outer component service ComponentB/Service2 @Test public void testScenario2() throws Exception { System.out.println("====>Running testScenario2"); customBuilder = new CustomCompositeBuilder(false); customBuilder.loadContribution("scenario2.composite", "TestContribution", "src/main/resources/scenario2/"); //TestUtils.printResults(customBuilder); TestUtils.checkProblems(customBuilder); checkScenario2and3Results("http://scenario2", false); } public void testScenario2NonWiring() throws Exception { System.out.println("====>Running testScenario2NonWiring"); customBuilder = new CustomCompositeBuilder(true); customBuilder.loadContribution("scenario2.composite", "TestContribution", "src/main/resources/scenario2/"); //TestUtils.printResults(customBuilder); TestUtils.checkProblems(customBuilder); checkScenario2and3Results("http://scenario2", true); } private void checkScenario2and3Results(String namespace, boolean nonWiring) { Composite domainComposite = customBuilder.getDomainComposite(); // Test that endpoint structure matches expected String structure = TestUtils.printStructure(domainComposite, ""); System.out.println(structure); String expectedStructure = "Component URI - ComponentB\n" + " Component URI - ComponentB/ComponentD\n" + " Endpoint: URI = ComponentB/ComponentD#service-binding(Service3/Service3) org.apache.tuscany.sca.assembly.impl.SCABindingImpl\n" + " Endpoint: URI = ComponentB/ComponentD#service-binding(Service3a/Service3a) org.apache.tuscany.sca.assembly.impl.SCABindingImpl\n" + "Endpoint: URI = ComponentB#service-binding(Service2/Service2) org.apache.tuscany.sca.binding.ws.impl.WebServiceBindingImpl\n" + "Endpoint: URI = ComponentB#service-binding(Service2a/Service3a) org.apache.tuscany.sca.assembly.impl.SCABindingImpl\n"; Assert.assertEquals(expectedStructure, structure); // Test that generated WSDL matches expected // Should create WSDL document for ComponentB/Service2 with endpoint uri="/ComponentB/Service2" // No other services on ComponentB should have <binding.ws> Component componentB = TestUtils.getComponent(domainComposite, "ComponentB"); WebServiceBinding wsBinding = null; for (ComponentService service : componentB.getServices()) { WebServiceBinding wsb = service.getBinding(WebServiceBinding.class); if ("Service2".equals(service.getName())) { wsBinding = wsb; } else { assert wsb == null; } } Definition def = wsBinding.getGeneratedWSDLDocument(); TestUtils.writeWSDL(def); javax.wsdl.Service svc = def.getService(new QName("http://builder.itest.sca.tuscany.apache.org/", "Service2")); Port port = svc.getPort("Service2SOAP11Port"); Assert.assertEquals("/ComponentB/Service2",TestUtils.getPortAddress(port)); } /* // Scenario 3: <binding.ws> on inner composite service CompositeC/Service2 public void testScenario3() throws Exception { System.out.println("====>Running testScenario3"); customBuilder = new CustomCompositeBuilder(false); customBuilder.loadContribution("scenario3.composite", "TestContribution", "src/main/resources/scenario3/"); //TestUtils.printResults(customBuilder); TestUtils.checkProblems(customBuilder); checkScenario2and3Results("http://scenario3", false); } public void testScenario3NonWiring() throws Exception { System.out.println("====>Running testScenario3NonWiring"); customBuilder = new CustomCompositeBuilder(true); customBuilder.loadContribution("scenario3.composite", "TestContribution", "src/main/resources/scenario3/"); //TestUtils.printResults(customBuilder); TestUtils.checkProblems(customBuilder); checkScenario2and3Results("http://scenario3", true); } // Scenario 4: <binding.ws> on inner component service ComponentD/Service3 public void testScenario4() throws Exception { System.out.println("====>Running testScenario4"); customBuilder = new CustomCompositeBuilder(false); customBuilder.loadContribution("scenario4.composite", "TestContribution", "src/main/resources/scenario4/"); //TestUtils.printResults(customBuilder); TestUtils.checkProblems(customBuilder); checkScenario4Results(false); } public void testScenario4NonWiring() throws Exception { System.out.println("====>Running testScenario4NonWiring"); customBuilder = new CustomCompositeBuilder(true); customBuilder.loadContribution("scenario4.composite", "TestContribution", "src/main/resources/scenario4/"); //TestUtils.printResults(customBuilder); TestUtils.checkProblems(customBuilder); checkScenario4Results(true); } private void checkScenario4Results(boolean nonWiring) { Composite domainComposite = customBuilder.getDomainComposite(); // Should create WSDL document for ComponentD/Service3 with endpoint uri="/ComponentD/Service3" Component componentD = TestUtils.getComponent(domainComposite, "ComponentD"); WebServiceBinding wsBinding = null; for (ComponentService service : componentD.getServices()) { if ("Service3".equals(service.getName())) { wsBinding = service.getBinding(WebServiceBinding.class); } } Definition def = wsBinding.getWSDLDocument(); javax.wsdl.Service svc = def.getService(new QName("http://builder.itest.sca.tuscany.apache.org/", "Service3Service")); Port port = svc.getPort("Service3Port"); assert "/ComponentB/ComponentD/Service3".equals(TestUtils.getPortAddress(port)); // Should add <binding.ws> to inner composite service CompositeC/Service2 // No other services on CompositeC should have <binding.ws> Composite compositeC = TestUtils.getComposite(domainComposite, new QName("http://scenario4", "CompositeC")); wsBinding = null; for (Service service : compositeC.getServices()) { WebServiceBinding wsb = service.getBinding(WebServiceBinding.class); if ("Service2".equals(service.getName())) { wsBinding = wsb; } else { assert wsb == null; } } assert "/ComponentB/Service2".equals(wsBinding.getURI()); // Should add <binding.ws> to outer component service ComponentB/Service2 // Should create WSDL document for ComponentB/Service2 with endpoint uri="/ComponentB/Service2" // No other services on ComponentB should have <binding.ws> Component componentB = TestUtils.getComponent(domainComposite, "ComponentB"); wsBinding = null; for (ComponentService service : componentB.getServices()) { WebServiceBinding wsb = service.getBinding(WebServiceBinding.class); if ("Service2".equals(service.getName())) { wsBinding = wsb; } else { assert wsb == null; } } assert "/ComponentB/Service2".equals(wsBinding.getURI()); def = wsBinding.getWSDLDocument(); svc = def.getService(new QName("http://builder.itest.sca.tuscany.apache.org/", "Service3Service")); port = svc.getPort("Service3Port"); assert "/ComponentB/Service2".equals(TestUtils.getPortAddress(port)); if (!nonWiring) { // Should create component service $promoted$ComponentB$slash$Service2 on innermost component // ComponentD, with <binding.ws> and uri="/ComponentB/Service2" wsBinding = null; for (ComponentService service : componentD.getServices()) { if ("$promoted$ComponentB$slash$Service2".equals(service.getName())) { wsBinding = service.getBinding(WebServiceBinding.class); } } assert "/ComponentB/Service2".equals(wsBinding.getURI()); // Should create WSDL document for ComponentD/$promoted$ComponentB$slash$Service2 with endpoint uri="/ComponentB/Service2" def = wsBinding.getWSDLDocument(); svc = def.getService(new QName("http://builder.itest.sca.tuscany.apache.org/", "Service3Service")); port = svc.getPort("Service3Port"); assert "/ComponentB/Service2".equals(TestUtils.getPortAddress(port)); } else { // Should not create component service $promoted$ComponentB$slash$Service2 on innermost component ComponentD for (ComponentService service : componentD.getServices()) { assert !"$promoted$ComponentB$slash$Service2".equals(service.getName()); } } // Should add <binding.ws> to outer composite service CompositeA/Service1 wsBinding = null; for (Service service : domainComposite.getServices()) { if ("Service1".equals(service.getName())) { wsBinding = service.getBinding(WebServiceBinding.class); } } assert wsBinding != null; if (nonWiring) { // Should not add a WSDL document to domain composite service Service1 assert wsBinding.getWSDLDocument() == null; } if (!nonWiring) { // Should create component service $promoted$Service1 on innermost component // ComponentD, with <binding.ws> and uri="/Service1" wsBinding = null; for (ComponentService service : componentD.getServices()) { if ("$promoted$Service1".equals(service.getName())) { wsBinding = service.getBinding(WebServiceBinding.class); } } assert "/Service1".equals(wsBinding.getURI()); // Should create WSDL document for ComponentD/$promoted$Service1 with endpoint uri="/Service1" def = wsBinding.getWSDLDocument(); svc = def.getService(new QName("http://builder.itest.sca.tuscany.apache.org/", "Service3Service")); port = svc.getPort("Service3Port"); assert "/Service1".equals(TestUtils.getPortAddress(port)); } else { // Should not create component service $promoted$.Service1 on innermost component ComponentD for (ComponentService service : componentD.getServices()) { assert !"$promoted$Service1".equals(service.getName()); } } // No services on ComponentD should have <binding.ws>, except for Service3, // $promoted$.Service1 and $promoted$.ComponentB.Service2 for (ComponentService service : componentD.getServices()) { if (!"Service3".equals(service.getName()) && !"$promoted$Service1".equals(service.getName()) && !"$promoted$ComponentB$slash$Service2".equals(service.getName())) { assert service.getBinding(WebServiceBinding.class) == null; } } } // Scenario 5: <binding.ws> and <interface.wsdl> on outer composite reference CompositeA/reference1 @Test public void testScenario5() throws Exception { System.out.println("====>Running testScenario5"); customBuilder = new CustomCompositeBuilder(false); customBuilder.loadContribution("scenario5.composite", "TestContribution", "src/main/resources/scenario5/"); //TestUtils.printResults(customBuilder); TestUtils.checkProblems(customBuilder); checkScenario5Results(false); } @Test public void testScenario5NonWiring() throws Exception { System.out.println("====>Running testScenario5NonWiring"); customBuilder = new CustomCompositeBuilder(true); customBuilder.loadContribution("scenario5.composite", "TestContribution", "src/main/resources/scenario5/"); //TestUtils.printResults(customBuilder); TestUtils.checkProblems(customBuilder); checkScenario5Results(true); } private void checkScenario5Results(boolean nonWiring) { Composite domainComposite = customBuilder.getDomainComposite(); // Should not add <binding.ws> to any outer component references Component componentB = TestUtils.getComponent(domainComposite, "ComponentB"); for (ComponentReference reference : componentB.getReferences()) { assert reference.getBinding(WebServiceBinding.class) == null; } Definition def; javax.wsdl.Service svc; Port port; WebServiceBinding wsBinding; Component componentD = TestUtils.getComponent(domainComposite, "ComponentD"); if (!nonWiring) { // Should add <binding.ws> to inner component reference ComponentD/reference3 with uri="http://foo.com/bar" // Should set <interface.wsdl> on inner component reference ComponentD/reference3 wsBinding = null; for (ComponentReference reference : componentD.getReferences()) { if ("reference3".equals(reference.getName())) { wsBinding = reference.getBinding(WebServiceBinding.class); assert reference.getInterfaceContract(wsBinding) instanceof WSDLInterfaceContract; } } assert "http://foo.com/bar".equals(wsBinding.getURI()); // Should create WSDL document for ComponentD/reference3 with endpoint uri="http://foo.com/bar" def = wsBinding.getWSDLDocument(); svc = def.getService(new QName("http://scenarios/ComponentD/reference3", "Service3aService")); port = svc.getPort("Service3aPort"); assert "http://foo.com/bar".equals(TestUtils.getPortAddress(port)); } else { // Should not add <binding.ws> to any inner component references for (ComponentReference reference : componentD.getReferences()) { assert reference.getBinding(WebServiceBinding.class) == null; } } // Should not add <binding.ws> or <interface.wsdl> to inner composite reference CompositeC/reference2 Composite compositeC = TestUtils.getComposite(domainComposite, new QName("http://scenario5", "CompositeC")); for (Reference reference : compositeC.getReferences()) { assert reference.getBinding(WebServiceBinding.class) == null; assert reference.getInterfaceContract() instanceof JavaInterfaceContract; } String expectedEndpoints = "Component - ComponentB\n" + "Service - Service2\n" + "Endpoint - Service2\n" + "Service - Service2a\n" + "Endpoint - Service2a\n" + "Reference - reference2\n" + "Component - ComponentB has composite impl\n" + " Component - ComponentD\n" + " Service - Service3\n" + " Endpoint - Service3\n" + " Service - Service3a\n" + " Endpoint - Service3a\n" + " Reference - reference3"; String actualEndpoints = TestUtils.printEndpoints(domainComposite); System.out.println(actualEndpoints); Assert.assertEquals(expectedEndpoints, actualEndpoints); } // Scenario 6: <binding.ws> and <interface.wsdl> on outer component reference ComponentB/reference2 @Ignore @Test public void testScenario6() throws Exception { System.out.println("====>Running testScenario6"); customBuilder = new CustomCompositeBuilder(false); customBuilder.loadContribution("scenario6.composite", "TestContribution", "src/main/resources/scenario6/"); //TestUtils.printResults(customBuilder); TestUtils.checkProblems(customBuilder); checkScenario6and7Results("http://scenario6", false); } @Ignore @Test public void testScenario6NonWiring() throws Exception { System.out.println("====>Running testScenario6NonWiring"); customBuilder = new CustomCompositeBuilder(true); customBuilder.loadContribution("scenario6.composite", "TestContribution", "src/main/resources/scenario6/"); //TestUtils.printResults(customBuilder); TestUtils.checkProblems(customBuilder); checkScenario6and7Results("http://scenario6", true); } private void checkScenario6and7Results(String namespace, boolean nonWiring) { Composite domainComposite = customBuilder.getDomainComposite(); // Should remove target= on ComponentB/reference2 (for Scenario 6) or // CompositeC/reference2 (for Scenario 7), and add uri="http://foo.com/bar" // to the <binding.ws> element on ComponentB/reference2 // For nonWiring, ComponentB/reference2 should have target= // and no uri= should be added Component componentB = TestUtils.getComponent(domainComposite, "ComponentB"); WebServiceBinding wsBinding = null; for (ComponentReference reference : componentB.getReferences()) { if ("reference2".equals(reference.getName())) { if (!nonWiring) { assert reference.getTargets().size() == 0; } else { assert reference.getTargets().size() == 1; } wsBinding = reference.getBinding(WebServiceBinding.class); } } if (!nonWiring) { assert "http://foo.com/bar".equals(wsBinding.getURI()); } else { assert wsBinding.getURI() == null; } Definition def; javax.wsdl.Service svc; Port port; if (!nonWiring) { // Should create WSDL document for ComponentB/reference2 with endpoint uri="http://foo.com/bar" def = wsBinding.getWSDLDocument(); svc = def.getService(new QName("http://scenarios/ComponentB/reference2", "Service3aService")); port = svc.getPort("Service3aPort"); assert "http://foo.com/bar".equals(TestUtils.getPortAddress(port)); } Component componentD = TestUtils.getComponent(domainComposite, "ComponentD"); if (!nonWiring) { // Should add <binding.ws> to inner component reference ComponentD/reference3 with uri="http://foo.com/bar" // Should set <interface.wsdl> on inner component reference ComponentD/reference3 wsBinding = null; for (ComponentReference reference : componentD.getReferences()) { if ("reference3".equals(reference.getName())) { wsBinding = reference.getBinding(WebServiceBinding.class); assert reference.getBindings().size() == 1; assert reference.getInterfaceContract(wsBinding) instanceof WSDLInterfaceContract; } } assert "http://foo.com/bar".equals(wsBinding.getURI()); // Should create WSDL document for ComponentD/reference3 with endpoint uri="http://foo.com/bar" def = wsBinding.getWSDLDocument(); svc = def.getService(new QName("http://scenarios/ComponentB/reference2", "Service3aService")); port = svc.getPort("Service3aPort"); assert "http://foo.com/bar".equals(TestUtils.getPortAddress(port)); } else { // Should not add <binding.ws> to any inner component references for (ComponentReference reference : componentD.getReferences()) { assert reference.getBinding(WebServiceBinding.class) == null; } } // No references on CompositeC should have <binding.ws> or <interface.wsdl>, except for // reference2 in Scenario 7 Composite compositeC = TestUtils.getComposite(domainComposite, new QName(namespace, "CompositeC")); for (Reference reference : compositeC.getReferences()) { if ("http://scenario7".equals(namespace) && "reference2".equals(reference.getName())) { assert reference.getBinding(WebServiceBinding.class)!= null; assert reference.getInterfaceContract() instanceof WSDLInterfaceContract; } else { assert reference.getBinding(WebServiceBinding.class) == null; assert reference.getInterfaceContract() instanceof JavaInterfaceContract; } } // Should add <binding.ws> and <interface.wsdl> to outer composite reference CompositeA/reference1 wsBinding = null; for (Reference reference : domainComposite.getReferences()) { if ("reference1".equals(reference.getName())) { wsBinding = reference.getBinding(WebServiceBinding.class); assert reference.getInterfaceContract() instanceof WSDLInterfaceContract; } } assert wsBinding.getURI() == null; // Should not add a WSDL document to domain composite reference reference1 assert wsBinding.getWSDLDocument() == null; String expectedEndpoints = "Component - ComponentB\n" + "Service - Service2\n" + "Endpoint - Service2\n" + "Service - Service2a\n" + "Endpoint - Service2a\n" + "Reference - reference2\n" + "Component - ComponentB has composite impl\n" + " Component - ComponentD\n" + " Service - Service3\n" + " Endpoint - Service3\n" + " Service - Service3a\n" + " Endpoint - Service3a\n" + " Reference - reference3"; String actualEndpoints = TestUtils.printEndpoints(domainComposite); System.out.println(actualEndpoints); Assert.assertEquals(expectedEndpoints, actualEndpoints); } // Scenario 7: <binding.ws> and <interface.wsdl> on inner composite reference CompositeC/reference2 public void testScenario7() throws Exception { System.out.println("====>Running testScenario7"); customBuilder = new CustomCompositeBuilder(false); customBuilder.loadContribution("scenario7.composite", "TestContribution", "src/main/resources/scenario7/"); //TestUtils.printResults(customBuilder); TestUtils.checkProblems(customBuilder); checkScenario6and7Results("http://scenario7", false); } public void testScenario7NonWiring() throws Exception { System.out.println("====>Running testScenario7NonWiring"); customBuilder = new CustomCompositeBuilder(true); customBuilder.loadContribution("scenario7.composite", "TestContribution", "src/main/resources/scenario7/"); //TestUtils.printResults(customBuilder); TestUtils.checkProblems(customBuilder); checkScenario6and7Results("http://scenario7", true); } // Scenario 8: <binding.ws> and <interface.wsdl> on inner component reference ComponentD/reference3 public void testScenario8() throws Exception { System.out.println("====>Running testScenario8"); customBuilder = new CustomCompositeBuilder(false); customBuilder.loadContribution("scenario8.composite", "TestContribution", "src/main/resources/scenario8/"); //TestUtils.printResults(customBuilder); TestUtils.checkProblems(customBuilder); checkScenario8Results(false); } public void testScenario8NonWiring() throws Exception { System.out.println("====>Running testScenario8NonWiring"); customBuilder = new CustomCompositeBuilder(true); customBuilder.loadContribution("scenario8.composite", "TestContribution", "src/main/resources/scenario8/"); //TestUtils.printResults(customBuilder); TestUtils.checkProblems(customBuilder); checkScenario8Results(true); } private void checkScenario8Results(boolean nonWiring) { Composite domainComposite = customBuilder.getDomainComposite(); // Should replace target= on ComponentD/reference3 by uri="http://foo.com/bar" on <binding.ws> // For nonWiring, the original target= is preserved and there is no uri= Component componentD = TestUtils.getComponent(domainComposite, "ComponentD"); WebServiceBinding wsBinding = null; for (ComponentReference reference : componentD.getReferences()) { if ("reference3".equals(reference.getName())) { if (!nonWiring) { assert reference.getTargets().size() == 0; } else { assert reference.getTargets().size() == 1; } wsBinding = reference.getBinding(WebServiceBinding.class); } } if (!nonWiring) { assert "http://foo.com/bar".equals(wsBinding.getURI()); } else { assert wsBinding.getURI() == null; } Definition def; javax.wsdl.Service svc; Port port; if (!nonWiring) { // Should create WSDL document for ComponentD/reference3 with endpoint uri="http://foo.com/bar" def = wsBinding.getWSDLDocument(); svc = def.getService(new QName("http://scenarios/ComponentD/reference3", "Service3aService")); port = svc.getPort("Service3aPort"); assert "http://foo.com/bar".equals(TestUtils.getPortAddress(port)); } // Should add <binding.ws> and <interface.wsdl> to inner composite reference CompositeC/reference2 Composite compositeC = TestUtils.getComposite(domainComposite, new QName("http://scenario8", "CompositeC")); wsBinding = null; for (Reference reference : compositeC.getReferences()) { if ("reference2".equals(reference.getName())) { wsBinding = reference.getBinding(WebServiceBinding.class); assert reference.getInterfaceContract() instanceof WSDLInterfaceContract; } } assert wsBinding.getURI() == null; // Should add <binding.ws> and <interface.wsdl> to outer component reference ComponentB/reference2 Component componentB = TestUtils.getComponent(domainComposite, "ComponentB"); wsBinding = null; for (ComponentReference reference : componentB.getReferences()) { if ("reference2".equals(reference.getName())) { wsBinding = reference.getBinding(WebServiceBinding.class); assert reference.getInterfaceContract() instanceof WSDLInterfaceContract; } } assert wsBinding.getURI() == null; // Should add <binding.ws> and <interface.wsdl> to outer composite reference CompositeA/reference1 wsBinding = null; for (Reference reference : domainComposite.getReferences()) { if ("reference1".equals(reference.getName())) { wsBinding = reference.getBinding(WebServiceBinding.class); assert reference.getInterfaceContract() instanceof WSDLInterfaceContract; } } assert wsBinding.getURI() == null; // Should not add a WSDL document to domain composite reference reference1 assert wsBinding.getWSDLDocument() == null; } // Scenario 9: target in reference CDR3A and binding.ws uri= at CAR1A public void testScenario9() throws Exception { System.out.println("====>Running testScenario9"); customBuilder = new CustomCompositeBuilder(false); customBuilder.loadContribution("scenario9.composite", "TestContribution", "src/main/resources/scenario9/"); //TestUtils.printResults(customBuilder); TestUtils.checkProblems(customBuilder); checkScenario9Results(); } private void checkScenario9Results() { Composite domainComposite = customBuilder.getDomainComposite(); Component componentD = TestUtils.getComponent(domainComposite, "ComponentD"); ComponentReference componentRef = null; for (ComponentReference reference : componentD.getReferences()) { if ("reference3a".equals(reference.getName())) { componentRef = reference; assertTrue(reference.getBindings().size() == 2); assertTrue(reference.getBindings().get(0) instanceof SCABinding); assertTrue(reference.getBindings().get(1) instanceof WebServiceBinding); } } assertTrue(componentRef != null); } // Scenario 10: targets in references CBR2A and CDR3A and binding.ws at CBR2A public void testScenario10() throws Exception { System.out.println("====>Running testScenario10"); customBuilder = new CustomCompositeBuilder(false); customBuilder.loadContribution("scenario10.composite", "TestContribution", "src/main/resources/scenario10/"); //TestUtils.printResults(customBuilder); TestUtils.checkProblems(customBuilder); checkScenario10And11Results(); } // Scenario 11: targets in references CBR2A and CDR3A and binding.ws at CCR2A public void testScenario11() throws Exception { System.out.println("====>Running testScenario11"); customBuilder = new CustomCompositeBuilder(false); customBuilder.loadContribution("scenario11.composite", "TestContribution", "src/main/resources/scenario11/"); //TestUtils.printResults(customBuilder); TestUtils.checkProblems(customBuilder); checkScenario10And11Results(); } private void checkScenario10And11Results() { Composite domainComposite = customBuilder.getDomainComposite(); Component componentD = TestUtils.getComponent(domainComposite, "ComponentD"); ComponentReference componentRef = null; for (ComponentReference reference : componentD.getReferences()) { if ("reference3a".equals(reference.getName())) { componentRef = reference; assertTrue(reference.getBindings().size() == 2); Binding binding1 = reference.getBindings().get(0); assertTrue(binding1 instanceof SCABinding); assertTrue(reference.getInterfaceContract(binding1) instanceof JavaInterfaceContract); Binding binding2 = reference.getBindings().get(1); assertTrue(binding2 instanceof WebServiceBinding); assertTrue(reference.getInterfaceContract(binding2) instanceof WSDLInterfaceContract); } } assertTrue(componentRef != null); } // Scenario 12: targets in references CBR2A and CDR3A and binding.ws at CDR3A public void testScenario12() throws Exception { System.out.println("====>Running testScenario12"); customBuilder = new CustomCompositeBuilder(false); customBuilder.loadContribution("scenario12.composite", "TestContribution", "src/main/resources/scenario12/"); //TestUtils.printResults(customBuilder); TestUtils.checkProblems(customBuilder); checkScenario12Results(); } private void checkScenario12Results() { Composite domainComposite = customBuilder.getDomainComposite(); Component componentD = TestUtils.getComponent(domainComposite, "ComponentD"); ComponentReference componentRef = null; for (ComponentReference reference : componentD.getReferences()) { if ("reference3a".equals(reference.getName())) { componentRef = reference; assertTrue(reference.getBindings().size() == 2); assertTrue(reference.getBindings().get(0) instanceof WebServiceBinding); assertTrue(reference.getBindings().get(1) instanceof WebServiceBinding); } } assertTrue(componentRef != null); } // Scenario 13: target in reference CDR3A public void testScenario13() throws Exception { System.out.println("====>Running testScenario13"); customBuilder = new CustomCompositeBuilder(false); customBuilder.loadContribution("scenario13.composite", "TestContribution", "src/main/resources/scenario13/"); //TestUtils.printResults(customBuilder); TestUtils.checkProblems(customBuilder); checkScenario13Results(); } private void checkScenario13Results() { Composite domainComposite = customBuilder.getDomainComposite(); Component componentD = TestUtils.getComponent(domainComposite, "ComponentD"); ComponentReference componentRef = null; for (ComponentReference reference : componentD.getReferences()) { if ("reference3a".equals(reference.getName())) { componentRef = reference; assertTrue(reference.getBindings().size() == 1); assertTrue(reference.getBindings().get(0) instanceof WebServiceBinding); } } assertTrue(componentRef != null); } */ }