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/13 12:48:22 UTC
svn commit: r517650 - in /incubator/tuscany/java/sca/kernel:
core/src/main/java/org/apache/tuscany/core/builder/
core/src/main/java/org/apache/tuscany/core/builder/physical/
core/src/main/java/org/apache/tuscany/core/implementation/java/
spi/src/main/j...
Author: jmarino
Date: Tue Mar 13 04:48:16 2007
New Revision: 517650
URL: http://svn.apache.org/viewvc?view=rev&rev=517650
Log:
start implementing attach for the JPCB
Added:
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/physical/WireAttachException.java (with props)
Modified:
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponent.java
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentBuilder.java
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Invocable.java
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/physical/PhysicalWireDefinition.java
Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java?view=diff&rev=517650&r1=517649&r2=517650
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java Tue Mar 13 04:48:16 2007
@@ -125,7 +125,12 @@
}
Wire wire = createWire(definition);
attacherRegistry.attach(source, wire, definition.getSource());
- attacherRegistry.attach(source, wire, definition.getTarget());
+ attacherRegistry.attach(target, wire, definition.getTarget());
+ if (!wire.getCallbackPhysicalInvocationChains().isEmpty()) {
+ // attach callbacks
+ attacherRegistry.attach(target, wire, definition.getCallbackSource());
+ attacherRegistry.attach(source, wire, definition.getCallbackTarget());
+ }
}
public void connect(ComponentDefinition<? extends Implementation<?>> definition) throws WiringException {
Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/physical/WireAttachException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/physical/WireAttachException.java?view=auto&rev=517650
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/physical/WireAttachException.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/physical/WireAttachException.java Tue Mar 13 04:48:16 2007
@@ -0,0 +1,32 @@
+/*
+ * 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.core.builder.physical;
+
+import java.net.URI;
+
+import org.apache.tuscany.spi.builder.WiringException;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class WireAttachException extends WiringException {
+ public WireAttachException(String message, URI sourceUri, URI targetUri, Throwable cause) {
+ super(message, sourceUri, targetUri, cause);
+ }
+}
Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/physical/WireAttachException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/physical/WireAttachException.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponent.java?view=diff&rev=517650&r1=517649&r2=517650
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponent.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponent.java Tue Mar 13 04:48:16 2007
@@ -38,28 +38,4 @@
super(componentId, instanceFactoryProvider, scopeContainer, initLevel, maxIdleTime, maxAge);
}
-/*
- public TargetInvoker createTargetInvoker(String targetName, PhysicalOperationDefinition operation)
- throws TargetInvokerCreationException {
- List<String> params = operation.getParameters();
- Class<?>[] paramTypes = new Class<?>[params.size()];
- ClassLoader loader = implementationClass.getClassLoader();
- assert loader != null;
- for (int i = 0; i < params.size(); i++) {
- String param = params.get(i);
- try {
- paramTypes[i] = loader.loadClass(param);
- } catch (ClassNotFoundException e) {
- throw new TypeNotFoundException(operation, e);
- }
- }
- Method method;
- try {
- method = implementationClass.getMethod(operation.getName(), paramTypes);
- } catch (NoSuchMethodException e) {
- throw new TargetMethodNotFoundException(operation);
- }
- return new JavaTargetInvoker(method, this, scopeContainer, workContext);
- }
-*/
}
Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentBuilder.java?view=diff&rev=517650&r1=517649&r2=517650
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentBuilder.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentBuilder.java Tue Mar 13 04:48:16 2007
@@ -18,7 +18,10 @@
*/
package org.apache.tuscany.core.implementation.java;
+import java.lang.reflect.Method;
import java.net.URI;
+import java.util.List;
+import java.util.Map;
import org.osoa.sca.annotations.Reference;
@@ -28,10 +31,14 @@
import org.apache.tuscany.spi.builder.physical.WireAttacher;
import org.apache.tuscany.spi.component.ScopeContainer;
import org.apache.tuscany.spi.component.ScopeRegistry;
+import org.apache.tuscany.spi.component.WorkContext;
import org.apache.tuscany.spi.model.Scope;
+import org.apache.tuscany.spi.model.physical.PhysicalOperationDefinition;
import org.apache.tuscany.spi.services.classloading.ClassLoaderRegistry;
+import org.apache.tuscany.spi.wire.InvocationChain;
import org.apache.tuscany.spi.wire.Wire;
+import org.apache.tuscany.core.builder.physical.WireAttachException;
import org.apache.tuscany.core.component.InstanceFactoryProvider;
import org.apache.tuscany.core.model.physical.java.JavaPhysicalComponentDefinition;
import org.apache.tuscany.core.model.physical.java.JavaPhysicalWireSourceDefinition;
@@ -50,9 +57,11 @@
// Classloader registry
private ClassLoaderRegistry classLoaderRegistry;
- // SCope registry
+ // Scope registry
private ScopeRegistry scopeRegistry;
+ private WorkContext workContext;
+
/**
* Injects builder registry.
*
@@ -63,6 +72,12 @@
registry.register(JavaPhysicalComponentDefinition.class, this);
}
+
+ @Reference
+ public void setWorkContext(WorkContext workContext) {
+ this.workContext = workContext;
+ }
+
/**
* Builds a component from its physical component definition.
*
@@ -136,7 +151,7 @@
* @param source Source.
*/
public void attach(JavaComponent component, Wire wire, JavaPhysicalWireSourceDefinition source) {
-
+ // TODO
}
/**
@@ -146,7 +161,40 @@
* @param wire
* @param target Target.
*/
- public void attach(JavaComponent component, Wire wire, JavaPhysicalWireTargetDefinition target) {
+ public void attach(JavaComponent component, Wire wire, JavaPhysicalWireTargetDefinition target)
+ throws WireAttachException {
+ //TODO get impl class
+ Class<?> implementationClass = null;
+
+ for (Map.Entry<PhysicalOperationDefinition, InvocationChain> entry : wire.getPhysicalInvocationChains()
+ .entrySet()) {
+ PhysicalOperationDefinition operation = entry.getKey();
+ InvocationChain chain = entry.getValue();
+ List<String> params = operation.getParameters();
+ Class<?>[] paramTypes = new Class<?>[params.size()];
+ ClassLoader loader = implementationClass.getClassLoader();
+ assert loader != null;
+ for (int i = 0; i < params.size(); i++) {
+ String param = params.get(i);
+ try {
+ paramTypes[i] = loader.loadClass(param);
+ } catch (ClassNotFoundException e) {
+ URI sourceUri = wire.getSourceUri();
+ URI targetUri = wire.getTargetUri();
+ throw new WireAttachException("Implementation class not found", sourceUri, targetUri, e);
+ }
+ }
+ Method method;
+ try {
+ method = implementationClass.getMethod(operation.getName(), paramTypes);
+ } catch (NoSuchMethodException e) {
+ URI sourceUri = wire.getSourceUri();
+ URI targetUri = wire.getTargetUri();
+ throw new WireAttachException("No matching method found", sourceUri, targetUri, e);
+ }
+ // TODO deal with scope container
+ chain.addInterceptor(new JavaInvokerInterceptor(method, component, null, workContext));
+ }
}
}
Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Invocable.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Invocable.java?view=diff&rev=517650&r1=517649&r2=517650
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Invocable.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Invocable.java Tue Mar 13 04:48:16 2007
@@ -24,6 +24,7 @@
/**
* @version $Rev$ $Date$
+ * @Deprecated
*/
public interface Invocable extends SCAObject {
Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/physical/PhysicalWireDefinition.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/physical/PhysicalWireDefinition.java?view=diff&rev=517650&r1=517649&r2=517650
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/physical/PhysicalWireDefinition.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/physical/PhysicalWireDefinition.java Tue Mar 13 04:48:16 2007
@@ -39,6 +39,11 @@
// Source definition
private PhysicalWireSourceDefinition source;
+ private PhysicalWireTargetDefinition callbackTarget;
+
+ // Source definition
+ private PhysicalWireSourceDefinition callbackSource;
+
// Collection of operations
private Set<PhysicalOperationDefinition> operations = new HashSet<PhysicalOperationDefinition>();
@@ -138,6 +143,22 @@
*/
public void setTarget(PhysicalWireTargetDefinition target) {
this.target = target;
+
+ }
+
+ public PhysicalWireTargetDefinition getCallbackTarget() {
+ return callbackTarget;
}
+ public void setCallbackTarget(PhysicalWireTargetDefinition callbackTarget) {
+ this.callbackTarget = callbackTarget;
+ }
+
+ public PhysicalWireSourceDefinition getCallbackSource() {
+ return callbackSource;
+ }
+
+ public void setCallbackSource(PhysicalWireSourceDefinition callbackSource) {
+ this.callbackSource = callbackSource;
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org