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 2006/05/13 07:45:29 UTC
svn commit: r406016 [2/4] - in /incubator/tuscany/sandbox/jboynes/sca:
containers/container.java/src/main/java/org/apache/tuscany/container/java/builder/
containers/container.java/src/main/java/org/apache/tuscany/container/java/context/
containers/cont...
Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/CompositeContextImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/CompositeContextImpl.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/CompositeContextImpl.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/CompositeContextImpl.java Fri May 12 22:45:22 2006
@@ -0,0 +1,101 @@
+package org.apache.tuscany.core.context;
+
+import java.lang.reflect.Method;
+
+import org.apache.tuscany.spi.QualifiedName;
+import org.apache.tuscany.spi.wire.TargetInvoker;
+import org.apache.tuscany.spi.event.Event;
+import org.apache.tuscany.spi.context.CompositeContext;
+import org.apache.tuscany.spi.context.Context;
+import org.apache.tuscany.spi.context.TargetException;
+import org.apache.tuscany.spi.context.AtomicContext;
+import org.apache.tuscany.spi.context.ServiceContext;
+import org.apache.tuscany.spi.context.ReferenceContext;
+import org.osoa.sca.ModuleContext;
+import org.osoa.sca.RequestContext;
+import org.osoa.sca.ServiceReference;
+import org.osoa.sca.ServiceUnavailableException;
+
+/**
+ * The standard implementation of an composite context. Autowiring is performed by delegating to the parent
+ * context.
+ *
+ * @version $Rev: 399348 $ $Date: 2006-05-03 09:33:22 -0700 (Wed, 03 May 2006) $
+ */
+public class CompositeContextImpl<T> extends AbstractCompositeContext<T> implements ModuleContext {
+
+ public CompositeContextImpl() {
+ super();
+ }
+
+ public CompositeContextImpl(String name, CompositeContext parent, AutowireContext autowireContext) {
+ super(name, parent, autowireContext);
+ }
+
+ public void onEvent(Event event) {
+ publish(event); // propagate event to children
+ }
+
+ // ----------------------------------
+ // ModuleContext methods
+ // ----------------------------------
+
+ private String uri;
+
+ public String getURI() {
+ return uri;
+ }
+
+ public void setURI(String uri) {
+ this.uri = uri;
+ }
+
+ public Object locateService(String name) throws ServiceUnavailableException {
+ checkInit();
+ QualifiedName qName = new QualifiedName(name);
+ Context context = children.get(qName.getPartName());
+ if (context == null){
+ throw new ServiceUnavailableException("Service not found ["+name+"]");
+ }
+ try {
+ if(context instanceof AtomicContext){
+ return ((AtomicContext)context).getService(qName.getPortName());
+ }else if(context instanceof ServiceContext || context instanceof ReferenceContext){
+ return context.getService();
+ }else{
+ throw new ServiceUnavailableException("Illegal target type ["+name+"]");
+ }
+ } catch (TargetException e) {
+ e.addContextName(getName());
+ throw new ServiceUnavailableException(e);
+ }
+ }
+
+ public ServiceReference createServiceReference(String serviceName) {
+ throw new UnsupportedOperationException();
+ }
+
+ public RequestContext getRequestContext() {
+ throw new UnsupportedOperationException();
+ }
+
+ public ServiceReference createServiceReferenceForSession(Object self) {
+ throw new UnsupportedOperationException();
+ }
+
+ public ServiceReference createServiceReferenceForSession(Object self, String serviceName) {
+ throw new UnsupportedOperationException();
+ }
+
+ public ServiceReference newSession(String serviceName) {
+ throw new UnsupportedOperationException();
+ }
+
+ public ServiceReference newSession(String serviceName, Object sessionId) {
+ throw new UnsupportedOperationException();
+ }
+
+ public TargetInvoker createTargetInvoker(String serviceName, Method operation) {
+ return null;
+ }
+}
Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/ContextInitException.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/ContextInitException.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/ContextInitException.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/ContextInitException.java Fri May 12 22:45:22 2006
@@ -0,0 +1,23 @@
+package org.apache.tuscany.core.context;
+
+import org.apache.tuscany.spi.context.ContextRuntimeException;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class ContextInitException extends ContextRuntimeException {
+ public ContextInitException() {
+ }
+
+ public ContextInitException(String message) {
+ super(message);
+ }
+
+ public ContextInitException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public ContextInitException(Throwable cause) {
+ super(cause);
+ }
+}
Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/DuplicateNameException.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/DuplicateNameException.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/DuplicateNameException.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/DuplicateNameException.java Fri May 12 22:45:22 2006
@@ -0,0 +1,28 @@
+package org.apache.tuscany.core.context;
+
+import org.apache.tuscany.spi.context.ContextRuntimeException;
+
+/**
+ * Denotes an attempt to add a context with a name equal to an existing context
+ *
+ * @version $Rev: 399161 $ $Date: 2006-05-02 23:09:37 -0700 (Tue, 02 May 2006) $
+ */
+public class DuplicateNameException extends ContextRuntimeException {
+
+ public DuplicateNameException() {
+ super();
+ }
+
+ public DuplicateNameException(String message) {
+ super(message);
+ }
+
+ public DuplicateNameException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public DuplicateNameException(Throwable cause) {
+ super(cause);
+ }
+
+}
Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoAtomicContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoAtomicContext.java?rev=406016&r1=406015&r2=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoAtomicContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoAtomicContext.java Fri May 12 22:45:22 2006
@@ -1,28 +1,36 @@
package org.apache.tuscany.core.context;
+import java.util.ArrayList;
+import java.util.List;
+
import org.apache.tuscany.common.ObjectCreationException;
import org.apache.tuscany.common.ObjectFactory;
import org.apache.tuscany.core.injection.EventInvoker;
import org.apache.tuscany.model.Scope;
import org.apache.tuscany.spi.context.AtomicContext;
-import org.apache.tuscany.spi.context.InstanceContext;
+import org.apache.tuscany.spi.context.InstanceWrapper;
import org.apache.tuscany.spi.context.ScopeContext;
import org.apache.tuscany.spi.context.TargetException;
/**
+ * Base implementation of an {@link AtomicContext} whose implementation type is a Java class
+ *
* @version $$Rev$$ $$Date$$
*/
-public abstract class PojoAtomicContext extends AbstractContext implements AtomicContext {
+public abstract class PojoAtomicContext<T> extends AbstractContext<T> implements AtomicContext<T> {
protected ScopeContext<AtomicContext> scopeContext;
protected boolean eagerInit;
protected EventInvoker<Object> initInvoker;
protected EventInvoker<Object> destroyInvoker;
protected ObjectFactory<?> objectFactory;
+ protected List<Class<?>> serviceInterfaces;
- public PojoAtomicContext(String name, ObjectFactory<?> objectFactory, boolean eagerInit, EventInvoker<Object> initInvoker,
+ public PojoAtomicContext(String name, Class<?> serviceInterface, ObjectFactory<?> objectFactory, boolean eagerInit, EventInvoker<Object> initInvoker,
EventInvoker<Object> destroyInvoker) {
super(name);
+ List<Class<?>> serviceInterfaces = new ArrayList<Class<?>>();
+ serviceInterfaces.add(serviceInterface);
assert (objectFactory != null) : "Object factory was null";
if (eagerInit && initInvoker == null) {
throw new AssertionError("No intialization method found for eager init implementation");
@@ -31,6 +39,25 @@
this.eagerInit = eagerInit;
this.initInvoker = initInvoker;
this.destroyInvoker = destroyInvoker;
+ this.serviceInterfaces = serviceInterfaces;
+ }
+
+ public PojoAtomicContext(String name, List<Class<?>> serviceInterfaces, ObjectFactory<?> objectFactory, boolean eagerInit, EventInvoker<Object> initInvoker,
+ EventInvoker<Object> destroyInvoker) {
+ super(name);
+ assert (objectFactory != null) : "Object factory was null";
+ if (eagerInit && initInvoker == null) {
+ throw new AssertionError("No intialization method found for eager init implementation");
+ }
+ this.objectFactory = objectFactory;
+ this.eagerInit = eagerInit;
+ this.initInvoker = initInvoker;
+ this.destroyInvoker = destroyInvoker;
+ this.serviceInterfaces = serviceInterfaces;
+ }
+
+ public List<Class<?>> getServiceInterfaces() {
+ return serviceInterfaces;
}
public Scope getScope() {
@@ -61,12 +88,13 @@
}
}
- public Object getTargetInstance() throws TargetException {
- return scopeContext.getInstance(this);
+ @SuppressWarnings("unchecked")
+ public T getTargetInstance() throws TargetException {
+ return (T)scopeContext.getInstance(this);
}
- public InstanceContext createInstance() throws ObjectCreationException {
- InstanceContext ctx = new PojoInstanceContext(this, objectFactory.getInstance());
+ public InstanceWrapper createInstance() throws ObjectCreationException {
+ InstanceWrapper ctx = new PojoInstanceWrapper(this, objectFactory.getInstance());
ctx.start();
return ctx;
}
Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoInstanceWrapper.java (from r405791, incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoInstanceContext.java)
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoInstanceWrapper.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoInstanceWrapper.java&p1=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoInstanceContext.java&r1=405791&r2=406016&rev=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoInstanceContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoInstanceWrapper.java Fri May 12 22:45:22 2006
@@ -16,17 +16,18 @@
import org.apache.tuscany.core.AbstractLifecycle;
import org.apache.tuscany.spi.CoreRuntimeException;
import org.apache.tuscany.spi.context.AtomicContext;
-import org.apache.tuscany.spi.context.InstanceContext;
+import org.apache.tuscany.spi.context.InstanceWrapper;
/**
+ * Manages an Java class-based implementation instance
* @version $$Rev$$ $$Date$$
*/
-public class PojoInstanceContext extends AbstractLifecycle implements InstanceContext {
+public class PojoInstanceWrapper extends AbstractLifecycle implements InstanceWrapper {
private Object instance;
private AtomicContext context;
- public PojoInstanceContext(AtomicContext context, Object instance) {
+ public PojoInstanceWrapper(AtomicContext context, Object instance) {
assert(context != null);
assert(instance != null);
this.context = context;
Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/ReferenceContextImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/ReferenceContextImpl.java?rev=406016&r1=406015&r2=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/ReferenceContextImpl.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/ReferenceContextImpl.java Fri May 12 22:45:22 2006
@@ -13,55 +13,51 @@
*/
package org.apache.tuscany.core.context;
-import org.apache.tuscany.common.ObjectFactory;
-import org.apache.tuscany.spi.QualifiedName;
-import org.apache.tuscany.spi.context.TargetException;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.util.Map;
+
+import org.apache.tuscany.core.wire.jdk.JDKInvocationHandler;
import org.apache.tuscany.spi.context.ReferenceContext;
+import org.apache.tuscany.spi.context.TargetException;
import org.apache.tuscany.spi.wire.ProxyCreationException;
-import org.apache.tuscany.spi.wire.TargetWireFactory;
+import org.apache.tuscany.spi.wire.TargetInvocationChain;
+import org.apache.tuscany.spi.wire.TargetWire;
+import org.apache.tuscany.spi.wire.TargetInvoker;
/**
* The default implementation of an external service context
*
* @version $Rev$ $Date$
*/
-public class ReferenceContextImpl extends AbstractContext implements ReferenceContext {
+public class ReferenceContextImpl<T> extends AbstractContext<T> implements ReferenceContext<T> {
- private TargetWireFactory<?> targetWireFactory;
-
- private ObjectFactory targetInstanceFactory;
+ private TargetWire<T> targetWire;
+ private Class<T> referenceInterface;
/**
* Creates a reference context
*
- * @param name the name of the reference context
- * @param targetWireFactory the factory which creates proxies implementing the configured service interface for the
- * reference context. There is always only one proxy factory as an reference context is configured with one
- * service
- * @param targetInstanceFactory the object factory that creates an artifact capabile of communicating over the
- * binding transport configured on the reference context. The object factory may implement a caching strategy.
+ * @param name the name of the reference context
+ * @param targetWire the factory which creates proxies implementing the configured service
+ * interface for the reference context. There is always only one proxy factory as
+ * an reference context is configured with one service
*/
- public ReferenceContextImpl(String name, TargetWireFactory targetWireFactory, ObjectFactory targetInstanceFactory) {
+ public ReferenceContextImpl(String name, Class<T> referenceInterface, TargetWire<T> targetWire) {
super(name);
- assert (targetWireFactory != null) : "Target proxy factory was null";
- assert (targetInstanceFactory != null) : "Target instance factory was null";
- this.targetWireFactory = targetWireFactory;
- this.targetInstanceFactory = targetInstanceFactory;
- }
-
- public void start() {
- lifecycleState = RUNNING;
+ assert (targetWire != null) : "Target proxy factory was null";
+ assert (referenceInterface != null) : "Reference interface was null";
+ this.targetWire = targetWire;
+ this.referenceInterface = referenceInterface;
}
- public void stop() {
- lifecycleState = STOPPED;
+ public TargetInvoker createTargetInvoker(String serviceName, Method operation) {
+ return null; // TODO implements
}
-
- public Object getInstance(QualifiedName qName) throws TargetException {
+ public T getService() throws TargetException {
try {
- return targetWireFactory.createProxy();
- // TODO do we cache the proxy, (assumes stateful capabilities will be provided in an interceptor)
+ return targetWire.createProxy();
} catch (ProxyCreationException e) {
TargetException te = new TargetException(e);
te.addContextName(getName());
@@ -69,7 +65,14 @@
}
}
- public Object getHandler() throws TargetException {
- return targetInstanceFactory.getInstance();
+ public InvocationHandler getHandler() throws TargetException {
+ Map<Method, TargetInvocationChain> configuration = targetWire.getInvocationChains();
+ assert(configuration != null);
+ return new JDKInvocationHandler(configuration);
}
+
+ public Class<T> getInterface() {
+ return referenceInterface;
+ }
+
}
Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/ServiceContextImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/ServiceContextImpl.java?rev=406016&r1=406015&r2=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/ServiceContextImpl.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/ServiceContextImpl.java Fri May 12 22:45:22 2006
@@ -1,24 +1,24 @@
package org.apache.tuscany.core.context;
import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
import org.apache.tuscany.core.wire.jdk.JDKInvocationHandler;
import org.apache.tuscany.spi.CoreRuntimeException;
-import org.apache.tuscany.spi.Lifecycle;
-import org.apache.tuscany.spi.QualifiedName;
import org.apache.tuscany.spi.context.ServiceContext;
import org.apache.tuscany.spi.context.TargetException;
import org.apache.tuscany.spi.wire.ProxyCreationException;
-import org.apache.tuscany.spi.wire.SourceWireFactory;
+import org.apache.tuscany.spi.wire.SourceWire;
+import org.apache.tuscany.spi.wire.TargetInvoker;
/**
* The default implementation of an service context
*
* @version $Rev: 399161 $ $Date: 2006-05-02 23:09:37 -0700 (Tue, 02 May 2006) $
*/
-public class ServiceContextImpl<T extends Class> extends AbstractContext implements ServiceContext<T> {
+public class ServiceContextImpl<T extends Class> extends AbstractContext<T> implements ServiceContext<T> {
- private SourceWireFactory<T> sourceWireFactory;
+ private SourceWire<T> sourceWire;
private InvocationHandler invocationHandler;
// a proxy implementing the service exposed by the context backed by the invocation handler
private T proxy;
@@ -27,20 +27,24 @@
* Creates a new service context
*
* @param name the bound service name
- * @param sourceWireFactory the proxy factory containing the invocation chains for the service
+ * @param sourceWire the proxy factory containing the invocation chains for the service
* @throws CoreRuntimeException if an error occurs creating the service context
*/
- public ServiceContextImpl(String name, SourceWireFactory<T> sourceWireFactory) throws CoreRuntimeException {
+ public ServiceContextImpl(String name, SourceWire<T> sourceWire) throws CoreRuntimeException {
super(name);
- assert (sourceWireFactory != null) : "Proxy factory was null";
- this.sourceWireFactory = sourceWireFactory;
- invocationHandler = new JDKInvocationHandler(sourceWireFactory.getConfiguration().getInvocationConfigurations());
+ assert (sourceWire != null) : "Proxy factory was null";
+ this.sourceWire = sourceWire;
+ invocationHandler = new JDKInvocationHandler(sourceWire.getInvocationChains());
}
- public Object getInstance(QualifiedName qName) throws TargetException {
+ public TargetInvoker createTargetInvoker(String serviceName, Method operation) {
+ return null; //TODO implement
+ }
+
+ public T getService() throws TargetException {
if (proxy == null) {
try {
- proxy = sourceWireFactory.createProxy();
+ proxy = sourceWire.createProxy();
} catch (ProxyCreationException e) {
TargetException te = new TargetException(e);
te.addContextName(getName());
@@ -50,20 +54,12 @@
return proxy;
}
- public void start() {
- lifecycleState = Lifecycle.RUNNING;
- }
-
- public void stop() {
- lifecycleState = Lifecycle.STOPPED;
- }
-
public Object getHandler() {
return invocationHandler;
}
- public Class<T> getServiceInterface() {
- return sourceWireFactory.getBusinessInterface();
+ public Class<T> getInterface() {
+ return sourceWire.getBusinessInterface();
}
}
Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/AbstractScopeContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/AbstractScopeContext.java?rev=406016&r1=406015&r2=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/AbstractScopeContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/AbstractScopeContext.java Fri May 12 22:45:22 2006
@@ -9,7 +9,7 @@
import org.apache.tuscany.core.AbstractLifecycle;
import org.apache.tuscany.core.context.event.filter.TrueFilter;
import org.apache.tuscany.spi.context.Context;
-import org.apache.tuscany.spi.context.InstanceContext;
+import org.apache.tuscany.spi.context.InstanceWrapper;
import org.apache.tuscany.spi.context.ScopeContext;
import org.apache.tuscany.spi.context.TargetException;
import org.apache.tuscany.spi.context.WorkContext;
@@ -76,7 +76,7 @@
}
public Object getInstance(T context) throws TargetException {
- InstanceContext ctx = getInstanceContext(context);
+ InstanceWrapper ctx = getInstanceContext(context);
if (ctx != null) {
if (ctx.getLifecycleState() == UNINITIALIZED) {
ctx.start();
Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/CompositeScopeContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/CompositeScopeContext.java?rev=406016&r1=406015&r2=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/CompositeScopeContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/CompositeScopeContext.java Fri May 12 22:45:22 2006
@@ -20,7 +20,7 @@
import org.apache.tuscany.model.Scope;
import org.apache.tuscany.spi.Lifecycle;
import org.apache.tuscany.spi.context.CompositeContext;
-import org.apache.tuscany.spi.context.InstanceContext;
+import org.apache.tuscany.spi.context.InstanceWrapper;
import org.apache.tuscany.spi.context.ScopeContext;
import org.apache.tuscany.spi.context.TargetException;
import org.apache.tuscany.spi.event.Event;
@@ -46,10 +46,14 @@
}
public void start(){
+ if (lifecycleState != UNINITIALIZED && lifecycleState != STOPPED) {
+ throw new IllegalStateException("Scope must be in UNINITIALIZED or STOPPED state [" + lifecycleState + "]");
+ }
lifecycleState = Lifecycle.RUNNING;
}
public void stop(){
+ contexts.clear();
lifecycleState = STOPPED;
}
@@ -66,7 +70,7 @@
return context; // return the context since it is the instance
}
- public InstanceContext getInstanceContext(CompositeContext context) throws TargetException {
+ public InstanceWrapper getInstanceContext(CompositeContext context) throws TargetException {
throw new UnsupportedOperationException();
}
Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/HttpSessionScopeContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/HttpSessionScopeContext.java?rev=406016&r1=406015&r2=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/HttpSessionScopeContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/HttpSessionScopeContext.java Fri May 12 22:45:22 2006
@@ -10,7 +10,7 @@
import org.apache.tuscany.core.context.event.HttpSessionStart;
import org.apache.tuscany.model.Scope;
import org.apache.tuscany.spi.context.AtomicContext;
-import org.apache.tuscany.spi.context.InstanceContext;
+import org.apache.tuscany.spi.context.InstanceWrapper;
import org.apache.tuscany.spi.context.TargetException;
import org.apache.tuscany.spi.context.WorkContext;
import org.apache.tuscany.spi.event.Event;
@@ -24,13 +24,13 @@
public static final Object HTTP_IDENTIFIER = new Object();
- private final Map<AtomicContext, Map<Object, InstanceContext>> contexts;
- private final Map<Object, List<InstanceContext>> destroyQueues;
+ private final Map<AtomicContext, Map<Object, InstanceWrapper>> contexts;
+ private final Map<Object, List<InstanceWrapper>> destroyQueues;
public HttpSessionScopeContext(WorkContext workContext) {
super("Session Scope", workContext);
- contexts = new ConcurrentHashMap<AtomicContext, Map<Object, InstanceContext>>();
- destroyQueues = new ConcurrentHashMap<Object, List<InstanceContext>>();
+ contexts = new ConcurrentHashMap<AtomicContext, Map<Object, InstanceWrapper>>();
+ destroyQueues = new ConcurrentHashMap<Object, List<InstanceWrapper>>();
}
public Scope getScope() {
@@ -41,7 +41,7 @@
checkInit();
if (event instanceof HttpSessionStart) {
Object key = ((HttpSessionStart) event).getId();
- for (Map.Entry<AtomicContext, Map<Object, InstanceContext>> entry : contexts.entrySet()) {
+ for (Map.Entry<AtomicContext, Map<Object, InstanceWrapper>> entry : contexts.entrySet()) {
if(entry.getKey().isEagerInit()){
getInstance(entry.getKey(),key);
}
@@ -52,38 +52,41 @@
}
public synchronized void start() {
- if (lifecycleState != UNINITIALIZED) {
- throw new IllegalStateException("Scope must be in UNINITIALIZED state [" + lifecycleState + "]");
+ if (lifecycleState != UNINITIALIZED && lifecycleState != STOPPED) {
+ throw new IllegalStateException("Scope must be in UNINITIALIZED or STOPPED state [" + lifecycleState + "]");
}
lifecycleState = RUNNING;
}
public synchronized void stop() {
- //TODO stop semantics
+ contexts.clear();
+ synchronized(destroyQueues){
+ destroyQueues.clear();
+ }
lifecycleState = STOPPED;
}
public void register(AtomicContext context) {
- contexts.put(context, new ConcurrentHashMap<Object, InstanceContext>());
+ contexts.put(context, new ConcurrentHashMap<Object, InstanceWrapper>());
context.addListener(this);
}
- public InstanceContext getInstanceContext(AtomicContext context) throws TargetException {
+ public InstanceWrapper getInstanceContext(AtomicContext context) throws TargetException {
Object key = workContext.getIdentifier(HTTP_IDENTIFIER);
assert(key != null):"HTTP session key not bound in work context";
return getInstance(context, key);
}
- private InstanceContext getInstance(AtomicContext context, Object key) {
- Map<Object, InstanceContext> contextMap = contexts.get(context);
- InstanceContext ctx = contextMap.get(key);
+ private InstanceWrapper getInstance(AtomicContext context, Object key) {
+ Map<Object, InstanceWrapper> contextMap = contexts.get(context);
+ InstanceWrapper ctx = contextMap.get(key);
if (ctx == null) {
ctx = context.createInstance();
contextMap.put(key, ctx);
- List<InstanceContext> destroyQueue = destroyQueues.get(key);
+ List<InstanceWrapper> destroyQueue = destroyQueues.get(key);
if (destroyQueue == null) {
- destroyQueue = new ArrayList<InstanceContext>();
+ destroyQueue = new ArrayList<InstanceWrapper>();
destroyQueues.put(key, destroyQueue);
}
synchronized (destroyQueue) {
@@ -95,12 +98,12 @@
}
private void shutdownInstances(Object key) {
- List<InstanceContext> destroyQueue = destroyQueues.remove(key);
+ List<InstanceWrapper> destroyQueue = destroyQueues.remove(key);
if (destroyQueue != null) {
- for (Map<Object, InstanceContext> map : contexts.values()) {
+ for (Map<Object, InstanceWrapper> map : contexts.values()) {
map.remove(key);
}
- ListIterator<InstanceContext> iter = destroyQueue.listIterator(destroyQueue.size());
+ ListIterator<InstanceWrapper> iter = destroyQueue.listIterator(destroyQueue.size());
synchronized (destroyQueue) {
while (iter.hasPrevious()) {
try {
Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeContext.java?rev=406016&r1=406015&r2=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeContext.java Fri May 12 22:45:22 2006
@@ -12,7 +12,7 @@
import org.apache.tuscany.model.Scope;
import org.apache.tuscany.spi.CoreRuntimeException;
import org.apache.tuscany.spi.context.AtomicContext;
-import org.apache.tuscany.spi.context.InstanceContext;
+import org.apache.tuscany.spi.context.InstanceWrapper;
import org.apache.tuscany.spi.context.TargetException;
import org.apache.tuscany.spi.context.WorkContext;
import org.apache.tuscany.spi.event.Event;
@@ -24,15 +24,15 @@
*/
public class ModuleScopeContext extends AbstractScopeContext<AtomicContext> {
- private final Map<AtomicContext, InstanceContext> instanceContexts;
+ private final Map<AtomicContext, InstanceWrapper> instanceContexts;
// the queue of instanceContexts to destroy, in the order that their instances were created
- private final List<InstanceContext> destroyQueue;
- private static final InstanceContext EMPTY = new EmptyContext();
+ private final List<InstanceWrapper> destroyQueue;
+ private static final InstanceWrapper EMPTY = new EmptyWrapper();
public ModuleScopeContext(WorkContext workContext) {
super("Module Scope", workContext);
- instanceContexts = new ConcurrentHashMap<AtomicContext, InstanceContext>();
- destroyQueue = new ArrayList<InstanceContext>();
+ instanceContexts = new ConcurrentHashMap<AtomicContext, InstanceWrapper>();
+ destroyQueue = new ArrayList<InstanceWrapper>();
}
public Scope getScope() {
@@ -51,16 +51,19 @@
}
public synchronized void start() {
- if (lifecycleState != UNINITIALIZED) {
- throw new IllegalStateException("Scope must be in UNINITIALIZED state [" + lifecycleState + "]");
+ if (lifecycleState != UNINITIALIZED && lifecycleState != STOPPED) {
+ throw new IllegalStateException("Scope must be in UNINITIALIZED or STOPPED state [" + lifecycleState + "]");
}
lifecycleState = RUNNING;
}
public synchronized void stop() {
checkInit();
+ instanceContexts.clear();
+ synchronized (destroyQueue){
+ destroyQueue.clear();
+ }
lifecycleState = STOPPED;
- //TODO implement stop semantics
}
@@ -73,7 +76,7 @@
}
synchronized (destroyQueue) {
// shutdown destroyable instances in reverse instantiation order
- ListIterator<InstanceContext> iter = destroyQueue.listIterator(destroyQueue.size());
+ ListIterator<InstanceWrapper> iter = destroyQueue.listIterator(destroyQueue.size());
while (iter.hasPrevious()) {
iter.previous().stop();
}
@@ -87,9 +90,9 @@
}
- public InstanceContext getInstanceContext(AtomicContext context) throws TargetException {
+ public InstanceWrapper getInstanceContext(AtomicContext context) throws TargetException {
checkInit();
- InstanceContext ctx = instanceContexts.get(context);
+ InstanceWrapper ctx = instanceContexts.get(context);
if (ctx == EMPTY) {
ctx = context.createInstance();
instanceContexts.put(context, ctx);
@@ -101,10 +104,10 @@
}
private void eagerInitContexts() throws CoreRuntimeException {
- for (Map.Entry<AtomicContext, InstanceContext> entry : instanceContexts.entrySet()) {
+ for (Map.Entry<AtomicContext, InstanceWrapper> entry : instanceContexts.entrySet()) {
AtomicContext context = entry.getKey();
if (context.isEagerInit()) {
- InstanceContext instanceCtx = context.createInstance();
+ InstanceWrapper instanceCtx = context.createInstance();
instanceContexts.put(context, instanceCtx);
destroyQueue.add(instanceCtx);
}
@@ -112,7 +115,7 @@
}
- private static class EmptyContext extends AbstractLifecycle implements InstanceContext {
+ private static class EmptyWrapper extends AbstractLifecycle implements InstanceWrapper {
public Object getInstance() {
return null;
}
Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/RequestScopeContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/RequestScopeContext.java?rev=406016&r1=406015&r2=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/RequestScopeContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/RequestScopeContext.java Fri May 12 22:45:22 2006
@@ -10,7 +10,7 @@
import org.apache.tuscany.core.context.event.RequestStart;
import org.apache.tuscany.model.Scope;
import org.apache.tuscany.spi.context.AtomicContext;
-import org.apache.tuscany.spi.context.InstanceContext;
+import org.apache.tuscany.spi.context.InstanceWrapper;
import org.apache.tuscany.spi.context.TargetException;
import org.apache.tuscany.spi.context.WorkContext;
import org.apache.tuscany.spi.event.Event;
@@ -22,13 +22,13 @@
*/
public class RequestScopeContext extends AbstractScopeContext<AtomicContext> {
- private final Map<AtomicContext, Map<Thread, InstanceContext>> contexts;
- private final Map<Thread, List<InstanceContext>> destroyQueues;
+ private final Map<AtomicContext, Map<Thread, InstanceWrapper>> contexts;
+ private final Map<Thread, List<InstanceWrapper>> destroyQueues;
public RequestScopeContext(WorkContext workContext) {
super("Request Scope", workContext);
- contexts = new ConcurrentHashMap<AtomicContext, Map<Thread, InstanceContext>>();
- destroyQueues = new ConcurrentHashMap<Thread, List<InstanceContext>>();
+ contexts = new ConcurrentHashMap<AtomicContext, Map<Thread, InstanceWrapper>>();
+ destroyQueues = new ConcurrentHashMap<Thread, List<InstanceWrapper>>();
}
public Scope getScope() {
@@ -38,7 +38,7 @@
public void onEvent(Event event) {
checkInit();
if (event instanceof RequestStart) {
- for (Map.Entry<AtomicContext, Map<Thread, InstanceContext>> entry : contexts.entrySet()) {
+ for (Map.Entry<AtomicContext, Map<Thread, InstanceWrapper>> entry : contexts.entrySet()) {
if (entry.getKey().isEagerInit()) {
getInstance(entry.getKey());
}
@@ -49,31 +49,34 @@
}
public synchronized void start() {
- if (lifecycleState != UNINITIALIZED) {
- throw new IllegalStateException("Scope must be in UNINITIALIZED state [" + lifecycleState + "]");
+ if (lifecycleState != UNINITIALIZED && lifecycleState != STOPPED) {
+ throw new IllegalStateException("Scope must be in UNINITIALIZED or STOPPED state [" + lifecycleState + "]");
}
lifecycleState = RUNNING;
}
public synchronized void stop() {
- //TODO stop semantics
+ contexts.clear();
+ synchronized(destroyQueues){
+ destroyQueues.clear();
+ }
lifecycleState = STOPPED;
}
public void register(AtomicContext context) {
- contexts.put(context, new ConcurrentHashMap<Thread, InstanceContext>());
+ contexts.put(context, new ConcurrentHashMap<Thread, InstanceWrapper>());
}
- public InstanceContext getInstanceContext(AtomicContext context) throws TargetException {
- Map<Thread, InstanceContext> instanceContextMap = contexts.get(context);
+ public InstanceWrapper getInstanceContext(AtomicContext context) throws TargetException {
+ Map<Thread, InstanceWrapper> instanceContextMap = contexts.get(context);
assert(instanceContextMap != null):"Atomic context not registered";
- InstanceContext ctx = instanceContextMap.get(Thread.currentThread());
+ InstanceWrapper ctx = instanceContextMap.get(Thread.currentThread());
if (ctx == null) {
ctx = context.createInstance();
instanceContextMap.put(Thread.currentThread(), ctx);
- List<InstanceContext> destroyQueue = destroyQueues.get(Thread.currentThread());
+ List<InstanceWrapper> destroyQueue = destroyQueues.get(Thread.currentThread());
if (destroyQueue == null) {
- destroyQueue = new ArrayList<InstanceContext>();
+ destroyQueue = new ArrayList<InstanceWrapper>();
destroyQueues.put(Thread.currentThread(), destroyQueue);
}
synchronized (destroyQueue) {
@@ -84,14 +87,14 @@
}
private void shutdownInstances(Thread key) {
- List<InstanceContext> destroyQueue = destroyQueues.remove(key);
+ List<InstanceWrapper> destroyQueue = destroyQueues.remove(key);
if (destroyQueue != null && destroyQueue.size() > 0) {
if (destroyQueue != null) {
Thread thread = Thread.currentThread();
- for (Map<Thread, InstanceContext> map : contexts.values()) {
+ for (Map<Thread, InstanceWrapper> map : contexts.values()) {
map.remove(thread);
}
- ListIterator<InstanceContext> iter = destroyQueue.listIterator(destroyQueue.size());
+ ListIterator<InstanceWrapper> iter = destroyQueue.listIterator(destroyQueue.size());
synchronized (destroyQueue) {
while (iter.hasPrevious()) {
try {
Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeContext.java?rev=406016&r1=406015&r2=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeContext.java Fri May 12 22:45:22 2006
@@ -15,7 +15,7 @@
import org.apache.tuscany.model.Scope;
import org.apache.tuscany.spi.context.AtomicContext;
-import org.apache.tuscany.spi.context.InstanceContext;
+import org.apache.tuscany.spi.context.InstanceWrapper;
import org.apache.tuscany.spi.context.TargetException;
import org.apache.tuscany.spi.context.WorkContext;
import org.apache.tuscany.spi.event.Event;
@@ -37,8 +37,8 @@
}
public synchronized void start() {
- if (lifecycleState != UNINITIALIZED) {
- throw new IllegalStateException("Scope must be in UNINITIALIZED state [" + lifecycleState + "]");
+ if (lifecycleState != UNINITIALIZED && lifecycleState != STOPPED) {
+ throw new IllegalStateException("Scope must be in UNINITIALIZED or STOPPED state [" + lifecycleState + "]");
}
lifecycleState = RUNNING;
}
@@ -48,7 +48,6 @@
throw new IllegalStateException("Scope in wrong state [" + lifecycleState + "]");
}
lifecycleState = STOPPED;
- //TODO stop all contexts
}
public void onEvent(Event event) {
@@ -58,7 +57,7 @@
checkInit();
}
- public InstanceContext getInstanceContext(AtomicContext context) throws TargetException {
+ public InstanceWrapper getInstanceContext(AtomicContext context) throws TargetException {
return context.createInstance();
}
Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/DynamicTargetResolver.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/DynamicTargetResolver.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/DynamicTargetResolver.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/DynamicTargetResolver.java Fri May 12 22:45:22 2006
@@ -0,0 +1,58 @@
+package org.apache.tuscany.core.injection;
+
+import org.apache.tuscany.common.ObjectCreationException;
+import org.apache.tuscany.common.ObjectFactory;
+import org.apache.tuscany.spi.QualifiedName;
+import org.apache.tuscany.spi.context.AtomicContext;
+import org.apache.tuscany.spi.context.CompositeContext;
+import org.apache.tuscany.spi.context.Context;
+import org.apache.tuscany.spi.context.ServiceContext;
+import org.apache.tuscany.spi.context.TargetNotFoundException;
+import org.apache.tuscany.spi.context.UnknownTargetTypeException;
+import org.apache.tuscany.spi.context.ReferenceContext;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class DynamicTargetResolver<T> implements ObjectFactory<T> {
+
+ private CompositeContext parent;
+ private QualifiedName targetName;
+
+ public DynamicTargetResolver(CompositeContext parent, String targetName) {
+ assert(parent != null): "Parent context was null";
+ assert(targetName != null): "Target name not specified";
+ this.parent = parent;
+ this.targetName = new QualifiedName(targetName);
+ }
+
+ @SuppressWarnings("unchecked")
+ public T getInstance() throws ObjectCreationException {
+ Context ctx = parent.getContext(targetName.getPartName());
+ if (ctx == null) {
+ TargetNotFoundException e = new TargetNotFoundException("No target component with name");
+ e.setIdentifier(targetName.getPartName());
+ throw e;
+ }
+ if (ctx instanceof AtomicContext) {
+ return (T) ((AtomicContext) ctx).getService(targetName.getPortName());
+ } else if (ctx instanceof ServiceContext) {
+ return (T) ((ServiceContext) ctx).getService();
+ } else if (ctx instanceof CompositeContext) {
+ ServiceContext serviceContext = ((CompositeContext) ctx).getServiceContext(targetName.getPortName());
+ if (serviceContext == null) {
+ TargetNotFoundException e = new TargetNotFoundException("Service not found");
+ e.setIdentifier(targetName.getPortName());
+ e.addContextName(targetName.getPortName());
+ throw e;
+ }
+ return (T) serviceContext.getService();
+ } else if (ctx instanceof ReferenceContext){
+ return (T) ((ReferenceContext) ctx).getService();
+ }else {
+ UnknownTargetTypeException e = new UnknownTargetTypeException(ctx.getClass().getName());
+ e.setIdentifier(targetName.getQualifiedName());
+ throw e;
+ }
+ }
+}
Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/MethodInjector.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/MethodInjector.java?rev=406016&r1=406015&r2=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/MethodInjector.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/MethodInjector.java Fri May 12 22:45:22 2006
@@ -24,6 +24,10 @@
method.invoke(instance, objectFactory.getInstance());
} catch (IllegalAccessException e) {
throw new AssertionError("Method is not accessible [" + method + "]");
+ } catch (IllegalArgumentException e) {
+ ObjectCreationException oce= new ObjectCreationException("Exception thrown by setter", e);
+ oce.setIdentifier(method.getName());
+ throw oce;
} catch (InvocationTargetException e) {
ObjectCreationException oce= new ObjectCreationException("Exception thrown by setter", e);
oce.setIdentifier(method.getName());
Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/ProxyObjectFactory.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/ProxyObjectFactory.java?rev=406016&r1=406015&r2=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/ProxyObjectFactory.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/ProxyObjectFactory.java Fri May 12 22:45:22 2006
@@ -3,7 +3,7 @@
import org.apache.tuscany.common.ObjectCreationException;
import org.apache.tuscany.common.ObjectFactory;
import org.apache.tuscany.spi.wire.ProxyCreationException;
-import org.apache.tuscany.spi.wire.SourceWireFactory;
+import org.apache.tuscany.spi.wire.SourceWire;
/**
* Uses a proxy factory to return an object instance
@@ -12,9 +12,9 @@
*/
public class ProxyObjectFactory implements ObjectFactory {
- private SourceWireFactory factory;
+ private SourceWire factory;
- public ProxyObjectFactory(SourceWireFactory factory) {
+ public ProxyObjectFactory(SourceWire factory) {
this.factory = factory;
}
Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/TargetInstanceResolver.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/TargetInstanceResolver.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/TargetInstanceResolver.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/TargetInstanceResolver.java Fri May 12 22:45:22 2006
@@ -0,0 +1,22 @@
+package org.apache.tuscany.core.injection;
+
+import org.apache.tuscany.common.ObjectFactory;
+import org.apache.tuscany.common.ObjectCreationException;
+import org.apache.tuscany.spi.context.Context;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class TargetInstanceResolver<T> implements ObjectFactory<T> {
+
+ private Context<T> context;
+
+ public TargetInstanceResolver(Context<T> context) {
+ assert(context != null): "Context was null";
+ this.context = context;
+ }
+
+ public T getInstance() throws ObjectCreationException {
+ return context.getService();
+ }
+}
Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/TargetServiceResolver.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/TargetServiceResolver.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/TargetServiceResolver.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/TargetServiceResolver.java Fri May 12 22:45:22 2006
@@ -0,0 +1,26 @@
+package org.apache.tuscany.core.injection;
+
+import org.apache.tuscany.common.ObjectCreationException;
+import org.apache.tuscany.common.ObjectFactory;
+import org.apache.tuscany.spi.context.AtomicContext;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class TargetServiceResolver<T> implements ObjectFactory<T> {
+
+ private AtomicContext<T> context;
+ private String targetServiceName;
+
+ public TargetServiceResolver(AtomicContext<T> context, String targetServiceName) {
+ assert(context != null): "Context was null";
+ assert(targetServiceName != null): "Target service name was null";
+ this.context = context;
+ this.targetServiceName = targetServiceName;
+ }
+
+ @SuppressWarnings("unchecked")
+ public T getInstance() throws ObjectCreationException {
+ return (T) context.getService(targetServiceName);
+ }
+}
Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/AutowireSystemReferenceContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/AutowireSystemReferenceContext.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/AutowireSystemReferenceContext.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/AutowireSystemReferenceContext.java Fri May 12 22:45:22 2006
@@ -0,0 +1,48 @@
+package org.apache.tuscany.core.system.context;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+
+import org.apache.tuscany.core.context.AbstractContext;
+import org.apache.tuscany.core.context.AutowireContext;
+import org.apache.tuscany.spi.context.CompositeContext;
+import org.apache.tuscany.spi.context.ReferenceContext;
+import org.apache.tuscany.spi.context.TargetException;
+import org.apache.tuscany.spi.wire.TargetInvoker;
+
+/**
+ * The default implementation of an external service context
+ *
+ * @version $Rev: 399991 $ $Date: 2006-05-04 23:44:07 -0700 (Thu, 04 May 2006) $
+ */
+public class AutowireSystemReferenceContext<T> extends AbstractContext<T> implements ReferenceContext<T> {
+
+ private Class<T> referenceInterface;
+ private AutowireContext<?> autowireContext;
+
+ public AutowireSystemReferenceContext(String name, Class<T> referenceInterface, CompositeContext parent) {
+ super(name);
+ assert (referenceInterface != null) : "Reference interface was null";
+ assert (parent instanceof AutowireContext) : "Parent must implement " + AutowireContext.class.getName();
+ this.referenceInterface = referenceInterface;
+ autowireContext = (AutowireContext) parent;
+ setParent(parent);
+ }
+
+ public TargetInvoker createTargetInvoker(String serviceName, Method operation) {
+ return null;
+ }
+
+ public T getService() throws TargetException {
+ return autowireContext.resolveInstance(referenceInterface);
+ }
+
+ public InvocationHandler getHandler() throws TargetException {
+ throw new UnsupportedOperationException();
+ }
+
+ public Class<T> getInterface() {
+ return referenceInterface;
+ }
+
+}
Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/ObjectRegistrationException.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/ObjectRegistrationException.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/ObjectRegistrationException.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/ObjectRegistrationException.java Fri May 12 22:45:22 2006
@@ -0,0 +1,23 @@
+package org.apache.tuscany.core.system.context;
+
+import org.apache.tuscany.spi.context.ContextRuntimeException;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class ObjectRegistrationException extends ContextRuntimeException {
+ public ObjectRegistrationException() {
+ }
+
+ public ObjectRegistrationException(String message) {
+ super(message);
+ }
+
+ public ObjectRegistrationException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public ObjectRegistrationException(Throwable cause) {
+ super(cause);
+ }
+}
Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContext.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContext.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContext.java Fri May 12 22:45:22 2006
@@ -0,0 +1,9 @@
+package org.apache.tuscany.core.system.context;
+
+import org.apache.tuscany.spi.context.AtomicContext;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public interface SystemAtomicContext<T> extends AtomicContext<T> {
+}
Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContextImpl.java (from r405791, incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContext.java)
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContextImpl.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContextImpl.java&p1=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContext.java&r1=405791&r2=406016&rev=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContextImpl.java Fri May 12 22:45:22 2006
@@ -2,35 +2,45 @@
import java.util.List;
import java.util.Map;
+import java.lang.reflect.Method;
import org.apache.tuscany.common.ObjectCreationException;
import org.apache.tuscany.common.ObjectFactory;
import org.apache.tuscany.core.context.PojoAtomicContext;
-import org.apache.tuscany.core.context.PojoInstanceContext;
+import org.apache.tuscany.core.context.PojoInstanceWrapper;
import org.apache.tuscany.core.injection.EventInvoker;
-import org.apache.tuscany.spi.QualifiedName;
-import org.apache.tuscany.spi.context.InstanceContext;
+import org.apache.tuscany.spi.context.InstanceWrapper;
import org.apache.tuscany.spi.context.TargetException;
-import org.apache.tuscany.spi.wire.SourceWireFactory;
-import org.apache.tuscany.spi.wire.TargetWireFactory;
+import org.apache.tuscany.spi.wire.SourceWire;
+import org.apache.tuscany.spi.wire.TargetWire;
+import org.apache.tuscany.spi.wire.TargetInvoker;
/**
* @version $$Rev$$ $$Date$$
*/
-public class SystemAtomicContext extends PojoAtomicContext {
+public class SystemAtomicContextImpl<T> extends PojoAtomicContext<T> implements SystemAtomicContext<T> {
- public SystemAtomicContext(String name, ObjectFactory<?> objectFactory, boolean eagerInit, EventInvoker<Object> initInvoker,
- EventInvoker<Object> destroyInvoker) {
- super(name, objectFactory, eagerInit, initInvoker, destroyInvoker);
- this.objectFactory = objectFactory;
+ public SystemAtomicContextImpl(String name, Class<?> serviceInterface, ObjectFactory<?> objectFactory) {
+ super(name, serviceInterface, objectFactory, false, null, null);
}
- public Object getTargetInstance() throws TargetException {
- return scopeContext.getInstance(this);
+ public SystemAtomicContextImpl(String name, Class<?> serviceInterface, ObjectFactory<?> objectFactory, boolean eagerInit, EventInvoker<Object> initInvoker,
+ EventInvoker<Object> destroyInvoker) {
+ super(name, serviceInterface, objectFactory, eagerInit, initInvoker, destroyInvoker);
}
- public InstanceContext createInstance() throws ObjectCreationException {
- InstanceContext ctx = new PojoInstanceContext(this, objectFactory.getInstance());
+ public SystemAtomicContextImpl(String name, List<Class<?>> serviceInterfaces, ObjectFactory<?> objectFactory, boolean eagerInit, EventInvoker<Object> initInvoker,
+ EventInvoker<Object> destroyInvoker) {
+ super(name, serviceInterfaces, objectFactory, eagerInit, initInvoker, destroyInvoker);
+ }
+
+ @SuppressWarnings("unchecked")
+ public T getTargetInstance() throws TargetException {
+ return (T)scopeContext.getInstance(this);
+ }
+
+ public InstanceWrapper createInstance() throws ObjectCreationException {
+ InstanceWrapper ctx = new PojoInstanceWrapper(this, objectFactory.getInstance());
ctx.start();
return ctx;
}
@@ -38,33 +48,40 @@
public void prepare() {
}
- public Object getInstance(QualifiedName qName) throws TargetException {
+ public Object getService(String name) throws TargetException {
return getTargetInstance();
}
- public void addTargetWireFactory(TargetWireFactory factory) {
+ public T getService() throws TargetException {
+ return getTargetInstance();
+ }
+
+ public void addTargetWire(TargetWire wire) {
throw new UnsupportedOperationException();
}
- public TargetWireFactory getTargetWireFactory(String serviceName) {
+ public TargetWire getTargetWire(String serviceName) {
throw new UnsupportedOperationException();
}
- public Map<String, TargetWireFactory> getTargetWireFactories() {
+ public Map<String, TargetWire> getTargetWires() {
throw new UnsupportedOperationException();
}
- public void addSourceWireFactory(SourceWireFactory factory) {
+ public void addSourceWire(SourceWire wire) {
throw new UnsupportedOperationException();
}
- public void addSourceWireFactories(Class<?> multiplicityClass, List<SourceWireFactory> factories){
+ public void addSourceWires(Class<?> multiplicityClass, List<SourceWire> wires) {
throw new UnsupportedOperationException();
}
- public List<SourceWireFactory> getSourceWireFactories() {
+ public List<SourceWire> getSourceWires() {
throw new UnsupportedOperationException();
}
+ public TargetInvoker createTargetInvoker(String serviceName, Method operation){
+ throw new UnsupportedOperationException();
+ }
}
Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemCompositeContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemCompositeContext.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemCompositeContext.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemCompositeContext.java Fri May 12 22:45:22 2006
@@ -0,0 +1,22 @@
+package org.apache.tuscany.core.system.context;
+
+import org.apache.tuscany.core.context.AutowireContext;
+
+/**
+ * Marker type for system composite contexts
+ *
+ * @version $Rev: 392199 $ $Date: 2006-04-06 23:32:29 -0700 (Thu, 06 Apr 2006) $
+ */
+public interface SystemCompositeContext<T> extends AutowireContext<T> {
+
+ /**
+ * Register a simple Java Object as a system component. This is primarily intended for use by bootstrap
+ * code to create the initial configuration components.
+ *
+ * @param name the name of the resulting component
+ * @param service
+ * @param instance the Object that will become the component's implementation
+ * @throws ObjectRegistrationException
+ */
+ void registerJavaObject(String name, Class<?> service, Object instance) throws ObjectRegistrationException;
+}
Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemCompositeContextImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemCompositeContextImpl.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemCompositeContextImpl.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemCompositeContextImpl.java Fri May 12 22:45:22 2006
@@ -0,0 +1,50 @@
+package org.apache.tuscany.core.system.context;
+
+import java.lang.reflect.Method;
+
+import org.apache.tuscany.core.context.AbstractCompositeContext;
+import org.apache.tuscany.core.context.AutowireContext;
+import org.apache.tuscany.core.context.AutowireResolutionException;
+import org.apache.tuscany.spi.context.CompositeContext;
+import org.apache.tuscany.spi.event.Event;
+import org.apache.tuscany.spi.wire.TargetInvoker;
+
+/**
+ * Implements an composite context for system components. In addition, it implements an autowire policy A
+ * system context may contain child composite contexts but an entry point in a child context will only be
+ * outwardly accessible if there is an entry point that exposes it configured in the top-level system
+ * context.
+ *
+ * @version $Rev: 399161 $ $Date: 2006-05-02 23:09:37 -0700 (Tue, 02 May 2006) $
+ */
+public class SystemCompositeContextImpl<S> extends AbstractCompositeContext<S> implements SystemCompositeContext<S> {
+
+ public SystemCompositeContextImpl() {
+ super();
+ }
+
+ public SystemCompositeContextImpl(String name, CompositeContext parent, AutowireContext autowireContext) {
+ super(name, parent, autowireContext);
+ }
+
+ public void registerJavaObject(String componentName, Class<?> service, Object instance) throws ObjectRegistrationException {
+ SystemAtomicContext<Object> context = new SystemSingletonAtomicContext<Object>(componentName, service, instance);
+ registerContext(context);
+ }
+
+ public <T> T resolveInstance(Class<T> instanceInterface) throws AutowireResolutionException {
+ if (CompositeContext.class.equals(instanceInterface)) {
+ return instanceInterface.cast(this);
+ } else {
+ return super.resolveInstance(instanceInterface);
+ }
+ }
+
+ public void onEvent(Event event) {
+ publish(event); // propagate event to children
+ }
+
+ public TargetInvoker createTargetInvoker(String serviceName, Method operation) {
+ return null;
+ }
+}
Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemServiceContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemServiceContext.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemServiceContext.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemServiceContext.java Fri May 12 22:45:22 2006
@@ -0,0 +1,13 @@
+package org.apache.tuscany.core.system.context;
+
+import org.apache.tuscany.spi.context.ServiceContext;
+
+/**
+ * Marker for system service contexts
+ *
+ * @version $$Rev$$ $$Date$$
+ */
+public interface SystemServiceContext<T> extends ServiceContext<T> {
+
+
+}
Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemServiceContextImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemServiceContextImpl.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemServiceContextImpl.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemServiceContextImpl.java Fri May 12 22:45:22 2006
@@ -0,0 +1,68 @@
+package org.apache.tuscany.core.system.context;
+
+import java.lang.reflect.Method;
+
+import org.apache.tuscany.core.context.AbstractContext;
+import org.apache.tuscany.spi.CoreRuntimeException;
+import org.apache.tuscany.spi.QualifiedName;
+import org.apache.tuscany.spi.wire.TargetInvoker;
+import org.apache.tuscany.spi.context.AtomicContext;
+import org.apache.tuscany.spi.context.CompositeContext;
+import org.apache.tuscany.spi.context.Context;
+import org.apache.tuscany.spi.context.IllegalTargetException;
+import org.apache.tuscany.spi.context.ReferenceContext;
+import org.apache.tuscany.spi.context.TargetNotFoundException;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class SystemServiceContextImpl<T> extends AbstractContext<T> implements SystemServiceContext<T> {
+
+ // a reference to the component's implementation instance exposed by the entry point
+ private T cachedInstance;
+ private Class<T> interfaze;
+ private QualifiedName target;
+
+ public SystemServiceContextImpl(String name, Class<T> interfaze, String targetName, CompositeContext parent) throws CoreRuntimeException {
+ super(name);
+ this.interfaze = interfaze;
+ target = new QualifiedName(targetName);
+ setParent(parent);
+ }
+
+ public TargetInvoker createTargetInvoker(String serviceName, Method operation) {
+ return null; //TOD implement
+ }
+
+ @SuppressWarnings("unchecked")
+ public T getService() {
+ if (cachedInstance == null) {
+ Context ctx = getParent().getContext(target.getPartName());
+ if ((ctx instanceof AtomicContext)) {
+ cachedInstance = (T) ((AtomicContext) ctx).getService(target.getPortName());
+ } else if ((ctx instanceof ReferenceContext)) {
+ cachedInstance = (T) ((ReferenceContext) ctx).getService();
+ } else if (ctx == null){
+ TargetNotFoundException e = new TargetNotFoundException(name);
+ e.addContextName(getName());
+ throw e;
+ }else {
+ IllegalTargetException e = new IllegalTargetException("Reference target must be a component or reference context");
+ e.setIdentifier(name);
+ e.addContextName(getName());
+ throw e;
+ }
+ }
+ return cachedInstance;
+ }
+
+
+ public Object getHandler() {
+ return null;
+ }
+
+ public Class<T> getInterface() {
+ return interfaze;
+ }
+
+}
Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemSingletonAtomicContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemSingletonAtomicContext.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemSingletonAtomicContext.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemSingletonAtomicContext.java Fri May 12 22:45:22 2006
@@ -0,0 +1,108 @@
+package org.apache.tuscany.core.system.context;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.lang.reflect.Method;
+
+import org.apache.tuscany.common.ObjectCreationException;
+import org.apache.tuscany.core.context.AbstractContext;
+import org.apache.tuscany.model.Scope;
+import org.apache.tuscany.spi.context.AtomicContext;
+import org.apache.tuscany.spi.context.InstanceWrapper;
+import org.apache.tuscany.spi.context.ScopeContext;
+import org.apache.tuscany.spi.context.TargetException;
+import org.apache.tuscany.spi.wire.SourceWire;
+import org.apache.tuscany.spi.wire.TargetWire;
+import org.apache.tuscany.spi.wire.TargetInvoker;
+
+/**
+ * An {@link org.apache.tuscany.spi.context.AtomicContext} used when registering objects directly into a
+ * composite
+ *
+ * @version $$Rev$$ $$Date$$
+ */
+public class SystemSingletonAtomicContext<T> extends AbstractContext<T> implements SystemAtomicContext<T> {
+
+ private T instance;
+ private List<Class<?>> serviceInterfaces;
+
+ public SystemSingletonAtomicContext(String name, Class<?> serviceInterface, T instance) {
+ super(name);
+ this.instance = instance;
+ serviceInterfaces = new ArrayList<Class<?>>();
+ serviceInterfaces.add(serviceInterface);
+ }
+
+ public List<Class<?>>getServiceInterfaces() {
+ return serviceInterfaces;
+ }
+
+ public Scope getScope() {
+ return Scope.MODULE;
+ }
+
+ public void setScopeContext(ScopeContext<AtomicContext> context) {
+ // do nothing
+ }
+
+ public boolean isEagerInit() {
+ return false;
+ }
+
+ public T getTargetInstance() throws TargetException {
+ return instance;
+ }
+
+ public void prepare() {
+ }
+
+ public Object getService(String name) throws TargetException {
+ return getTargetInstance();
+ }
+
+ public T getService() throws TargetException {
+ return getTargetInstance();
+ }
+
+ public void init(Object instance) throws TargetException {
+
+ }
+
+ public void destroy(Object instance) throws TargetException {
+
+ }
+
+ public InstanceWrapper createInstance() throws ObjectCreationException {
+ throw new UnsupportedOperationException();
+ }
+
+ public void addTargetWire(TargetWire wire) {
+ throw new UnsupportedOperationException();
+ }
+
+ public TargetWire getTargetWire(String serviceName) {
+ throw new UnsupportedOperationException();
+ }
+
+ public Map<String, TargetWire> getTargetWires() {
+ throw new UnsupportedOperationException();
+ }
+
+ public void addSourceWire(SourceWire wire) {
+ throw new UnsupportedOperationException();
+ }
+
+ public void addSourceWires(Class<?> multiplicityClass, List<SourceWire> wires) {
+ throw new UnsupportedOperationException();
+ }
+
+ public List<SourceWire> getSourceWires() {
+ throw new UnsupportedOperationException();
+ }
+
+
+ public TargetInvoker createTargetInvoker(String serviceName, Method operation){
+ throw new UnsupportedOperationException();
+ }
+}
Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/util/MethodHashMap.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/util/MethodHashMap.java?rev=406016&r1=406015&r2=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/util/MethodHashMap.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/util/MethodHashMap.java Fri May 12 22:45:22 2006
@@ -19,7 +19,7 @@
import java.lang.reflect.Method;
import java.util.HashMap;
-import org.apache.tuscany.spi.wire.InvocationConfiguration;
+import org.apache.tuscany.spi.wire.InvocationChain;
/**
* A <code>Map</code> implementation that performs a lookup on a collection of methods by method name. This
@@ -29,7 +29,7 @@
*
* @version $Rev$ $Date$
*/
-public class MethodHashMap<T extends InvocationConfiguration> extends HashMap<Method, T> {
+public class MethodHashMap<T extends InvocationChain> extends HashMap<Method, T> {
public MethodHashMap() {
super();
Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/InvocationChainImpl.java (from r405791, incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/InvocationConfigurationImpl.java)
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/InvocationChainImpl.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/InvocationChainImpl.java&p1=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/InvocationConfigurationImpl.java&r1=405791&r2=406016&rev=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/InvocationConfigurationImpl.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/InvocationChainImpl.java Fri May 12 22:45:22 2006
@@ -20,13 +20,13 @@
import java.util.ArrayList;
import java.util.List;
-import org.apache.tuscany.spi.wire.InvocationConfiguration;
+import org.apache.tuscany.spi.wire.InvocationChain;
import org.apache.tuscany.spi.wire.TargetInvoker;
import org.apache.tuscany.spi.wire.Interceptor;
import org.apache.tuscany.spi.wire.MessageHandler;
-public abstract class InvocationConfigurationImpl implements InvocationConfiguration {
+public abstract class InvocationChainImpl implements InvocationChain {
// the operation on the target that will utlimately be invoked
protected Method operation;
@@ -42,7 +42,7 @@
protected List<MessageHandler> responseHandlers;
- public InvocationConfigurationImpl(Method operation) {
+ public InvocationChainImpl(Method operation) {
assert (operation != null) : "No operation type specified";
this.operation = operation;
}
Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/SourceInvocationChainImpl.java (from r405791, incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/SourceInvocationConfigurationImpl.java)
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/SourceInvocationChainImpl.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/SourceInvocationChainImpl.java&p1=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/SourceInvocationConfigurationImpl.java&r1=405791&r2=406016&rev=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/SourceInvocationConfigurationImpl.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/SourceInvocationChainImpl.java Fri May 12 22:45:22 2006
@@ -15,7 +15,7 @@
import java.lang.reflect.Method;
-import org.apache.tuscany.spi.wire.SourceInvocationConfiguration;
+import org.apache.tuscany.spi.wire.SourceInvocationChain;
import org.apache.tuscany.spi.wire.Interceptor;
import org.apache.tuscany.spi.wire.MessageChannel;
import org.apache.tuscany.spi.wire.MessageHandler;
@@ -25,7 +25,7 @@
*
* @version $Rev: 394379 $ $Date: 2006-04-15 15:01:36 -0700 (Sat, 15 Apr 2006) $
*/
-public class SourceInvocationConfigurationImpl extends InvocationConfigurationImpl implements SourceInvocationConfiguration {
+public class SourceInvocationChainImpl extends InvocationChainImpl implements SourceInvocationChain {
// the pointer to the bridged target head interceptor or null if the target has no interceptors
private Interceptor targetInterceptorChainHead;
@@ -42,7 +42,7 @@
* @param operation the method on the interface representing specified by the reference, where the method corresponds to the
* service operation
*/
- public SourceInvocationConfigurationImpl(Method operation) {
+ public SourceInvocationChainImpl(Method operation) {
super(operation);
}
Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/TargetInvocationChainImpl.java (from r405791, incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/TargetInvocationConfigurationImpl.java)
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/TargetInvocationChainImpl.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/TargetInvocationChainImpl.java&p1=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/TargetInvocationConfigurationImpl.java&r1=405791&r2=406016&rev=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/TargetInvocationConfigurationImpl.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/TargetInvocationChainImpl.java Fri May 12 22:45:22 2006
@@ -15,7 +15,7 @@
import java.lang.reflect.Method;
-import org.apache.tuscany.spi.wire.TargetInvocationConfiguration;
+import org.apache.tuscany.spi.wire.TargetInvocationChain;
import org.apache.tuscany.spi.wire.MessageHandler;
/**
@@ -23,7 +23,7 @@
*
* @version $Rev: 394379 $ $Date: 2006-04-15 15:01:36 -0700 (Sat, 15 Apr 2006) $
*/
-public class TargetInvocationConfigurationImpl extends InvocationConfigurationImpl implements TargetInvocationConfiguration {
+public class TargetInvocationChainImpl extends InvocationChainImpl implements TargetInvocationChain {
/**
* Creates an new target-side pipeline for the given operation
@@ -31,7 +31,7 @@
* @param operation the method on the interface representing target service, where the method corresponds
* to the service operation
*/
- public TargetInvocationConfigurationImpl(Method operation) {
+ public TargetInvocationChainImpl(Method operation) {
super(operation);
}
Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKInvocationHandler.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKInvocationHandler.java?rev=406016&r1=406015&r2=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKInvocationHandler.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKInvocationHandler.java Fri May 12 22:45:22 2006
@@ -25,7 +25,7 @@
import org.apache.tuscany.core.wire.MessageImpl;
import org.apache.tuscany.spi.context.TargetException;
import org.apache.tuscany.spi.wire.Interceptor;
-import org.apache.tuscany.spi.wire.InvocationConfiguration;
+import org.apache.tuscany.spi.wire.InvocationChain;
import org.apache.tuscany.spi.wire.Message;
import org.apache.tuscany.spi.wire.TargetInvoker;
@@ -45,10 +45,10 @@
*/
private Map<Method, ConfigHolder> configuration;
- public JDKInvocationHandler(Map<Method, ? extends InvocationConfiguration> configuration) {
+ public JDKInvocationHandler(Map<Method, ? extends InvocationChain> configuration) {
assert (configuration != null) : "Configuration not specified";
this.configuration = new HashMap<Method, ConfigHolder>(configuration.size());
- for (Map.Entry<Method, ? extends InvocationConfiguration> entry : configuration.entrySet()) {
+ for (Map.Entry<Method, ? extends InvocationChain> entry : configuration.entrySet()) {
this.configuration.put(entry.getKey(), new ConfigHolder(entry.getValue()));
}
}
@@ -64,7 +64,7 @@
e.setIdentifier(method.getName());
throw e;
}
- InvocationConfiguration config = holder.config;
+ InvocationChain config = holder.config;
if (config != null) {
headInterceptor = config.getHeadInterceptor();
}
@@ -121,10 +121,10 @@
*/
private class ConfigHolder {
- InvocationConfiguration config;
+ InvocationChain config;
TargetInvoker cachedInvoker;
- public ConfigHolder(InvocationConfiguration config) {
+ public ConfigHolder(InvocationChain config) {
this.config = config;
}
Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKSourceWire.java (from r405791, incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKSourceWireFactory.java)
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKSourceWire.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKSourceWire.java&p1=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKSourceWireFactory.java&r1=405791&r2=406016&rev=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKSourceWireFactory.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKSourceWire.java Fri May 12 22:45:22 2006
@@ -19,10 +19,9 @@
import java.util.Map;
import org.apache.tuscany.core.util.MethodHashMap;
-import org.apache.tuscany.spi.wire.SourceInvocationConfiguration;
-import org.apache.tuscany.spi.wire.SourceWireFactory;
+import org.apache.tuscany.spi.wire.SourceInvocationChain;
+import org.apache.tuscany.spi.wire.SourceWire;
import org.apache.tuscany.spi.wire.WireFactoryInitException;
-import org.apache.tuscany.spi.wire.WireSourceConfiguration;
/**
* Creates proxies that are injected on references using JDK dynamic proxy facilities and front a wire. The
@@ -30,7 +29,7 @@
*
* @version $Rev: 394431 $ $Date: 2006-04-15 21:27:44 -0700 (Sat, 15 Apr 2006) $
*/
-public class JDKSourceWireFactory<T> implements SourceWireFactory<T> {
+public class JDKSourceWire<T> implements SourceWire<T> {
private static final int UNINITIALIZED = 0;
@@ -40,9 +39,7 @@
private Class<T>[] businessInterfaceArray;
- private Map<Method, SourceInvocationConfiguration> methodToInvocationConfig;
-
- private WireSourceConfiguration configuration;
+ private Map<Method, SourceInvocationChain> methodToInvocationConfig;
@SuppressWarnings("unchecked")
public T createProxy() {
@@ -53,14 +50,6 @@
return (T) Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), businessInterfaceArray, handler);
}
- public WireSourceConfiguration getConfiguration() {
- return configuration;
- }
-
- public void setConfiguration(WireSourceConfiguration config) {
- configuration = config;
- }
-
@SuppressWarnings("unchecked")
public void setBusinessInterface(Class<T> interfaze) {
businessInterfaceArray = new Class[]{interfaze};
@@ -82,13 +71,33 @@
if (state != UNINITIALIZED) {
throw new IllegalStateException("Proxy factory in wrong state [" + state + "]");
}
- Map<Method, SourceInvocationConfiguration> invocationConfigs = configuration.getInvocationConfigurations();
- methodToInvocationConfig = new MethodHashMap<SourceInvocationConfiguration>(invocationConfigs.size());
- for (Map.Entry<Method, SourceInvocationConfiguration> entry : invocationConfigs.entrySet()) {
- Method method = entry.getKey();
- methodToInvocationConfig.put(method, entry.getValue());
+ if (invocationChains != null) {
+ methodToInvocationConfig = new MethodHashMap<SourceInvocationChain>(invocationChains.size());
+ for (Map.Entry<Method, SourceInvocationChain> entry : invocationChains.entrySet()) {
+ Method method = entry.getKey();
+ methodToInvocationConfig.put(method, entry.getValue());
+ }
}
state = INITIALIZED;
}
-
+
+ private Map<Method, SourceInvocationChain> invocationChains;
+
+ public Map<Method, SourceInvocationChain> getInvocationChains() {
+ return invocationChains;
+ }
+
+ public void setInvocationChains(Map<Method, SourceInvocationChain> chains) {
+ invocationChains = chains;
+ }
+
+ public String getReferenceName() {
+ return referenceName;
+ }
+
+ public void setReferenceName(String referenceName) {
+ this.referenceName = referenceName;
+ }
+
+ private String referenceName;
}