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