You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by dk...@apache.org on 2006/08/07 18:45:17 UTC

svn commit: r429385 - in /incubator/tuscany/java/sca/bindings/binding.celtix/src: main/java/org/apache/tuscany/binding/celtix/ test/java/org/apache/tuscany/binding/celtix/

Author: dkulp
Date: Mon Aug  7 09:45:16 2006
New Revision: 429385

URL: http://svn.apache.org/viewvc?rev=429385&view=rev
Log:
Apply patch for TUSCANY-600.
Thanks Jervis!


Added:
    incubator/tuscany/java/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/GreeterImpl.java   (with props)
Modified:
    incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixBindingBuilder.java
    incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixInvoker.java
    incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixReference.java
    incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixService.java
    incubator/tuscany/java/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/CeltixServiceTestCase.java

Modified: incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixBindingBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixBindingBuilder.java?rev=429385&r1=429384&r2=429385&view=diff
==============================================================================
--- incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixBindingBuilder.java (original)
+++ incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixBindingBuilder.java Mon Aug  7 09:45:16 2006
@@ -42,39 +42,33 @@
     public SCAObject build(CompositeComponent parent,
                            BoundServiceDefinition<WebServiceBinding> boundServiceDefinition,
                            DeploymentContext deploymentContext) {
-        WebServiceBinding binding = boundServiceDefinition.getBinding();
-        Definition definition = binding.getWSDLDefinition();
-        Port port = binding.getWSDLPort();
-        Service service = binding.getWSDLService();
+		//FIXME: CeltixService needs an instance of BusService. How to get BusService wired in and where BusService is created?
+        WebServiceBinding wsBinding = boundServiceDefinition.getBinding();
         //FIXME get interface
         Class<?> interfaze = null;
         return new CeltixService(
             boundServiceDefinition.getName(),
             interfaze,
-            definition,
-            port,
-            service,
             parent,
-            busService.getBus(),
-            wireService);
+            wireService,
+            wsBinding,
+            busService.getBus());
     }
 
     public SCAObject build(CompositeComponent parent,
                            BoundReferenceDefinition<WebServiceBinding> boundReferenceDefinition,
                            DeploymentContext deploymentContext) {
-        WebServiceBinding binding = boundReferenceDefinition.getBinding();
-        Definition definition = binding.getWSDLDefinition();
-        Port port = binding.getWSDLPort();
-        Service service = binding.getWSDLService();
+        WebServiceBinding wsBinding = boundReferenceDefinition.getBinding();
+        Definition definition = wsBinding.getWSDLDefinition();
+        Port port = wsBinding.getWSDLPort();
+        Service service = wsBinding.getWSDLService();
         return new CeltixReference(
             boundReferenceDefinition.getName(),
-            definition,
-            port,
-            service,
-            busService.getBus(),
             parent,
-            wireService);
-    }
+            wireService,
+            wsBinding,
+            busService.getBus());
+   }
 
     protected Class<WebServiceBinding> getBindingType() {
         return WebServiceBinding.class;

Modified: incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixInvoker.java?rev=429385&r1=429384&r2=429385&view=diff
==============================================================================
--- incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixInvoker.java (original)
+++ incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixInvoker.java Mon Aug  7 09:45:16 2006
@@ -64,7 +64,7 @@
                          Port port,
                          Service wsdlService,
                          Definition wsdlDef) throws BuilderException {
-        wsdlCache = new WSDLMetaDataCache(wsdlDef, port);
+        this.wsdlCache = new WSDLMetaDataCache(wsdlDef, port);
         this.operationName = operationName;
         // Definition wsdlDef = wsBinding.getWSDLDefinition();
         // wsdlCache = new WSDLMetaDataCache(wsdlDef, wsBinding.getWSDLPort());

Modified: incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixReference.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixReference.java?rev=429385&r1=429384&r2=429385&view=diff
==============================================================================
--- incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixReference.java (original)
+++ incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixReference.java Mon Aug  7 09:45:16 2006
@@ -22,11 +22,11 @@
 import org.apache.tuscany.spi.extension.ReferenceExtension;
 import org.apache.tuscany.spi.wire.TargetInvoker;
 import org.apache.tuscany.spi.wire.WireService;
-
 import org.objectweb.celtix.Bus;
 
 /**
- * The implementation of a {@link org.apache.tuscany.spi.component.Reference} configured with the Celtix binding
+ * The implementation of a {@link org.apache.tuscany.spi.component.Reference} configured with the Celtix
+ * binding
  *
  * @version $Rev$ $Date$
  */
@@ -38,16 +38,14 @@
     private Service wsdlService;
 
     public CeltixReference(String name,
-                           Definition wsdlDef,
-                           Port port,
-                           Service wsdlService,
-                           Bus bus,
                            CompositeComponent<?> parent,
-                           WireService wireService) {
+                           WireService wireService,
+                           WebServiceBinding binding,
+                           Bus bus) {
         super(name, parent, wireService);
-        this.port = port;
-        this.wsdlDef = wsdlDef;
-        this.wsdlService = wsdlService;
+        this.wsdlDef = binding.getWSDLDefinition();
+        this.port = binding.getWSDLPort();
+        this.wsdlService = binding.getWSDLService();
         this.bus = bus;
     }
 

Modified: incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixService.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixService.java?rev=429385&r1=429384&r2=429385&view=diff
==============================================================================
--- incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixService.java (original)
+++ incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixService.java Mon Aug  7 09:45:16 2006
@@ -33,15 +33,12 @@
 import javax.xml.namespace.QName;
 import javax.xml.ws.WebServiceProvider;
 
-import org.osoa.sca.annotations.Destroy;
-
+import org.apache.tuscany.binding.celtix.io.SCAServerDataBindingCallback;
 import org.apache.tuscany.spi.CoreRuntimeException;
 import org.apache.tuscany.spi.builder.BuilderConfigException;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.extension.ServiceExtension;
 import org.apache.tuscany.spi.wire.WireService;
-
-import org.apache.tuscany.binding.celtix.io.SCAServerDataBindingCallback;
 import org.objectweb.celtix.Bus;
 import org.objectweb.celtix.bindings.DataBindingCallback;
 import org.objectweb.celtix.bindings.ServerBinding;
@@ -53,6 +50,7 @@
 import org.objectweb.celtix.ws.addressing.AttributedURIType;
 import org.objectweb.celtix.ws.addressing.EndpointReferenceType;
 import org.objectweb.celtix.wsdl.EndpointReferenceUtils;
+import org.osoa.sca.annotations.Destroy;
 import org.xmlsoap.schemas.wsdl.http.AddressType;
 
 /**
@@ -67,32 +65,32 @@
     private Definition wsdlDef;
     private Service wsdlService;
     private WSDLMetaDataCache wsdlCache;
-    private Object proxy;
 
     private Map<QName, ServerDataBindingCallback> opMap =
         new ConcurrentHashMap<QName, ServerDataBindingCallback>();
 
 
-    public CeltixService(String name,
+    public CeltixService(String theName,
                          Class<T> interfaze,
-                         Definition wsdlDef,
-                         Port port,
-                         Service wsdlService,
-                         CompositeComponent<?> parent,
-                         Bus bus,
-                         WireService wireService) {
-        super(name, interfaze, parent, wireService);
-        this.port = port;
-        this.wsdlDef = wsdlDef;
-        this.wsdlService = wsdlService;
+                         CompositeComponent parent,
+                         WireService wireService,
+                         WebServiceBinding binding,
+                         Bus bus) {
+        super(theName, interfaze, parent, wireService);
+        this.wsdlDef = binding.getWSDLDefinition();
+        this.port = binding.getWSDLPort();
+        this.wsdlService = binding.getWSDLService();
         this.bus = bus;
-        wsdlCache = new WSDLMetaDataCache(wsdlDef, port);
+        this.wsdlCache = new WSDLMetaDataCache(wsdlDef, port);
     }
 
     public void start() {
         super.start();
-        proxy = wireService.createProxy(inboundWire);
-        initOperationMap(wsdlDef);
+        initOperationMap();
+        startServerBinding();
+	}
+
+	private void startServerBinding() {
         String key = wsdlDef.getDocumentBaseURI();
         URL url;
         try {
@@ -102,8 +100,8 @@
         }
 
         EndpointReferenceType reference = EndpointReferenceUtils.getEndpointReference(url,
-            wsdlService.getQName(),
-            port.getName());
+                                                                                      wsdlService.getQName(),
+                                                                                      port.getName());
 
         AttributedURIType address = new AttributedURIType();
 
@@ -138,25 +136,22 @@
 
         try {
             ServerBinding serverBinding = bus.getBindingManager().getBindingFactory(bindingId).createServerBinding(
-                reference, this);
+                                                                                                                   reference, this);
             serverBinding.activate();
         } catch (Exception e) {
             throw new CeltixServiceInitException(e);
         }
     }
 
-    @Destroy
-    public void stop() throws CoreRuntimeException {
-        super.stop();
-    }
-
-    private void initOperationMap(Definition def) {
+    private void initOperationMap() {
         List ops = port.getBinding().getBindingOperations();
         for (Object op1 : ops) {
             BindingOperation op = (BindingOperation) op1;
             BindingInput bindingInput = op.getBindingInput();
             List elements = bindingInput.getExtensibilityElements();
-            QName qn = new QName(def.getTargetNamespace(), op.getName());
+            QName qn = new QName(wsdlDef.getTargetNamespace(), op.getName());
+
+            //In case soap:body namespace is different from targetNamespace
             for (Object element : elements) {
                 if (SOAPBody.class.isInstance(element)) {
                     SOAPBody body = (SOAPBody) element;
@@ -167,7 +162,7 @@
             }
 
             ServerDataBindingCallback cb = getDataBindingCallback(qn, null,
-                DataBindingCallback.Mode.PARTS);
+                                                                  DataBindingCallback.Mode.PARTS);
             opMap.put(qn, cb);
             if (!"".equals(cb.getRequestWrapperQName().getLocalPart())) {
                 opMap.put(cb.getRequestWrapperQName(), cb);
@@ -175,6 +170,11 @@
         }
     }
 
+    @Destroy
+    public void stop() throws CoreRuntimeException {
+        super.stop();
+    }
+
     public ServerDataBindingCallback getDataBindingCallback(QName operationName,
                                                             ObjectMessageContext objContext,
                                                             DataBindingCallback.Mode mode) {
@@ -193,10 +193,11 @@
         }
         boolean inout = false;
 
-
         Class<?> serviceInterface = this.getInterface();
         Method meth = getMethod(serviceInterface, operationName.getLocalPart());
 
+        Object proxy = this.getServiceInstance();
+
         return new SCAServerDataBindingCallback(opInfo, inout, meth, proxy);
     }
 
@@ -215,9 +216,8 @@
             }
         }
         throw new BuilderConfigException("no operation named " + operationName
-            + " found on service interface: " + serviceInterface.getName());
+                                         + " found on service interface: " + serviceInterface.getName());
     }
-
 
     public DataBindingCallback getFaultDataBindingCallback(ObjectMessageContext objContext) {
         // REVISIT - what to do about faults

Modified: incubator/tuscany/java/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/CeltixServiceTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/CeltixServiceTestCase.java?rev=429385&r1=429384&r2=429385&view=diff
==============================================================================
--- incubator/tuscany/java/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/CeltixServiceTestCase.java (original)
+++ incubator/tuscany/java/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/CeltixServiceTestCase.java Mon Aug  7 09:45:16 2006
@@ -30,7 +30,22 @@
  */
 public class CeltixServiceTestCase extends TestCase {
 
-    public void testGetDataBindingCallback() throws Exception {
+	public void testGetDataBindingCallback() throws Exception {
+        CeltixService celtixService = createCeltixService();
+
+        QName operationName = new QName("greetMe");
+        ObjectMessageContextImpl ctx = new ObjectMessageContextImpl();
+        ctx.setMessageObjects(new String[]{"Celtix"});
+     	ServerDataBindingCallback callback1 = celtixService.getDataBindingCallback(operationName, ctx, DataBindingCallback.Mode.PARTS);
+        assertNotNull(callback1);
+
+        callback1.invoke(ctx);
+        Object rtn = (String)ctx.getReturn();
+        assertEquals("Hello Celtix", rtn);
+
+	}
+
+    private CeltixService createCeltixService() throws Exception {
         //Make following call to return a mocked SOAPClientBinding:
         //bus.getBindingManager().getBindingFactory(bindingId).createClientBinding(reference)
         SOAPServerBinding serverBinding = EasyMock.createMock(SOAPServerBinding.class);
@@ -41,7 +56,7 @@
 
         SOAPBindingFactory bindingFactory = EasyMock.createNiceMock(SOAPBindingFactory.class);
         bindingFactory.createServerBinding(EasyMock.isA(EndpointReferenceType.class),
-            EasyMock.isA(ServerBindingEndpointCallback.class));
+                                           EasyMock.isA(ServerBindingEndpointCallback.class));
         EasyMock.expectLastCall().andReturn(serverBinding);
         EasyMock.replay(bindingFactory);
 
@@ -56,11 +71,6 @@
         EasyMock.replay(bindingManager);
         EasyMock.replay(bus);
 
-        WireService wireService = EasyMock.createNiceMock(WireService.class);
-        wireService.createProxy(EasyMock.isA(InboundWire.class));
-        EasyMock.expectLastCall().andReturn(null);
-        EasyMock.replay(wireService);
-
         //Create WSDL Definition
         String wsdlLocation = "/wsdl/hello_world_doc_lit.wsdl";
         URL url = getClass().getResource(wsdlLocation);
@@ -72,24 +82,29 @@
         InputSource input = new InputSource(url.openStream());
         Definition wsdlDef = reader.readWSDL(url.toString(), input);
         Service wsdlService = wsdlDef.getService(new QName("http://objectweb.org/hello_world_soap_http",
-            "SOAPService"));
+                                                           "SOAPService"));
         Port port = wsdlService.getPort("SoapPort");
 
+        WebServiceBinding wsBinding = new WebServiceBinding(wsdlDef, port, "uri", "portURI", wsdlService);
+
+        //Create mocked InboundWire, for ServiceExtension.getInterface()
         InboundWire<Greeter> inboundWire = EasyMock.createNiceMock(InboundWire.class);
         inboundWire.getBusinessInterface();
         EasyMock.expectLastCall().andReturn(Greeter.class).anyTimes();
-
         EasyMock.replay(inboundWire);
 
-        CeltixService<Greeter> celtixService =
-            new CeltixService<Greeter>("name", Greeter.class, wsdlDef, port, wsdlService, null, bus, wireService);
+        //Create mocked WireService, for ServiceExtension.getServiceInstance()
+        WireService wireService = EasyMock.createNiceMock(WireService.class);
+        wireService.createProxy(EasyMock.isA(InboundWire.class));
+        EasyMock.expectLastCall().andReturn(new GreeterImpl()).anyTimes();
+        EasyMock.replay(wireService);
+
+        CeltixService celtixService = new CeltixService("name", Greeter.class, null, wireService, wsBinding, bus);
+        //Not sure how InboundWire is set to CeltixService, is the following way correct?
         celtixService.setInboundWire(inboundWire);
         celtixService.start();
 
-        QName operationName = new QName("greetMe");
-        ServerDataBindingCallback callback1 = celtixService
-            .getDataBindingCallback(operationName, new ObjectMessageContextImpl(), DataBindingCallback.Mode.PARTS);
-        assertNotNull(callback1);
+        return celtixService;
     }
 
 }

Added: incubator/tuscany/java/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/GreeterImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/GreeterImpl.java?rev=429385&view=auto
==============================================================================
--- incubator/tuscany/java/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/GreeterImpl.java (added)
+++ incubator/tuscany/java/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/GreeterImpl.java Mon Aug  7 09:45:16 2006
@@ -0,0 +1,15 @@
+package org.apache.tuscany.binding.celtix;
+
+public class GreeterImpl implements Greeter {
+    public java.lang.String sayHi() {
+		return "sayHi";
+    }
+
+    public java.lang.String greetMe(String requestType) {
+		return "Hello " + requestType;
+    }
+
+    public void greetMeOneWay(String requestType) {
+    }
+
+}

Propchange: incubator/tuscany/java/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/GreeterImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/GreeterImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org