You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by jm...@apache.org on 2007/03/15 20:13:42 UTC

svn commit: r518729 - in /incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian: ./ builder/ component/

Author: jmarino
Date: Thu Mar 15 12:13:42 2007
New Revision: 518729

URL: http://svn.apache.org/viewvc?view=rev&rev=518729
Log:
merge HessianService into BindingComponent

Removed:
    incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/HessianService.java
    incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/HessianServiceImpl.java
Modified:
    incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/DestinationCreationException.java
    incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/builder/BindingComponentBuilder.java
    incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/component/BindingComponent.java

Modified: incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/DestinationCreationException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/DestinationCreationException.java?view=diff&rev=518729&r1=518728&r2=518729
==============================================================================
--- incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/DestinationCreationException.java (original)
+++ incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/DestinationCreationException.java Thu Mar 15 12:13:42 2007
@@ -31,4 +31,9 @@
         super(message);
     }
 
+    protected DestinationCreationException(String message, String identifier, Throwable cause) {
+        super(message, identifier, cause);
+    }
+
+
 }

Modified: incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/builder/BindingComponentBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/builder/BindingComponentBuilder.java?view=diff&rev=518729&r1=518728&r2=518729
==============================================================================
--- incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/builder/BindingComponentBuilder.java (original)
+++ incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/builder/BindingComponentBuilder.java Thu Mar 15 12:13:42 2007
@@ -26,10 +26,10 @@
 import org.apache.tuscany.spi.builder.physical.PhysicalComponentBuilder;
 import org.apache.tuscany.spi.builder.physical.WireAttacher;
 import org.apache.tuscany.spi.component.Component;
+import org.apache.tuscany.spi.host.ServletHost;
 import org.apache.tuscany.spi.wire.Wire;
 
 import org.apache.tuscany.hessian.DestinationCreationException;
-import org.apache.tuscany.hessian.HessianService;
 import org.apache.tuscany.hessian.InvalidDestinationException;
 import org.apache.tuscany.hessian.component.BindingComponent;
 import org.apache.tuscany.hessian.model.HessianBindingComponentDefinition;
