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

svn commit: r519671 - in /incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian: ./ builder/ component/ loader/ marshaller/ model/ model/logical/ model/physical/ wire/

Author: meerajk
Date: Sun Mar 18 12:01:46 2007
New Revision: 519671

URL: http://svn.apache.org/viewvc?view=rev&rev=519671
Log:
First step to moving this to the new model.

Added:
    incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/component/HessianBindingComponent.java   (with props)
    incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/loader/
    incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/marshaller/
    incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/model/logical/
    incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/model/physical/
    incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/model/physical/HessianWireSourceDefinition.java
      - copied, changed from r519632, incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/model/HessianWireSourceDefinition.java
    incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/model/physical/HessianWireTargetDefinition.java
      - copied, changed from r519632, incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/model/HessianWireTargetDefinition.java
    incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/wire/
      - copied from r519632, incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/builder/
    incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/wire/HessianWireAttacher.java
      - copied, changed from r519632, incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/builder/BindingComponentBuilder.java
Removed:
    incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/builder/
    incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/component/BindingComponent.java
    incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/model/HessianBindingComponentDefinition.java
    incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/model/HessianWireSourceDefinition.java
    incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/model/HessianWireTargetDefinition.java
    incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/wire/BindingComponentBuilder.java
Modified:
    incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/InvalidDestinationException.java
    incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/InvocationException.java
    incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/ServletHostNotFoundException.java
    incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/TypeNotFoundException.java
    incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/component/WireBindException.java

Modified: incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/InvalidDestinationException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/InvalidDestinationException.java?view=diff&rev=519671&r1=519670&r2=519671
==============================================================================
--- incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/InvalidDestinationException.java (original)
+++ incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/InvalidDestinationException.java Sun Mar 18 12:01:46 2007
@@ -23,6 +23,7 @@
 /**
  * @version $Rev$ $Date$
  */
