diff options
Diffstat (limited to 'branches/java-post-M1/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/invocation')
3 files changed, 0 insertions, 232 deletions
diff --git a/branches/java-post-M1/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/invocation/AbstractJavaComponentInvoker.java b/branches/java-post-M1/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/invocation/AbstractJavaComponentInvoker.java deleted file mode 100644 index 33fa9238b6..0000000000 --- a/branches/java-post-M1/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/invocation/AbstractJavaComponentInvoker.java +++ /dev/null @@ -1,93 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. - * - * Licensed 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.container.java.invocation; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.Set; - -import org.apache.tuscany.core.config.JavaIntrospectionHelper; -import org.apache.tuscany.core.context.TargetException; -import org.apache.tuscany.core.wire.Interceptor; -import org.apache.tuscany.core.wire.InvocationRuntimeException; -import org.apache.tuscany.core.wire.TargetInvoker; -import org.apache.tuscany.core.message.Message; - -/** - * Base class for dispatching to a Java based component implementation. Subclasses implement a strategy for resolving - * implementation instances. - * - * @version $Rev$ $Date$ - */ -public abstract class AbstractJavaComponentInvoker implements TargetInvoker { - - protected Method operation; - - public AbstractJavaComponentInvoker(Method operation) { - assert (operation != null) : "Operation method cannot be null"; - this.operation = operation; - } - - public Object invokeTarget(Object payload) throws InvocationTargetException { - try { - Object instance = getInstance(); - if (!operation.getDeclaringClass().isInstance(instance)) { - Set<Method> methods = JavaIntrospectionHelper.getAllUniqueMethods(instance.getClass()); - Method newOperation = JavaIntrospectionHelper.findClosestMatchingMethod(operation.getName(), operation - .getParameterTypes(), methods); - if (newOperation != null) - operation = newOperation; - } - if (payload != null && !payload.getClass().isArray()) { - return operation.invoke(instance, payload); - } else { - return operation.invoke(instance, (Object[]) payload); - } - } catch (IllegalAccessException e) { - throw new InvocationRuntimeException(e); - } - } - - public Message invoke(Message msg) { - try { - Object resp = invokeTarget(msg.getBody()); - msg.setBody(resp); - } catch (InvocationTargetException e) { - msg.setBody(e.getCause()); - } catch (Throwable e) { - msg.setBody(e); - } - return msg; - } - - protected abstract Object getInstance() throws TargetException; - - public void setNext(Interceptor next) { - throw new IllegalStateException("This interceptor must be the last interceptor in an interceptor chain"); - } - - @Override - public Object clone() throws CloneNotSupportedException { - try { - AbstractJavaComponentInvoker clone = (AbstractJavaComponentInvoker) super.clone(); - clone.operation = this.operation; - return clone; - } catch (CloneNotSupportedException e) { - return null; // will not happen - } - } -} diff --git a/branches/java-post-M1/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/invocation/ScopedJavaComponentInvoker.java b/branches/java-post-M1/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/invocation/ScopedJavaComponentInvoker.java deleted file mode 100644 index 85d72b4b0d..0000000000 --- a/branches/java-post-M1/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/invocation/ScopedJavaComponentInvoker.java +++ /dev/null @@ -1,89 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. - * - * Licensed 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.container.java.invocation; - -import org.apache.tuscany.core.context.QualifiedName; -import org.apache.tuscany.core.context.ScopeContext; -import org.apache.tuscany.core.context.TargetException; - -import java.lang.reflect.Method; - -/** - * Uses a scope container to resolve an implementation instance based on the current thread context - * - * @version $Rev$ $Date$ - */ -public class ScopedJavaComponentInvoker extends AbstractJavaComponentInvoker { - - private ScopeContext container; - - private QualifiedName name; - - private Object target; - - public boolean cacheable; - - - /** - * Creates a new invoker - * - * @param serviceName the name of the component/service pair to invoke - * @param operation the operation the invoker is associated with - * @param scopeContext the scope context the component is resolved in - * @param cacheable Sets whether the target service instance may be cached by the invoker. This is a possible optimization - * when a wire is configured for a "down-scope" reference, i.e. a reference from a source of a shorter - * lifetime to a source of greater lifetime. - */ - public ScopedJavaComponentInvoker(QualifiedName serviceName, Method operation, ScopeContext scopeContext, boolean cacheable) { - super(operation); - assert (serviceName != null) : "No service name specified"; - assert (scopeContext != null) : "No scope scopeContext specified"; - name = serviceName; - this.container = scopeContext; - this.cacheable = cacheable; - } - - /** - * Returns whether the target is cacheable. - */ - public boolean isCacheable() { - return cacheable; - } - - /** - * Resolves the target service instance or returns a cached one - */ - protected Object getInstance() throws TargetException { - if (!cacheable) { - return container.getInstance(name); - } else { - if (target == null) { - target = container.getInstance(name); - } - return target; - } - } - - public Object clone() throws CloneNotSupportedException { - ScopedJavaComponentInvoker invoker = (ScopedJavaComponentInvoker) super.clone(); - invoker.target = null; - invoker.cacheable = this.cacheable; - invoker.container = this.container; - invoker.name = this.name; - return invoker; - } -} diff --git a/branches/java-post-M1/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/invocation/StaticJavaComponentTargetInvoker.java b/branches/java-post-M1/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/invocation/StaticJavaComponentTargetInvoker.java deleted file mode 100644 index dd757137cf..0000000000 --- a/branches/java-post-M1/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/invocation/StaticJavaComponentTargetInvoker.java +++ /dev/null @@ -1,50 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. - * - * Licensed 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.container.java.invocation; - -import java.lang.reflect.Method; - -/** - * Caches component instances that do not need to be resolved for every wire, e.g. an wire originating from - * a lesser scope intended for a target with a wider scope - * - * @version $Rev$ $Date$ - */ -public class StaticJavaComponentTargetInvoker extends AbstractJavaComponentInvoker { - - private Object instance; - - public StaticJavaComponentTargetInvoker(Method operation, Object instance) { - super(operation); - assert (instance != null) : "Instance cannot be null"; - this.instance = instance; - } - - protected Object getInstance() { - return instance; - } - - public boolean isCacheable() { - return true; - } - - public Object clone() throws CloneNotSupportedException { - StaticJavaComponentTargetInvoker invoker = (StaticJavaComponentTargetInvoker) super.clone(); - invoker.instance = null; - return invoker; - } -} |