@@ -43,20 +43,20 @@
     implements PhysicalComponentBuilder<HessianBindingComponentDefinition, BindingComponent>,
     WireAttacher<BindingComponent, HessianWireSourceDefinition, HessianWireTargetDefinition> {
 
-    private HessianService hessianService;
+    private ServletHost servletHost;
 
-    public BindingComponentBuilder(@Reference HessianService hessianService) {
-        this.hessianService = hessianService;
+    public BindingComponentBuilder(@Reference ServletHost host) {
+        this.servletHost = host;
     }
 
     public BindingComponent build(HessianBindingComponentDefinition definition) throws BuilderException {
-        return new BindingComponent(definition.getComponentId(), hessianService);
+        return new BindingComponent(definition.getComponentId(), servletHost);
     }
 
     public void attach(BindingComponent source, Component target, Wire wire, HessianWireSourceDefinition definition)
         throws DestinationCreationException {
         URI endpointUri = definition.getEndpointUri();
-        hessianService.createDestination(endpointUri, wire, null); // FIXME classloader
+        source.createEndpoint(endpointUri, wire, null); // FIXME classloader
 
     }
 

Modified: incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/component/BindingComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/component/BindingComponent.java?view=diff&rev=518729&r1=518728&r2=518729
==============================================================================
--- incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/component/BindingComponent.java (original)
+++ incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/component/BindingComponent.java Thu Mar 15 12:13:42 2007
@@ -18,8 +18,9 @@
  */
 package org.apache.tuscany.hessian.component;
 
+import java.net.MalformedURLException;
 import java.net.URI;
-import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -35,6 +36,7 @@
 import org.apache.tuscany.spi.event.Event;
 import org.apache.tuscany.spi.event.EventFilter;
 import org.apache.tuscany.spi.event.RuntimeEventListener;
+import org.apache.tuscany.spi.host.ServletHost;
 import org.apache.tuscany.spi.model.Operation;
 import org.apache.tuscany.spi.model.PropertyValue;
 import org.apache.tuscany.spi.model.Scope;
@@ -45,21 +47,28 @@
 
 import org.apache.tuscany.hessian.Channel;
 import org.apache.tuscany.hessian.DestinationCreationException;
-import org.apache.tuscany.hessian.HessianService;
 import org.apache.tuscany.hessian.InvalidDestinationException;
 import org.apache.tuscany.hessian.InvokerInterceptor;
+import org.apache.tuscany.hessian.ServletHostNotFoundException;
+import org.apache.tuscany.hessian.channel.HttpChannel;
+import org.apache.tuscany.hessian.channel.LocalChannel;
+import org.apache.tuscany.hessian.destination.HttpDestination;
+import org.apache.tuscany.hessian.destination.LocalDestination;
 
 /**
  * @version $Rev$ $Date$
  */
 public class BindingComponent extends AbstractLifecycle implements Component {
+    private String LOCAL_SCHEME = "hessianLocal";
+    private String HTTP_SCHEME = "http";
     private URI uri;
-    private HessianService hessianService;
-    private List<URI> endpoints = new ArrayList<URI>();
+    private ServletHost servletHost;
+    private Map<URI, LocalDestination> destinations;
 
-    public BindingComponent(URI uri, HessianService hessianService) {
+    public BindingComponent(URI uri, ServletHost host) {
         this.uri = uri;
-        this.hessianService = hessianService;
+        this.servletHost = host;
+        destinations = new HashMap<URI, LocalDestination>();
     }
 
     public URI getUri() {
@@ -79,11 +88,22 @@
     }
 
     public void createEndpoint(URI endpointUri, Wire wire, ClassLoader loader) throws DestinationCreationException {
-        hessianService.createDestination(endpointUri, wire, loader);
+        if (LOCAL_SCHEME.equals(uri.getScheme())) {
+            LocalDestination destination = new LocalDestination(wire, loader);
+            destinations.put(uri, destination);
+        } else if (HTTP_SCHEME.equals(uri.getScheme())) {
+            if (servletHost == null) {
+                throw new ServletHostNotFoundException("ServletHost is was not found");
+            }
+            HttpDestination destination = new HttpDestination(wire, loader);
+            // FIXME mapping
+            servletHost.registerMapping(uri.toString(), destination);
+        }
+        throw new UnsupportedOperationException("Unsupported scheme");
     }
 
     public void bindToEndpoint(URI endpointUri, Wire wire) throws InvalidDestinationException {
-        Channel channel = hessianService.createChannel(endpointUri);
+        Channel channel = createChannel(endpointUri);
         for (Map.Entry<PhysicalOperationDefinition, InvocationChain> entry : wire.getPhysicalInvocationChains()
             .entrySet()) {
             String name = entry.getKey().getName();
@@ -173,6 +193,31 @@
     public TargetInvoker createTargetInvoker(String targetName, PhysicalOperationDefinition operation)
         throws TargetInvokerCreationException {
         return null;
+    }
+
+
+    /**
+     * Creates a Channel to the service at the given URI
+     *
+     * @param uri the service uri
+     * @return the channel
+     * @throws InvalidDestinationException if an error is encountered creating the channel
+     */
+    private Channel createChannel(URI uri) throws InvalidDestinationException {
+        if (LOCAL_SCHEME.equals(uri.getScheme())) {
+            LocalDestination destination = destinations.get(uri);
+            if (destination != null) {
+                throw new InvalidDestinationException("Destination not found", uri.toString());
+            }
+            return new LocalChannel(destination);
+        } else if (HTTP_SCHEME.equals(uri.getScheme())) {
+            try {
+                return new HttpChannel(uri.toURL());
+            } catch (MalformedURLException e) {
+                throw new InvalidDestinationException("URI must be a valid URL ", e);
+            }
+        }
+        throw new UnsupportedOperationException("Unsupported scheme");
     }
 
 }



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