+@SuppressWarnings("serial")
 public class InvalidDestinationException extends WiringException {
     public InvalidDestinationException(String message, Throwable cause) {
         super(message, null, null, cause);

Modified: incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/InvocationException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/InvocationException.java?view=diff&rev=519671&r1=519670&r2=519671
==============================================================================
--- incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/InvocationException.java (original)
+++ incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/InvocationException.java Sun Mar 18 12:01:46 2007
@@ -25,6 +25,7 @@
  *
  * @version $Rev$ $Date$
  */
+@SuppressWarnings("serial")
 public class InvocationException extends TuscanyException {
 
     public InvocationException(String message, String identifier) {

Modified: incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/ServletHostNotFoundException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/ServletHostNotFoundException.java?view=diff&rev=519671&r1=519670&r2=519671
==============================================================================
--- incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/ServletHostNotFoundException.java (original)
+++ incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/ServletHostNotFoundException.java Sun Mar 18 12:01:46 2007
@@ -20,6 +20,7 @@
 /**
  * @version $Rev$ $Date$
  */
+@SuppressWarnings("serial")
 public class ServletHostNotFoundException extends DestinationCreationException {
     public ServletHostNotFoundException(String message) {
         super(message);

Modified: incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/TypeNotFoundException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/TypeNotFoundException.java?view=diff&rev=519671&r1=519670&r2=519671
==============================================================================
--- incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/TypeNotFoundException.java (original)
+++ incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/TypeNotFoundException.java Sun Mar 18 12:01:46 2007
@@ -23,6 +23,7 @@
  *
  * @version $Rev$ $Date$
  */
+@SuppressWarnings("serial")
 public class TypeNotFoundException extends DestinationCreationException {
 
     public TypeNotFoundException(String message, String identifier, Throwable cause) {

Added: incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/component/HessianBindingComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/component/HessianBindingComponent.java?view=auto&rev=519671
==============================================================================
--- incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/component/HessianBindingComponent.java (added)
+++ incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/component/HessianBindingComponent.java Sun Mar 18 12:01:46 2007
@@ -0,0 +1,112 @@
+/*
+ * 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.hessian.component;
+
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.tuscany.hessian.Channel;
+import org.apache.tuscany.hessian.DestinationCreationException;
+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;
+import org.apache.tuscany.spi.host.ServletHost;
+import org.apache.tuscany.spi.model.physical.PhysicalOperationDefinition;
+import org.apache.tuscany.spi.wire.InvocationChain;
+import org.apache.tuscany.spi.wire.Wire;
+import org.osoa.sca.annotations.Property;
+import org.osoa.sca.annotations.Reference;
+
+/**
+ * Binding component for hessian transport.
+ */
+public class HessianBindingComponent {
+
+    public static String LOCAL_SCHEME = "hessianLocal";
+    public static String HTTP_SCHEME = "http";
+    private URI uri;
+    private ServletHost servletHost;
+    private Map<URI, LocalDestination> destinations;
+
+    public HessianBindingComponent(@Property(name = "uri")
+    URI uri, @Reference(name = "servletHost")
+    ServletHost host) {
+        this.uri = uri;
+        this.servletHost = host;
+        destinations = new HashMap<URI, LocalDestination>();
+    }
+
+    public void createEndpoint(URI endpointUri, Wire wire, ClassLoader loader) throws DestinationCreationException {
+        if (LOCAL_SCHEME.equals(endpointUri.getScheme())) {
+            LocalDestination destination = new LocalDestination(wire, loader);
+            destinations.put(uri, destination);
+        } else if (HTTP_SCHEME.equals(endpointUri.getScheme())) {
+            if (servletHost == null) {
+                throw new ServletHostNotFoundException("ServletHost is was not found");
+            }
+            HttpDestination destination = new HttpDestination(wire, loader);
+            // FIXME mapping
+            servletHost.registerMapping(endpointUri.getPath(), destination);
+        } else {
+            throw new UnsupportedOperationException("Unsupported scheme");
+        }
+    }
+
+    public void bindToEndpoint(URI endpointUri, Wire wire) throws InvalidDestinationException {
+        Channel channel = createChannel(endpointUri);
+        for (Map.Entry<PhysicalOperationDefinition, InvocationChain> entry : wire.getPhysicalInvocationChains()
+            .entrySet()) {
+            String name = entry.getKey().getName();
+            InvokerInterceptor interceptor = new InvokerInterceptor(name, channel);
+            entry.getValue().addInterceptor(interceptor);
+        }
+    }
+
+    /**
+     * 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");
+    }
+
+}

Propchange: incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/component/HessianBindingComponent.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/component/HessianBindingComponent.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/component/WireBindException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/component/WireBindException.java?view=diff&rev=519671&r1=519670&r2=519671
==============================================================================
--- incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/component/WireBindException.java (original)
+++ incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/component/WireBindException.java Sun Mar 18 12:01:46 2007
@@ -23,6 +23,7 @@
 /**
  * @version $Rev$ $Date$
  */
+@SuppressWarnings("serial")
 public class WireBindException extends HessianException {
 
     public WireBindException(Throwable cause) {

Copied: incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/model/physical/HessianWireSourceDefinition.java (from r519632, incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/model/HessianWireSourceDefinition.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/model/physical/HessianWireSourceDefinition.java?view=diff&rev=519671&p1=incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/model/HessianWireSourceDefinition.java&r1=519632&p2=incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/model/physical/HessianWireSourceDefinition.java&r2=519671
==============================================================================
--- incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/model/HessianWireSourceDefinition.java (original)
+++ incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/model/physical/HessianWireSourceDefinition.java Sun Mar 18 12:01:46 2007
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tuscany.hessian.model;
+package org.apache.tuscany.hessian.model.physical;
 
 import java.net.URI;
 

Copied: incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/model/physical/HessianWireTargetDefinition.java (from r519632, incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/model/HessianWireTargetDefinition.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/model/physical/HessianWireTargetDefinition.java?view=diff&rev=519671&p1=incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/model/HessianWireTargetDefinition.java&r1=519632&p2=incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/model/physical/HessianWireTargetDefinition.java&r2=519671
==============================================================================
--- incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/model/HessianWireTargetDefinition.java (original)
+++ incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/model/physical/HessianWireTargetDefinition.java Sun Mar 18 12:01:46 2007
@@ -16,11 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tuscany.hessian.model;
+package org.apache.tuscany.hessian.model.physical;
 
 import java.net.URI;
 
-import org.apache.tuscany.spi.model.physical.PhysicalWireSourceDefinition;
 import org.apache.tuscany.spi.model.physical.PhysicalWireTargetDefinition;
 
 /**

Copied: incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/wire/HessianWireAttacher.java (from r519632, 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/wire/HessianWireAttacher.java?view=diff&rev=519671&p1=incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/builder/BindingComponentBuilder.java&r1=519632&p2=incubator/tuscany/java/sca/extensions/hessian/binding/src/main/java/org/apache/tuscany/hessian/wire/HessianWireAttacher.java&r2=519671
==============================================================================
--- 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/wire/HessianWireAttacher.java Sun Mar 18 12:01:46 2007
@@ -16,53 +16,43 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tuscany.hessian.builder;
+package org.apache.tuscany.hessian.wire;
 
 import java.net.URI;
 
-import org.osoa.sca.annotations.Reference;
-
-import org.apache.tuscany.spi.builder.BuilderException;
-import org.apache.tuscany.spi.builder.physical.PhysicalComponentBuilder;
+import org.apache.tuscany.hessian.DestinationCreationException;
+import org.apache.tuscany.hessian.InvalidDestinationException;
+import org.apache.tuscany.hessian.component.HessianBindingComponent;
+import org.apache.tuscany.hessian.model.physical.HessianWireSourceDefinition;
+import org.apache.tuscany.hessian.model.physical.HessianWireTargetDefinition;
 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.InvalidDestinationException;
-import org.apache.tuscany.hessian.component.BindingComponent;
-import org.apache.tuscany.hessian.model.HessianBindingComponentDefinition;
-import org.apache.tuscany.hessian.model.HessianWireSourceDefinition;
-import org.apache.tuscany.hessian.model.HessianWireTargetDefinition;
+import org.osoa.sca.annotations.Reference;
 
 /**
  * @version $Rev$ $Date$
  */
-public class BindingComponentBuilder
-    implements PhysicalComponentBuilder<HessianBindingComponentDefinition, BindingComponent>,
-    WireAttacher<BindingComponent, HessianWireSourceDefinition, HessianWireTargetDefinition> {
+public class HessianWireAttacher<C extends Component> implements
+    WireAttacher<C, HessianWireSourceDefinition, HessianWireTargetDefinition> {
 
-    private ServletHost servletHost;
-
-    public BindingComponentBuilder(@Reference ServletHost host) {
-        this.servletHost = host;
-    }
+    private HessianBindingComponent bindingComponent;
 
-    public BindingComponent build(HessianBindingComponentDefinition definition) throws BuilderException {
-        return new BindingComponent(definition.getComponentId(), servletHost);
+    public HessianWireAttacher(@Reference(name="bindingComponent") HessianBindingComponent bindingComponent) {
+        this.bindingComponent = bindingComponent;
     }
 
-    public void attach(BindingComponent source, Component target, Wire wire, HessianWireSourceDefinition definition)
+    public void attach(C source, Component target, Wire wire, HessianWireSourceDefinition definition)
         throws DestinationCreationException {
         URI endpointUri = definition.getEndpointUri();
-        source.createEndpoint(endpointUri, wire, null); // FIXME classloader
+        // FIXME classloader
+        bindingComponent.createEndpoint(endpointUri, wire, null); 
 
     }
 
-    public void attach(BindingComponent component, Wire wire, HessianWireTargetDefinition definition)
+    public void attach(C component, Wire wire, HessianWireTargetDefinition definition)
         throws InvalidDestinationException {
         URI endpointUri = definition.getEndpointUri();
-        component.bindToEndpoint(endpointUri, wire);
+        bindingComponent.bindToEndpoint(endpointUri, wire);
     }
 }



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