You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by an...@apache.org on 2007/03/02 13:26:58 UTC
svn commit: r513731 - in
/incubator/tuscany/branches/sca-java-integration/sca/extensions/axis2/binding/src:
main/java/org/apache/tuscany/binding/axis2/Axis2BindingBuilder.java
test/java/org/apache/tuscany/binding/axis2/Axis2BindingBuilderTestCase.java
Author: antelder
Date: Fri Mar 2 04:26:57 2007
New Revision: 513731
URL: http://svn.apache.org/viewvc?view=rev&rev=513731
Log:
Interim checkin of Axis2 binding with more 1.0 spec SCDL fixes - doesn't work perfectly yet
Modified:
incubator/tuscany/branches/sca-java-integration/sca/extensions/axis2/binding/src/main/java/org/apache/tuscany/binding/axis2/Axis2BindingBuilder.java
incubator/tuscany/branches/sca-java-integration/sca/extensions/axis2/binding/src/test/java/org/apache/tuscany/binding/axis2/Axis2BindingBuilderTestCase.java
Modified: incubator/tuscany/branches/sca-java-integration/sca/extensions/axis2/binding/src/main/java/org/apache/tuscany/binding/axis2/Axis2BindingBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/extensions/axis2/binding/src/main/java/org/apache/tuscany/binding/axis2/Axis2BindingBuilder.java?view=diff&rev=513731&r1=513730&r2=513731
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/extensions/axis2/binding/src/main/java/org/apache/tuscany/binding/axis2/Axis2BindingBuilder.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/extensions/axis2/binding/src/main/java/org/apache/tuscany/binding/axis2/Axis2BindingBuilder.java Fri Mar 2 04:26:57 2007
@@ -19,7 +19,6 @@
package org.apache.tuscany.binding.axis2;
import java.net.URI;
-import java.net.URISyntaxException;
import javax.wsdl.Port;
import javax.wsdl.PortType;
@@ -33,6 +32,7 @@
import org.apache.tuscany.idl.wsdl.WSDLServiceContract;
import org.apache.tuscany.spi.annotation.Autowire;
import org.apache.tuscany.spi.builder.BuilderConfigException;
+import org.apache.tuscany.spi.component.Component;
import org.apache.tuscany.spi.component.CompositeComponent;
import org.apache.tuscany.spi.component.ReferenceBinding;
import org.apache.tuscany.spi.component.ServiceBinding;
@@ -146,7 +146,7 @@
}
if (wsBinding.isSpec10Compliant()) {
- wsBinding.setActualURI(computeActualURI(wsBinding, BASE_URI, parent.getName(), serviceDefinition.getName()));
+ wsBinding.setActualURI(computeActualURI(wsBinding, BASE_URI, serviceDefinition.getTarget(), serviceDefinition.getName(), parent));
}
ServiceBinding serviceBinding =
@@ -212,7 +212,7 @@
}
if (wsBinding.isSpec10Compliant()) {
- wsBinding.setActualURI(computeActualURI(wsBinding, BASE_URI, parent.getName(), boundReferenceDefinition.getName()));
+ wsBinding.setActualURI(computeActualURI(wsBinding, BASE_URI, null, boundReferenceDefinition.getName(), null));
}
return new Axis2ReferenceBinding(boundReferenceDefinition.getName(), parent, wsBinding,
@@ -241,56 +241,84 @@
* 4. The implicit URI as defined by in section 1.7 in the SCA Assembly spec
* If the <binding.ws> has no wsdlElement but does have a uri attribute then the uri takes precidence
* over any implicitly used WSDL.
+ * @param parent
*/
- protected URI computeActualURI(WebServiceBindingDefinition wsBinding, String baseURI, String compositeName, String name) {
- try {
-
- URI portURI = null;
- if ((wsBinding.getServiceName() != null || wsBinding.getPortName() == null) && wsBinding.getBindingName() == null) {
- // <binding.ws> explicitly points at a wsdl port, may be a relative URI
- portURI = wsBinding.getPortURI();
+ protected URI computeActualURI(WebServiceBindingDefinition wsBinding, String baseURI, URI componentURI, String bindingName, CompositeComponent parent) {
+ URI wsdlURI = null;
+ if (wsBinding.getServiceName() != null && wsBinding.getBindingName() == null) {
+ // <binding.ws> explicitly points at a wsdl port, may be a relative URI
+ wsdlURI = wsBinding.getPortURI();
+ }
+ if (wsdlURI != null && wsdlURI.isAbsolute()) {
+ if (wsBinding.getURI() != null && (wsBinding.getServiceName() != null && wsBinding.getBindingName() == null)) {
+ throw new IllegalArgumentException("binding URI cannot be used with absolute WSDL endpoint URI");
}
- if (portURI != null && portURI.isAbsolute()) {
- return new URI(portURI.toString());
+ return URI.create(wsdlURI.toString());
+ }
+
+ // there is no wsdl port endpoint URI or that URI is relative
+
+ URI bindingURI = null;
+ if (wsBinding.getURI() != null) {
+ bindingURI = URI.create(wsBinding.getURI());
+ }
+
+ if (bindingURI != null && bindingURI.isAbsolute()) {
+ if (wsdlURI != null) {
+ return URI.create(bindingURI + "/" + wsdlURI).normalize();
+ } else {
+ return bindingURI;
}
-
- URI explicitURI = null;
- if (wsBinding.getURI() != null) {
- explicitURI = new URI(wsBinding.getURI());
+ }
+
+ if (componentURI == null) { // null for references
+ wsdlURI = wsBinding.getPortURI();
+ if (bindingURI != null) {
+ return URI.create(wsdlURI + "/" + bindingURI).normalize();
+ } else {
+ return wsdlURI;
}
+ }
+
- String actualURI = "";
- if (explicitURI == null || !explicitURI.isAbsolute()) {
- actualURI = baseURI + "/" + compositeName + "/" + name + "/";
- }
+ // TODO: TUSCANY-xxx, how to tell if component has multiple services using <binding.ws>?
+ // boolean singleService = (parent != null) && (((Component)parent.getChild(componentURI.toString())).getInboundWires().size() == 1);
+ // if (bindingURI == null && !singleService) {
- if (explicitURI != null) {
- if (portURI != null) {
- actualURI = actualURI + explicitURI.toString() + "/" + portURI.toString();
- } else {
- if (explicitURI != null) {
- actualURI = actualURI + explicitURI;
- }
- if (portURI != null) {
- actualURI = actualURI + portURI;
- }
- }
+ if (bindingURI == null) {
+ bindingURI = URI.create(bindingName);
+ }
+
+ if (componentURI.isAbsolute()) {
+ if (bindingURI == null && wsdlURI == null) {
+ return componentURI;
+ } else if (wsdlURI == null) {
+ return URI.create(componentURI + "/" + bindingURI).normalize();
+ } else if (bindingURI == null) {
+ return URI.create(componentURI + "/" + wsdlURI).normalize();
} else {
- if (portURI != null) {
- actualURI = actualURI + portURI.toString();
- }
- }
-
- if (actualURI.endsWith("/")) {
- actualURI = actualURI.substring(0, actualURI.length() -1);
+ return URI.create(componentURI + "/" + bindingURI + "/" + wsdlURI).normalize();
}
-
- // normalize to handle any . or .. occurances
- return new URI(actualURI).normalize();
+ }
+
+ String actualURI = "";
- } catch (URISyntaxException e) {
- throw new Axis2BindingBuilderRuntimeException(e);
+ if (bindingURI == null) {
+ actualURI = baseURI + "/" + componentURI + "/";
+ } else {
+ actualURI = baseURI + "/" + componentURI + "/" + bindingURI + "/";
+ }
+
+ if (wsdlURI != null) {
+ actualURI = actualURI + wsdlURI.toString();
+ }
+
+ if (actualURI.endsWith("/")) {
+ actualURI = actualURI.substring(0, actualURI.length() -1);
}
+
+ // normalize to handle any . or .. occurances
+ return URI.create(actualURI).normalize();
}
}
Modified: incubator/tuscany/branches/sca-java-integration/sca/extensions/axis2/binding/src/test/java/org/apache/tuscany/binding/axis2/Axis2BindingBuilderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/extensions/axis2/binding/src/test/java/org/apache/tuscany/binding/axis2/Axis2BindingBuilderTestCase.java?view=diff&rev=513731&r1=513730&r2=513731
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/extensions/axis2/binding/src/test/java/org/apache/tuscany/binding/axis2/Axis2BindingBuilderTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/extensions/axis2/binding/src/test/java/org/apache/tuscany/binding/axis2/Axis2BindingBuilderTestCase.java Fri Mar 2 04:26:57 2007
@@ -24,6 +24,7 @@
import java.net.URI;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -36,50 +37,65 @@
import junit.framework.TestCase;
+import org.apache.tuscany.spi.component.Component;
+import org.apache.tuscany.spi.component.CompositeComponent;
+
/**
* Tests for the WebServicebindingLoader class
*/
@SuppressWarnings("deprecation")
public class Axis2BindingBuilderTestCase extends TestCase {
+ private CompositeComponent parent;
+
private static final String NAME = "MyService";
- private static final String COMPOSITE_NAME = "MyComposite";
+ private static final URI COMPOSITE_NAME = URI.create("MyComposite");
+ private static final URI COMPOSITE_NAME2 = URI.create("MyComposite2");
private static final String BASE_URI = "http://localhost/services";
public void testDefaultURI() throws Exception {
Axis2BindingBuilder builder = new Axis2BindingBuilder();
WebServiceBindingDefinition wsBinding = new WebServiceBindingDefinition(null, null, null, null, null, null);
- URI uri = builder.computeActualURI(wsBinding, BASE_URI, COMPOSITE_NAME, NAME);
+ URI uri = builder.computeActualURI(wsBinding, BASE_URI, COMPOSITE_NAME, NAME, parent);
assertEquals("http://localhost/services/MyComposite/MyService", uri.toString());
}
+ public void testDefaultURIMultiServices() throws Exception {
+ Axis2BindingBuilder builder = new Axis2BindingBuilder();
+ WebServiceBindingDefinition wsBinding = new WebServiceBindingDefinition(null, null, null, null, null, null);
+ URI uri = builder.computeActualURI(wsBinding, BASE_URI, COMPOSITE_NAME2, NAME, parent);
+ assertEquals("http://localhost/services/MyComposite2/MyService", uri.toString());
+ }
+
public void testExplicitURI() throws Exception {
Axis2BindingBuilder builder = new Axis2BindingBuilder();
WebServiceBindingDefinition wsBinding = new WebServiceBindingDefinition(null, null, null, null, null, "http://foo/bar");
- URI uri = builder.computeActualURI(wsBinding, BASE_URI, COMPOSITE_NAME, NAME);
+ URI uri = builder.computeActualURI(wsBinding, BASE_URI, COMPOSITE_NAME, NAME, parent);
assertEquals("http://foo/bar", uri.toString());
}
public void testExplicitWSDL() throws Exception {
Axis2BindingBuilder builder = new Axis2BindingBuilder();
WebServiceBindingDefinition wsBinding = new WebServiceBindingDefinition("myNS", createMockWSDL("http://my/wsdl/uri"), "myService", "myPort", null, null);
- URI uri = builder.computeActualURI(wsBinding, BASE_URI, COMPOSITE_NAME, NAME);
+ URI uri = builder.computeActualURI(wsBinding, BASE_URI, COMPOSITE_NAME, NAME, parent);
assertEquals("http://my/wsdl/uri", uri.toString());
}
public void testExplicitWSDLExplicitURI() throws Exception {
Axis2BindingBuilder builder = new Axis2BindingBuilder();
WebServiceBindingDefinition wsBinding = new WebServiceBindingDefinition("myNS", createMockWSDL("http://my/wsdl/uri"), "myService", "myPort", null, "foo");
- URI uri = builder.computeActualURI(wsBinding, BASE_URI, COMPOSITE_NAME, NAME);
-
- // explicit URI 'foo' should be ignored
- assertEquals("http://my/wsdl/uri", uri.toString());
+ try {
+ builder.computeActualURI(wsBinding, BASE_URI, COMPOSITE_NAME, NAME, parent);
+ fail();
+ } catch (IllegalArgumentException e) {
+ // expected
+ }
}
public void testExplicitWSDLBindingExplicitURI() throws Exception {
Axis2BindingBuilder builder = new Axis2BindingBuilder();
WebServiceBindingDefinition wsBinding = new WebServiceBindingDefinition("myNS", createMockWSDLBinding("http://my/wsdl/uri"), null, null, "myBinding", "http://my/uri");
- URI uri = builder.computeActualURI(wsBinding, BASE_URI, COMPOSITE_NAME, NAME);
+ URI uri = builder.computeActualURI(wsBinding, BASE_URI, COMPOSITE_NAME, NAME, parent);
// explicit URI should be used as the WSDL binding is used not the wsdl service/port
assertEquals("http://my/uri", uri.toString());
@@ -88,70 +104,78 @@
public void testExplicitWSDLBindingExplicitRelativeURI() throws Exception {
Axis2BindingBuilder builder = new Axis2BindingBuilder();
WebServiceBindingDefinition wsBinding = new WebServiceBindingDefinition("myNS", createMockWSDLBinding("http://my/wsdl/uri"), null, null, "myBinding", "x/y");
- URI uri = builder.computeActualURI(wsBinding, BASE_URI, COMPOSITE_NAME, NAME);
-
- // explicit URI should be used as the WSDL binding is used not the wsdl service/port
- assertEquals("http://localhost/services/MyComposite/MyService/x/y", uri.toString());
+ URI uri = builder.computeActualURI(wsBinding, BASE_URI, COMPOSITE_NAME, NAME, parent);
+ assertEquals("http://localhost/services/MyComposite/x/y", uri.toString());
}
public void testExplicitWSDLBindingExplicitRelativeURIWithDot() throws Exception {
Axis2BindingBuilder builder = new Axis2BindingBuilder();
WebServiceBindingDefinition wsBinding = new WebServiceBindingDefinition("myNS", createMockWSDLBinding("http://my/wsdl/uri"), null, null, "myBinding", "x/./y");
- URI uri = builder.computeActualURI(wsBinding, BASE_URI, COMPOSITE_NAME, NAME);
-
- // explicit URI should be used as the WSDL binding is used not the wsdl service/port
- assertEquals("http://localhost/services/MyComposite/MyService/x/y", uri.toString());
+ URI uri = builder.computeActualURI(wsBinding, BASE_URI, COMPOSITE_NAME, NAME, parent);
+ assertEquals("http://localhost/services/MyComposite/x/y", uri.toString());
}
public void testExplicitWSDLBindingExplicitRelativeURIWithDots() throws Exception {
Axis2BindingBuilder builder = new Axis2BindingBuilder();
- WebServiceBindingDefinition wsBinding = new WebServiceBindingDefinition("myNS", createMockWSDLBinding("http://my/wsdl/uri"), null, null, "myBinding", "../../x/y");
- URI uri = builder.computeActualURI(wsBinding, BASE_URI, COMPOSITE_NAME, NAME);
-
- // explicit URI should be used as the WSDL binding is used not the wsdl service/port
+ WebServiceBindingDefinition wsBinding = new WebServiceBindingDefinition("myNS", createMockWSDLBinding("http://my/wsdl/uri"), null, null, "myBinding", "../x/y");
+ URI uri = builder.computeActualURI(wsBinding, BASE_URI, COMPOSITE_NAME, NAME, parent);
assertEquals("http://localhost/services/x/y", uri.toString());
}
public void testExplicitRelativeWSDL() throws Exception {
Axis2BindingBuilder builder = new Axis2BindingBuilder();
WebServiceBindingDefinition wsBinding = new WebServiceBindingDefinition("myNS", createMockWSDL("foo/bar"), "myService", "myPort", null, null);
- URI uri = builder.computeActualURI(wsBinding, BASE_URI, COMPOSITE_NAME, NAME);
+ URI uri = builder.computeActualURI(wsBinding, BASE_URI, COMPOSITE_NAME, NAME, parent);
assertEquals("http://localhost/services/MyComposite/MyService/foo/bar", uri.toString());
}
+ public void testExplicitRelativeWSDLMultiServices() throws Exception {
+ Axis2BindingBuilder builder = new Axis2BindingBuilder();
+ WebServiceBindingDefinition wsBinding = new WebServiceBindingDefinition("myNS", createMockWSDL("foo/bar"), "myService", "myPort", null, null);
+ URI uri = builder.computeActualURI(wsBinding, BASE_URI, COMPOSITE_NAME2, NAME, parent);
+ assertEquals("http://localhost/services/MyComposite2/MyService/foo/bar", uri.toString());
+ }
+
public void testExplicitRelativeWSDLWithDots() throws Exception {
Axis2BindingBuilder builder = new Axis2BindingBuilder();
WebServiceBindingDefinition wsBinding = new WebServiceBindingDefinition("myNS", createMockWSDL("../foo/bar"), "myService", "myPort", null, null);
- URI uri = builder.computeActualURI(wsBinding, BASE_URI, COMPOSITE_NAME, NAME);
+ URI uri = builder.computeActualURI(wsBinding, BASE_URI, COMPOSITE_NAME, NAME, parent);
assertEquals("http://localhost/services/MyComposite/foo/bar", uri.toString());
}
+ public void testExplicitRelativeWSDLWithDotsMultiService() throws Exception {
+ Axis2BindingBuilder builder = new Axis2BindingBuilder();
+ WebServiceBindingDefinition wsBinding = new WebServiceBindingDefinition("myNS", createMockWSDL("../foo/bar"), "myService", "myPort", null, null);
+ URI uri = builder.computeActualURI(wsBinding, BASE_URI, COMPOSITE_NAME2, NAME, parent);
+ assertEquals("http://localhost/services/MyComposite2/foo/bar", uri.toString());
+ }
+
public void testExplicitRelativeWSDLExplicitURI() throws Exception {
Axis2BindingBuilder builder = new Axis2BindingBuilder();
WebServiceBindingDefinition wsBinding = new WebServiceBindingDefinition("myNS", createMockWSDL("foo/bar"), "myService", "myPort", null, "http://my/wsdl/uri");
- URI uri = builder.computeActualURI(wsBinding, BASE_URI, COMPOSITE_NAME, NAME);
+ URI uri = builder.computeActualURI(wsBinding, BASE_URI, COMPOSITE_NAME, NAME, parent);
assertEquals("http://my/wsdl/uri/foo/bar", uri.toString());
}
public void testExplicitRelativeWSDLWithDotsExplicitURI() throws Exception {
Axis2BindingBuilder builder = new Axis2BindingBuilder();
WebServiceBindingDefinition wsBinding = new WebServiceBindingDefinition("myNS", createMockWSDL("../foo/bar"), "myService", "myPort", null, "http://my/wsdl/uri");
- URI uri = builder.computeActualURI(wsBinding, BASE_URI, COMPOSITE_NAME, NAME);
+ URI uri = builder.computeActualURI(wsBinding, BASE_URI, COMPOSITE_NAME, NAME, parent);
assertEquals("http://my/wsdl/foo/bar", uri.toString());
}
public void testExplicitRelativeWSDLExplicitRelativeURI() throws Exception {
Axis2BindingBuilder builder = new Axis2BindingBuilder();
WebServiceBindingDefinition wsBinding = new WebServiceBindingDefinition("myNS", createMockWSDL("foo/bar"), "myService", "myPort", null, "x/y");
- URI uri = builder.computeActualURI(wsBinding, BASE_URI, COMPOSITE_NAME, NAME);
- assertEquals("http://localhost/services/MyComposite/MyService/x/y/foo/bar", uri.toString());
+ URI uri = builder.computeActualURI(wsBinding, BASE_URI, COMPOSITE_NAME, NAME, parent);
+ assertEquals("http://localhost/services/MyComposite/x/y/foo/bar", uri.toString());
}
public void testExplicitRelativeWSDLExplicitRelativeURIWithDots() throws Exception {
Axis2BindingBuilder builder = new Axis2BindingBuilder();
WebServiceBindingDefinition wsBinding = new WebServiceBindingDefinition("myNS", createMockWSDL("foo/bar"), "myService", "myPort", null, "../x/y");
- URI uri = builder.computeActualURI(wsBinding, BASE_URI, COMPOSITE_NAME, NAME);
- assertEquals("http://localhost/services/MyComposite/x/y/foo/bar", uri.toString());
+ URI uri = builder.computeActualURI(wsBinding, BASE_URI, COMPOSITE_NAME, NAME, parent);
+ assertEquals("http://localhost/services/x/y/foo/bar", uri.toString());
}
protected Definition createMockWSDL(String endpoint) {
@@ -183,5 +207,23 @@
Definition mockDef = createMock(Definition.class);
replay(mockDef);
return mockDef;
+ }
+
+ protected void setUp() {
+ parent = createMock(CompositeComponent.class);
+ Component comp1 = createMock(Component.class);
+ Component comp2 = createMock(Component.class);
+ Collection wires1 = new ArrayList();
+ wires1.add("dummy1");
+ Collection wires2 = new ArrayList();
+ wires2.add("dummy1");
+ wires2.add("dummy2");
+ expect(comp1.getInboundWires()).andReturn(wires1);
+ expect(comp2.getInboundWires()).andReturn(wires2);
+ expect(parent.getChild(COMPOSITE_NAME.toString())).andReturn(comp1);
+ expect(parent.getChild(COMPOSITE_NAME2.toString())).andReturn(comp2);
+ replay(comp1);
+ replay(comp2);
+ replay(parent);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org