diff options
author | lresende <lresende@13f79535-47bb-0310-9956-ffa450edef68> | 2009-11-11 23:11:48 +0000 |
---|---|---|
committer | lresende <lresende@13f79535-47bb-0310-9956-ffa450edef68> | 2009-11-11 23:11:48 +0000 |
commit | ece4fd35da7b7fc76264776f81705e6b5b52d3e0 (patch) | |
tree | 962794e2a2b1ab91a02c41e4927a527cade83959 /branches/java-post-M1/sca/core/src/main/java | |
parent | 76e9f96ca7f494088fe3af5a46ad0d153e961008 (diff) |
Moving 1.x branches
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@835140 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'branches/java-post-M1/sca/core/src/main/java')
286 files changed, 0 insertions, 20596 deletions
diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/async/builder/AsyncPolicyBuilder.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/async/builder/AsyncPolicyBuilder.java deleted file mode 100644 index 6acebdaa8e..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/async/builder/AsyncPolicyBuilder.java +++ /dev/null @@ -1,86 +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.core.async.builder; - -import java.util.List; - -import javax.resource.spi.work.WorkManager; - -import org.apache.tuscany.core.async.invocation.AsyncInterceptor; -import org.apache.tuscany.core.builder.BuilderException; -import org.apache.tuscany.core.builder.SourcePolicyBuilder; -import org.apache.tuscany.core.builder.TargetPolicyBuilder; -import org.apache.tuscany.core.builder.system.PolicyBuilderRegistry; -import org.apache.tuscany.core.message.MessageFactory; -import org.apache.tuscany.core.system.annotation.Autowire; -import org.apache.tuscany.core.wire.TargetInvocationConfiguration; -import org.apache.tuscany.core.wire.WireSourceConfiguration; -import org.apache.tuscany.core.wire.WireTargetConfiguration; -import org.apache.tuscany.model.assembly.ConfiguredReference; -import org.apache.tuscany.model.assembly.ConfiguredService; -import org.osoa.sca.annotations.Init; -import org.osoa.sca.annotations.OneWay; - -/** - * Builds context factories for component implementations that map to {@link org.apache.tuscany.container.java.assembly.JavaImplementation}. - * The logical model is then decorated with the runtime configuration. - * - * @version $Rev: 368822 $ $Date: 2006-01-13 10:54:38 -0800 (Fri, 13 Jan 2006) $ - * @see org.apache.tuscany.core.builder.ContextFactory - */ -@org.osoa.sca.annotations.Scope("MODULE") -public class AsyncPolicyBuilder implements SourcePolicyBuilder, TargetPolicyBuilder { - - private PolicyBuilderRegistry builderRegistry; - private WorkManager workManager; - private MessageFactory messageFactory; - - public AsyncPolicyBuilder() { - } - - @Init(eager = true) - public void init() { - builderRegistry.registerSourceBuilder(this); - builderRegistry.registerTargetBuilder(this); - } - - @Autowire - public void setBuilderRegistry(PolicyBuilderRegistry builderRegistry) { - this.builderRegistry = builderRegistry; - } - - @Autowire - public void setWorkManager(WorkManager workManager) { - this.workManager = workManager; - } - - @Autowire - public void setMessageFactory(MessageFactory messageFactory) { - this.messageFactory = messageFactory; - } - - public void build(ConfiguredReference arg0, List<WireSourceConfiguration> arg1) throws BuilderException { - } - - public void build(ConfiguredService service, WireTargetConfiguration wireTargetConfiguration) throws BuilderException { - for (TargetInvocationConfiguration configuration : wireTargetConfiguration.getInvocationConfigurations().values()) { - if (configuration.getMethod().getAnnotation(OneWay.class)!=null) { - configuration.addInterceptor(new AsyncInterceptor(workManager, messageFactory)); - } - } - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/async/invocation/AsyncInterceptor.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/async/invocation/AsyncInterceptor.java deleted file mode 100644 index 08a718bd73..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/async/invocation/AsyncInterceptor.java +++ /dev/null @@ -1,108 +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.core.async.invocation; - -import javax.resource.spi.work.Work; -import javax.resource.spi.work.WorkException; -import javax.resource.spi.work.WorkManager; - -import org.apache.tuscany.core.message.Message; -import org.apache.tuscany.core.message.MessageFactory; -import org.apache.tuscany.core.wire.Interceptor; -import org.osoa.sca.CurrentModuleContext; -import org.osoa.sca.ModuleContext; -import org.osoa.sca.SCA; -import org.osoa.sca.ServiceRuntimeException; - -/** - * A wire interceptor that uses a WorkManager to schedule asynchronous execution of invocations in Work instances. - */ -public class AsyncInterceptor implements Interceptor { - - private static final ContextBinder BINDER = new ContextBinder(); - - private WorkManager workManager; - private MessageFactory messageFactory; - private Interceptor next; - - /** - * Constructs a new instance - * @param workManager - */ - public AsyncInterceptor(WorkManager workManager, MessageFactory messageFactory) { - this.workManager=workManager; - this.messageFactory=messageFactory; - } - - public Message invoke(final Message message) { - - final ModuleContext currentModuleContext=CurrentModuleContext.getContext(); - - // Schedule the invocation of the next interceptor in a new Work instance - try { - workManager.scheduleWork(new Work() { - - public void run() { - ModuleContext oldModuleContext=CurrentModuleContext.getContext(); - try { - BINDER.setContext(currentModuleContext); - - // Invoke the next interceptor - next.invoke(message); - - } catch (Exception e) { - //FIXME How do we report exceptions? - e.printStackTrace(); - - } finally { - - BINDER.setContext(oldModuleContext); - } - } - - public void release() { - } - - }); - } catch (WorkException e) { - //FIXME Which exception should we throw here? - throw new ServiceRuntimeException(e); - } - - // No return on a OneWay invocation. - return messageFactory.createMessage(); - } - - public void setNext(Interceptor next) { - this.next=next; - } - - private static class ContextBinder extends SCA { - public void setContext(ModuleContext context) { - setModuleContext(context); - } - - public void start() { - throw new AssertionError(); - } - - public void stop() { - throw new AssertionError(); - } - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/async/work/DefaultWorkManager.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/async/work/DefaultWorkManager.java deleted file mode 100644 index 866e101b0e..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/async/work/DefaultWorkManager.java +++ /dev/null @@ -1,68 +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.core.async.work; - -import javax.resource.spi.work.WorkManager; - -import org.apache.geronimo.connector.work.GeronimoWorkManager; -import org.apache.geronimo.transaction.context.TransactionContextManager; -import org.osoa.sca.annotations.Destroy; -import org.osoa.sca.annotations.Init; -import org.osoa.sca.annotations.Property; -import org.osoa.sca.annotations.Scope; -import org.osoa.sca.annotations.Service; - -/** - * A Work Manager service component implementation which just reuses the Geronimo WorkManager. - * - * @version $Rev$ $Date$ - */ -@Service(WorkManager.class) -@Scope("MODULE") -public class DefaultWorkManager extends GeronimoWorkManager implements WorkManager { - - private final static int DEFAULT_POOL_SIZE = 10; - - @Property - public int scheduledMaximumPoolSize; - - /** - * Constructs a new instance. - */ - public DefaultWorkManager() { - super(DEFAULT_POOL_SIZE, new TransactionContextManager()); - } - - @Init(eager=true) - public void init() throws Exception { - doStart(); - } - - @Destroy - public void destroy() throws Exception { - doStop(); - } - - public void setScheduledMaximumPoolSize(int maxSize) { - super.setScheduledMaximumPoolSize(maxSize); - } - - public int getScheduledMaximumPoolSize() { - return super.getScheduledMaximumPoolSize(); - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/BuilderConfigException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/BuilderConfigException.java deleted file mode 100644 index c2402d9141..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/BuilderConfigException.java +++ /dev/null @@ -1,42 +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.core.builder; - -/** - * Represents an error processing an assembly model - * - * @version $Rev$ $Date$ - */ -public class BuilderConfigException extends BuilderException { - - public BuilderConfigException() { - super(); - } - - public BuilderConfigException(String message) { - super(message); - } - - public BuilderConfigException(String message, Throwable cause) { - super(message, cause); - } - - public BuilderConfigException(Throwable cause) { - super(cause); - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/BuilderException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/BuilderException.java deleted file mode 100644 index 246f188988..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/BuilderException.java +++ /dev/null @@ -1,41 +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.core.builder; - -import org.apache.tuscany.core.context.CoreRuntimeException; - -/** - * The root exception for the builder package. Builder exceptions denote a non-recoverable failure. - * - * @version $Rev$ $Date$ - */ -public abstract class BuilderException extends CoreRuntimeException { - - public BuilderException() { - super(); - } - - public BuilderException(String message) { - super(message); - } - - public BuilderException(String message, Throwable cause) { - super(message, cause); - } - - public BuilderException(Throwable cause) { - super(cause); - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/BuilderInitException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/BuilderInitException.java deleted file mode 100644 index cd57eaf7ab..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/BuilderInitException.java +++ /dev/null @@ -1,39 +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.core.builder; - -/** - * Denotes an exception initializing a builder - * - * @version $Rev$ $Date$ - */ -public class BuilderInitException extends BuilderException { - - public BuilderInitException() { - super(); - } - - public BuilderInitException(String message, Throwable cause) { - super(message, cause); - } - - public BuilderInitException(String message) { - super(message); - } - - public BuilderInitException(Throwable cause) { - super(cause); - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/ContextCreationException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/ContextCreationException.java deleted file mode 100644 index 24b526371d..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/ContextCreationException.java +++ /dev/null @@ -1,41 +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.core.builder; - - -/** - * Denotes an exception creating an instance context - * - * @version $Rev$ $Date$ - */ -public class ContextCreationException extends BuilderException { - - public ContextCreationException() { - super(); - } - - public ContextCreationException(String message) { - super(message); - } - - public ContextCreationException(String message, Throwable cause) { - super(message, cause); - } - - public ContextCreationException(Throwable cause) { - super(cause); - } - -} - diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/ContextFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/ContextFactory.java deleted file mode 100644 index ccef8024e8..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/ContextFactory.java +++ /dev/null @@ -1,123 +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.core.builder; - -import org.apache.tuscany.core.context.CompositeContext; -import org.apache.tuscany.core.context.Context; -import org.apache.tuscany.core.wire.SourceWireFactory; -import org.apache.tuscany.core.wire.TargetWireFactory; -import org.apache.tuscany.model.assembly.Scope; - -import java.util.List; -import java.util.Map; - -/** - * Implementations create {@link org.apache.tuscany.core.context.Context}s based on an assembly configuration. - * <p/> - * Context factories are "built" in two phases. {@link ContextFactoryBuilder}s analyze an assembly, producing - * <code>ContextFactory</code>s for {@link org.apache.tuscany.model.assembly.Component}s, {@link - * org.apache.tuscany.model.assembly.EntryPoint}s, and {@link org.apache.tuscany.model.assembly.ExternalService}s. During this - * phase, {@link org.apache.tuscany.core.wire.WireFactory}s for source- and target-side wires are produced for the - * <code>ContextFactory</code>s. Ê - * <p/> - * The second build phase connects the source- and target-side <code>WireFactories</code>, thereby completing wire configuration. - * <p/> - * At runtime, <code>ContextFactory</code>s are called to create new <code>Context</code>s when a new implementation instance is - * required for a component, entry point, or external service. The <code>Context</code> is then responsible for instantiating and - * managing the actual implementation instance. When a <code>Context</code> creates a new instance, the previously configured - * <code>WireFactory</code>s are used to create wires to and from the instance. A wire is a collection of stateless invocation - * chains that are managed by the <code>Context</code>'s <code>ContextFactory</code>. - * - * @version $Rev: 385747 $ $Date: 2006-03-13 22:12:53 -0800 (Mon, 13 Mar 2006) $ - */ -public interface ContextFactory<T extends Context> { - - /** - * Creates a <code>Context</code> based on configuration supplied by a logical model assembly - * - * @return a new instance context - * @throws ContextCreationException if an error occurs creating the context - */ - public T createContext() throws ContextCreationException; - - /** - * Returns the scope identifier associated with the type of contexts produced by the current factory - */ - public Scope getScope(); - - /** - * Returns the name of the <code>Context</code> produced by the current factory - */ - public String getName(); - - /** - * Adds a property to the context - */ - public void addProperty(String propertyName, Object value); - - /** - * Adds a target-side wire factory for the given service name. Target-side wire factories contain the invocation chains - * associated with the destination service of a wire and are responsible for generating proxies - */ - public void addTargetWireFactory(String serviceName, TargetWireFactory factory); - - /** - * Returns the target-side wire factory associated with the given service name - */ - public TargetWireFactory getTargetWireFactory(String serviceName); - - /** - * Returns a collection of target-side wire factories keyed by service name - */ - public Map<String, TargetWireFactory> getTargetWireFactories(); - - /** - * Adds a source-side wire factory for the given reference. Source-side wire factories contain the invocation chains for a - * reference in the implementation associated with the instance context created by this configuration. Source-side wire - * factories also produce proxies that are injected on a reference in a component implementation. - * - * @param referenceName - * @param factory - */ - public void addSourceWireFactory(String referenceName, SourceWireFactory factory); - - /** - * Adds a set of source-side wire factories for the given reference. Source-side wire factories contain the invocation chains - * for a reference in the implementation associated with the instance context created by this configuration. Source-side wire - * factories also produce proxies that are injected on a reference in a component implementation. - * - * @param referenceName - * @param referenceInterface - * @param factory - * @param multiplicity - */ - public void addSourceWireFactories(String referenceName, Class referenceInterface, List<SourceWireFactory> factory, boolean multiplicity); - - /** - * Returns a collection of source-side wire factories for references. There may 1..n wire factories per reference. - */ - public List<SourceWireFactory> getSourceWireFactories(); - - /** - * Called to signal to the configuration that its parent context has been activated and that it shoud perform any required - * initialization steps - * - * @param parent the parent context - */ - public void prepare(CompositeContext parent); - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/ContextFactoryBuilder.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/ContextFactoryBuilder.java deleted file mode 100644 index 786298809e..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/ContextFactoryBuilder.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.core.builder; - -import org.apache.tuscany.model.assembly.AssemblyObject; - -/** - * The extension point for component types in the runtime. Implementations perform the first phase of converting an assembly model - * into a series of runtime artifacts. Specifically, <code>ContextFactoryBuilder</code>s are responsible for analyzing the - * assembly model and producing {@link ContextFactory}s that are used to generate executable artifacts such as an {@link - * org.apache.tuscany.core.context.Context}. In the case of components, the <code>ContextFactory</code> will typically contain - * configuration for instantiating implementation instances with injected properties and references. - * <p/> - * As the assembly model is analyzed, <code>ContextFactoryBuilder</code>s are guaranteed to be called first and are expected to - * decorate the assembly model with <code>ContextFactory</code>s. - * <p/> - * The second phase uses {@link WireBuilder}s to connect the source and target wire chains held in these - * <code>ContextFactory</code>s to form a completed wire. <code>WireBuilder<code>s may use a similar delegation strategy and - * perform various optimizations. - * - * @version $Rev$ $Date$ - * @see ContextFactory - * @see WireBuilder - */ -public interface ContextFactoryBuilder { - - /** - * Creates or updates a context factory based on configuration contained in the given model object. The model object is - * decorated with the factory. - * - * @param object the logical configuration model node - * @throws BuilderException - */ - public void build(AssemblyObject object) throws BuilderException; - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/ContextFactoryBuilderRegistry.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/ContextFactoryBuilderRegistry.java deleted file mode 100644 index a002627c2e..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/ContextFactoryBuilderRegistry.java +++ /dev/null @@ -1,31 +0,0 @@ -/** - * - * Copyright 2006 The Apache Software Foundation - * - * 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.core.builder; - -/** - * System wide registry for ContextFactoryBuilder implementations. - * - * @version $Rev$ $Date$ - */ -public interface ContextFactoryBuilderRegistry { - /** - * Register a builder. Called by extensions to register their builders. - * - * @param builder the builder to register - */ - void register(ContextFactoryBuilder builder); -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/ContextResolver.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/ContextResolver.java deleted file mode 100644 index 5c99d6dd43..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/ContextResolver.java +++ /dev/null @@ -1,29 +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.core.builder; - -import org.apache.tuscany.core.context.CompositeContext; - -/** - * Implementations are responsible for resolving the current composite context - * - * @version $Rev$ $Date$ - */ -public interface ContextResolver { - - /** - * Returns the current composite context - */ - CompositeContext getCurrentContext(); -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/HierarchicalWireBuilder.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/HierarchicalWireBuilder.java deleted file mode 100644 index ace34a1ad5..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/HierarchicalWireBuilder.java +++ /dev/null @@ -1,29 +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.core.builder; - -/** - * A wire builder that delegates to child wire builders - * - * @version $Rev$ $Date$ - */ -public interface HierarchicalWireBuilder extends WireBuilder{ - - /** - * Registers a child wire builder - */ - public void addWireBuilder(WireBuilder builder); - -} - diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/NoAccessorException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/NoAccessorException.java deleted file mode 100644 index 34b6294638..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/NoAccessorException.java +++ /dev/null @@ -1,39 +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.core.builder; - -/** - * Denotes an attempt to access a non-existent field or method - * - * @version $Rev$ $Date$ - */ -public class NoAccessorException extends BuilderException { - - public NoAccessorException() { - super(); - } - - public NoAccessorException(String message) { - super(message); - } - - public NoAccessorException(String message, Throwable cause) { - super(message, cause); - } - - public NoAccessorException(Throwable cause) { - super(cause); - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/ObjectFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/ObjectFactory.java deleted file mode 100644 index ab2cfd9bac..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/ObjectFactory.java +++ /dev/null @@ -1,35 +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.core.builder; - -import org.apache.tuscany.core.injection.ObjectCreationException; - -/** - * Implementations create new instances of a particular type - * - * @version $Rev$ $Date$ - */ -public interface ObjectFactory<T> { - - /** - * Return a instance of the type that this factory creates. - * - * @return a instance from this factory - */ - T getInstance() throws ObjectCreationException; - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/PolicyBuilder.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/PolicyBuilder.java deleted file mode 100644 index 489541a213..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/PolicyBuilder.java +++ /dev/null @@ -1,28 +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.core.builder; - -/** - * A marker for policy extensions in the runtime. Implementations evaluate wire-related policy metadata on a {@link - * org.apache.tuscany.model.assembly.ConfiguredReference} or {@link org.apache.tuscany.model.assembly.ConfiguredService} and - * contribute {@link org.apache.tuscany.core.wire.Interceptor}s or {@link org.apache.tuscany.core.wire.MessageHandler}s - * implementing a policy to {@link org.apache.tuscany.core.wire.InvocationConfiguration}s that are part of a {@link - * org.apache.tuscany.core.wire.WireConfiguration}. The contributed <code>Interceptor</code>s or <code>Handler</code>s will be - * called as part of an invocation over a wire. - * - * @version $$Rev$$ $$Date$$ - */ -public interface PolicyBuilder { - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/PolicyOrderer.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/PolicyOrderer.java deleted file mode 100644 index 1038b6e878..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/PolicyOrderer.java +++ /dev/null @@ -1,26 +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.core.builder; - -/** - * A marker for implementations that order source- or target-side policy {@link org.apache.tuscany.core.wire.Interceptor}s or - * {@link org.apache.tuscany.core.wire.MessageHandler}s in a {@link org.apache.tuscany.core.wire.WireConfiguration}. - * - * @see SourcePolicyOrderer - * @see TargetPolicyOrderer - * @version $$Rev$$ $$Date$$ - */ -public interface PolicyOrderer { - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/SourcePolicyBuilder.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/SourcePolicyBuilder.java deleted file mode 100644 index 76a376e3d5..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/SourcePolicyBuilder.java +++ /dev/null @@ -1,31 +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.core.builder; - -import org.apache.tuscany.core.wire.WireSourceConfiguration; -import org.apache.tuscany.model.assembly.ConfiguredReference; - -import java.util.List; - -/** - * Implementations contribute {@link org.apache.tuscany.core.wire.Interceptor}s or {@link - * org.apache.tuscany.core.wire.MessageHandler}s that handle source-side policy on a wire. - * - * @version $$Rev$$ $$Date$$ - */ -public interface SourcePolicyBuilder extends PolicyBuilder { - - public void build(ConfiguredReference reference, List<WireSourceConfiguration> configurations) throws BuilderException; - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/SourcePolicyOrderer.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/SourcePolicyOrderer.java deleted file mode 100644 index 6bc3bcda6e..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/SourcePolicyOrderer.java +++ /dev/null @@ -1,32 +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.core.builder; - -import org.apache.tuscany.core.wire.WireSourceConfiguration; - -/** - * Implementations order source-side policy {@link org.apache.tuscany.core.wire.Interceptor}s or - * {@link org.apache.tuscany.core.wire.MessageHandler}s in a {@link org.apache.tuscany.core.wire.WireConfiguration}. - * - * @version $$Rev$$ $$Date$$ - */ -public interface SourcePolicyOrderer extends PolicyOrderer{ - - public void order(WireSourceConfiguration configuration); - - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/TargetPolicyBuilder.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/TargetPolicyBuilder.java deleted file mode 100644 index 10c34751e2..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/TargetPolicyBuilder.java +++ /dev/null @@ -1,29 +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.core.builder; - -import org.apache.tuscany.model.assembly.ConfiguredService; -import org.apache.tuscany.core.wire.WireTargetConfiguration; - -/** - * Implementations contribute {@link org.apache.tuscany.core.wire.Interceptor}s or {@link - * org.apache.tuscany.core.wire.MessageHandler}s that handle target-side policy on a wire. - * - * @version $$Rev$$ $$Date$$ - */ -public interface TargetPolicyBuilder extends PolicyBuilder{ - - public void build(ConfiguredService service, WireTargetConfiguration configuration) throws BuilderException; - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/TargetPolicyOrderer.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/TargetPolicyOrderer.java deleted file mode 100644 index 4b596bfdc1..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/TargetPolicyOrderer.java +++ /dev/null @@ -1,28 +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.core.builder; - -import org.apache.tuscany.core.wire.WireTargetConfiguration; - -/** - * Implementation order target-side policy {@link org.apache.tuscany.core.wire.Interceptor}s or - * {@link org.apache.tuscany.core.wire.MessageHandler}s in a {@link org.apache.tuscany.core.wire.WireConfiguration}. - - * @version $$Rev$$ $$Date$$ - */ -public interface TargetPolicyOrderer { - - public void order(WireTargetConfiguration configuration); - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/UnknownTypeException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/UnknownTypeException.java deleted file mode 100644 index 24c1fa24ff..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/UnknownTypeException.java +++ /dev/null @@ -1,42 +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.core.builder; - -/** - * Denotes an unknown configuration parameter type - * - * @version $Rev$ $Date$ - */ -public class UnknownTypeException extends BuilderException { - - public UnknownTypeException() { - super(); - } - - public UnknownTypeException(String message) { - super(message); - } - - public UnknownTypeException(String message, Throwable cause) { - super(message, cause); - } - - public UnknownTypeException(Throwable cause) { - super(cause); - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/WireBuilder.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/WireBuilder.java deleted file mode 100644 index 54f2ff4b4e..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/WireBuilder.java +++ /dev/null @@ -1,71 +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.core.builder; - -import org.apache.tuscany.core.context.ScopeContext; -import org.apache.tuscany.core.wire.SourceWireFactory; -import org.apache.tuscany.core.wire.TargetWireFactory; - -/** - * Implementations perform the second phase of converting a logical model representing an assembly into a series of - * runtime or executable artifacts. Specifically, they are responsible for finalizing target-side proxy factories and - * bridging {@link org.apache.tuscany.core.wire.InvocationConfiguration}s held by source- and target-side proxy - * factories. <code>WireBuilder</code>s generally operate by target implementation type. In other words, for a wire - * from a Java source to a JavaScript target, the Javascript <code>WireBuilder</code> will complete the wire. This is - * necessary as a <code>WireBuilder</code> must set a {@link org.apache.tuscany.core.wire.TargetInvoker} that is - * responsible for dispatching to an implementation on the source side of the wire. - * <p> - * Runtimes are generally configured with a {@link org.apache.tuscany.core.builder.impl.DefaultWireBuilder} as a - * top-most wire builder, which delegates to other builders wired to it as part of a system configuration. - * <p> - * Wire builders may optimize the wire chains based on certain characteristics of th wire, such as source and - * target scopes. - * - * @see org.apache.tuscany.core.builder.ContextFactoryBuilder - * @see org.apache.tuscany.core.builder.impl.DefaultWireBuilder - * @version $Rev$ $Date$ - */ -public interface WireBuilder { - - /** - * Connects wire configurations of the source proxy factory to corresponding ones in the target proxy to - * factory - * - * @param sourceFactory the proxy factory used in constructing the source side of the wire chain - * @param targetFactory the proxy factory used in constructing the target side of the wire chain - * @param targetType the context type of the target. Used to determine if a paricular wire builder should construct - * the wire - * @param downScope true if the component containing the reference (source side) is of a lesser scope than the - * target service - * @param targetScopeContext the scope context responsible for managing intance contexts of the target component - * type - * @throws BuilderConfigException if an error occurs during the wire buildSource process - */ - public void connect(SourceWireFactory<?> sourceFactory, TargetWireFactory<?> targetFactory, Class targetType, boolean downScope, - ScopeContext targetScopeContext) throws BuilderConfigException; - - /** - * Finishes processing the target side wire chain. For example, a - * {@link org.apache.tuscany.core.wire.TargetInvoker} used by target-side proxies is usually set during this - * phase. - * - * @param targetFactory the target-side proxy factory - * @param targetType the target context type - * @param targetScopeContext the target scope - * @throws BuilderConfigException if an error occurs during the wire buildSource process - */ - public void completeTargetChain(TargetWireFactory<?> targetFactory, Class targetType, ScopeContext targetScopeContext) - throws BuilderConfigException; - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/ArrayMultiplicityObjectFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/ArrayMultiplicityObjectFactory.java deleted file mode 100644 index 8f0cbbf91b..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/ArrayMultiplicityObjectFactory.java +++ /dev/null @@ -1,49 +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.core.builder.impl; - -import org.apache.tuscany.core.builder.ObjectFactory; -import org.apache.tuscany.core.injection.ObjectCreationException; - -import java.lang.reflect.Array; -import java.util.List; - -/** - * Resolves targets configured in a multiplicity by delegating to object factories and returning an - * <code>Array</code> containing object instances - * - * @version $Rev$ $Date$ - */ -public class ArrayMultiplicityObjectFactory implements ObjectFactory<Object> { - - private ObjectFactory[] factories; - - private Class interfaceType; - - public ArrayMultiplicityObjectFactory(Class interfaceType, List<ObjectFactory> factories) { - assert (interfaceType != null) : "Interface type was null"; - assert (factories != null) : "Object factories were null"; - this.interfaceType = interfaceType; - this.factories = factories.toArray(new ObjectFactory[factories.size()]); - } - - public Object getInstance() throws ObjectCreationException { - Object array = Array.newInstance(interfaceType, factories.length); - for (int i = 0; i < factories.length; i++) { - Array.set(array, i, factories[i].getInstance()); - } - return array; - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/AssemblyVisitorImpl.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/AssemblyVisitorImpl.java deleted file mode 100644 index 178d3d4de6..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/AssemblyVisitorImpl.java +++ /dev/null @@ -1,63 +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.core.builder.impl; - -import org.apache.tuscany.core.builder.ContextFactoryBuilder; -import org.apache.tuscany.model.assembly.AssemblyObject; -import org.apache.tuscany.model.assembly.AssemblyVisitor; -import org.apache.tuscany.model.assembly.ContextFactoryHolder; - -import java.util.List; - -/** - * Decorates an assembly object graph with runtime configurations using a set of builders - * - * @version $Rev: 392146 $ $Date: 2006-04-06 18:11:28 -0700 (Thu, 06 Apr 2006) $ - */ -public class AssemblyVisitorImpl implements AssemblyVisitor { - - private List<ContextFactoryBuilder> builders; - - /** - * Constructs a visitor - * - * @param builders the collection of builders for creating context factories - */ - public AssemblyVisitorImpl(List<ContextFactoryBuilder> builders) { - this.builders = builders; - } - - /** - * Initiate walking the object graph - */ - public boolean start(AssemblyObject modelObject) { - return modelObject.accept(this); - } - - /** - * Callback when walking the graph - */ - public boolean visit(AssemblyObject modelObject) { - if (modelObject instanceof ContextFactoryHolder){ - if (((ContextFactoryHolder)modelObject).getContextFactory() != null){ - return true; // HACK FIX for TUSCANY 249 - } - } - for (ContextFactoryBuilder builder : builders) { - builder.build(modelObject); - } - return true; - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/ContextFactoryBuilderRegistryImpl.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/ContextFactoryBuilderRegistryImpl.java deleted file mode 100644 index d500b2e503..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/ContextFactoryBuilderRegistryImpl.java +++ /dev/null @@ -1,39 +0,0 @@ -/** - * - * Copyright 2006 The Apache Software Foundation - * - * 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.core.builder.impl; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.tuscany.core.builder.ContextFactoryBuilderRegistry; -import org.apache.tuscany.core.builder.ContextFactoryBuilder; - -/** - * @version $Rev$ $Date$ - */ -public class ContextFactoryBuilderRegistryImpl implements ContextFactoryBuilderRegistry { - - private final List<ContextFactoryBuilder> builders = new ArrayList<ContextFactoryBuilder>(); - - public void register(ContextFactoryBuilder builder) { - builders.add(builder); - } - - public List<ContextFactoryBuilder> getBuilders() { - return builders; - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/DefaultWireBuilder.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/DefaultWireBuilder.java deleted file mode 100644 index 5243c2a8cd..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/DefaultWireBuilder.java +++ /dev/null @@ -1,111 +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.core.builder.impl; - -import org.apache.tuscany.core.builder.BuilderConfigException; -import org.apache.tuscany.core.builder.HierarchicalWireBuilder; -import org.apache.tuscany.core.builder.WireBuilder; -import org.apache.tuscany.core.context.ScopeContext; -import org.apache.tuscany.core.wire.TargetInvocationConfiguration; -import org.apache.tuscany.core.wire.SourceInvocationConfiguration; -import org.apache.tuscany.core.wire.TargetWireFactory; -import org.apache.tuscany.core.wire.SourceWireFactory; -import org.apache.tuscany.core.wire.impl.InvokerInterceptor; -import org.apache.tuscany.core.wire.impl.MessageChannelImpl; - -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -/** - * The top-most <code>WireBuilder</code> configured in a runtime. Responsible for constructing wires from source and target chains, - * this implementation first bridges the chains and then delegates to any other wire builders. - * - * @version $Rev$ $Date$ - */ -public class DefaultWireBuilder implements HierarchicalWireBuilder { - - // collection configured wire builders - private List<WireBuilder> builders = new ArrayList<WireBuilder>(); - - public DefaultWireBuilder() { - } - - /** - * Adds a wire builder to delegate to - */ - public void addWireBuilder(WireBuilder builder) { - builders.add(builder); - } - - public void connect(SourceWireFactory<?> sourceFactory, TargetWireFactory<?> targetFactory, Class targetType, boolean downScope, - ScopeContext targetScopeContext) { - // get the proxy chain for the target - if (targetFactory != null) { - // if null, the target side has no interceptors or handlers - Map<Method, TargetInvocationConfiguration> targetInvocationConfigs = targetFactory.getConfiguration().getInvocationConfigurations(); - for (SourceInvocationConfiguration sourceInvocationConfig : sourceFactory.getConfiguration() - .getInvocationConfigurations().values()) { - // match wire chains - TargetInvocationConfiguration targetInvocationConfig = targetInvocationConfigs.get(sourceInvocationConfig.getMethod()); - if (targetInvocationConfig == null){ - BuilderConfigException e= new BuilderConfigException("Incompatible source and target interface types for reference"); - //FIXME xcv - e.setIdentifier(sourceFactory.getConfiguration().getReferenceName()); - throw e; - } - // if handler is configured, add that - if (targetInvocationConfig.getRequestHandlers() != null) { - sourceInvocationConfig.setTargetRequestChannel(new MessageChannelImpl(targetInvocationConfig - .getRequestHandlers())); - sourceInvocationConfig.setTargetResponseChannel(new MessageChannelImpl(targetInvocationConfig - .getResponseHandlers())); - } else { - // no handlers, just connect interceptors - if (targetInvocationConfig.getHeadInterceptor() == null) { - BuilderConfigException e = new BuilderConfigException("No target handler or interceptor for operation"); - e.setIdentifier(targetInvocationConfig.getMethod().getName()); - throw e; - } - //xcv if (!(sourceInvocationConfig.getLastTargetInterceptor() instanceof InvokerInterceptor && targetInvocationConfig - if (!(sourceInvocationConfig.getTailInterceptor() instanceof InvokerInterceptor && targetInvocationConfig - .getHeadInterceptor() instanceof InvokerInterceptor)) { - // check that we do not have the case where the only interceptors are invokers since we just need one - sourceInvocationConfig.setTargetInterceptor(targetInvocationConfig.getHeadInterceptor()); - } - } - } - } - // delegate to other wire builders - for (WireBuilder builder : builders) { - builder.connect(sourceFactory, targetFactory, targetType, downScope, targetScopeContext); - } - // signal that wire buildSource process is complete - for (SourceInvocationConfiguration sourceInvocationConfig : sourceFactory.getConfiguration().getInvocationConfigurations() - .values()) { - sourceInvocationConfig.build(); - // TODO optimize if no proxy needed using NullWireFactory - } - } - - public void completeTargetChain(TargetWireFactory targetFactory, Class targetType, ScopeContext targetScopeContext) - throws BuilderConfigException { - // delegate to other wire builders - for (WireBuilder builder : builders) { - builder.completeTargetChain(targetFactory, targetType, targetScopeContext); - } - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/HierarchicalBuilder.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/HierarchicalBuilder.java deleted file mode 100644 index ffab32bd37..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/HierarchicalBuilder.java +++ /dev/null @@ -1,57 +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.core.builder.impl; - -import org.apache.tuscany.core.builder.BuilderException; -import org.apache.tuscany.core.builder.ContextFactoryBuilder; -import org.apache.tuscany.model.assembly.AssemblyObject; - -import java.util.Collections; -import java.util.List; -import java.util.concurrent.CopyOnWriteArrayList; - -/** - * A builder that contains nested builders. Used for synchronizing parts of the buildSource process, such as references. - * - * @version $Rev$ $Date$ - */ -public class HierarchicalBuilder implements ContextFactoryBuilder { - private List<ContextFactoryBuilder> builders = new CopyOnWriteArrayList<ContextFactoryBuilder>(); - - private List<ContextFactoryBuilder> readOnlyBuilders = Collections.unmodifiableList(builders); - - public HierarchicalBuilder() { - } - - public void addBuilder(ContextFactoryBuilder builder) { - builders.add(builder); - } - - public void removeBuilder(ContextFactoryBuilder builder){ - builders.remove(builder); - } - - public List getBuilders(){ - return readOnlyBuilders; - } - - public void build(AssemblyObject object) throws BuilderException { - for (ContextFactoryBuilder builder : builders) { - builder.build(object); - } - - } - - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/ListMultiplicityObjectFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/ListMultiplicityObjectFactory.java deleted file mode 100644 index 5d37eb8e89..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/ListMultiplicityObjectFactory.java +++ /dev/null @@ -1,45 +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.core.builder.impl; - -import org.apache.tuscany.core.builder.ObjectFactory; -import org.apache.tuscany.core.injection.ObjectCreationException; - -import java.util.ArrayList; -import java.util.List; - -/** - * Resolves targets configured in a multiplicity by delegating to object factories and returning an - * <code>List</code> containing object instances - * - * @version $Rev$ $Date$ - */ -public class ListMultiplicityObjectFactory implements ObjectFactory<List> { - - private ObjectFactory[] factories; - - public ListMultiplicityObjectFactory(List<ObjectFactory> factories) { - assert (factories != null) : "Object factories were null"; - this.factories = factories.toArray(new ObjectFactory[factories.size()]); - } - - public List getInstance() throws ObjectCreationException { - List<Object> list = new ArrayList<Object>(); - for (ObjectFactory factory : factories) { - list.add(factory.getInstance()); - } - return list; - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/ProxyObjectFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/ProxyObjectFactory.java deleted file mode 100644 index 1dc6627306..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/ProxyObjectFactory.java +++ /dev/null @@ -1,42 +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.core.builder.impl; - -import org.apache.tuscany.core.builder.ObjectFactory; -import org.apache.tuscany.core.injection.ObjectCreationException; -import org.apache.tuscany.core.wire.ProxyCreationException; -import org.apache.tuscany.core.wire.WireFactory; - -/** - * Uses a proxy factory to return an object instance - * - * @version $Rev$ $Date$ - */ -public class ProxyObjectFactory implements ObjectFactory { - - private WireFactory factory; - - public ProxyObjectFactory(WireFactory factory) { - this.factory = factory; - } - - public Object getInstance() throws ObjectCreationException { - try { - return factory.createProxy(); - } catch (ProxyCreationException e) { - throw new ObjectCreationException(e); - } - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/system/DefaultPolicyBuilderRegistry.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/system/DefaultPolicyBuilderRegistry.java deleted file mode 100644 index 4c53a2c830..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/system/DefaultPolicyBuilderRegistry.java +++ /dev/null @@ -1,102 +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.core.builder.system; - -import org.apache.tuscany.core.builder.BuilderException; -import org.apache.tuscany.core.builder.SourcePolicyBuilder; -import org.apache.tuscany.core.builder.SourcePolicyOrderer; -import org.apache.tuscany.core.builder.TargetPolicyBuilder; -import org.apache.tuscany.core.builder.TargetPolicyOrderer; -import org.apache.tuscany.core.system.annotation.Autowire; -import org.apache.tuscany.core.wire.WireSourceConfiguration; -import org.apache.tuscany.core.wire.WireTargetConfiguration; -import org.apache.tuscany.model.assembly.ConfiguredReference; -import org.apache.tuscany.model.assembly.ConfiguredService; -import org.osoa.sca.annotations.Scope; -import org.osoa.sca.annotations.Service; - -import java.util.ArrayList; -import java.util.List; - -/** - * A system service that serves as the default implementation of a policy builder registry - * - * @version $$Rev$$ $$Date$$ - */ - -@Scope("MODULE") -@Service(interfaces = {PolicyBuilderRegistry.class}) -public class DefaultPolicyBuilderRegistry implements PolicyBuilderRegistry { - - private final List<SourcePolicyBuilder> sourceBuilders = new ArrayList<SourcePolicyBuilder>(); - private final List<TargetPolicyBuilder> targetBuilders = new ArrayList<TargetPolicyBuilder>(); - - private TargetPolicyOrderer targetOrderer; - - private SourcePolicyOrderer sourceOrderer; - - @Autowire - public void setTargetOrderer(TargetPolicyOrderer orderer) { - this.targetOrderer = orderer; - } - - @Autowire - public void setSourceOrderer(SourcePolicyOrderer orderer) { - this.sourceOrderer = orderer; - } - - public void registerTargetBuilder(TargetPolicyBuilder builder) { - targetBuilders.add(builder); - } - - public void unregisterTargetBuilder(TargetPolicyBuilder builder) { - targetBuilders.remove(builder); - } - - public void registerSourceBuilder(SourcePolicyBuilder builder) { - sourceBuilders.add(builder); - } - - public void unregisterSourceBuilder(SourcePolicyBuilder builder) { - sourceBuilders.remove(builder); - } - - public List<TargetPolicyBuilder> getTargetBuilders() { - return targetBuilders; - } - - public List<SourcePolicyBuilder> getSourceBuilders() { - return sourceBuilders; - } - - public void buildSource(ConfiguredReference reference, List<WireSourceConfiguration> configurations) throws BuilderException { - for (SourcePolicyBuilder builder : sourceBuilders) { - builder.build(reference, configurations); - } - if (sourceOrderer != null) { - for (WireSourceConfiguration configuration : configurations) { - sourceOrderer.order(configuration); - } - } - } - - public void buildTarget(ConfiguredService service, WireTargetConfiguration configuration) throws BuilderException { - for (TargetPolicyBuilder builder : targetBuilders) { - builder.build(service, configuration); - } - if (targetOrderer != null) { - targetOrderer.order(configuration); - } - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/system/PolicyBuilderRegistry.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/system/PolicyBuilderRegistry.java deleted file mode 100644 index fb9b0b25db..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/builder/system/PolicyBuilderRegistry.java +++ /dev/null @@ -1,92 +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.core.builder.system; - -import org.apache.tuscany.core.builder.BuilderException; -import org.apache.tuscany.core.builder.SourcePolicyBuilder; -import org.apache.tuscany.core.builder.TargetPolicyBuilder; -import org.apache.tuscany.core.wire.WireSourceConfiguration; -import org.apache.tuscany.core.wire.WireTargetConfiguration; -import org.apache.tuscany.model.assembly.ConfiguredReference; -import org.apache.tuscany.model.assembly.ConfiguredService; - -import java.util.List; - -/** - * A System registry for {@link org.apache.tuscany.core.builder.PolicyBuilder}s. <code>PolicyBuilder</code>s will be invoked when - * a {@link org.apache.tuscany.core.wire.WireFactory} is constructed by the {@link org.apache.tuscany.core.wire.WireFactory} - * service. - * <p/> - * <code>PolicyBuilder</code>s operate on either a source- or target-side wire and typically are registered by runtime extensions - * through {@link #registerTargetBuilder} or {@link #registerSourceBuilder} - * - * @version $Rev$ $Date$ - */ -public interface PolicyBuilderRegistry { - - /** - * Registers a target-side policy builder. Called by extensions to register their builders. - * - * @param builder the builder to register - */ - public void registerTargetBuilder(TargetPolicyBuilder builder); - - /** - * De-registers a target-side builder. Called by extensions to register their builders. - * - * @param builder the builder to register - */ - public void unregisterTargetBuilder(TargetPolicyBuilder builder); - - /** - * Registers a source-side policy builder. Called by extensions to register their builders. - * - * @param builder the builder to register - */ - public void registerSourceBuilder(SourcePolicyBuilder builder); - - /** - * De-registers a source-side builder. Called by extensions to register their builders. - * - * @param builder the builder to register - */ - public void unregisterSourceBuilder(SourcePolicyBuilder builder); - - /** - * Returns the list of registered target-side builders - */ - public List<TargetPolicyBuilder> getTargetBuilders(); - - /** - * Returns the list of registered source-side builders - */ - public List<SourcePolicyBuilder> getSourceBuilders(); - - /** - * Evaluates source-side policy metadata for configured reference and updates the curresponding collection of wire configurations - * - * @throws BuilderException - */ - public void buildSource(ConfiguredReference reference, List<WireSourceConfiguration> configurations) throws BuilderException; - - /** - * Evaluates target-side policy metadata for configured reference and updates the curresponding collection of wire configurations - * - * @throws BuilderException - */ - public void buildTarget(ConfiguredService service, WireTargetConfiguration configuration) throws BuilderException; -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/client/BootstrapHelper.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/client/BootstrapHelper.java deleted file mode 100644 index 556b0991f7..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/client/BootstrapHelper.java +++ /dev/null @@ -1,138 +0,0 @@ -/** - * - * Copyright 2006 The Apache Software Foundation - * - * 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.core.client; - -import java.util.ArrayList; -import java.util.List; -import javax.xml.stream.XMLInputFactory; - -import org.apache.tuscany.common.monitor.MonitorFactory; -import org.apache.tuscany.common.resource.ResourceLoader; -import org.apache.tuscany.common.resource.impl.ResourceLoaderImpl; -import org.apache.tuscany.core.builder.ContextFactoryBuilder; -import org.apache.tuscany.core.builder.ContextFactoryBuilderRegistry; -import org.apache.tuscany.core.builder.impl.ContextFactoryBuilderRegistryImpl; -import org.apache.tuscany.core.config.ConfigurationException; -import org.apache.tuscany.core.config.ModuleComponentConfigurationLoader; -import org.apache.tuscany.core.config.impl.StAXModuleComponentConfigurationLoaderImpl; -import org.apache.tuscany.core.context.CompositeContext; -import org.apache.tuscany.core.context.SystemCompositeContext; -import org.apache.tuscany.core.context.event.ModuleStart; -import org.apache.tuscany.core.loader.StAXLoaderRegistry; -import org.apache.tuscany.core.loader.StAXUtil; -import org.apache.tuscany.core.system.assembly.impl.SystemAssemblyFactoryImpl; -import org.apache.tuscany.core.system.builder.SystemContextFactoryBuilder; -import org.apache.tuscany.core.system.builder.SystemEntryPointBuilder; -import org.apache.tuscany.core.system.builder.SystemExternalServiceBuilder; -import org.apache.tuscany.model.assembly.AssemblyFactory; -import org.apache.tuscany.model.assembly.AssemblyContext; -import org.apache.tuscany.model.assembly.ModuleComponent; -import org.apache.tuscany.model.assembly.impl.AssemblyContextImpl; -import org.apache.tuscany.model.assembly.loader.AssemblyModelLoader; -import org.apache.tuscany.model.scdl.loader.impl.SCDLAssemblyModelLoaderImpl; - -/** - * @version $Rev$ $Date$ - */ -public final class BootstrapHelper { - private BootstrapHelper() { - } - - /** - * Returns a default AssemblyModelContext. - * - * @param classLoader the classloader to use for application artifacts - * @return a default AssemblyModelContext - */ - public static AssemblyContext getModelContext(ClassLoader classLoader) { - // Create an assembly model factory - AssemblyFactory modelFactory = new SystemAssemblyFactoryImpl(); - - // Create a default assembly model loader - AssemblyModelLoader modelLoader = new SCDLAssemblyModelLoaderImpl(); - - // Create a resource loader from the supplied classloader - ResourceLoader resourceLoader = new ResourceLoaderImpl(classLoader); - - // Create an assembly model context - return new AssemblyContextImpl(modelFactory, modelLoader, resourceLoader); - } - - /** - * Returns a default list of configuration builders. - * - * @param monitorFactory - * @return a default list of configuration builders - */ - public static List<ContextFactoryBuilder> getBuilders(MonitorFactory monitorFactory) { - List<ContextFactoryBuilder> configBuilders = new ArrayList<ContextFactoryBuilder>(); - configBuilders.add((new SystemContextFactoryBuilder(monitorFactory))); - configBuilders.add(new SystemEntryPointBuilder()); - configBuilders.add(new SystemExternalServiceBuilder()); - return configBuilders; - } - - /** - * Returns a ContextFactoryBuilderRegistry with default builders registered for system contexts. - * - * @param monitorFactory a monitorFactory that will be used to obtain monitors for system components - * @return a default ContextFactoryBuilderRegistry - */ - public static ContextFactoryBuilderRegistry bootstrapContextFactoryBuilders(MonitorFactory monitorFactory) { - ContextFactoryBuilderRegistryImpl registry = new ContextFactoryBuilderRegistryImpl(); - registry.register(new SystemContextFactoryBuilder(monitorFactory)); - registry.register(new SystemEntryPointBuilder()); - registry.register(new SystemExternalServiceBuilder()); - return registry; - } - - public static final String SYSTEM_LOADER_COMPONENT = "tuscany.loader"; - - /** - * Returns the default module configuration loader. - * - * @param systemContext the runtime's system context - * @param modelContext the model context the loader will use - * @return the default module configuration loader - */ - public static ModuleComponentConfigurationLoader getConfigurationLoader(SystemCompositeContext systemContext, AssemblyContext modelContext) { - return new StAXModuleComponentConfigurationLoaderImpl(modelContext, XMLInputFactory.newInstance(), systemContext.resolveInstance(StAXLoaderRegistry.class)); - } - - /** - * Bootstrap the StAX-based loader. - * - * @param parentContext the parent system context - * @param modelContext - * @return the system context for the loader - * @throws ConfigurationException - */ - public static CompositeContext bootstrapStaxLoader(SystemCompositeContext parentContext, AssemblyContext modelContext) throws ConfigurationException { - ModuleComponent loaderComponent = StAXUtil.bootstrapLoader(SYSTEM_LOADER_COMPONENT, modelContext); - CompositeContext loaderContext = registerModule(parentContext, loaderComponent); - loaderContext.publish(new ModuleStart(loaderComponent)); - return loaderContext; - } - - public static CompositeContext registerModule(CompositeContext parent, ModuleComponent component) throws ConfigurationException { - // register the component - parent.registerModelObject(component); - - // Get the composite context representing the component - return (CompositeContext) parent.getContext(component.getName()); - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/client/TuscanyRuntime.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/client/TuscanyRuntime.java deleted file mode 100644 index fe78cd712a..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/client/TuscanyRuntime.java +++ /dev/null @@ -1,182 +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.core.client; - -import org.osoa.sca.ModuleContext; -import org.osoa.sca.SCA; -import org.osoa.sca.ServiceRuntimeException; - -import org.apache.tuscany.common.monitor.LogLevel; -import org.apache.tuscany.common.monitor.MonitorFactory; -import org.apache.tuscany.common.monitor.impl.NullMonitorFactory; -import org.apache.tuscany.core.builder.ContextFactoryBuilderRegistry; -import org.apache.tuscany.core.builder.impl.DefaultWireBuilder; -import org.apache.tuscany.core.config.ConfigurationException; -import org.apache.tuscany.core.config.ModuleComponentConfigurationLoader; -import org.apache.tuscany.core.context.CompositeContext; -import org.apache.tuscany.core.context.CoreRuntimeException; -import org.apache.tuscany.core.context.SystemCompositeContext; -import org.apache.tuscany.core.context.event.HttpSessionBound; -import org.apache.tuscany.core.context.event.HttpSessionEnd; -import org.apache.tuscany.core.context.event.ModuleStart; -import org.apache.tuscany.core.context.event.ModuleStop; -import org.apache.tuscany.core.context.event.RequestEnd; -import org.apache.tuscany.core.context.event.RequestStart; -import org.apache.tuscany.core.runtime.RuntimeContext; -import org.apache.tuscany.core.runtime.RuntimeContextImpl; -import org.apache.tuscany.model.assembly.AssemblyContext; -import org.apache.tuscany.model.assembly.ModuleComponent; - -/** - * Create and initialize a Tuscany SCA runtime environment. - * - * @version $Rev$ $Date$ - */ -public class TuscanyRuntime extends SCA { - private final Monitor monitor; - private final Object sessionKey = new Object(); - - private final RuntimeContext runtime; - private final CompositeContext moduleContext; - - private static final String SYSTEM_MODULE_COMPONENT = "org.apache.tuscany.core.system"; - - /** - * Construct a runtime using a null MonitorFactory. - * - * @param name the name of the module component - * @param uri the URI to assign to the module component - * @throws ConfigurationException if there was a problem loading the SCA configuration - * @see TuscanyRuntime#TuscanyRuntime(String, String, org.apache.tuscany.common.monitor.MonitorFactory) - */ - public TuscanyRuntime(String name, String uri) throws ConfigurationException { - this(name, uri, new NullMonitorFactory()); - } - - /** - * Construct a runtime containing a single module component with the - * specified name. The module definition is loaded from a "/sca.module" - * resource found on the classpath of the current Thread context classloader. - * - * @param name the name of the module component - * @param uri the URI to assign to the module component - * @param monitorFactory the MonitorFactory for this runtime - * @throws ConfigurationException if there was a problem loading the SCA configuration - */ - public TuscanyRuntime(String name, String uri, MonitorFactory monitorFactory) throws ConfigurationException { - assert(monitorFactory != null): "monitor factory was null"; - this.monitor = monitorFactory.getMonitor(Monitor.class); - - // Create an assembly model context - ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); - AssemblyContext modelContext = BootstrapHelper.getModelContext(classLoader); - - // Create a runtime context and start it - ContextFactoryBuilderRegistry builderRegistry = BootstrapHelper.bootstrapContextFactoryBuilders(monitorFactory); - runtime = new RuntimeContextImpl(monitorFactory, builderRegistry, new DefaultWireBuilder()); - runtime.start(); - - // Load and start the system configuration - SystemCompositeContext systemContext = runtime.getSystemContext(); - BootstrapHelper.bootstrapStaxLoader(systemContext, modelContext); - ModuleComponentConfigurationLoader loader = BootstrapHelper.getConfigurationLoader(systemContext, modelContext); - ModuleComponent systemModuleComponent = loader.loadSystemModuleComponent(SYSTEM_MODULE_COMPONENT, SYSTEM_MODULE_COMPONENT); - CompositeContext context = BootstrapHelper.registerModule(systemContext, systemModuleComponent); - context.publish(new ModuleStart(this)); - - // Load the SCDL configuration of the application module - CompositeContext rootContext = runtime.getRootContext(); - ModuleComponent moduleComponent = loader.loadModuleComponent(name, uri); - moduleContext = BootstrapHelper.registerModule(rootContext, moduleComponent); - if (moduleContext.getURI() == null){ - moduleContext.setURI(uri); - } - //TODO remove hack - moduleContext.setAssemblyContext(modelContext); - } - - /** - * Start the runtime and associate the module context with the calling thread. - */ - @Override - public void start() { - setModuleContext((ModuleContext) moduleContext); - try { - //moduleContext.start(); - moduleContext.publish(new ModuleStart(this)); - moduleContext.publish(new RequestStart(this, new Object())); - moduleContext.publish(new HttpSessionBound(this, sessionKey)); - monitor.moduleStarted(moduleContext.getName()); - } catch (CoreRuntimeException e) { - setModuleContext(null); - monitor.moduleStartFailed(moduleContext.getName(), e); - //FIXME throw a better exception - throw new ServiceRuntimeException(e); - } - } - - /** - * Disassociate the module context from the current thread and shut down the runtime. - */ - @Override - public void stop() { - setModuleContext(null); - moduleContext.publish(new RequestEnd(this, new Object())); - moduleContext.publish(new HttpSessionEnd(this, sessionKey)); - moduleContext.publish(new ModuleStop(this)); - moduleContext.stop(); - monitor.moduleStopped(moduleContext.getName()); - } - - /** - * Shut down the Tuscany runtime. - */ - public void shutdown() { - runtime.getSystemContext().publish(new ModuleStop(this)); - runtime.stop(); - } - - /** - * Monitor interface for a TuscanyRuntime. - */ - public static interface Monitor { - /** - * Event emitted after an application module has been started. - * - * @param name the name of the application module - */ - @LogLevel("INFO") - void moduleStarted(String name); - - /** - * Event emitted when an attempt to start an application module failed. - * - * @param name the name of the application module - * @param e the exception that caused the failure - */ - @LogLevel("SEVERE") - void moduleStartFailed(String name, CoreRuntimeException e); - - /** - * Event emitted after an application module has been stopped. - * - * @param name the name of the application module - */ - @LogLevel("INFO") - void moduleStopped(String name); - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/ComponentTypeIntrospector.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/ComponentTypeIntrospector.java deleted file mode 100644 index 9f9c125a5e..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/ComponentTypeIntrospector.java +++ /dev/null @@ -1,57 +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.core.config; - -import org.apache.tuscany.model.assembly.ComponentType; -import org.apache.tuscany.core.extension.config.ImplementationProcessor; - -/** - * Interface for implementations that are able create SCA definitions by inspecting Java classes. - * - * @version $Rev$ $Date$ - */ -public interface ComponentTypeIntrospector { - - /** - * Create a componentType definition by introspecting a Java Class. - * - * @param implClass the class to inspect - * @return a componentType definition - * @throws ConfigurationLoadException if the Class does not define a valid component type - */ - ComponentType introspect(Class<?> implClass) throws ConfigurationLoadException; - - /** - * Completes the given componentType definition by introspecting a Java Class. - * - * @param implClass the class to inspect - * @return a componentType definition - * @throws ConfigurationLoadException if the Class does not define a valid component type - */ - ComponentType introspect(Class<?> implClass, ComponentType compType) throws ConfigurationLoadException; - - /** - * Registers an annotation processor - */ - void registerProcessor(ImplementationProcessor processor); - - /** - * De-registers an annotation processor - */ - void unregisterProcessor(ImplementationProcessor processor); - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/ConfigurationException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/ConfigurationException.java deleted file mode 100644 index de0e4a3733..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/ConfigurationException.java +++ /dev/null @@ -1,44 +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.core.config; - -import org.apache.tuscany.common.TuscanyException; - - -/** - * Base class for exceptions that pertain to configuration. - * - * @version $Rev$ $Date$ - */ -public abstract class ConfigurationException extends TuscanyException { - private static final long serialVersionUID = 7441469809266868036L; - - public ConfigurationException() { - } - - public ConfigurationException(String message) { - super(message); - } - - public ConfigurationException(String message, Throwable cause) { - super(message, cause); - } - - public ConfigurationException(Throwable cause) { - super(cause); - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/ConfigurationLoadException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/ConfigurationLoadException.java deleted file mode 100644 index 2a9e325b0b..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/ConfigurationLoadException.java +++ /dev/null @@ -1,59 +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.core.config; - -/** - * Exception indicating that there was a problem loading a configuration resource. - * - * @version $Rev$ $Date$ - */ -public class ConfigurationLoadException extends ConfigurationException { - private static final long serialVersionUID = -2310798146091959144L; - - private String resourceURI; - - public ConfigurationLoadException() { - } - - public ConfigurationLoadException(String message) { - super(message); - } - - public ConfigurationLoadException(String message, Throwable cause) { - super(message, cause); - } - - public ConfigurationLoadException(Throwable cause) { - super(cause); - } - - /** - * Returns the location of the resource that was being loaded. - * @return the location of the resource that was being loaded - */ - public String getResourceURI() { - return resourceURI; - } - - /** - * Sets the location of the resource that was being loaded. - * @param resourceURI the location of the resource that was being loaded - */ - public void setResourceURI(String resourceURI) { - this.resourceURI = resourceURI; - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/ImplementationCache.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/ImplementationCache.java deleted file mode 100644 index cc5f2999fe..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/ImplementationCache.java +++ /dev/null @@ -1,46 +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.core.config; - -import org.apache.tuscany.model.assembly.Implementation; - -import javax.xml.namespace.QName; - -/** - * Cache of introspected implementations. - * - * @version $Rev$ $Date$ - */ -public interface ImplementationCache { - /** - * Return an implementation from a given namespace. - * - * @param type the namespace that defines the type of implementation - * @param name the name of an implementation in that namespace - * @return the implementation or null if it is not present in the cache - */ - Implementation get(QName type, String name); - - /** - * Add an implementation to the cache - * - * @param type the namespace that defines the type of implementation - * @param name the name of an implementation in that namespace - * @param implementation the introspected implementation - */ - void put(QName type, String name, Implementation implementation); -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/InvalidMetaDataException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/InvalidMetaDataException.java deleted file mode 100644 index 71b2329044..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/InvalidMetaDataException.java +++ /dev/null @@ -1,35 +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.core.config; - -/** - * Denotes an validation error processing component metadata - * @version $$Rev$$ $$Date$$ - */ -public class InvalidMetaDataException extends MetaDataException { - public InvalidMetaDataException() { - } - - public InvalidMetaDataException(String message) { - super(message); - } - - public InvalidMetaDataException(String message, Throwable cause) { - super(message, cause); - } - - public InvalidMetaDataException(Throwable cause) { - super(cause); - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/InvalidRootElementException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/InvalidRootElementException.java deleted file mode 100644 index a355d884a5..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/InvalidRootElementException.java +++ /dev/null @@ -1,45 +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.core.config; - -import javax.xml.namespace.QName; - -/** - * Configuration exception that indicates the actual root element in an XML file was not the one expected. - * - * @version $Rev$ $Date$ - */ -public class InvalidRootElementException extends ConfigurationLoadException { - private static final long serialVersionUID = 2376629433948140418L; - - private final QName expected; - private final QName actual; - - public InvalidRootElementException(QName expected, QName actual) { - super("Invalid root element, expected [" + expected + "], was [" + actual + ']'); - this.expected = expected; - this.actual = actual; - } - - public QName getExpected() { - return expected; - } - - public QName getActual() { - return actual; - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/InvalidSetterException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/InvalidSetterException.java deleted file mode 100644 index ed4e53645f..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/InvalidSetterException.java +++ /dev/null @@ -1,39 +0,0 @@ -/** - * - * Copyright 2006 The Apache Software Foundation - * - * 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.core.config; - -/** - * @version $Rev$ $Date$ - */ -public class InvalidSetterException extends ConfigurationLoadException { - private static final long serialVersionUID = -3298236203808038211L; - - public InvalidSetterException() { - } - - public InvalidSetterException(String message) { - super(message); - } - - public InvalidSetterException(String message, Throwable cause) { - super(message, cause); - } - - public InvalidSetterException(Throwable cause) { - super(cause); - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/JavaIntrospectionHelper.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/JavaIntrospectionHelper.java deleted file mode 100644 index 9d74633519..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/JavaIntrospectionHelper.java +++ /dev/null @@ -1,446 +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.core.config; - -import java.lang.reflect.AccessibleObject; -import java.lang.reflect.Constructor; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.lang.reflect.ParameterizedType; -import java.lang.reflect.Type; -import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -/** - * Implements various reflection-related operations - * - * @version $Rev$ $Date$ - */ -public class JavaIntrospectionHelper { - - private static final Class[] EMPTY_CLASS_ARRY = new Class[0]; - - /** - * Hide the constructor - */ - private JavaIntrospectionHelper() { - } - - /** - * Returns a collection of public, private, protected, or default fields declared by a class or one of its - * supertypes - */ - public static Set<Field> getAllFields(Class pClass) { - return getAllFields(pClass, new HashSet<Field>()); - } - - /** - * Recursively evaluates the type hierachy to return all fields on a given type - */ - private static Set<Field> getAllFields(Class pClass, Set<Field> fields) { - if (pClass == null || pClass.isArray() || Object.class.equals(pClass)) { - return fields; - } - fields = getAllFields(pClass.getSuperclass(), fields); - Field[] declaredFields = pClass.getDeclaredFields(); - for (Field field : declaredFields) { - field.setAccessible(true); // ignore Java accessibility - fields.add(field); - } - return fields; - } - - /** - * Returns a collection of public, and protected fields declared by a class or one of its - * supertypes - */ - public static Set<Field> getAllPublicAndProtectedFields(Class clazz) { - return getAllPublicAndProtectedFields(clazz, new HashSet<Field>()); - } - - /** - * Recursively evaluates the type hierachy to return all fields that are public or protected - */ - private static Set<Field> getAllPublicAndProtectedFields(Class clazz, Set<Field> fields) { - if (clazz == null || clazz.isArray() || Object.class.equals(clazz)) { - return fields; - } - fields = getAllPublicAndProtectedFields(clazz.getSuperclass(), fields); - Field[] declaredFields = clazz.getDeclaredFields(); -// fields = new HashSet<Field>(); -// Field[] declaredFields = clazz.getFields(); - for (Field field : declaredFields) { - int modifiers = field.getModifiers(); - if ((Modifier.isPublic(modifiers) || Modifier.isProtected(modifiers)) && !Modifier.isStatic(modifiers)){ - field.setAccessible(true); // ignore Java accessibility - fields.add(field); - } - } - return fields; - } - - /** - * Returns a collection of public, private, protected, or default methods declared by a class or one of - * its supertypes. Note that overriden methods will not be returned in the collection (i.e. only the - * method override will be). <p/> This method can potentially be expensive as reflection information is - * not cached. It is assumed that this method will be used during a configuration phase. - */ - public static Set<Method> getAllUniqueMethods(Class clazz) { - return getAllUniqueMethods(clazz, new HashSet<Method>()); - } - - /** - * Recursively evaluates the type hierarchy to return all unique methods - */ - private static Set<Method> getAllUniqueMethods(Class pClass, Set<Method> methods) { - if (pClass == null || pClass.isArray() || Object.class.equals(pClass)) { - return methods; - } - // we first evaluate methods of the subclass and then move to the parent - Method[] declaredMethods = pClass.getDeclaredMethods(); - for (Method declaredMethod : declaredMethods) { - if (methods.size() == 0) { - methods.add(declaredMethod); - } else { - List<Method> temp = new ArrayList<Method>(); - boolean matched = false; - for (Method method : methods) { - // only add if not already in the set from a supclass (i.e. the - // method is not overrided) - if (exactMethodMatch(declaredMethod, method)) { - matched = true; - break; - } - } - if (!matched) { - // TODO ignore Java accessibility - declaredMethod.setAccessible(true); - temp.add(declaredMethod); - - } - methods.addAll(temp); - temp.clear(); - } - } - // evaluate class hierarchy - this is done last to track inherited methods - methods = getAllUniqueMethods(pClass.getSuperclass(), methods); - return methods; - } - - /** - * Finds the closest matching field with the given name, that is, a field of the exact specified type or, - * alternately, of a supertype. - * - * @param name the name of the field - * @param type the field type - * @param fields the collection of fields to search - * @return the matching field or null if not found - */ - public static Field findClosestMatchingField(String name, Class type, Set<Field> fields) { - Field candidate = null; - for (Field field : fields) { - if (field.getName().equals(name)) { - if (field.getType().equals(type)) { - return field; // exact match - } else if (field.getType().isAssignableFrom(type) - || (field.getType().isPrimitive() && primitiveAssignable(field.getType(), type))) { - // We could have the situation where a field parameter is a primitive and the demarshalled value is - // an object counterpart (e.g. Integer and int) - // @spec issue - // either an interface or super class, so keep a reference until - // we know there are no closer types - candidate = field; - } - } - } - if (candidate != null) { - return candidate; - } else { - return null; - } - } - - /** - * Finds the closest matching method with the given name, that is, a method taking the exact parameter - * types or, alternately, parameter supertypes. - * - * @param name the name of the method - * @param types the method parameter types - * @param methods the collection of methods to search - * @return the matching method or null if not found - */ - public static Method findClosestMatchingMethod(String name, Class[] types, Set<Method> methods) { - if (types == null) { - types = EMPTY_CLASS_ARRY; - } - Method candidate = null; - for (Method method : methods) { - if (method.getName().equals(name) && method.getParameterTypes().length == types.length) { - Class[] params = method.getParameterTypes(); - boolean disqualify = false; - boolean exactMatch = true; - for (int i = 0; i < params.length; i++) { - if (!params[i].equals(types[i]) && !params[i].isAssignableFrom(types[i])) { - // no match - disqualify = true; - exactMatch = false; - break; - } else if (!params[i].equals(types[i]) && params[i].isAssignableFrom(types[i])) { - // not exact match - exactMatch = false; - } - } - if (disqualify) { - continue; - } else if (exactMatch) { - return method; - } else { - candidate = method; - } - } - } - if (candidate != null) { - return candidate; - } else { - return null; - } - } - - /** - * Searches a collection of fields for one that matches by name and has a multiplicity type. i.e. a List - * or Array of interfaces - * - * @return a matching field or null - */ - public static Field findMultiplicityFieldByName(String name, Set<Field> fields) { - for (Field candidate : fields) { - if (candidate.getName().equals(name) - && (List.class.isAssignableFrom(candidate.getType()) || (candidate.getType().isArray() - && candidate.getType().getComponentType() != null && candidate.getType().getComponentType() - .isInterface()))) { - return candidate; - } - } - return null; - } - - /** - * Searches a collection of method for one that matches by name and has single parameter of a multiplicity - * type. i.e. a List or Array of interfaces - * - * @return a matching method or null - */ - public static Method findMultiplicityMethodByName(String name, Set<Method> methods) { - for (Method candidate : methods) { - if (candidate.getName().equals(name) - && candidate.getParameterTypes().length == 1 - && (List.class.isAssignableFrom(candidate.getParameterTypes()[0]) || (candidate.getParameterTypes()[0] - .isArray() - && candidate.getParameterTypes()[0].getComponentType() != null && candidate.getParameterTypes()[0] - .getComponentType().isInterface()))) { - return candidate; - } - } - return null; - } - - /** - * Returns a field or method defined in the given class or its superclasses matching a literal name and - * parameter types <p/> This method can potentially be expensive as reflection information is not cached. - * It is assumed that this method will be used during a configuration phase. - * - * @param clazz the class to introspect - * @param propertName the literal name of the property (i.e. JavaBean conventions are not applied) - * @param paramTypes the parameter types for a method or null for fields or methods with no parameters - * @return the field, method or null - */ - public static AccessibleObject getBeanProperty(Class clazz, String propertName, Class[] paramTypes) { - - Set<Method> methods = getAllUniqueMethods(clazz); - for (Method method : methods) { - if (method.getName().equals(propertName)) { - Class[] types = method.getParameterTypes(); - if (types.length == 0 && paramTypes == null) { - return method; - } else if (types.length != 0 && paramTypes == null) { - break; - } else if (types.length == paramTypes.length) { - for (int n = 0; n < types.length - 1; n++) { - if (!types[n].equals(paramTypes[n]) || !types[n].isAssignableFrom(paramTypes[n])) { - break; - } - } - return method; - } - } - } - - Set<Field> fields = getAllFields(clazz); - for (Field field : fields) { - if (field.getName().equals(propertName)) { - return field; - } - } - return null; - } - - /** - * Determines if two methods "match" - that is, they have the same method names and exact parameter types - * (one is not a supertype of the other) - */ - public static boolean exactMethodMatch(Method method1, Method method2) { - if (!method1.getName().equals(method2.getName())) { - return false; - } - Class[] types1 = method1.getParameterTypes(); - Class[] types2 = method2.getParameterTypes(); - if (types1.length == 0 && types2.length == 0) { - return true; - } else if (types1.length == types2.length) { - for (int n = 0; n < types1.length; n++) { - if (!types1[n].equals(types2[n])) { - return false; - } - } - return true; - } - return false; - } - - public static <T> Constructor<T> getDefaultConstructor(Class<T> clazz) throws NoSuchMethodException { - return clazz.getConstructor((Class[]) null); - } - - /** - * Loads a class corresponding to the class name using the current context class loader. - * - * @throws ClassNotFoundException if the class was not found on the classpath - */ - public static Class loadClass(String pName) throws ClassNotFoundException { - ClassLoader loader = Thread.currentThread().getContextClassLoader(); - return Class.forName(pName, true, loader); - } - - /** - * Returns the simple name of a class - i.e. the class name devoid of its package qualifier - * - * @param implClass - */ - public static String getBaseName(Class<?> implClass) { - String baseName = implClass.getName(); - int lastDot = baseName.lastIndexOf('.'); - if (lastDot != -1) { - baseName = baseName.substring(lastDot + 1); - } - return baseName; - } - - public static boolean isImmutable(Class clazz) { - return (String.class == clazz || clazz.isPrimitive() || Number.class.isAssignableFrom(clazz) - || Boolean.class.isAssignableFrom(clazz) || Character.class.isAssignableFrom(clazz) || Byte.class - .isAssignableFrom(clazz)); - } - - /** - * Takes a property name and converts it to a getter method name according to JavaBean conventions. For - * example, property <code>foo<code> is returned as <code>getFoo</code> - */ - public static String toGetter(String name) { - return "get" + name.toUpperCase().substring(0, 1) + name.substring(1); - } - - /** - * Takes a setter or getter method name and converts it to a property name according to JavaBean - * conventions. For example, <code>setFoo(var)</code> is returned as property <code>foo<code> - */ - public static String toPropertyName(String name) { - return Character.toLowerCase(name.charAt(3)) + name.substring(4); - } - - /** - * Takes a property name and converts it to a setter method name according to JavaBean conventions. For - * example, the property <code>foo<code> is returned as <code>setFoo(var)</code> - */ - public static String toSetter(String name) { - return "set" + name.toUpperCase().substring(0, 1) + name.substring(1); - } - - /** - * Compares a two types, assuming one is a primitive, to determine if the other is its object counterpart - */ - private static boolean primitiveAssignable(Class memberType, Class param) { - if (memberType == Integer.class) { - return (param == Integer.TYPE); - } else if (memberType == Double.class) { - return (param == Double.TYPE); - } else if (memberType == Float.class) { - return (param == Float.TYPE); - } else if (memberType == Short.class) { - return (param == Short.TYPE); - } else if (memberType == Character.class) { - return (param == Character.TYPE); - } else if (memberType == Boolean.class) { - return (param == Boolean.TYPE); - } else if (memberType == Byte.class) { - return (param == Byte.TYPE); - } else if (param == Integer.class) { - return (memberType == Integer.TYPE); - } else if (param == Double.class) { - return (memberType == Double.TYPE); - } else if (param == Float.class) { - return (memberType == Float.TYPE); - } else if (param == Short.class) { - return (memberType == Short.TYPE); - } else if (param == Character.class) { - return (memberType == Character.TYPE); - } else if (param == Boolean.class) { - return (memberType == Boolean.TYPE); - } else if (param == Byte.class) { - return (memberType == Byte.TYPE); - } else { - return false; - } - } - - /** - * Returns the generic types represented in the given type. Usage as follows: - * <p/> - * <code> // to return the generic type of a field: JavaIntrospectionHelper.getGenerics(field.getGenericType()); - * <p/> - * // to return the generic types for the first parameter of a method: JavaIntrospectionHelper.getGenerics(m.getGenericParameterTypes()[0];); - * <p/> - * </code> - * - * @return the generic types in order of declaration or an empty array if the type is not genericized - */ - public static List<? extends Type> getGenerics(Type genericType) { - List<Type> classes = new ArrayList<Type>(); - if (genericType instanceof ParameterizedType) { - ParameterizedType ptype = (ParameterizedType) genericType; - // get the type arguments - Type[] targs = ptype.getActualTypeArguments(); - for (Type targ : targs) { - classes.add(targ); - } - } - return classes; - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/MetaDataException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/MetaDataException.java deleted file mode 100644 index 30840a6e15..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/MetaDataException.java +++ /dev/null @@ -1,37 +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.core.config; - -/** - * Denotes an error processing component metadata - * - * @version $$Rev$$ $$Date$$ - */ -public class MetaDataException extends ConfigurationLoadException{ - - public MetaDataException() { - } - - public MetaDataException(String message) { - super(message); - } - - public MetaDataException(String message, Throwable cause) { - super(message, cause); - } - - public MetaDataException(Throwable cause) { - super(cause); - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/MissingInterfaceException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/MissingInterfaceException.java deleted file mode 100644 index 6164b6a011..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/MissingInterfaceException.java +++ /dev/null @@ -1,39 +0,0 @@ -/** - * - * Copyright 2006 The Apache Software Foundation - * - * 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.core.config; - -/** - * Exception indicating that the interface referenced in an assembly file could not be found. - * - * @version $Rev$ $Date$ - */ -public class MissingInterfaceException extends ConfigurationLoadException { - public MissingInterfaceException() { - } - - public MissingInterfaceException(String message) { - super(message); - } - - public MissingInterfaceException(String message, Throwable cause) { - super(message, cause); - } - - public MissingInterfaceException(Throwable cause) { - super(cause); - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/MissingResourceException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/MissingResourceException.java deleted file mode 100644 index 8260dbc8ae..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/MissingResourceException.java +++ /dev/null @@ -1,35 +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.core.config; - -/** - * Exception that indicates an expected resource could not be found. - * - * @version $Rev$ $Date$ - */ -public class MissingResourceException extends ConfigurationLoadException { - /** - * Constructor that indicates which resource could not be found. - * The supplied parameter is also returned as the message. - * - * @param resource the resource that could not be found - */ - public MissingResourceException(String resource) { - super(resource); - setResourceURI(resource); - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/ModuleComponentConfigurationLoader.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/ModuleComponentConfigurationLoader.java deleted file mode 100644 index 15857441b1..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/ModuleComponentConfigurationLoader.java +++ /dev/null @@ -1,75 +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.core.config; - -import org.apache.tuscany.model.assembly.ModuleComponent; - -import java.net.URL; -import java.util.Collection; - -/** - * Interface for loading configuration information from some external - * form into a Tuscany logical model. - * - * @version $Rev: 368822 $ $Date: 2006-01-13 10:54:38 -0800 (Fri, 13 Jan 2006) $ - */ -public interface ModuleComponentConfigurationLoader { - - /** - * Load a SCDL module component. - * - * @param name the name of the module component - * @param uri - * @return a new module component definition - * @throws ConfigurationLoadException if there was a problem loading the module component. - */ - ModuleComponent loadModuleComponent(String name, String uri) throws ConfigurationLoadException; - - /** - * Load a System SCDL module component. - * - * @param name the name of the module component - * @param uri - * @return a new module component definition - * @throws ConfigurationLoadException if there was a problem loading the module component. - */ - ModuleComponent loadSystemModuleComponent(String name, String uri) throws ConfigurationLoadException; - - /** - * Load a SCDL module component. - * - * @param name the name of the module component - * @param uri - * @param url - * @return a new module component definition - * @throws ConfigurationLoadException if there was a problem loading the module component. - */ - ModuleComponent loadModuleComponent(String name, String uri, URL url) throws ConfigurationLoadException; - - /** - * Load a SCDL module component. - * - * @param name the name of the module component - * @param uri - * @param url - * @param urls - * @return a new module component definition - * @throws ConfigurationLoadException if there was a problem loading the module component. - */ - ModuleComponent loadModuleComponent(String name, String uri, URL url, Collection<URL> urls) throws ConfigurationLoadException; - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/SidefileLoadException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/SidefileLoadException.java deleted file mode 100644 index b432d4ea68..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/SidefileLoadException.java +++ /dev/null @@ -1,50 +0,0 @@ -/** - * - * Copyright 2006 The Apache Software Foundation - * - * 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.core.config; - -/** - * Exception indicating that there was a problem loading a sidefile. - * - * @version $Rev$ $Date$ - */ -public class SidefileLoadException extends ConfigurationLoadException { - private static final long serialVersionUID = -3530306758412789392L; - private String sidefileURI; - - public SidefileLoadException() { - } - - public SidefileLoadException(String message) { - super(message); - } - - public SidefileLoadException(String message, Throwable cause) { - super(message, cause); - } - - public SidefileLoadException(Throwable cause) { - super(cause); - } - - public String getSidefileURI() { - return sidefileURI; - } - - public void setSidefileURI(String sidefileURI) { - this.sidefileURI = sidefileURI; - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/impl/AbstractModuleComponentConfigurationLoader.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/impl/AbstractModuleComponentConfigurationLoader.java deleted file mode 100644 index 2725a00068..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/impl/AbstractModuleComponentConfigurationLoader.java +++ /dev/null @@ -1,171 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.config.impl; - -import org.apache.tuscany.common.resource.ResourceLoader; -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.config.ModuleComponentConfigurationLoader; -import org.apache.tuscany.core.config.ComponentTypeIntrospector; -import org.apache.tuscany.core.config.processor.ProcessorUtils; -import org.apache.tuscany.core.system.context.SystemCompositeContextImpl; -import org.apache.tuscany.core.context.impl.CompositeContextImpl; -import org.apache.tuscany.model.assembly.AssemblyFactory; -import org.apache.tuscany.model.assembly.AssemblyContext; -import org.apache.tuscany.model.assembly.Module; -import org.apache.tuscany.model.assembly.ModuleComponent; -import org.apache.tuscany.model.assembly.ModuleFragment; -import org.apache.tuscany.model.assembly.ComponentType; - -import java.io.IOException; -import java.net.URL; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; - -/** - * @version $Rev$ $Date$ - */ -public abstract class AbstractModuleComponentConfigurationLoader implements ModuleComponentConfigurationLoader { - private static final String SCA_MODULE_FILE_NAME = "sca.module"; - //FIXME can fragments have a variable prefix name? - private static final String SCA_FRAGMENT_FILE_NAME = "sca.fragment"; - private static final String SYSTEM_MODULE_FILE_NAME = "system.module"; - //FIXME can fragments have a variable prefix name? - private static final String SYSTEM_FRAGMENT_FILE_NAME = "system.fragment"; - - protected final AssemblyContext modelContext; - protected final ResourceLoader resourceLoader; - protected final AssemblyFactory assemblyFactory; - - // JFM HACK - private ComponentTypeIntrospector introspector; - - private ComponentType systemType; - - private ComponentType compositeType; - - protected ComponentTypeIntrospector getIntrospector(){ - if (introspector == null){ - introspector = ProcessorUtils.createCoreIntrospector(assemblyFactory); - } - return introspector; - } - - protected ComponentType getSystemCompositeComponentType() throws ConfigurationLoadException { - if (systemType == null){ - systemType = getIntrospector().introspect(SystemCompositeContextImpl.class); - } - return systemType; - } - - protected ComponentType getCompositeComponentType() throws ConfigurationLoadException { - if (compositeType == null){ - compositeType = getIntrospector().introspect(CompositeContextImpl.class); - } - return compositeType; - } - /// JFM HACK - - protected AbstractModuleComponentConfigurationLoader(AssemblyContext modelContext) { - this.modelContext = modelContext; - resourceLoader = modelContext.getApplicationResourceLoader(); - assemblyFactory = modelContext.getAssemblyFactory(); - } - - public ModuleComponent loadSystemModuleComponent(String name, String uri) throws ConfigurationLoadException { - ModuleComponent mc = loadModuleComponent(SYSTEM_MODULE_FILE_NAME, SYSTEM_FRAGMENT_FILE_NAME, name, uri); - //JFM HACK - this is completely gross since it overwrites existing component type - mc.getImplementation().setImplementationClass(SystemCompositeContextImpl.class); - mc.getImplementation().setComponentType(getSystemCompositeComponentType()); - //END HACK - return mc; - } - - public ModuleComponent loadModuleComponent(String name, String uri) throws ConfigurationLoadException { - ModuleComponent mc; - try { - mc = loadModuleComponent(SCA_MODULE_FILE_NAME, SCA_FRAGMENT_FILE_NAME, name, uri); - } catch (ConfigurationLoadException e) { - //JSD HACK, need a better way to specify the composite to load in the future - // for now use the URI as the composite name - mc = loadModuleComponent(uri+".composite", SCA_FRAGMENT_FILE_NAME, name, uri); - } - //JFM HACK - mc.getImplementation().setImplementationClass(CompositeContextImpl.class); - mc.getImplementation().setComponentType(getCompositeComponentType()); - //END HACK - return mc; - } - - protected ModuleComponent loadModuleComponent(String moduleFileName, String fragmentFileName, String name, String uri) throws ConfigurationLoadException { - - // Load the sca.module file - URL moduleUrl; - moduleUrl = resourceLoader.getResource(moduleFileName); - - - if (moduleUrl == null) { - throw new ConfigurationLoadException(moduleFileName); - } - - // Load the sca.fragment files - Iterator<URL> i; - try { - i = resourceLoader.getResources(fragmentFileName); - } catch (IOException e) { - throw new ConfigurationLoadException(fragmentFileName, e); - } - List<URL> moduleFragmentUris=new ArrayList<URL>(); - while (i.hasNext()) { - URL url=i.next(); - moduleFragmentUris.add(url); - } - - return loadModuleComponent(name, uri, moduleUrl, moduleFragmentUris); - } - - public ModuleComponent loadModuleComponent(String name, String uri, URL url) throws ConfigurationLoadException { - return loadModuleComponent( name, uri, url, null); - } - - public ModuleComponent loadModuleComponent(String name, String uri, URL moduleUri, Collection<URL> moduleFragmentUris) throws ConfigurationLoadException { - - // Load the module file - Module module=loadModule(moduleUri); - // Load the sca.fragment files - if (moduleFragmentUris!=null) { - for (URL moduleFragmentUri : moduleFragmentUris) { - ModuleFragment moduleFragment=loadModuleFragment(moduleFragmentUri); - module.getModuleFragments().add(moduleFragment); - } - } - - // Create the module component - ModuleComponent moduleComponent=assemblyFactory.createModuleComponent(); - moduleComponent.setName(name); - moduleComponent.setURI(uri); - moduleComponent.setImplementation(module); - moduleComponent.initialize(modelContext); - - return moduleComponent; - } - - public abstract Module loadModule(URL url) throws ConfigurationLoadException; - - public abstract ModuleFragment loadModuleFragment(URL url) throws ConfigurationLoadException; -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/impl/Java5ComponentTypeIntrospector.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/impl/Java5ComponentTypeIntrospector.java deleted file mode 100644 index fdbb6e0942..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/impl/Java5ComponentTypeIntrospector.java +++ /dev/null @@ -1,139 +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.core.config.impl; - -import java.lang.reflect.Constructor; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - -import org.apache.tuscany.core.config.ComponentTypeIntrospector; -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.config.JavaIntrospectionHelper; -import org.apache.tuscany.core.config.processor.ProcessorUtils; -import org.apache.tuscany.core.extension.config.ImplementationProcessor; -import org.apache.tuscany.core.system.annotation.Autowire; -import org.apache.tuscany.core.system.assembly.SystemAssemblyFactory; -import org.apache.tuscany.model.assembly.AssemblyFactory; -import org.apache.tuscany.model.assembly.ComponentType; -import org.osoa.sca.annotations.Init; -import org.osoa.sca.annotations.ComponentName; - -/** - * Introspects Java annotation-based metata data - * - * @version $Rev$ $Date$ - */ -@org.osoa.sca.annotations.Service(ComponentTypeIntrospector.class) -public class Java5ComponentTypeIntrospector implements ComponentTypeIntrospector { - - private AssemblyFactory factory; - - private List<ImplementationProcessor> processors = new ArrayList<ImplementationProcessor>(); - - public Java5ComponentTypeIntrospector() { - } - - public Java5ComponentTypeIntrospector(AssemblyFactory factory) { - this.factory = factory; - } - - @Autowire - public void setFactory(SystemAssemblyFactory factory) { - this.factory = factory; - //FIXME JFM HACK - List<ImplementationProcessor> processors = ProcessorUtils.createCoreProcessors(factory); - for (ImplementationProcessor processor : processors) { - this.registerProcessor(processor); - } - // END hack - } - - @ComponentName - protected String name; - - @Init(eager = true) - public void init(){ - } - - public void registerProcessor(ImplementationProcessor processor) { - processors.add(processor); - } - - public void unregisterProcessor(ImplementationProcessor processor) { - processors.remove(processor); - } - - /** - * Visits the given implementation type and calls back to {@link org.apache.tuscany.core.extension.config.ImplementationProcessor}s - * registered with this introspector to build up a {@link ComponentType} - * - * @return ComponentType representing the implementation type metadata - * @throws ConfigurationLoadException if there is an error introspecting the implementation type - */ - public ComponentType introspect(Class<?> implClass) throws ConfigurationLoadException { - ComponentType compType = factory.createComponentType(); - return introspect(implClass, compType); - } - - public ComponentType introspect(Class<?> implClass, ComponentType compType) throws ConfigurationLoadException { - for (ImplementationProcessor processor : processors) { - processor.visitClass(implClass, compType); - } - Constructor[] constructors = implClass.getConstructors(); - for (Constructor constructor : constructors) { - for (ImplementationProcessor processor : processors) { - processor.visitConstructor(constructor, compType); - } - } - Method[] methods = implClass.getMethods(); - for (Method method : methods) { - for (ImplementationProcessor processor : processors) { - processor.visitMethod(method, compType); - } - } - Set<Field> fields = JavaIntrospectionHelper.getAllPublicAndProtectedFields(implClass); - for (Field field : fields) { - for (ImplementationProcessor processor : processors) { - processor.visitField(field, compType); - } - } - Class superClass = implClass.getSuperclass(); - if (superClass != null) { - visitSuperClass(superClass, compType); - } - for (ImplementationProcessor processor : processors) { - processor.visitEnd(implClass, compType); - } - return compType; - } - - private void visitSuperClass(Class<?> superClass, ComponentType compType) throws ConfigurationLoadException { - if (!Object.class.equals(superClass)) { - for (ImplementationProcessor processor : processors) { - processor.visitSuperClass(superClass, compType); - } - superClass = superClass.getSuperclass(); - if (superClass != null) { - visitSuperClass(superClass, compType); - } - } - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/impl/StAXModuleComponentConfigurationLoaderImpl.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/impl/StAXModuleComponentConfigurationLoaderImpl.java deleted file mode 100644 index 3bd6e6361d..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/impl/StAXModuleComponentConfigurationLoaderImpl.java +++ /dev/null @@ -1,91 +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.core.config.impl; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.loader.StAXLoaderRegistry; -import org.apache.tuscany.core.loader.LoaderContext; -import org.apache.tuscany.model.assembly.AssemblyContext; -import org.apache.tuscany.model.assembly.Module; -import org.apache.tuscany.model.assembly.ModuleFragment; - -import javax.xml.stream.XMLInputFactory; -import javax.xml.stream.XMLStreamConstants; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; -import java.io.IOException; -import java.net.URL; - -/** - * @version $Rev$ $Date$ - */ -public class StAXModuleComponentConfigurationLoaderImpl extends AbstractModuleComponentConfigurationLoader { - private final XMLInputFactory xmlFactory; - private final StAXLoaderRegistry registry; - - public StAXModuleComponentConfigurationLoaderImpl(AssemblyContext modelContext, XMLInputFactory xmlFactory, StAXLoaderRegistry registry) { - super(modelContext); - this.xmlFactory = xmlFactory; - this.registry = registry; - } - - public Module loadModule(URL url) throws ConfigurationLoadException { - registry.setContext(modelContext); - try { - XMLStreamReader reader = xmlFactory.createXMLStreamReader(url.openStream()); - getDocumentRoot(reader); - return (Module) registry.load(reader, new LoaderContext(resourceLoader)); - } catch (XMLStreamException e) { - ConfigurationLoadException ce = new ConfigurationLoadException(e); - ce.setResourceURI(url.toString()); - throw ce; - } catch (IOException e) { - ConfigurationLoadException ce = new ConfigurationLoadException(e); - ce.setResourceURI(url.toString()); - throw ce; - } finally { - registry.setContext(null); - } - } - - public ModuleFragment loadModuleFragment(URL url) throws ConfigurationLoadException { - registry.setContext(modelContext); - try { - XMLStreamReader reader = xmlFactory.createXMLStreamReader(url.openStream()); - getDocumentRoot(reader); - return (ModuleFragment) registry.load(reader, new LoaderContext(resourceLoader)); - } catch (XMLStreamException e) { - ConfigurationLoadException ce = new ConfigurationLoadException(e); - ce.setResourceURI(url.toString()); - throw ce; - } catch (IOException e) { - ConfigurationLoadException ce = new ConfigurationLoadException(e); - ce.setResourceURI(url.toString()); - throw ce; - } finally { - registry.setContext(null); - } - } - - private static void getDocumentRoot(XMLStreamReader reader) throws XMLStreamException { - while (true) { - if (reader.next() == XMLStreamConstants.START_ELEMENT) { - return; - } - } - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ComponentNameProcessor.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ComponentNameProcessor.java deleted file mode 100644 index 0314bcc9bf..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ComponentNameProcessor.java +++ /dev/null @@ -1,51 +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.core.config.processor; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -import org.apache.tuscany.core.extension.config.extensibility.ComponentNameExtensibilityElement; -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.model.assembly.AssemblyFactory; -import org.apache.tuscany.model.assembly.ComponentType; -import org.osoa.sca.annotations.ComponentName; - -/** - * Processes the {@link ComponentName} annotation - * - * @version $$Rev$$ $$Date$$ - */ -public class ComponentNameProcessor extends ImplementationProcessorSupport { - - public ComponentNameProcessor(AssemblyFactory factory) { - super(factory); - } - - public void visitMethod(Method method, ComponentType type) throws ConfigurationLoadException { - ComponentName name = method.getAnnotation(ComponentName.class); - if (name == null) { - return; - } - type.getExtensibilityElements().add(new ComponentNameExtensibilityElement(method)); - } - - public void visitField(Field field, ComponentType type) throws ConfigurationLoadException { - ComponentName name = field.getAnnotation(ComponentName.class); - if (name == null) { - return; - } - type.getExtensibilityElements().add(new ComponentNameExtensibilityElement(field)); - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ContextProcessor.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ContextProcessor.java deleted file mode 100644 index ff5c3736b7..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ContextProcessor.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.core.config.processor; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.extension.config.extensibility.ContextExtensibilityElement; -import org.apache.tuscany.model.assembly.ComponentType; -import org.osoa.sca.annotations.Context; - -/** - * Processes the {@link org.osoa.sca.annotations.Context} annotation - * - * @version $$Rev$$ $$Date$$ - */ -public class ContextProcessor extends ImplementationProcessorSupport { - - public ContextProcessor() { - } - - public void visitMethod(Method method, ComponentType type) throws ConfigurationLoadException { - Context context = method.getAnnotation(Context.class); - if (context == null) { - return; - } - type.getExtensibilityElements().add(new ContextExtensibilityElement(method)); - } - - public void visitField(Field field, ComponentType type) throws ConfigurationLoadException { - Context context = field.getAnnotation(Context.class); - if (context == null) { - return; - } - type.getExtensibilityElements().add(new ContextExtensibilityElement(field)); - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/DefaultProcessor.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/DefaultProcessor.java deleted file mode 100644 index 8445526dc8..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/DefaultProcessor.java +++ /dev/null @@ -1,112 +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.core.config.processor; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.List; -import java.util.Set; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.config.JavaIntrospectionHelper; -import org.apache.tuscany.model.assembly.AssemblyFactory; -import org.apache.tuscany.model.assembly.ComponentType; -import org.apache.tuscany.model.assembly.Property; -import org.apache.tuscany.model.assembly.Reference; - -/** - * Adds public methods and public/protected fields as properties that are not declared explicitly with an - * {@link org.osoa.sca.annotations.Property} or {@link org.osoa.sca.annotations.Reference} annotation - * - * @version $$Rev$$ $$Date$$ - */ -public class DefaultProcessor extends ImplementationProcessorSupport { - - public DefaultProcessor(AssemblyFactory factory) { - super(factory); - } - - public DefaultProcessor() { - } - - public void visitEnd(Class<?> clazz, ComponentType type) throws ConfigurationLoadException { - // add any public/protected fields and public setter methods as properties - Set<Field> fields = JavaIntrospectionHelper.getAllPublicAndProtectedFields(clazz); - List<Property> properties = type.getProperties(); - List<Reference> references = type.getReferences(); - boolean contains; - Method[] methods = clazz.getMethods(); - String name; - for (Method method : methods) { - if (Object.class.equals(method.getDeclaringClass()) || method.getParameterTypes().length != 1 - || method.isAnnotationPresent(org.osoa.sca.annotations.Property.class) - || method.isAnnotationPresent(org.osoa.sca.annotations.Reference.class)) { - continue; - } - contains = containsProperty(properties, method.getName()); - if (contains) { - continue; - } - name = method.getName(); - if (name.length() > 3 && name.startsWith("set")) { - // follow JavaBeans conventions - name = JavaIntrospectionHelper.toPropertyName(name); - } - contains = containsReference(references, name); - if (!contains) { - addProperty(name, method.getParameterTypes()[0], type); - } - } - for (Field field : fields) { - if (field.isAnnotationPresent(org.osoa.sca.annotations.Property.class) - || field.isAnnotationPresent(org.osoa.sca.annotations.Reference.class)) { - continue; - } - contains = containsProperty(properties, field.getName()); - if (contains) { - continue; - } - contains = containsReference(references, field.getName()); - if (!contains) { - addProperty(field.getName(), field.getType(), type); - } - } - } - - private boolean containsProperty(List<Property> properties, String name) { - for (Property prop : properties) { - if (prop.getName().equals(name)) { - return true; - } - } - return false; - } - - private boolean containsReference(List<Reference> references, String name) { - for (Reference ref : references) { - if (ref.getName().equals(name)) { - return true; - } - } - return false; - } - - private void addProperty(String name, Class<?> propType, ComponentType type) { - Property property = factory.createProperty(); - property.setName(name); - property.setRequired(false); - property.setType(propType); - type.getProperties().add(property); - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/DestroyProcessor.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/DestroyProcessor.java deleted file mode 100644 index a16845bbf8..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/DestroyProcessor.java +++ /dev/null @@ -1,47 +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.core.config.processor; - -import java.lang.reflect.Method; - -import org.apache.tuscany.core.extension.config.extensibility.DestroyInvokerExtensibilityElement; -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.model.assembly.AssemblyFactory; -import org.apache.tuscany.model.assembly.ComponentType; -import org.osoa.sca.annotations.Destroy; - -/** - * Processes a {@link Destroy} - * - * @version $$Rev$$ $$Date$$ - */ -public class DestroyProcessor extends ImplementationProcessorSupport { - - public DestroyProcessor() { - } - - public void visitMethod(Method method, ComponentType type) throws ConfigurationLoadException { - Destroy destroy = method.getAnnotation(Destroy.class); - if (destroy == null) { - return; - } - if (method.getParameterTypes().length != 0) { - throw new ConfigurationLoadException("Destroy methods cannot take parameters"); - } - type.getExtensibilityElements().add(new DestroyInvokerExtensibilityElement(method)); - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ImplementationProcessorSupport.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ImplementationProcessorSupport.java deleted file mode 100644 index 175de28a92..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ImplementationProcessorSupport.java +++ /dev/null @@ -1,107 +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.core.config.processor; - -import java.lang.annotation.Annotation; -import java.lang.reflect.Constructor; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -import org.apache.tuscany.core.config.ComponentTypeIntrospector; -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.extension.config.ImplementationProcessor; -import org.apache.tuscany.core.system.annotation.Autowire; -import org.apache.tuscany.model.assembly.AssemblyFactory; -import org.apache.tuscany.model.assembly.ComponentType; -import org.osoa.sca.annotations.Init; -import org.osoa.sca.annotations.Scope; - -/** - * A base implementation of an <code>ImplementationProcessor</code> - * - * @version $$Rev$$ $$Date$$ - */ -@Scope("MODULE") -public abstract class ImplementationProcessorSupport implements ImplementationProcessor { - - protected ComponentTypeIntrospector introspector; - protected AssemblyFactory factory; - - protected ImplementationProcessorSupport(AssemblyFactory factory) { - this.factory = factory; - } - - protected ImplementationProcessorSupport() { - } - - @Init(eager = true) - public void init() throws Exception { - introspector.registerProcessor(this); - } - - @Autowire - public void setIntrospector(ComponentTypeIntrospector introspector) { - this.introspector = introspector; - } - - @Autowire - public void setFactory(AssemblyFactory factory) { - this.factory = factory; - - } - - public void visitClass(Class<?> clazz, ComponentType type) throws ConfigurationLoadException { - - } - - public void visitSuperClass(Class<?> clazz, ComponentType type) throws ConfigurationLoadException { - - } - - public void visitMethod(Method method, ComponentType type) throws ConfigurationLoadException { - - } - - public void visitConstructor(Constructor<?> constructor, ComponentType type) throws ConfigurationLoadException { - - } - - public void visitField(Field field, ComponentType type) throws ConfigurationLoadException { - - } - - public void visitInterface(Class clazz, Annotation[] annotations, ComponentType type) throws ConfigurationLoadException { - - } - - public void visitInterfaceMethod(Method method, Annotation[] annotations, ComponentType type) throws ConfigurationLoadException { - - } - - public void visitEnd(Class<?> clazz, ComponentType type) throws ConfigurationLoadException { - - } - -// /** -// * Creates a {@link JavaExtensibilityElement} subclasses may update while processing annotations -// */ -// protected JavaExtensibilityElement getExtensibilityElement(ComponentType type) { -// JavaExtensibilityElement element = (JavaExtensibilityElement) type.getExtensibilityElements().get(JAVA_ELEMENT); -// if (element == null) { -// element = new JavaExtensibilityElementImpl(); -// type.getExtensibilityElements().put(JAVA_ELEMENT, element); -// } -// return element; -// } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/InitProcessor.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/InitProcessor.java deleted file mode 100644 index 9f4a53a651..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/InitProcessor.java +++ /dev/null @@ -1,43 +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.core.config.processor; - -import java.lang.reflect.Method; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.extension.config.extensibility.InitInvokerExtensibilityElement; -import org.apache.tuscany.model.assembly.ComponentType; -import org.osoa.sca.annotations.Init; - -/** - * Processes the {@link org.osoa.sca.annotations.Init} annotation - * - * @version $$Rev$$ $$Date$$ - */ -public class InitProcessor extends ImplementationProcessorSupport { - - public InitProcessor() { - } - - public void visitMethod(Method method, ComponentType type) throws ConfigurationLoadException { - Init init = method.getAnnotation(Init.class); - if (init == null) { - return; - } - if (method.getParameterTypes().length != 0) { - throw new ConfigurationLoadException("Initialize methods cannot take parameters"); - } - type.getExtensibilityElements().add(new InitInvokerExtensibilityElement(method, init.eager())); - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ProcessorHelper.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ProcessorHelper.java deleted file mode 100644 index d4c6c4a40e..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ProcessorHelper.java +++ /dev/null @@ -1,59 +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.core.config.processor; - -import java.util.List; - -import org.apache.tuscany.model.assembly.Scope; -import org.apache.tuscany.model.assembly.Service; - -/** - * Provides utility functions for {@link org.apache.tuscany.core.extension.config.ImplementationProcessor}s - * - * @version $$Rev$$ $$Date$$ - */ -public class ProcessorHelper { - - private ProcessorHelper() { - } - - /** - * Returns the first <code>Service</code> from a collection matching the interface type - */ - public static Service getService(Class<?> interfaceType, List<Service> services) { - for (Service service : services) { - Class serviceInterface = service.getServiceContract().getInterface(); - if (serviceInterface.equals(interfaceType)) { - return service; - } - } - return null; - } - - /** - * Returns the scope enum specified by the annotation - */ - public static Scope getScope(org.osoa.sca.annotations.Scope annotation) { - if ("MODULE".equalsIgnoreCase(annotation.value())) { - return Scope.MODULE; - } else if ("SESSION".equalsIgnoreCase(annotation.value())) { - return Scope.SESSION; - } else if ("REQUEST".equalsIgnoreCase(annotation.value())) { - return Scope.REQUEST; - } else { - return Scope.INSTANCE; - } - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ProcessorUtils.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ProcessorUtils.java deleted file mode 100644 index b0400c183f..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ProcessorUtils.java +++ /dev/null @@ -1,65 +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.core.config.processor; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.tuscany.core.extension.config.ImplementationProcessor; -import org.apache.tuscany.core.system.config.processor.AutowireProcessor; -import org.apache.tuscany.core.system.config.processor.MonitorProcessor; -import org.apache.tuscany.core.system.config.processor.ParentContextProcessor; -import org.apache.tuscany.core.config.ComponentTypeIntrospector; -import org.apache.tuscany.core.config.impl.Java5ComponentTypeIntrospector; -import org.apache.tuscany.core.sdo.helper.SDOHelperProcessor; -import org.apache.tuscany.model.assembly.AssemblyFactory; - -/** - * Temporary class to create bootstrap {@link ImplementationProcessor}s - * - * @version $$Rev$$ $$Date$$ - */ -public class ProcessorUtils { - - private ProcessorUtils() { - } - - public static List<ImplementationProcessor> createCoreProcessors(AssemblyFactory factory) { - List<ImplementationProcessor> processors = new ArrayList<ImplementationProcessor>(); - processors.add(new PropertyProcessor(factory)); - processors.add(new ReferenceProcessor(factory)); - processors.add(new ScopeProcessor()); - processors.add(new ServiceProcessor(factory)); - processors.add(new InitProcessor()); - processors.add(new DestroyProcessor()); - processors.add(new ContextProcessor()); - processors.add(new ComponentNameProcessor(factory)); - processors.add(new DefaultProcessor(factory)); - processors.add(new AutowireProcessor()); - processors.add(new MonitorProcessor()); - processors.add(new ParentContextProcessor()); - processors.add(new SDOHelperProcessor()); - return processors; - } - - public static ComponentTypeIntrospector createCoreIntrospector(AssemblyFactory factory){ - ComponentTypeIntrospector introspector = new Java5ComponentTypeIntrospector(factory); - List<ImplementationProcessor> processors = createCoreProcessors(factory); - for (ImplementationProcessor processor : processors) { - introspector.registerProcessor(processor); - } - return introspector; - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/PropertyProcessor.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/PropertyProcessor.java deleted file mode 100644 index 9191b75793..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/PropertyProcessor.java +++ /dev/null @@ -1,104 +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.core.config.processor; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.config.InvalidSetterException; -import org.apache.tuscany.core.config.JavaIntrospectionHelper; -import org.apache.tuscany.model.assembly.AssemblyFactory; -import org.apache.tuscany.model.assembly.ComponentType; -import org.apache.tuscany.model.assembly.Property; -import org.osoa.sca.annotations.Scope; - -/** - * Processes the {@link org.osoa.sca.annotations.Property} annotation - * - * @version $$Rev$$ $$Date$$ - */ -@Scope("MODULE") -public class PropertyProcessor extends ImplementationProcessorSupport { - - public PropertyProcessor(AssemblyFactory factory) { - super(factory); - } - - public PropertyProcessor() { - } - - @Override - public void visitMethod(Method method, ComponentType type) throws ConfigurationLoadException { - if (method.getDeclaringClass().equals(Object.class)) { - return; - } - org.osoa.sca.annotations.Property annotation = method.getAnnotation(org.osoa.sca.annotations.Property.class); - if (annotation != null) { - if (!Modifier.isPublic(method.getModifiers())) { - InvalidSetterException e = new InvalidSetterException("Property setter method is not public"); - e.setIdentifier(method.toString()); - throw e; - } - Class<?>[] params = method.getParameterTypes(); - if (params.length != 1) { - InvalidSetterException e = new InvalidSetterException("Property setter method must have one parameter"); - e.setIdentifier(method.toString()); - throw e; - } - String name = annotation.name(); - if (name.length() == 0) { - name = method.getName(); - if (name.length() > 3 && name.startsWith("set")) { - // follow JavaBeans conventions - name = JavaIntrospectionHelper.toPropertyName(name); - } - } - addProperty(name, method.getParameterTypes()[0], annotation.required(), type); - } - - - } - - @Override - public void visitField(Field field, ComponentType type) throws ConfigurationLoadException { - if (field.getDeclaringClass().equals(Object.class)) { - return; - } - int modifiers = field.getModifiers(); - org.osoa.sca.annotations.Property annotation = field.getAnnotation(org.osoa.sca.annotations.Property.class); - if (annotation != null) { - if (!Modifier.isPublic(modifiers) && !Modifier.isProtected(modifiers)) { - InvalidSetterException e = new InvalidSetterException("Property field is not public or protected"); - e.setIdentifier(field.getName()); - throw e; - } - String name = annotation.name(); - if (name.length() == 0) { - name = field.getName(); - } - addProperty(name, field.getType(), annotation.required(), type); - } - } - - private void addProperty(String name, Class<?> propType, boolean required, ComponentType type) { - Property property = factory.createProperty(); - property.setName(name); - property.setRequired(required); - property.setType(propType); - type.getProperties().add(property); - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/PropertyReferenceValidator.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/PropertyReferenceValidator.java deleted file mode 100644 index bc8ef02777..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/PropertyReferenceValidator.java +++ /dev/null @@ -1,80 +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.core.config.processor; - -import java.lang.annotation.Annotation; -import java.lang.reflect.Method; -import java.lang.reflect.Field; -import java.util.Set; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.config.MetaDataException; -import org.apache.tuscany.core.config.JavaIntrospectionHelper; -import org.apache.tuscany.model.assembly.AssemblyFactory; -import org.apache.tuscany.model.assembly.ComponentType; -import org.osoa.sca.annotations.Property; -import org.osoa.sca.annotations.Reference; - -/** - * Validates the use of {@link org.osoa.sca.annotations.Property} and {@link - * org.osoa.sca.annotations.Reference} annotations beyond native Java syntactic capabilities - * - * @version $$Rev$$ $$Date$$ - */ -public class PropertyReferenceValidator extends ImplementationProcessorSupport { - - public PropertyReferenceValidator(AssemblyFactory factory) { - super(factory); - } - - public void visitEnd(Class<?> clazz, ComponentType type) throws ConfigurationLoadException { - // validate methods do not contain both @Reference and @Property annotations - Method[] methods = clazz.getMethods(); - boolean found; - for (Method method : methods) { - found = false; - Annotation[] anotations = method.getAnnotations(); - for (Annotation annotation : anotations) { - if (Property.class.equals(annotation.annotationType()) - || Reference.class.equals(annotation.annotationType())) { - if (found) { - MetaDataException e = new MetaDataException("Method cannot specify both property and reference"); - e.setIdentifier(method.getName()); - throw e; - } - found = true; - } - } - } - // validate fields do not contain both @Reference and @Property annotations - Set<Field> fields = JavaIntrospectionHelper.getAllPublicAndProtectedFields(clazz); - for (Field field : fields) { - found = false; - Annotation[] anotations = field.getAnnotations(); - for (Annotation annotation : anotations) { - if (Property.class.equals(annotation.annotationType()) - || Reference.class.equals(annotation.annotationType())) { - if (found) { - MetaDataException e = new MetaDataException("Field cannot specify both property and reference"); - e.setIdentifier(field.getName()); - throw e; - } - found = true; - } - } - } - - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ReferenceProcessor.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ReferenceProcessor.java deleted file mode 100644 index 007410b500..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ReferenceProcessor.java +++ /dev/null @@ -1,119 +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.core.config.processor; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.Collection; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.config.InvalidSetterException; -import org.apache.tuscany.core.config.JavaIntrospectionHelper; -import org.apache.tuscany.model.assembly.AssemblyFactory; -import org.apache.tuscany.model.assembly.ComponentType; -import org.apache.tuscany.model.assembly.Multiplicity; -import org.apache.tuscany.model.assembly.Reference; -import org.apache.tuscany.model.assembly.ServiceContract; -import org.osoa.sca.annotations.Scope; - -/** - * Processes the {@link org.osoa.sca.annotations.Reference} annotation - * - * @version $$Rev$$ $$Date$$ - */ -@Scope("MODULE") -public class ReferenceProcessor extends ImplementationProcessorSupport { - - public ReferenceProcessor() { - } - - public ReferenceProcessor(AssemblyFactory factory) { - super(factory); - } - - @Override - public void visitMethod(Method method, ComponentType type) throws ConfigurationLoadException { - if(method.getDeclaringClass().equals(Object.class)){ - return; - } - int modifiers = method.getModifiers(); - org.osoa.sca.annotations.Reference annotation = method.getAnnotation(org.osoa.sca.annotations.Reference.class); - if (annotation != null) { - if (!Modifier.isPublic(modifiers)) { - InvalidSetterException e = new InvalidSetterException("Reference setter method is not public"); - e.setIdentifier(method.getName()); - throw e; - } - if (!Void.TYPE.equals(method.getReturnType())) { - InvalidSetterException e = new InvalidSetterException("Refence setter method must return void"); - e.setIdentifier(method.toString()); - throw e; - } - Class<?>[] params = method.getParameterTypes(); - if (params.length != 1) { - InvalidSetterException e = new InvalidSetterException("Reference setter method must have one parameter"); - e.setIdentifier(method.toString()); - throw e; - } - String name = annotation.name(); - if (name.length() == 0) { - name = method.getName(); - if (name.length() > 3 && name.startsWith("set")) { - // follow JavaBeans conventions - name = JavaIntrospectionHelper.toPropertyName(name); - } - } - addReference(name, params[0], annotation.required(), type); - } - } - - @Override - public void visitField(Field field, ComponentType type) throws ConfigurationLoadException { - if(field.getDeclaringClass().equals(Object.class)){ - return; - } - int modifiers = field.getModifiers(); - org.osoa.sca.annotations.Reference annotation = field.getAnnotation(org.osoa.sca.annotations.Reference.class); - if (annotation != null) { - if (!Modifier.isPublic(modifiers) && !Modifier.isProtected(modifiers)) { - InvalidSetterException e = new InvalidSetterException("Reference field is not public or protected"); - e.setIdentifier(field.getName()); - throw e; - } - String name = annotation.name(); - if (name.length() == 0) { - name = field.getName(); - } - addReference(name, field.getType(), annotation.required(), type); - } - } - - private void addReference(String name, Class<?> paramType, boolean required, ComponentType type) { - Reference reference = factory.createReference(); - reference.setName(name); - ServiceContract contract = factory.createJavaServiceContract(); - contract.setInterface(paramType); - reference.setServiceContract(contract); - boolean many = paramType.isArray() || Collection.class.isAssignableFrom(paramType); - Multiplicity multiplicity; - if (required) - multiplicity = many ? Multiplicity.ONE_N : Multiplicity.ONE_ONE; - else - multiplicity = many ? Multiplicity.ZERO_N : Multiplicity.ZERO_ONE; - reference.setMultiplicity(multiplicity); - type.getReferences().add(reference); - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ScopeProcessor.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ScopeProcessor.java deleted file mode 100644 index e81430115a..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ScopeProcessor.java +++ /dev/null @@ -1,74 +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.core.config.processor; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.model.assembly.ComponentType; -import org.apache.tuscany.model.assembly.Scope; -import org.apache.tuscany.model.assembly.Service; - -/** - * Processes the {@link org.osoa.sca.annotations.Scope} annotation - * - * @version $$Rev$$ $$Date$$ - */ -public class ScopeProcessor extends ImplementationProcessorSupport { - - public ScopeProcessor() { - } - - @Override - public void visitEnd(Class<?> clazz, ComponentType type) throws ConfigurationLoadException { - Scope scope = null; - org.osoa.sca.annotations.Scope annotation = clazz.getAnnotation(org.osoa.sca.annotations.Scope.class); - if (annotation != null) { - scope = ProcessorHelper.getScope(annotation); - } else { - Class<?> superClass = clazz.getSuperclass(); - if (superClass != null) { - scope = recurseScope(superClass); - } - } - if (scope == null) { - scope = Scope.INSTANCE; - } - //FIXME hack for now - set scope to implementation scope - //This will be clean up with spec change - for (Service service : type.getServices()) { - Scope serviceScope = service.getServiceContract().getScope(); - if (serviceScope == Scope.INSTANCE || serviceScope == null) { - service.getServiceContract().setScope(scope); - } - } - - } - - /** - * Walks the class hierarchy until a scope annotation is found - */ - private Scope recurseScope(Class<?> superClass) { - if (Object.class.equals(superClass)) { - return null; - } - org.osoa.sca.annotations.Scope scope = superClass.getAnnotation(org.osoa.sca.annotations.Scope.class); - if (scope == null) { - superClass = superClass.getSuperclass(); - if (superClass != null) { - return recurseScope(superClass); - } - } - return ProcessorHelper.getScope(scope); - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ServiceProcessor.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ServiceProcessor.java deleted file mode 100644 index 2c7ba823f2..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ServiceProcessor.java +++ /dev/null @@ -1,129 +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.core.config.processor; - -import java.util.List; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.config.InvalidMetaDataException; -import org.apache.tuscany.core.config.JavaIntrospectionHelper; -import org.apache.tuscany.model.assembly.AssemblyFactory; -import org.apache.tuscany.model.assembly.ComponentType; -import org.apache.tuscany.model.assembly.Scope; -import org.apache.tuscany.model.assembly.Service; -import org.apache.tuscany.model.types.java.JavaServiceContract; -import org.osoa.sca.annotations.Callback; - -/** - * Processes the {@link org.osoa.sca.annotations.Service} annotation - * - * @version $$Rev$$ $$Date$$ - */ -public class ServiceProcessor extends ImplementationProcessorSupport { - - public ServiceProcessor() { - } - - public ServiceProcessor(AssemblyFactory factory) { - super(factory); - } - - @Override - public void visitClass(Class<?> clazz, ComponentType type) throws ConfigurationLoadException { - if (!clazz.isInterface()) { - processImplementation(clazz,type); - } else { - processInterface(clazz, type); - } - } - - private void processImplementation(Class<?> clazz, ComponentType type) throws ConfigurationLoadException { - // visiting the base implementation class - List<org.apache.tuscany.model.assembly.Service> services = type.getServices(); - Class[] interfaces = clazz.getInterfaces(); - org.osoa.sca.annotations.Service serviceAnnotation = clazz.getAnnotation(org.osoa.sca.annotations.Service.class); - if (interfaces.length == 0) { - // no interfaces so the class is the service - addService(services, clazz); - } else if (serviceAnnotation == null && interfaces.length == 1) { - // the impl has one interface, assign it to be the service - addService(services, interfaces[0]); - } else { - // visiting the implementation class - if (serviceAnnotation == null) { - return; - } - Class<?>[] serviceInterfaces = serviceAnnotation.interfaces(); - Class<?> value = serviceAnnotation.value(); - if (serviceInterfaces.length > 0) { - if (!Void.class.equals(value)) { - InvalidMetaDataException e = new InvalidMetaDataException("Both interfaces and value specified in @Service on "); - e.setIdentifier(clazz.getName()); - throw e; - } - for (Class<?> intf : interfaces) { - addService(services, intf); - } - } else if (!Void.class.equals(value)) { - addService(services, value); - } - } - } - - - @Override - public void visitEnd(Class<?> clazz, ComponentType type) throws ConfigurationLoadException { - List<Service> services = type.getServices(); - if (services.size() == 0) { - // no services processed so the class is the service - addService(services, clazz); - } - } - - private void processInterface(Class<?> clazz, ComponentType type) { - List<org.apache.tuscany.model.assembly.Service> services = type.getServices(); - // the interface is a remotable service, add it - org.osoa.sca.annotations.Remotable remotableAnnotation = clazz.getAnnotation(org.osoa.sca.annotations.Remotable.class); - if (remotableAnnotation != null) { - // check to see if service added previously b/c it was specified on @Service - if (ProcessorHelper.getService(clazz, services) == null) { - addService(services, clazz); - } - } - } - - - private void addService(List<Service> services, Class<?> serviceClass) { - //FIXME how do we support specifying remotable? - JavaServiceContract javaInterface = factory.createJavaServiceContract(); - javaInterface.setInterface(serviceClass); - org.osoa.sca.annotations.Scope scopeAnnotation = serviceClass.getAnnotation(org.osoa.sca.annotations.Scope.class); - Scope scope; - if (scopeAnnotation == null) { - scope = Scope.INSTANCE; - } else { - scope = ProcessorHelper.getScope(scopeAnnotation); - } - javaInterface.setScope(scope); - Callback callback = serviceClass.getAnnotation(Callback.class); - if (callback != null && !Void.class.equals(callback.value())) { - javaInterface.setCallbackInterface(callback.value()); - } - String name = JavaIntrospectionHelper.getBaseName(serviceClass); - Service service = factory.createService(); - service.setName(name); - service.setServiceContract(javaInterface); - services.add(service); - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/AtomicContext.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/AtomicContext.java deleted file mode 100644 index 7d4b990ab5..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/AtomicContext.java +++ /dev/null @@ -1,55 +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.core.context; - -/** - * A runtime entity that manages an atomic (i.e. leaf-type) artifact. - * - * @version $Rev$ $Date$ - */ -public interface AtomicContext extends Context { - - /** - * Returns whether the context should be eagerly initialized - */ - public boolean isEagerInit(); - - /** - * Notifies the context of an initialization event - * @throws TargetException - */ - public void init() throws TargetException; - - /** - * Notifies the context of a destroy event - * @throws TargetException - */ - public void destroy() throws TargetException; - - /** - * Returns whether the context should be called back when its scope ends - */ - public boolean isDestroyable(); - - /** - * Returns the target instance associated with the context. A target instance is the actual - * object a request is dispatched to sans proxy wire chain. - * @throws TargetException - */ - public Object getTargetInstance() throws TargetException; - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/AutowireContext.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/AutowireContext.java deleted file mode 100644 index 7fa459e76d..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/AutowireContext.java +++ /dev/null @@ -1,47 +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.core.context; - -/** - * A specialization of a CompositeContext that is able to automatically resolve references - * for its children using EntryPoint or Service interfaces exposed by it or, recursively, any - * of it parents. - * - * @version $Rev$ $Date$ - */ -public interface AutowireContext extends CompositeContext { - - /** - * Invoked by child contexts to return an an autowire target. Resolved targets may be entry points or - * components in the parent or its ancestors, or entry points in a sibling context - * - * @param instanceInterface the type of service being requested - * @return a reference to the requested service or null if none can be found - * @throws AutowireResolutionException if an error occurs attempting to resolve an autowire - */ - <T> T resolveInstance(Class<T> instanceInterface) throws AutowireResolutionException; - - /** - * Invoked by a parent context to return an autowire target in a child. Resolved targets must be entry points. - * For example, given a parent P and two siblings, A and B, A would request an autowire by invoking - * {@link #resolveInstance(Class<T>)} on P, which in turn could invoke the present method on B in order to resolve - * a target. - * - * @param instanceInterface the type of service being requested - * @return a reference to the requested service or null if none can be found - * @throws AutowireResolutionException if an error occurs attempting to resolve an autowire - */ - <T> T resolveExternalInstance(Class<T> instanceInterface) throws AutowireResolutionException; - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/AutowireResolutionException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/AutowireResolutionException.java deleted file mode 100644 index 4da4206a94..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/AutowireResolutionException.java +++ /dev/null @@ -1,40 +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.core.context; - -/** - * Denotes an exception while resolving an automatic wire - * - * @version $Rev$ $Date$ - */ -public class AutowireResolutionException extends TargetException { - - public AutowireResolutionException() { - super(); - } - - public AutowireResolutionException(String message) { - super(message); - } - - public AutowireResolutionException(String message, Throwable cause) { - super(message, cause); - } - - public AutowireResolutionException(Throwable cause) { - super(cause); - } - -} - diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/CompositeContext.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/CompositeContext.java deleted file mode 100644 index abd23feb38..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/CompositeContext.java +++ /dev/null @@ -1,91 +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.core.context; - -import org.apache.tuscany.core.config.ConfigurationException; -import org.apache.tuscany.model.assembly.Composite; -import org.apache.tuscany.model.assembly.Part; -import org.apache.tuscany.model.assembly.Extensible; -import org.apache.tuscany.model.assembly.AssemblyContext; - -import java.util.List; - -/** - * A context which contains child component contexts. - * - * @version $Rev$ $Date$ - */ -public interface CompositeContext extends Context { - - public String getURI(); - - public void setURI(String uri); - - /** - * TODO remove this method - * @deprecated - */ - public void setAssemblyContext(AssemblyContext context); - - /** - * Returns the parent context, or null if the context does not have one - */ - public CompositeContext getParent(); - - /** - * Sets the parent context - */ - public void setParent(CompositeContext parent); - - /** - * Adds runtime artifacts represented by the set of model objects to the composite context by merging them with - * existing artifacts. Implementing classes may support only a subset of {@link Part} types. - * - * @see org.apache.tuscany.model.assembly.Component - * @see org.apache.tuscany.model.assembly.ModuleComponent - * @see org.apache.tuscany.model.assembly.AtomicComponent - * @see org.apache.tuscany.model.assembly.EntryPoint - * @see org.apache.tuscany.model.assembly.ExternalService - */ - public void registerModelObjects(List<? extends Extensible> models) throws ConfigurationException; - - /** - * Adds a runtime artifact represented by the model object to the composite context by merging it with existing - * artifacts. Implementing classes may support only a subset of {@link Part} types. - * - * @see org.apache.tuscany.model.assembly.Component - * @see org.apache.tuscany.model.assembly.ModuleComponent - * @see org.apache.tuscany.model.assembly.AtomicComponent - * @see org.apache.tuscany.model.assembly.EntryPoint - * @see org.apache.tuscany.model.assembly.ExternalService - */ - public void registerModelObject(Extensible model) throws ConfigurationException; - - /** - * Returns the child context associated with a given name - */ - public Context getContext(String name); - - /** - * Returns the composite managed by this composite context - */ - @Deprecated - public Composite getComposite(); - - public void removeContext(String name); - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ConfigurationContext.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ConfigurationContext.java deleted file mode 100644 index 558de7609f..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ConfigurationContext.java +++ /dev/null @@ -1,30 +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.core.context; - -import org.apache.tuscany.core.builder.ContextFactoryBuilder; -import org.apache.tuscany.core.builder.WireBuilder; - -/** - * Offers configuration services in the runtime. A ConfigurationContext is able to configure a model and then buildSource the - * runtime representation corresponding to that model in the live system. - * <p> - * Configuration contexts will typically be hierarchical, delegating to their parent <b>after</b> performing an - * operation. The parent ConfigurationContext will typically be injected into an implementation of this interface during - * registration. - * - * @version $Rev$ $Date$ - */ -public interface ConfigurationContext extends ContextFactoryBuilder, WireBuilder { -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/Context.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/Context.java deleted file mode 100644 index df313d8000..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/Context.java +++ /dev/null @@ -1,46 +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.core.context; - -/** - * An entity that provides an execution context for a runtime artifact or artifacts. A <code>Context</code> may - * be a composite, managing child contexts or it may be an atomic, i.e. leaf, context. - * - * @version $Rev$ $Date$ - */ -public interface Context extends EventPublisher, Lifecycle { - /** - * Returns the instance associated with the requested name, which may be in a atomic or composite form. Atomic (i.e. - * leaf) contexts will return an instance associated with the service name part of the compound name, which may be - * null. - * <p/> - * Composite contexts will return an instance (likely a proxy) of a contained entry point context. In this case, the - * port name on the qualified name will correspond to the composite context name and the part name will be used to - * retrieve the contained entry point context. The latter may be null. If the contained context is not an entry - * point context, an exception will be thrown. - * - * @param qName a qualified name of the requested instance - * @return the implementation instance or a proxy to it - * @throws TargetException - * if an error occurs retrieving the instance or the requested component is not an entry - * point. - * @see CompositeContext - * @see org.apache.tuscany.model.assembly.EntryPoint - */ - public Object getInstance(QualifiedName qName) throws TargetException; - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ContextInitException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ContextInitException.java deleted file mode 100644 index e024a98b0e..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ContextInitException.java +++ /dev/null @@ -1,43 +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.core.context; - -/** - * Denotes an error encountered while initializing an instance context - * - * @version $Rev$ $Date$ - */ -public class ContextInitException extends ContextRuntimeException { - - public ContextInitException() { - super(); - } - - public ContextInitException(String message) { - super(message); - } - - public ContextInitException(String message, Throwable cause) { - super(message, cause); - } - - public ContextInitException(Throwable cause) { - super(cause); - } - -} - diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ContextRuntimeException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ContextRuntimeException.java deleted file mode 100644 index 0d35f145dc..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ContextRuntimeException.java +++ /dev/null @@ -1,39 +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.core.context; - -/** - * An unchecked exception encountered by an {@link org.apache.tuscany.core.context.Context} - * - * @version $Rev$ $Date$ - */ -public class ContextRuntimeException extends CoreRuntimeException { - - public ContextRuntimeException() { - super(); - } - - public ContextRuntimeException(String message) { - super(message); - } - - public ContextRuntimeException(String message, Throwable cause) { - super(message, cause); - } - - public ContextRuntimeException(Throwable cause) { - super(cause); - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/CoreRuntimeException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/CoreRuntimeException.java deleted file mode 100644 index 63e6f18e99..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/CoreRuntimeException.java +++ /dev/null @@ -1,43 +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.core.context; - -import org.apache.tuscany.common.TuscanyRuntimeException; - -/** - * The root exception for the runtime package. Exceptions occurring in the runtime are generally non-recoverable - * - * @version $Rev$ $Date$ - */ -public abstract class CoreRuntimeException extends TuscanyRuntimeException { - - public CoreRuntimeException() { - super(); - } - - public CoreRuntimeException(String message) { - super(message); - } - - public CoreRuntimeException(String message, Throwable cause) { - super(message, cause); - } - - public CoreRuntimeException(Throwable cause) { - super(cause); - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/DuplicateNameException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/DuplicateNameException.java deleted file mode 100644 index 81a334d3c8..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/DuplicateNameException.java +++ /dev/null @@ -1,39 +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.core.context; - -/** - * Denotes an attempt to add a context with a name equal to an existing context - * - * @version $Rev$ $Date$ - */ -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); - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/EntryPointContext.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/EntryPointContext.java deleted file mode 100644 index 63feabc43c..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/EntryPointContext.java +++ /dev/null @@ -1,69 +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.core.context; - -import org.apache.tuscany.core.wire.SourceWireFactory; - -/** - * The runtime artifact representing an entry point, <code>EntryPointContext</code> manages wire handler - * instances that expose service operations offered by a component in the parent composite. The wire handler - * instance is responsible for dispatching the request down an wire chain to the target instance. The wire - * chain may contain {@link org.apache.tuscany.core.wire.Interceptor}s and - * {@link org.apache.tuscany.core.wire.MessageHandler}s that implement policies or perform mediations on the - * wire. - * <p> - * Entry point contexts are used by transport binding artifacts to invoke an operation on a service. The transport - * binding uses an {@link java.lang.reflect.InvocationHandler} instance obtained from the <code>EntryPointContext</code> - * to perform the wire as in: - * - * <pre> - * CompositeContext compositeContext = ... - * EntryPointContext ctx = (EntryPointContext) compositeContext.getContext("source"); - * Assert.assertNotNull(ctx); - * InvocationHandler handler = (InvocationHandler) ctx.getHandler(); - * Object response = handler.invoke(null, operation, new Object[] { param }); - * </pre> - * - * The <code>Proxy</code> instance passed to <code>InvocationHandler</code> may be null as the client is invoking - * directly on the handler. - * <p> - * Alternatively, the following will return a proxy implementing the service interface exposed by the entry point: - * - * <pre> - * CompositeContext compositeContext = ... - * EntryPointContext ctx = (EntryPointContext) compositeContext.getContext("source"); - * Assert.assertNotNull(ctx); - * HelloWorld proxy = (Helloworld) ctx.getInstance(null); // service name not necessary - * </pre> - * - * The proxy returned will be backed by the entry point wire chain. - * - * @version $Rev$ $Date$ - */ -public interface EntryPointContext extends Context { - - /** - * Returns the handler responsible for flowing a request through the entry point - * @throws TargetException - */ - public Object getHandler() throws TargetException; - - /** - * Returns the service interface configured for the entry poitn - */ - public Class getServiceInterface(); -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/EventContext.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/EventContext.java deleted file mode 100644 index 36b0f98928..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/EventContext.java +++ /dev/null @@ -1,46 +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.core.context; - -/** - * Implementations are responsible for tracking scope keys associated with the current request. - * - * @version $Rev$ $Date$ - */ -public interface EventContext { - - /** - * Returns the unique key for the given identifier associated with the current request - */ - public Object getIdentifier(Object type); - - /** - * Sets the unique key for the given identifier associated with the current request - */ - public void setIdentifier(Object type, Object identifier); - - /** - * Clears the unique key for the given identifier associated with the current request - */ - public void clearIdentifier(Object type); - - /** - * Clears all identifiers associated with the current request - */ - public void clearIdentifiers(); - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/EventException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/EventException.java deleted file mode 100644 index aaf26aee69..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/EventException.java +++ /dev/null @@ -1,43 +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.core.context; - -/** - * Denotes an error encountered while firing a module event - * - * @version $Rev$ $Date$ - */ -public class EventException extends CoreRuntimeException { - - public EventException(String message, Throwable cause) { - super(message, cause); - } - - public EventException(String message) { - super(message); - } - - public EventException(Throwable cause) { - super(cause); - } - - public EventException() { - super(); - } - -} - diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/EventFilter.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/EventFilter.java deleted file mode 100644 index ee1334bef2..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/EventFilter.java +++ /dev/null @@ -1,32 +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.core.context; - -import org.apache.tuscany.core.context.event.Event; - -import java.util.EventObject; - -/** - * Evaluates whether a {@link RuntimeEventListener} is applicable to a given runtime event - * - * @version $$Rev$$ $$Date$$ - */ -public interface EventFilter { - - /** - * Performs the actual evaluation on an event - */ - public boolean match(Event event); - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/EventPublisher.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/EventPublisher.java deleted file mode 100644 index c7ccf88e25..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/EventPublisher.java +++ /dev/null @@ -1,44 +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.core.context; - -import org.apache.tuscany.core.context.event.Event; - -/** - * Publishes events in the runtime - * - * @version $$Rev$$ $$Date$$ - */ -public interface EventPublisher { - - public void publish(Event object); - - /** - * Registers a listener to receive notifications for the context - */ - public void addListener(RuntimeEventListener listener); - - /** - * Registers a listener to receive notifications for the context - */ - public void addListener(EventFilter filter, RuntimeEventListener listener); - - - /** - * Removes a previously registered listener - */ - public void removeListener(RuntimeEventListener listener); - - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ExternalServiceContext.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ExternalServiceContext.java deleted file mode 100644 index f7b4a6c572..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ExternalServiceContext.java +++ /dev/null @@ -1,30 +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.core.context; - -/** - * Manages an external service - * - * @version $Rev$ $Date$ - */ -public interface ExternalServiceContext extends Context { - - /** - * Returns the handler responsible for flowing a request through the external service - * @throws TargetException - */ - public Object getHandler() throws TargetException; - -} - diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/InvalidNameException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/InvalidNameException.java deleted file mode 100644 index 65c709e569..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/InvalidNameException.java +++ /dev/null @@ -1,43 +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.core.context; - -/** - * Denotes an invalid name - * - * @version $Rev$ $Date$ - */ -public class InvalidNameException extends ContextRuntimeException { - - public InvalidNameException() { - super(); - } - - public InvalidNameException(String message) { - super(message); - } - - public InvalidNameException(String message, Throwable cause) { - super(message, cause); - } - - public InvalidNameException(Throwable cause) { - super(cause); - } - -} - diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/Lifecycle.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/Lifecycle.java deleted file mode 100644 index 6572841cf0..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/Lifecycle.java +++ /dev/null @@ -1,79 +0,0 @@ -/** - * - * Copyright 2006 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.core.context; - -/** - * @version $Rev$ $Date$ - */ -public interface Lifecycle { - /* A configuration error state */ - int CONFIG_ERROR = -1; - /* Has not been initialized */ - int UNINITIALIZED = 0; - /* In the process of being configured and initialized */ - int INITIALIZING = 1; - /* Instantiated and configured */ - int INITIALIZED = 2; - /* Started */ - int STARTED = 4; - /* Configured and initialized */ - int RUNNING = 4; - /* In the process of being shutdown */ - int STOPPING = 5; - /* Has been shutdown and removed from the module */ - int STOPPED = 6; - /* In an error state */ - int ERROR = 7; - - /** - * Returns the lifecycle state - * - * @see #UNINITIALIZED - * @see #INITIALIZING - * @see #INITIALIZED - * @see #RUNNING - * @see #STOPPING - * @see #STOPPED - */ - int getLifecycleState(); - - /** - * Starts the Lifecycle. - * - * @throws CoreRuntimeException - */ - void start() throws CoreRuntimeException; - - /** - * Stops the Lifecycle. - * - * @throws CoreRuntimeException - */ - void stop() throws CoreRuntimeException; - - /** - * Returns the name of the Lifecycle. - * @return the name of the Lifecycle - */ - String getName(); - - /** - * Sets the name of the Lifecycle. - * @param name the name of the Lifecycle - */ - void setName(String name); -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/MissingContextFactoryException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/MissingContextFactoryException.java deleted file mode 100644 index fd4d613e34..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/MissingContextFactoryException.java +++ /dev/null @@ -1,42 +0,0 @@ -/** - * - * Copyright 2006 The Apache Software Foundation - * - * 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.core.context; - -import org.apache.tuscany.core.config.ConfigurationException; - -/** - * - * @version $Rev$ $Date$ - */ -public class MissingContextFactoryException extends ConfigurationException { - private static final long serialVersionUID = 5140433835245354247L; - - public MissingContextFactoryException() { - } - - public MissingContextFactoryException(String message) { - super(message); - } - - public MissingContextFactoryException(String message, Throwable cause) { - super(message, cause); - } - - public MissingContextFactoryException(Throwable cause) { - super(cause); - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/MissingImplementationException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/MissingImplementationException.java deleted file mode 100644 index 787e9cae20..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/MissingImplementationException.java +++ /dev/null @@ -1,42 +0,0 @@ -/** - * - * Copyright 2006 The Apache Software Foundation - * - * 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.core.context; - -import org.apache.tuscany.core.config.ConfigurationException; - -/** - * - * @version $Rev$ $Date$ - */ -public class MissingImplementationException extends ConfigurationException { - private static final long serialVersionUID = 7274481740916067128L; - - public MissingImplementationException() { - } - - public MissingImplementationException(String message) { - super(message); - } - - public MissingImplementationException(String message, Throwable cause) { - super(message, cause); - } - - public MissingImplementationException(Throwable cause) { - super(cause); - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/MissingScopeException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/MissingScopeException.java deleted file mode 100644 index 53108e6e6b..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/MissingScopeException.java +++ /dev/null @@ -1,42 +0,0 @@ -/** - * - * Copyright 2006 The Apache Software Foundation - * - * 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.core.context; - -import org.apache.tuscany.core.config.ConfigurationException; - -/** - * - * @version $Rev$ $Date$ - */ -public class MissingScopeException extends ConfigurationException { - private static final long serialVersionUID = -6999184494724096056L; - - public MissingScopeException() { - } - - public MissingScopeException(String message) { - super(message); - } - - public MissingScopeException(String message, Throwable cause) { - super(message, cause); - } - - public MissingScopeException(Throwable cause) { - super(cause); - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ProxyConfigurationException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ProxyConfigurationException.java deleted file mode 100644 index 2d15118c1c..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ProxyConfigurationException.java +++ /dev/null @@ -1,42 +0,0 @@ -/** - * - * Copyright 2006 The Apache Software Foundation - * - * 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.core.context; - -import org.apache.tuscany.core.config.ConfigurationException; - -/** - * - * @version $Rev$ $Date$ - */ -public class ProxyConfigurationException extends ConfigurationException { - private static final long serialVersionUID = -5860342620108741058L; - - public ProxyConfigurationException() { - } - - public ProxyConfigurationException(String message) { - super(message); - } - - public ProxyConfigurationException(String message, Throwable cause) { - super(message, cause); - } - - public ProxyConfigurationException(Throwable cause) { - super(cause); - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/QualifiedName.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/QualifiedName.java deleted file mode 100644 index a9a0baeff9..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/QualifiedName.java +++ /dev/null @@ -1,84 +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.core.context; - -/** - * An evaluated name consisting of a part/port pair. In the runtime, a part generally 'contains' or 'provides' ports - * such as a module component/entry point or a component/service pair. - * - * @version $Rev$ $Date$ - */ -public class QualifiedName { - - private String qName; - - private String partName; - - private String portName; - - public static final String NAME_SEPARATOR = "/"; - - /** - * Constructs a new qualified name in the form of part/port where part is the parent context and port represents a - * child, which is either a service in the case of an atomic context or a contained context in the case of a composite. - * - * @throws InvalidNameException if the name is in an invalid format - */ - public QualifiedName(String qualifiedName) throws InvalidNameException { - if (qualifiedName == null){ - return; - } - int pos = qualifiedName.indexOf(QualifiedName.NAME_SEPARATOR); - switch (pos) { - case -1: - partName = qualifiedName; - break; - case 0: - throw new InvalidNameException(qualifiedName); - default: - partName = qualifiedName.substring(0, pos); - portName = qualifiedName.substring(pos + 1); - break; - } - qName = qualifiedName; - } - - /** - * Returns the parsed part name - */ - public String getPartName() { - return partName; - } - - /** - * Returns the parsed port name if the original is of the compound for part/port - */ - public String getPortName() { - return portName; - } - - /** - * Returns the full part/port name pair - */ - public String getQualifiedName() { - return qName; - } - - public String toString() { - return qName; - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/RuntimeEventListener.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/RuntimeEventListener.java deleted file mode 100644 index 89cc51f3fc..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/RuntimeEventListener.java +++ /dev/null @@ -1,32 +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.core.context; - -import org.apache.tuscany.core.context.event.Event; - -import java.util.EventListener; -import java.util.EventObject; - -/** - * Listeners observe events fired in the SCA runtime. - * - * @version $Rev$ $Date$ - */ -public interface RuntimeEventListener extends EventListener { - - public void onEvent(Event event); -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ScopeAwareContext.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ScopeAwareContext.java deleted file mode 100644 index d57d59cb58..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ScopeAwareContext.java +++ /dev/null @@ -1,31 +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.core.context; - -import org.apache.tuscany.model.assembly.Scope; - -import java.util.Map; - -/** - * Denotes a composite context that supports scopes - * - * @version $Rev$ $Date$ - */ -public interface ScopeAwareContext extends CompositeContext { - - /** - * Returns an immutable collection of scopes keyed by type for the composite context - */ - public Map<Scope, ScopeContext> getScopeContexts(); -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ScopeContext.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ScopeContext.java deleted file mode 100644 index c582bde2b4..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ScopeContext.java +++ /dev/null @@ -1,74 +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.core.context; - -import org.apache.tuscany.core.builder.ContextFactory; - -import java.util.List; - -/** - * Manages the lifecycle and visibility of <code>Context</code>s. - * - * @see org.apache.tuscany.core.context.Context - * - * @version $Rev$ $Date$ - */ -public interface ScopeContext extends Lifecycle, RuntimeEventListener { - - public Object getInstance(QualifiedName qName) throws TargetException; - - /** - * Returns whether implementation instances may be held for the duration of an wire - */ - public boolean isCacheable(); - - /** - * Registers the context factory used to construct instance contexts for the scope - */ - public void registerFactories(List<ContextFactory<Context>> configurations); - - /** - * Adds a context factory to the scope - */ - public void registerFactory(ContextFactory<Context> configuration); - - /** - * Returns a context bound to the given name or null if the component does not exist. The returned context is bound - * to a key determined from the thread context. - */ - public Context getContext(String name); - - /** - * Returns a context bound to the given name and scoped to the given key or null if the context does not exist - */ - public Context getContextByKey(String name, Object key); - - /** - * Removes a context with the given name, determining the scope key from the thread context - * - * @throws ScopeRuntimeException - */ - public void removeContext(String name) throws ScopeRuntimeException; - - /** - * Removes a context bound to the given name and scope key - * - * @throws ScopeRuntimeException - */ - public void removeContextByKey(String name, Object key) throws ScopeRuntimeException; - -}
\ No newline at end of file diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ScopeIdentifier.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ScopeIdentifier.java deleted file mode 100644 index d25477f71c..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ScopeIdentifier.java +++ /dev/null @@ -1,33 +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.core.context; - -/** - * Implementations enable lazy retrieval of a scope id associated with a request, i.e. an id (and presumably a context) do not - * have to be generated if the scope is never accessed. Identifiers are associated with the current request thread and keyed on - * scope type. - * - * @version $Rev$ $Date$ - * @see org.apache.tuscany.core.context.EventContext - */ -public interface ScopeIdentifier { - - /** - * Returns the scope id for the request. - */ - public Object getIdentifier(); -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ScopeInitializationException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ScopeInitializationException.java deleted file mode 100644 index 6ef5bfe9dd..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ScopeInitializationException.java +++ /dev/null @@ -1,42 +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.core.context; - -/** - * Denotes an initialization exception thrown by a scope container - * - * @version $Rev$ $Date$ - */ -public class ScopeInitializationException extends ScopeRuntimeException { - - public ScopeInitializationException() { - super(); - } - - public ScopeInitializationException(String message) { - super(message); - } - - public ScopeInitializationException(String message, Throwable cause) { - super(message, cause); - } - - public ScopeInitializationException(Throwable cause) { - super(cause); - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ScopeRuntimeException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ScopeRuntimeException.java deleted file mode 100644 index 5022f7589d..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ScopeRuntimeException.java +++ /dev/null @@ -1,43 +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.core.context; - -/** - * Denotes a general runtime exception encountered by a scope container - * - * @version $Rev$ $Date$ - */ -public class ScopeRuntimeException extends CoreRuntimeException { - - public ScopeRuntimeException() { - super(); - } - - public ScopeRuntimeException(String message) { - super(message); - } - - public ScopeRuntimeException(String message, Throwable cause) { - super(message, cause); - } - - public ScopeRuntimeException(Throwable cause) { - super(cause); - } - -} - diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ScopeStrategy.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ScopeStrategy.java deleted file mode 100644 index c01df8ff9e..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ScopeStrategy.java +++ /dev/null @@ -1,43 +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.core.context; - -import org.apache.tuscany.model.assembly.Scope; - -import java.util.Map; - -/** - * Implementations provide scope container creation facilities and scope semantics to the runtime - * - * @version $Rev$ $Date$ - */ -public interface ScopeStrategy { - - /* Denotes an undefined scope */ - public static final int SCOPE_NOT_FOUND = -3; - - /** - * Creates and returns new instances of configured scope containers - */ - public Map<Scope, ScopeContext> getScopeContexts(EventContext eventContext); - - /** - * Determines whether a wire proceeds from a source of higher scope to a target of lesser scope - */ - public boolean downScopeReference(Scope sourceScope, Scope targetScope); - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ServiceNotFoundException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ServiceNotFoundException.java deleted file mode 100644 index ee8c9f91b8..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/ServiceNotFoundException.java +++ /dev/null @@ -1,42 +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.core.context; - -import org.osoa.sca.ServiceRuntimeException; - -/** - * Denotes the specific case where a service was not found at runtime - * - * @version $Rev$ $Date$ - */ -public class ServiceNotFoundException extends ServiceRuntimeException { - - public ServiceNotFoundException() { - super(); - } - - public ServiceNotFoundException(String message) { - super(message); - } - - public ServiceNotFoundException(Throwable cause) { - super(cause); - } - - public ServiceNotFoundException(String message, Throwable cause) { - super(message, cause); - } - -} - diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/SystemCompositeContext.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/SystemCompositeContext.java deleted file mode 100644 index 7e3b4b8045..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/SystemCompositeContext.java +++ /dev/null @@ -1,37 +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.core.context; - -import org.apache.tuscany.core.config.ConfigurationException; - -/** - * Marker type for system composite contexts - * - * @version $Rev$ $Date$ - */ -public interface SystemCompositeContext extends AutowireContext, ScopeAwareContext, ConfigurationContext { - - /** - * 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 ConfigurationException - */ - void registerJavaObject(String name, Class<?> service, Object instance) throws ConfigurationException; -} - diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/TargetException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/TargetException.java deleted file mode 100644 index dd39d06aa1..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/TargetException.java +++ /dev/null @@ -1,42 +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.core.context; - -/** - * Denotes an error while performing an operation on a target component implementation instance or proxy - * - * @version $Rev$ $Date$ - */ -public class TargetException extends CoreRuntimeException { - - public TargetException() { - super(); - } - - public TargetException(String message) { - super(message); - } - - public TargetException(String message, Throwable cause) { - super(message, cause); - } - - public TargetException(Throwable cause) { - super(cause); - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/AbstractEvent.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/AbstractEvent.java deleted file mode 100644 index cef0c25a63..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/AbstractEvent.java +++ /dev/null @@ -1,33 +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.core.context.event; - -/** - * A basic implementation of a runtime event - * - * @version $$Rev$$ $$Date$$ - */ -public abstract class AbstractEvent implements Event{ - - protected transient Object source; - - public AbstractEvent(Object source) { - assert (source !=null): "Source id was null"; - this.source = source; - } - - public Object getSource() { - return source; - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/AbstractRequestEvent.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/AbstractRequestEvent.java deleted file mode 100644 index c038f141b5..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/AbstractRequestEvent.java +++ /dev/null @@ -1,43 +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.core.context.event; - -/** - * Base implementation of a request event - * - * @version $$Rev$$ $$Date$$ - */ -public abstract class AbstractRequestEvent extends AbstractEvent implements RequestEvent { - - private Object id; - - /** - * Creates a new event - * @param source the source of the event - * @param id the id of the request associated with the event - */ - public AbstractRequestEvent(Object source, Object id) { - super(source); - assert (id !=null): "Request id was null"; - this.id = id; - } - - public Object getId(){ - return id; - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/Event.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/Event.java deleted file mode 100644 index 5b370b8c73..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/Event.java +++ /dev/null @@ -1,28 +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.core.context.event; - -/** - * Represents an event that is propagated in the runtime - * - * @version $$Rev$$ $$Date$$ - */ -public interface Event { - - /** - * Returns the source of the event - */ - public Object getSource(); - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/HttpSessionBound.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/HttpSessionBound.java deleted file mode 100644 index 8af7042ad3..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/HttpSessionBound.java +++ /dev/null @@ -1,33 +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.core.context.event; - - -/** - * An event propagated when an HTTP session is bound to the current request - * - * @version $$Rev$$ $$Date$$ - */ -public class HttpSessionBound extends HttpSessionEvent implements SessionBound { - - /** - * Creates a new event - * @param source the source of the event - * @param id the id of the HTTP session associated with the event or possibly a lazy wrapper - */ - public HttpSessionBound(Object source, Object id) { - super(source,id); - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/HttpSessionEnd.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/HttpSessionEnd.java deleted file mode 100644 index 3b2aff1353..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/HttpSessionEnd.java +++ /dev/null @@ -1,32 +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.core.context.event; - -/** - * Propagated when an HTTP-based session is expired - * - * @version $$Rev$$ $$Date$$ - */ -public class HttpSessionEnd extends HttpSessionEvent implements SessionEnd { - - /** - * Creates a new event - * @param source the source of the event - * @param id the id of the HTTP session being ended - */ - public HttpSessionEnd(Object source, Object id) { - super(source,id); - } - - } diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/HttpSessionEvent.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/HttpSessionEvent.java deleted file mode 100644 index ecfbefa808..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/HttpSessionEvent.java +++ /dev/null @@ -1,47 +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.core.context.event; - -/** - * A base implementation of HTTP-based session events in the runtime - * - * @version $$Rev$$ $$Date$$ - */ -public abstract class HttpSessionEvent implements SessionEvent { - - // FIXME this needs to be made private and not directly referenced in the runtime - public static final Object HTTP_IDENTIFIER = new Object(); - - private Object id; - protected transient Object source; - - public HttpSessionEvent(Object source, Object id) { - assert (source !=null): "Source id was null"; - assert (id !=null): "Session id was null"; - this.source = source; - this.id = id; - } - - public Object getSource() { - return source; - } - - public Object getId(){ - return id; - } - - public Object getSessionTypeIdentifier(){ - return HTTP_IDENTIFIER; - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/InstanceCreated.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/InstanceCreated.java deleted file mode 100644 index d157b4b1e1..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/InstanceCreated.java +++ /dev/null @@ -1,27 +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.core.context.event; - -/** - * An event propagated upon the creation of an instance belonging to a {@link org.apache.tuscany.core.context.Context} - * - * @version $$Rev$$ $$Date$$ - */ -public class InstanceCreated extends AbstractEvent { - - public InstanceCreated(Object source) { - super(source); - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/ModuleEvent.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/ModuleEvent.java deleted file mode 100644 index 48de538048..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/ModuleEvent.java +++ /dev/null @@ -1,23 +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.core.context.event; - -/** - * Implemented by runtime events associated with a module, e.g. lifecycle events - * - * @version $$Rev$$ $$Date$$ - */ -public interface ModuleEvent extends Event{ - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/ModuleStart.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/ModuleStart.java deleted file mode 100644 index d953ddd65f..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/ModuleStart.java +++ /dev/null @@ -1,26 +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.core.context.event; - -/** - * Propagated when a module starts - * - * @version $$Rev$$ $$Date$$ - */ -public class ModuleStart extends AbstractEvent implements ModuleEvent { - - public ModuleStart(Object source) { - super(source); - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/ModuleStop.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/ModuleStop.java deleted file mode 100644 index fb3c31bdff..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/ModuleStop.java +++ /dev/null @@ -1,29 +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.core.context.event; - -/** - * Propagated when a module stops - * - * @version $$Rev$$ $$Date$$ - */ -public class ModuleStop extends AbstractEvent implements ModuleEvent{ - - public ModuleStop(Object source) { - super(source); - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/RequestEnd.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/RequestEnd.java deleted file mode 100644 index 1cbe024be3..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/RequestEnd.java +++ /dev/null @@ -1,33 +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.core.context.event; - -/** - * Propagated when a request completes or is ended - * - * @version $$Rev$$ $$Date$$ - */ -public class RequestEnd extends AbstractRequestEvent{ - - /** - * Creates a new event - * @param source the source of the event - * @param id the id of the completed/ended request - */ - public RequestEnd(Object source, Object id) { - super(source,id); - } - - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/RequestEvent.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/RequestEvent.java deleted file mode 100644 index 0b7e1b8005..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/RequestEvent.java +++ /dev/null @@ -1,26 +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.core.context.event; - -/** - * Implemented by runtime events associated request - * @version $$Rev$$ $$Date$$ - */ -public interface RequestEvent { - - /** - * Returns the id of the request the event is associated with - */ - public Object getId(); - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/RequestStart.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/RequestStart.java deleted file mode 100644 index 8c07a3d607..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/RequestStart.java +++ /dev/null @@ -1,32 +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.core.context.event; - -/** - * Propagated when a request is started in the runtime - * - * @version $$Rev$$ $$Date$$ - */ -public class RequestStart extends AbstractRequestEvent { - - /** - * Creates a new event - * @param source the source of the event - * @param id the id of the request being started - */ - public RequestStart(Object source, Object id) { - super(source,id); - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/SessionBound.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/SessionBound.java deleted file mode 100644 index 5d977911be..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/SessionBound.java +++ /dev/null @@ -1,23 +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.core.context.event; - -/** - * Propagated when a generic session is associated with the current request. - * - * @version $$Rev$$ $$Date$$ - */ -public interface SessionBound extends SessionEvent { - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/SessionEnd.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/SessionEnd.java deleted file mode 100644 index 809d63bd0f..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/SessionEnd.java +++ /dev/null @@ -1,23 +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.core.context.event; - -/** - * Propagated when a session ended or expired - * - * @version $$Rev$$ $$Date$$ - */ -public interface SessionEnd extends SessionEvent{ - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/SessionEvent.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/SessionEvent.java deleted file mode 100644 index 7eaff1de24..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/SessionEvent.java +++ /dev/null @@ -1,34 +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.core.context.event; - -/** - * Implemented by runtime events associated with a session. There may be multiple session types in the runtime such as - * HTTP-based or conversational. - * - * @version $$Rev$$ $$Date$$ - */ -public interface SessionEvent extends Event { - - /** - * Returns the unique key identifying the session type the event is associated with, e.g. an HTTP-based or conversational - * session - */ - public Object getSessionTypeIdentifier(); - - /** - * Returns the session id associated with the event - */ - public Object getId(); -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/SessionStart.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/SessionStart.java deleted file mode 100644 index cfe490e2ff..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/event/SessionStart.java +++ /dev/null @@ -1,26 +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.core.context.event; - -/** - * Propagated when a session starts - * - * @version $$Rev$$ $$Date$$ - */ -public interface SessionStart extends SessionEvent{ - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/filter/TrueFilter.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/filter/TrueFilter.java deleted file mode 100644 index 35601646f2..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/filter/TrueFilter.java +++ /dev/null @@ -1,32 +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.core.context.filter; - -import org.apache.tuscany.core.context.EventFilter; -import org.apache.tuscany.core.context.event.Event; - -/** - * An event filter that always returns a true condition - * - * @version $$Rev$$ $$Date$$ - */ -public class TrueFilter implements EventFilter { - - public boolean match(Event event) { - return true; - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractCompositeContext.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractCompositeContext.java deleted file mode 100644 index c9e563302c..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractCompositeContext.java +++ /dev/null @@ -1,852 +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.core.context.impl; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.EnumMap; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; - -import org.apache.tuscany.common.TuscanyRuntimeException; -import org.apache.tuscany.core.builder.BuilderConfigException; -import org.apache.tuscany.core.builder.ContextFactory; -import org.apache.tuscany.core.config.ConfigurationException; -import org.apache.tuscany.core.context.AutowireContext; -import org.apache.tuscany.core.context.AutowireResolutionException; -import org.apache.tuscany.core.context.CompositeContext; -import org.apache.tuscany.core.context.ConfigurationContext; -import org.apache.tuscany.core.context.Context; -import org.apache.tuscany.core.context.ContextInitException; -import org.apache.tuscany.core.context.CoreRuntimeException; -import org.apache.tuscany.core.context.DuplicateNameException; -import org.apache.tuscany.core.context.EntryPointContext; -import org.apache.tuscany.core.context.EventContext; -import org.apache.tuscany.core.context.EventException; -import org.apache.tuscany.core.context.Lifecycle; -import org.apache.tuscany.core.context.MissingContextFactoryException; -import org.apache.tuscany.core.context.MissingImplementationException; -import org.apache.tuscany.core.context.MissingScopeException; -import org.apache.tuscany.core.context.ProxyConfigurationException; -import org.apache.tuscany.core.context.QualifiedName; -import org.apache.tuscany.core.context.ScopeAwareContext; -import org.apache.tuscany.core.context.ScopeContext; -import org.apache.tuscany.core.context.ScopeStrategy; -import org.apache.tuscany.core.context.TargetException; -import org.apache.tuscany.core.context.event.Event; -import org.apache.tuscany.core.context.event.RequestEnd; -import org.apache.tuscany.core.context.event.SessionBound; -import org.apache.tuscany.core.context.event.SessionEvent; -import org.apache.tuscany.core.context.scope.DefaultScopeStrategy; -import org.apache.tuscany.core.system.annotation.Autowire; -import org.apache.tuscany.core.system.annotation.ParentContext; -import org.apache.tuscany.core.system.assembly.SystemBinding; -import org.apache.tuscany.core.wire.InvocationConfiguration; -import org.apache.tuscany.core.wire.SourceWireFactory; -import org.apache.tuscany.core.wire.TargetWireFactory; -import org.apache.tuscany.core.wire.WireConfiguration; -import org.apache.tuscany.core.wire.WireFactory; -import org.apache.tuscany.core.wire.WireFactoryInitException; -import org.apache.tuscany.model.assembly.AssemblyContext; -import org.apache.tuscany.model.assembly.AssemblyObject; -import org.apache.tuscany.model.assembly.Binding; -import org.apache.tuscany.model.assembly.Component; -import org.apache.tuscany.model.assembly.Composite; -import org.apache.tuscany.model.assembly.EntryPoint; -import org.apache.tuscany.model.assembly.Extensible; -import org.apache.tuscany.model.assembly.ExternalService; -import org.apache.tuscany.model.assembly.Implementation; -import org.apache.tuscany.model.assembly.Module; -import org.apache.tuscany.model.assembly.ModuleComponent; -import org.apache.tuscany.model.assembly.Scope; -import org.apache.tuscany.model.assembly.Service; -import org.apache.tuscany.model.assembly.impl.AssemblyFactoryImpl; - -/** - * The base implementation of a composite context - * - * @version $Rev$ $Date$ - */ -@SuppressWarnings({"FieldAccessedSynchronizedAndUnsynchronized", "RawUseOfParameterizedType", "NonPrivateFieldAccessedInSynchronizedContext"}) -public abstract class AbstractCompositeContext extends AbstractContext implements AutowireContext, ScopeAwareContext, ConfigurationContext { - - public static final int DEFAULT_WAIT = 1000 * 60; - - protected AssemblyContext assemblyContext; - - protected CompositeContext parentContext; - - // The parent configuration context, if one exists - @Autowire - protected ConfigurationContext configurationContext; - - // The logical model representing the module assembly - // protected ModuleComponent moduleComponent; - protected Module module; - - protected Map<String, ContextFactory<Context>> configurations = new HashMap<String, ContextFactory<Context>>(); - - // Factory for scope contexts - protected ScopeStrategy scopeStrategy; - - // The event context for associating context events to threads - protected EventContext eventContext; - - // The scopes for this context - protected Map<Scope, ScopeContext> scopeContexts; - - protected Map<Scope, ScopeContext> immutableScopeContexts; - - // A component context name to scope context index - protected Map<String, ScopeContext> scopeIndex; - - // Blocking latch to ensure the module is initialized exactly once prior to servicing requests - protected CountDownLatch initializeLatch = new CountDownLatch(1); - - protected final Object lock = new Object(); - - // Indicates whether the module context has been initialized - protected boolean initialized; - - // a mapping of service type to component name - private final Map<Class, NameToScope> autowireInternal = new ConcurrentHashMap<Class, NameToScope>(); - private final Map<Class, NameToScope> autowireExternal = new ConcurrentHashMap<Class, NameToScope>(); - - private AutowireContext autowireContext; - - public AbstractCompositeContext() { - scopeIndex = new ConcurrentHashMap<String, ScopeContext>(); - // FIXME the factory should be injected - module = new AssemblyFactoryImpl().createModule(); - scopeStrategy = new DefaultScopeStrategy(); - } - - public AbstractCompositeContext(String name, CompositeContext parent, ScopeStrategy strategy, EventContext ctx, ConfigurationContext configCtx) { - super(name); - if (strategy == null) { - strategy = new DefaultScopeStrategy(); - } - this.scopeStrategy = strategy; - this.eventContext = ctx; - this.configurationContext = configCtx; - scopeIndex = new ConcurrentHashMap<String, ScopeContext>(); - parentContext = parent; - // FIXME the factory should be injected - module = new AssemblyFactoryImpl().createModule(); - } - - public void setAssemblyContext(AssemblyContext assemblyContext) { - this.assemblyContext = assemblyContext; - } - - private String uri; - - public String getURI() { - return uri; - } - - public void setURI(String uri) { - this.uri = uri; - } - - - public void start() { - synchronized (lock) { - try { - if (lifecycleState == STOPPED) { - throw new IllegalStateException("Context cannot be restarted - create a new one"); - } else if (lifecycleState != UNINITIALIZED) { - throw new IllegalStateException("Context not in UNINITIALIZED state"); - } - - lifecycleState = INITIALIZING; - initializeScopes(); - - Map<Scope, List<ContextFactory<Context>>> configurationsByScope = new EnumMap<Scope, List<ContextFactory<Context>>>(Scope.class); - if (configurations != null) { - for (ContextFactory<Context> contextFactory : configurations.values()) { - // FIXME scopes are defined at the interface level - Scope sourceScope = contextFactory.getScope(); - wireSource(contextFactory); - buildTarget(contextFactory); - scopeIndex.put(contextFactory.getName(), scopeContexts.get(sourceScope)); - List<ContextFactory<Context>> list = configurationsByScope.get(sourceScope); - if (list == null) { - list = new ArrayList<ContextFactory<Context>>(); - configurationsByScope.put(sourceScope, list); - } - list.add(contextFactory); - } - } - for (EntryPoint ep : module.getEntryPoints()) { - registerAutowire(ep); - } - for (Component component : module.getComponents()) { - if (component instanceof ModuleComponent) { - registerAutowire((ModuleComponent) component); - } else { - registerAutowire(component); - } - } - for (ExternalService es : module.getExternalServices()) { - registerAutowire(es); - } - for (Map.Entry<Scope, List<ContextFactory<Context>>> entries : configurationsByScope.entrySet()) - { - // register configurations with scope contexts - ScopeContext scope = scopeContexts.get(entries.getKey()); - scope.registerFactories(entries.getValue()); - } - initializeWireFactories(); - for (ScopeContext scope : scopeContexts.values()) { - // register scope contexts as a listeners for events in the composite context - addListener(scope); - scope.start(); - } - lifecycleState = RUNNING; - } catch (WireFactoryInitException e) { - lifecycleState = ERROR; - ContextInitException cie = new ContextInitException(e); - cie.addContextName(getName()); - throw cie; - } catch (CoreRuntimeException e) { - lifecycleState = ERROR; - e.addContextName(getName()); - throw e; - } finally { - initialized = true; - // release the latch and allow requests to be processed - initializeLatch.countDown(); - } - } - } - - public void stop() { - if (lifecycleState == STOPPED) { - return; - } - // need to block a start until reset is complete - initializeLatch = new CountDownLatch(1); //xcv - lifecycleState = STOPPING; - initialized = false; - if (scopeContexts != null) { - for (ScopeContext scopeContext : scopeContexts.values()) { - if (scopeContext.getLifecycleState() == Lifecycle.RUNNING) { - scopeContext.stop(); - } - } - } - scopeContexts = null; - scopeIndex.clear(); - // allow initialized to be called - initializeLatch.countDown(); - lifecycleState = STOPPED; - - } - - public void setModule(Module module) { - assert (module != null) : "Module cannot be null"; - name = module.getName(); - this.module = module; - } - - public void setEventContext(EventContext eventContext) { - this.eventContext = eventContext; - } - - public void setConfigurationContext(ConfigurationContext context) { - this.configurationContext = context; - } - - public CompositeContext getParent() { - return parentContext; - } - - @ParentContext - public void setParent(CompositeContext parent) { - parentContext = parent; - } - - public void registerModelObjects(List<? extends Extensible> models) throws ConfigurationException { - assert (models != null) : "Model object collection was null"; - for (Extensible model : models) { - registerModelObject(model); - } - } - - public void registerModelObject(Extensible model) throws ConfigurationException { - assert (model != null) : "Model object was null"; - initializeScopes(); - if (configurationContext != null) { - try { - configurationContext.build(model); - } catch (BuilderConfigException e) { - e.addContextName(getName()); - throw e; - } - } - ContextFactory<Context> configuration; - if (model instanceof Module) { - // merge new module definition with the existing one - Module oldModule = module; - Module newModule = (Module) model; - module = newModule; - for (Component component : newModule.getComponents()) { - Implementation componentImplementation = component.getImplementation(); - if (componentImplementation == null) { - ConfigurationException e = new MissingImplementationException("Component implementation not set"); - e.addContextName(component.getName()); - e.addContextName(getName()); - throw e; - } - configuration = (ContextFactory<Context>) component.getContextFactory(); - if (configuration == null) { - ConfigurationException e = new MissingContextFactoryException("Context factory not set"); - e.addContextName(component.getName()); - e.addContextName(getName()); - throw e; - } - registerConfiguration(configuration); - if (component instanceof ModuleComponent) { - registerAutowire((ModuleComponent) component); - } else { - registerAutowire(component); - } - } - for (EntryPoint ep : newModule.getEntryPoints()) { - configuration = (ContextFactory<Context>) ep.getContextFactory(); - if (configuration == null) { - ConfigurationException e = new MissingContextFactoryException("Context factory not set"); - e.setIdentifier(ep.getName()); - e.addContextName(getName()); - throw e; - } - registerConfiguration(configuration); - registerAutowire(ep); - } - for (ExternalService service : newModule.getExternalServices()) { - configuration = (ContextFactory<Context>) service.getContextFactory(); - if (configuration == null) { - ConfigurationException e = new MissingContextFactoryException("Context factory not set"); - e.setIdentifier(service.getName()); - e.addContextName(getName()); - throw e; - } - registerConfiguration(configuration); - registerAutowire(service); - } - if (lifecycleState == RUNNING) { - for (Component component : newModule.getComponents()) { - ContextFactory<Context> contextFactory = (ContextFactory<Context>) component.getContextFactory(); - wireSource(contextFactory); - buildTarget(contextFactory); - contextFactory.prepare(this); - try { - if (contextFactory.getSourceWireFactories() != null) { - for (SourceWireFactory sourceWireFactory : contextFactory.getSourceWireFactories()) - { - sourceWireFactory.initialize(); - } - } - if (contextFactory.getTargetWireFactories() != null) { - for (TargetWireFactory targetWireFactory : contextFactory.getTargetWireFactories() - .values()) { - targetWireFactory.initialize(); - } - } - } catch (WireFactoryInitException e) { - ProxyConfigurationException ce = new ProxyConfigurationException(e); - ce.addContextName(getName()); - throw ce; - } - - } - for (EntryPoint ep : newModule.getEntryPoints()) { - ContextFactory<Context> contextFactory = (ContextFactory<Context>) ep.getContextFactory(); - wireSource(contextFactory); - buildTarget(contextFactory); - contextFactory.prepare(this); - try { - if (contextFactory.getSourceWireFactories() != null) { - for (SourceWireFactory sourceWireFactory : contextFactory.getSourceWireFactories()) - { - sourceWireFactory.initialize(); - } - } - if (contextFactory.getTargetWireFactories() != null) { - for (TargetWireFactory targetWireFactory : contextFactory.getTargetWireFactories() - .values()) { - targetWireFactory.initialize(); - } - } - } catch (WireFactoryInitException e) { - ProxyConfigurationException ce = new ProxyConfigurationException(e); - ce.addContextName(getName()); - throw ce; - } - - } - for (ExternalService es : newModule.getExternalServices()) { - ContextFactory<Context> contextFactory = (ContextFactory<Context>) es.getContextFactory(); - wireSource(contextFactory); - buildTarget(contextFactory); - contextFactory.prepare(this); - try { - if (contextFactory.getSourceWireFactories() != null) { - for (SourceWireFactory sourceWireFactory : contextFactory.getSourceWireFactories()) - { - sourceWireFactory.initialize(); - } - } - if (contextFactory.getTargetWireFactories() != null) { - for (WireFactory targetWireFactory : contextFactory.getTargetWireFactories() - .values()) { - targetWireFactory.initialize(); - } - } - } catch (WireFactoryInitException e) { - ProxyConfigurationException ce = new ProxyConfigurationException(e); - ce.addContextName(getName()); - throw ce; - } - - } - - } - // merge existing module component assets - module.getComponents().addAll(oldModule.getComponents()); - module.getEntryPoints().addAll(oldModule.getEntryPoints()); - module.getExternalServices().addAll(oldModule.getExternalServices()); - } else { - if (model instanceof Component) { - Component component = (Component) model; - module.getComponents().add(component); - configuration = (ContextFactory<Context>) component.getContextFactory(); - if (configuration == null) { - ConfigurationException e = new MissingContextFactoryException("Context factory not set"); - e.setIdentifier(component.getName()); - e.addContextName(getName()); - throw e; - } - registerConfiguration(configuration); - if (component instanceof ModuleComponent) { - registerAutowire((ModuleComponent) component); - } else { - registerAutowire(component); - } - } else if (model instanceof EntryPoint) { - EntryPoint ep = (EntryPoint) model; - module.getEntryPoints().add(ep); - configuration = (ContextFactory<Context>) ep.getContextFactory(); - if (configuration == null) { - ConfigurationException e = new MissingContextFactoryException("Context factory not set"); - e.setIdentifier(ep.getName()); - e.addContextName(getName()); - throw e; - } - registerConfiguration(configuration); - registerAutowire(ep); - } else if (model instanceof ExternalService) { - ExternalService service = (ExternalService) model; - module.getExternalServices().add(service); - configuration = (ContextFactory<Context>) service.getContextFactory(); - if (configuration == null) { - ConfigurationException e = new MissingContextFactoryException("Context factory not set"); - e.setIdentifier(service.getName()); - e.addContextName(getName()); - throw e; - } - registerConfiguration(configuration); - registerAutowire(service); - } else { - BuilderConfigException e = new BuilderConfigException("Unknown model type"); - e.setIdentifier(model.getClass().getName()); - e.addContextName(getName()); - throw e; - } - } - } - - protected void registerConfiguration(ContextFactory<Context> factory) throws ConfigurationException { - factory.prepare(this); - if (lifecycleState == RUNNING) { - if (scopeIndex.get(factory.getName()) != null) { - throw new DuplicateNameException(factory.getName()); - } - try { - ScopeContext scope = scopeContexts.get(factory.getScope()); - if (scope == null) { - ConfigurationException e = new MissingScopeException("Component has an unknown scope"); - e.addContextName(factory.getName()); - e.addContextName(getName()); - throw e; - } - scope.registerFactory(factory); - scopeIndex.put(factory.getName(), scope); - } catch (TuscanyRuntimeException e) { - e.addContextName(getName()); - throw e; - } - configurations.put(factory.getName(), factory); // xcv - } else { - if (configurations.get(factory.getName()) != null) { - throw new DuplicateNameException(factory.getName()); - } - configurations.put(factory.getName(), factory); - } - - } - - public void fireEvent(int eventType, Object message) throws EventException { - throw new UnsupportedOperationException(); - } - - public void publish(Event event) { - checkInit(); - if (event instanceof SessionBound) { - SessionEvent sessionEvent = ((SessionBound) event); - // update context - eventContext.setIdentifier(sessionEvent.getSessionTypeIdentifier(), sessionEvent.getId()); - } else if (event instanceof RequestEnd) { - // be very careful with pooled threads, ensuring threadlocals are cleaned up - eventContext.clearIdentifiers(); - } - super.publish(event); - } - - public Context getContext(String componentName) { - checkInit(); - assert (componentName != null) : "Name was null"; - ScopeContext scope = scopeIndex.get(componentName); - if (scope == null) { - return null; - } - return scope.getContext(componentName); - - } - - public Object getInstance(QualifiedName qName) throws TargetException { - assert (qName != null) : "Name was null "; - // use the port name to get the context since entry points ports - ScopeContext scope = scopeIndex.get(qName.getPortName()); - if (scope == null) { - return null; - } - Context ctx = scope.getContext(qName.getPortName()); - if (!(ctx instanceof EntryPointContext)) { - TargetException e = new TargetException("Target not an entry point"); - e.setIdentifier(qName.getQualifiedName()); - e.addContextName(name); - throw e; - } - return ctx.getInstance(null); - } - - public Map<Scope, ScopeContext> getScopeContexts() { - initializeScopes(); - return immutableScopeContexts; - } - - /** - * Blocks until the module context has been initialized - */ - protected void checkInit() { - if (lifecycleState == STOPPED) { - throw new IllegalStateException("Context cannot be restarted - create a new one"); - } - if (!initialized) { - try { - /* block until the module has initialized */ - boolean success = initializeLatch.await(DEFAULT_WAIT, TimeUnit.MILLISECONDS); - if (!success) { - throw new ContextInitException("Timeout waiting for module context to initialize"); - } - } catch (InterruptedException e) { // should not happen - } - } - - } - - protected void initializeScopes() { - if (scopeContexts == null) { - scopeContexts = scopeStrategy.getScopeContexts(eventContext); - immutableScopeContexts = Collections.unmodifiableMap(scopeContexts); - } - } - - /** - * Iterates through references and delegates to the configuration context to wire them to their targets - */ - protected void wireSource(ContextFactory<Context> source) { - Scope sourceScope = source.getScope(); - if (source.getSourceWireFactories() != null) { - for (SourceWireFactory<?> sourceFactory : source.getSourceWireFactories()) { - WireConfiguration wireConfiguration = sourceFactory.getConfiguration(); - QualifiedName targetName = wireConfiguration.getTargetName(); - ContextFactory<?> target = configurations.get(targetName.getPartName()); - if (target == null) { - ContextInitException e = new ContextInitException("Target not found"); - e.setIdentifier(targetName.getPartName()); - e.addContextName(source.getName()); - e.addContextName(name); - throw e; - } - // get the proxy chain for the target - TargetWireFactory targetFactory = target.getTargetWireFactory(targetName.getPortName()); - if (targetFactory == null) { - ContextInitException e = new ContextInitException("No proxy factory found for service"); - e.setIdentifier(wireConfiguration.getTargetName().getPortName()); - e.addContextName(target.getName()); - e.addContextName(source.getName()); - e.addContextName(name); - throw e; - } - try { - boolean downScope = scopeStrategy.downScopeReference(sourceScope, target.getScope()); - configurationContext.connect(sourceFactory, targetFactory, target.getClass(), downScope, scopeContexts - .get(target.getScope())); - } catch (BuilderConfigException e) { - e.addContextName(target.getName()); - e.addContextName(source.getName()); - e.addContextName(name); - throw e; - } - - } - } - // wire invokers when the proxy only contains the target chain - if (source.getTargetWireFactories() != null) { - for (TargetWireFactory targetFactory : source.getTargetWireFactories().values()) { - try { - configurationContext.completeTargetChain(targetFactory, source.getClass(), scopeContexts.get(sourceScope)); - } catch (BuilderConfigException e) { - e.addContextName(source.getName()); - e.addContextName(name); - throw e; - } - } - } - } - - /** - * Signals to target side of reference configurations to initialize - */ - protected void buildTarget(ContextFactory<?> target) { - Map<String, TargetWireFactory> targetProxyFactories = target.getTargetWireFactories(); - if (targetProxyFactories != null) { - for (TargetWireFactory<?> targetFactory : targetProxyFactories.values()) { - for (InvocationConfiguration iConfig : targetFactory - .getConfiguration().getInvocationConfigurations().values()) { - iConfig.build(); - } - } - } - } - - protected void initializeWireFactories() throws WireFactoryInitException { - for (ContextFactory<?> config : configurations.values()) { - List<SourceWireFactory> sourceProxyFactories = config.getSourceWireFactories(); - if (sourceProxyFactories != null) { - for (WireFactory<?> sourceWireFactory : sourceProxyFactories) { - sourceWireFactory.initialize(); - } - } - if (sourceProxyFactories != null) { - Map<String, TargetWireFactory> targetWireFactories = config.getTargetWireFactories(); - for (TargetWireFactory<?> targetWireFactory : targetWireFactories.values()) { - targetWireFactory.initialize(); - } - } - } - } - - public Composite getComposite() { - return module; - } - - @Autowire - public void setAutowireContext(AutowireContext context) { - autowireContext = context; - } - - public <T> T resolveInstance(Class<T> instanceInterface) throws AutowireResolutionException { - if (ConfigurationContext.class.equals(instanceInterface)) { - return instanceInterface.cast(this); - } else if (AutowireContext.class.equals(instanceInterface)) { - return instanceInterface.cast(this); - } else if (AssemblyContext.class.equals(instanceInterface)) { - return instanceInterface.cast(assemblyContext); - } - - NameToScope nts = autowireInternal.get(instanceInterface); - if (nts != null) { - try { - return instanceInterface.cast(nts.getScopeContext().getInstance(nts.getName())); - } catch (TargetException e) { - AutowireResolutionException ae = new AutowireResolutionException("Autowire instance not found", e); - ae.addContextName(getName()); - throw ae; - } - } else if (autowireContext != null) { - try { - // resolve to parent - return autowireContext.resolveInstance(instanceInterface); - } catch (AutowireResolutionException e) { - e.addContextName(getName()); - throw e; - } - } else { - return null; - } - } - - public <T> T resolveExternalInstance(Class<T> instanceInterface) throws AutowireResolutionException { - NameToScope nts = autowireExternal.get(instanceInterface); - if (nts != null) { - try { - return instanceInterface.cast(nts.getScopeContext().getInstance(nts.getName())); - } catch (TargetException e) { - AutowireResolutionException ae = new AutowireResolutionException("Autowire instance not found", e); - ae.addContextName(getName()); - throw ae; - } - } else { - return null; - } - } - - private void registerAutowire(ExternalService service) { - } - - private void registerAutowire(ModuleComponent component) { - for (EntryPoint ep : component.getImplementation().getEntryPoints()) { - for (Binding binding : ep.getBindings()) { - if (binding instanceof SystemBinding) { - Class interfaze = ep.getConfiguredService().getPort().getServiceContract().getInterface(); - ScopeContext scope = scopeContexts.get(Scope.AGGREGATE); - String qname = component.getName() + QualifiedName.NAME_SEPARATOR + ep.getName(); - registerAutowireInternal(interfaze, qname, scope); - } - } - } - } - - private void registerAutowire(Component component) { - for (Service service : component.getImplementation().getComponentType().getServices()) { - Class interfaze = service.getServiceContract().getInterface(); - ScopeContext scopeCtx = scopeContexts.get(service.getServiceContract().getScope()); - registerAutowireInternal(interfaze, component.getName(), scopeCtx); - } - } - - protected void registerAutowireInternal(Class<?> interfaze, String name, ScopeContext scopeContext) { - assert interfaze != null; - if (autowireInternal.containsKey(interfaze)) { - return; - } - QualifiedName qname = new QualifiedName(name); - NameToScope nts = new NameToScope(qname, scopeContext); - autowireInternal.put(interfaze, nts); - } - - private void registerAutowire(EntryPoint ep) { - for (Binding binding : ep.getBindings()) { - if (binding instanceof SystemBinding) { - Class interfaze = ep.getConfiguredService().getPort().getServiceContract().getInterface(); - ScopeContext scope = scopeContexts.get(((ContextFactory) ep.getContextFactory()).getScope()); - registerAutowireExternal(interfaze, ep.getName(), scope); - } - } - } - - protected void registerAutowireExternal(Class<?> interfaze, String name, ScopeContext scopeContext) { - assert interfaze != null; - if (autowireExternal.containsKey(interfaze)) { - return; - } - QualifiedName qname = new QualifiedName(name); - NameToScope nts = new NameToScope(qname, scopeContext); - autowireExternal.put(interfaze, nts); - } - - protected static class NameToScope { - - private final QualifiedName qName; - - private final ScopeContext scope; - - public NameToScope(QualifiedName name, ScopeContext scope) { - this.qName = name; - this.scope = scope; - } - - public QualifiedName getName() { - return qName; - } - - public ScopeContext getScopeContext() { - return scope; - } - } - - - public void build(AssemblyObject model) throws BuilderConfigException { - if (configurationContext != null) { - try { - configurationContext.build(model); - } catch (BuilderConfigException e) { - e.addContextName(getName()); - throw e; - } - } - } - - public void connect(SourceWireFactory sourceFactory, TargetWireFactory targetFactory, Class targetType, boolean downScope, - ScopeContext targetScopeContext) throws BuilderConfigException { - if (configurationContext != null) { - try { - configurationContext.connect(sourceFactory, targetFactory, targetType, downScope, targetScopeContext); - } catch (BuilderConfigException e) { - e.addContextName(getName()); - throw e; - } - } - } - - public void completeTargetChain(TargetWireFactory targetFactory, Class targetType, ScopeContext targetScopeContext) - throws BuilderConfigException { - if (configurationContext != null) { - try { - configurationContext.completeTargetChain(targetFactory, targetType, targetScopeContext); - } catch (BuilderConfigException e) { - e.addContextName(getName()); - throw e; - } - } - } - - - public void removeContext(String name){ - configurations.remove(name); - ScopeContext ctx = scopeIndex.remove(name); - if (ctx != null){ - ctx.removeContext(name); - } - - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractContext.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractContext.java deleted file mode 100644 index 680267d53e..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractContext.java +++ /dev/null @@ -1,45 +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.core.context.impl; - -import org.apache.tuscany.core.context.Context; -import org.apache.tuscany.core.context.RuntimeEventListener; -import org.apache.tuscany.core.context.EventFilter; -import org.apache.tuscany.core.context.event.Event; -import org.apache.tuscany.core.context.filter.TrueFilter; - -import java.util.List; -import java.util.Map; -import java.util.concurrent.CopyOnWriteArrayList; -import java.util.concurrent.ConcurrentHashMap; - -/** - * Functionality common to all <code>Context<code> implementations - * - * @version $Rev$ $Date$ - */ -public abstract class AbstractContext extends AbstractLifecycle implements Context { - - public AbstractContext() { - } - - public AbstractContext(String name) { - super(name); - } - - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractLifecycle.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractLifecycle.java deleted file mode 100644 index ddeebe361f..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractLifecycle.java +++ /dev/null @@ -1,129 +0,0 @@ -/** - * - * Copyright 2006 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.core.context.impl; - -import java.util.List; -import java.util.Map; -import java.util.concurrent.CopyOnWriteArrayList; -import java.util.concurrent.ConcurrentHashMap; - -import org.apache.tuscany.core.context.RuntimeEventListener; -import org.apache.tuscany.core.context.EventFilter; -import org.apache.tuscany.core.context.Lifecycle; -import org.apache.tuscany.core.context.filter.TrueFilter; -import org.apache.tuscany.core.context.event.Event; - -/** - * @version $Rev$ $Date$ - */ -public class AbstractLifecycle { - private static final EventFilter TRUE_FILTER = new TrueFilter(); - protected String name; - protected int lifecycleState = Lifecycle.UNINITIALIZED; - // Listeners for context events - private Map<EventFilter, List<RuntimeEventListener>> listeners; - - public AbstractLifecycle(String name) { - this.name = name; - } - - public AbstractLifecycle() { - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int getLifecycleState() { - return lifecycleState; - } - - public void addListener(RuntimeEventListener listener) { - addListener(TRUE_FILTER, listener); - } - - public void removeListener(RuntimeEventListener listener) { - assert (listener != null) : "Listener cannot be null"; - synchronized(getListeners()){ - for (List<RuntimeEventListener> currentList :getListeners().values() ) { - for(RuntimeEventListener current : currentList){ - if (current == listener){ - currentList.remove(current); - return; - } - } - } - } - } - - public void addListener(EventFilter filter, RuntimeEventListener listener){ - assert (listener != null) : "Listener cannot be null"; - synchronized (getListeners()){ - List<RuntimeEventListener> list = getListeners().get(filter); - if (list == null){ - list = new CopyOnWriteArrayList<RuntimeEventListener>(); - listeners.put(filter,list); - } - list.add(listener); - } - } - - public void publish(Event event){ - assert(event != null): "Event object was null"; - for(Map.Entry<EventFilter,List<RuntimeEventListener>> entry :getListeners().entrySet()){ - if(entry.getKey().match(event)){ - for(RuntimeEventListener listener : entry.getValue()){ - listener.onEvent(event); - } - } - } - } - - protected Map<EventFilter, List<RuntimeEventListener>> getListeners(){ - if (listeners == null) { - listeners = new ConcurrentHashMap<EventFilter, List<RuntimeEventListener>>(); - } - return listeners; - } - - public String toString() { - switch (lifecycleState) { - case (Lifecycle.CONFIG_ERROR): - return "Context [" + name + "] in state [CONFIG_ERROR]"; - case (Lifecycle.ERROR): - return "Context [" + name + "] in state [ERROR]"; - case (Lifecycle.INITIALIZING): - return "Context [" + name + "] in state [INITIALIZING]"; - case (Lifecycle.INITIALIZED): - return "Context [" + name + "] in state [INITIALIZED]"; - case (Lifecycle.RUNNING): - return "Context [" + name + "] in state [RUNNING]"; - case (Lifecycle.STOPPING): - return "Context [" + name + "] in state [STOPPING]"; - case (Lifecycle.STOPPED): - return "Context [" + name + "] in state [STOPPED]"; - case (Lifecycle.UNINITIALIZED): - return "Context [" + name + "] in state [UNINITIALIZED]"; - default: - return "Context [" + name + "] in state [UNKNOWN]"; - } - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/impl/CompositeContextImpl.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/impl/CompositeContextImpl.java deleted file mode 100644 index 4a1e115b42..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/impl/CompositeContextImpl.java +++ /dev/null @@ -1,117 +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.core.context.impl; - -import org.osoa.sca.ModuleContext; -import org.osoa.sca.RequestContext; -import org.osoa.sca.ServiceReference; -import org.osoa.sca.ServiceUnavailableException; - -import org.apache.tuscany.core.context.AutowireContext; -import org.apache.tuscany.core.context.CompositeContext; -import org.apache.tuscany.core.context.ConfigurationContext; -import org.apache.tuscany.core.context.Context; -import org.apache.tuscany.core.context.EventContext; -import org.apache.tuscany.core.context.QualifiedName; -import org.apache.tuscany.core.context.ScopeContext; -import org.apache.tuscany.core.context.ScopeStrategy; -import org.apache.tuscany.core.context.ServiceNotFoundException; -import org.apache.tuscany.core.context.TargetException; -import org.apache.tuscany.core.system.annotation.Autowire; - -/** - * The standard implementation of an composite context. Autowiring is performed by delegating to the parent context. - * - * @version $Rev$ $Date$ - */ -public class CompositeContextImpl extends AbstractCompositeContext implements ModuleContext, org.osoa.sca.CompositeContext { - - @Autowire - public void setScopeStrategy(ScopeStrategy scopeStrategy) { - if (scopeStrategy != null) { - this.scopeStrategy = scopeStrategy; - } - } - - public CompositeContextImpl() { - super(); - eventContext = new EventContextImpl(); - } - - public CompositeContextImpl(String name, CompositeContext parent, ScopeStrategy strategy, EventContext ctx, - ConfigurationContext configCtx) { - super(name, parent, strategy, ctx, configCtx); - } - - public CompositeContextImpl(String name, CompositeContext parent, AutowireContext autowireContext, ScopeStrategy strategy, - EventContext ctx, ConfigurationContext configCtx) { - super(name, parent, strategy, ctx, configCtx); - setAutowireContext(autowireContext); - } - - // ---------------------------------- - // ModuleContext methods - // ---------------------------------- - - public Object locateService(String qualifiedName) throws ServiceUnavailableException { - checkInit(); - QualifiedName qName = new QualifiedName(qualifiedName); - ScopeContext scope = scopeIndex.get(qName.getPartName()); - if (scope == null) { - throw new ServiceNotFoundException(qualifiedName); - } - Context ctx = scope.getContext(qName.getPartName()); - try { - Object o = ctx.getInstance(qName); - if (o == null) { - throw new ServiceNotFoundException(qualifiedName); - } - return o; - } catch (TargetException e) { - e.addContextName(getName()); - throw new ServiceNotFoundException(e); - } - } - - public <T> T locateService(Class<T> serviceInterface, String serviceName) { - return (T)locateService(serviceName); - } - - 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(); - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/impl/EntryPointContextImpl.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/impl/EntryPointContextImpl.java deleted file mode 100644 index d1ad7a5548..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/impl/EntryPointContextImpl.java +++ /dev/null @@ -1,90 +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.core.context.impl; - -import org.apache.tuscany.core.context.QualifiedName; -import org.apache.tuscany.core.context.TargetException; -import org.apache.tuscany.core.context.EntryPointContext; -import org.apache.tuscany.core.context.ContextInitException; -import org.apache.tuscany.core.context.CoreRuntimeException; -import org.apache.tuscany.core.wire.jdk.JDKInvocationHandler; -import org.apache.tuscany.core.wire.ProxyCreationException; -import org.apache.tuscany.core.wire.SourceWireFactory; -import org.apache.tuscany.core.message.MessageFactory; - -import java.lang.reflect.InvocationHandler; - -/** - * The default implementation of an entry point context - * - * @version $Rev$ $Date$ - */ -public class EntryPointContextImpl extends AbstractContext implements EntryPointContext { - - private SourceWireFactory<?> sourceWireFactory; - - - private InvocationHandler invocationHandler; - - // a proxy implementing the service exposed by the entry point backed by the invocation handler - private Object proxy; - - /** - * Creates a new entry point - * - * @param name the entry point name - * @param sourceWireFactory the proxy factory containing the invocation chains for the entry point - * @param messageFactory a factory for generating invocation messages - * @throws ContextInitException if an error occurs creating the entry point - */ - public EntryPointContextImpl(String name, SourceWireFactory sourceWireFactory, MessageFactory messageFactory) - throws ContextInitException { - super(name); - assert (sourceWireFactory != null) : "Proxy factory was null"; - assert (messageFactory != null) : "Message factory was null"; - this.sourceWireFactory = sourceWireFactory; - invocationHandler = new JDKInvocationHandler(messageFactory, sourceWireFactory.getConfiguration() - .getInvocationConfigurations()); - } - - public Object getInstance(QualifiedName qName) throws TargetException { - if (proxy == null) { - try { - proxy = sourceWireFactory.createProxy(); - } catch (ProxyCreationException e) { - TargetException te = new TargetException(e); - te.addContextName(getName()); - throw te; - } - } - return proxy; - } - - public void start() throws ContextInitException { - lifecycleState = RUNNING; - } - - public void stop() throws CoreRuntimeException { - lifecycleState = STOPPED; - } - - public Object getHandler() throws TargetException { - return invocationHandler; - } - - public Class getServiceInterface() { - return sourceWireFactory.getBusinessInterface(); - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/impl/EventContextImpl.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/impl/EventContextImpl.java deleted file mode 100644 index 6888e66f20..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/impl/EventContextImpl.java +++ /dev/null @@ -1,81 +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.core.context.impl; - -import org.apache.tuscany.core.context.EventContext; -import org.apache.tuscany.core.context.ScopeIdentifier; - -import java.util.HashMap; -import java.util.Map; - -/** - * An implementation of an {@link org.apache.tuscany.core.context.EventContext} that handles event-to-thread associations using an - * <code>InheritableThreadLocal</code> - * - * @version $Rev$ $Date$ - */ -public class EventContextImpl implements EventContext { - - // @TODO design a proper propagation strategy for creating new threads - /* - * a map ( associated with the current thread) of scope identifiers keyed on the event context id type. the scope identifier - * may be a {@link ScopeIdentifier} or an opaque id - */ - private ThreadLocal<Map> eventContext = new InheritableThreadLocal<Map>(); - - public Object getIdentifier(Object type) { - Map map = eventContext.get(); - if (map == null) { - return null; - } - Object currentId = map.get(type); - if (currentId instanceof ScopeIdentifier) { - currentId = ((ScopeIdentifier) currentId).getIdentifier(); - // once we have accessed the id, replace the lazy wrapper - map.put(type, currentId); - } - return currentId; - } - - public void setIdentifier(Object type, Object identifier) { - Map map = eventContext.get(); - if (map == null) { - map = new HashMap(); - eventContext.set(map); - } - map.put(type, identifier); - } - - public void clearIdentifier(Object type) { - if (type == null) { - return; - } - Map map = eventContext.get(); - if (map != null) { - map.remove(type); - } - } - - public void clearIdentifiers() { - eventContext.remove(); - } - - public EventContextImpl() { - super(); - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/impl/ExternalServiceContextImpl.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/impl/ExternalServiceContextImpl.java deleted file mode 100644 index 0ab44fa8fc..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/impl/ExternalServiceContextImpl.java +++ /dev/null @@ -1,75 +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.core.context.impl; - -import org.apache.tuscany.core.builder.ObjectFactory; -import org.apache.tuscany.core.context.QualifiedName; -import org.apache.tuscany.core.context.TargetException; -import org.apache.tuscany.core.context.CoreRuntimeException; -import org.apache.tuscany.core.context.ExternalServiceContext; -import org.apache.tuscany.core.wire.ProxyCreationException; -import org.apache.tuscany.core.wire.TargetWireFactory; - -/** - * The default implementation of an external service context - * - * @version $Rev$ $Date$ - */ -public class ExternalServiceContextImpl extends AbstractContext implements ExternalServiceContext { - - private TargetWireFactory<?> targetWireFactory; - - private ObjectFactory targetInstanceFactory; - - /** - * Creates an external service context - * - * @param name the name of the external service - * @param targetWireFactory the factory which creates proxies implementing the configured service interface for the - * external service. There is always only one proxy factory as an external service is configured with one - * service - * @param targetInstanceFactory the object factory that creates an artifact capabile of communicating over the - * binding transport configured on the external service. The object factory may implement a caching strategy. - */ - public ExternalServiceContextImpl(String name, TargetWireFactory targetWireFactory, ObjectFactory targetInstanceFactory) { - super(name); - assert (targetInstanceFactory != null) : "Target instance factory was null"; - this.targetWireFactory = targetWireFactory; - this.targetInstanceFactory = targetInstanceFactory; - } - - public void start() throws CoreRuntimeException { - lifecycleState = RUNNING; - } - - public void stop() throws CoreRuntimeException { - lifecycleState = STOPPED; - } - - - public Object getInstance(QualifiedName qName) throws TargetException { - try { - return targetWireFactory.createProxy(); - // TODO do we cache the proxy, (assumes stateful capabilities will be provided in an interceptor) - } catch (ProxyCreationException e) { - TargetException te = new TargetException(e); - te.addContextName(getName()); - throw te; - } - } - - public Object getHandler() throws TargetException { - return targetInstanceFactory.getInstance(); - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/scope/AbstractScopeContext.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/scope/AbstractScopeContext.java deleted file mode 100644 index 7eed472101..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/scope/AbstractScopeContext.java +++ /dev/null @@ -1,74 +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.core.context.scope; - -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import org.apache.tuscany.core.builder.ContextFactory; -import org.apache.tuscany.core.context.Context; -import org.apache.tuscany.core.context.EventContext; -import org.apache.tuscany.core.context.QualifiedName; -import org.apache.tuscany.core.context.ScopeContext; -import org.apache.tuscany.core.context.TargetException; -import org.apache.tuscany.core.context.impl.AbstractLifecycle; - -/** - * Implements functionality common to scope contexts. - * - * @version $Rev$ $Date$ - */ -public abstract class AbstractScopeContext extends AbstractLifecycle implements ScopeContext { - - // The collection of runtime configurations for the scope - protected Map<String, ContextFactory<Context>> contextFactories = new ConcurrentHashMap<String, ContextFactory<Context>>(); - - // The event context the scope container is associated with - protected EventContext eventContext; - - public AbstractScopeContext(EventContext eventContext) { - assert (eventContext != null) : "Event context was null"; - this.eventContext = eventContext; - } - - public void registerFactories(List<ContextFactory<Context>> configurations) { - for (ContextFactory<Context> configuration : configurations) { - contextFactories.put(configuration.getName(), configuration); - } - } - - public Object getInstance(QualifiedName qName) throws TargetException { - Context context = getContext(qName.getPartName()); - if (context == null) { - TargetException e = new TargetException("Target not found"); - e.setIdentifier(qName.getQualifiedName()); - throw e; - } - return context.getInstance(qName); - } - - protected void checkInit() { - if (getLifecycleState() != RUNNING) { - throw new IllegalStateException("Scope not running [" + getLifecycleState() + "]"); - } - } - - protected EventContext getEventContext() { - return eventContext; - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/scope/AbstractScopeStrategy.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/scope/AbstractScopeStrategy.java deleted file mode 100644 index f89d09196d..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/scope/AbstractScopeStrategy.java +++ /dev/null @@ -1,67 +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.core.context.scope; - -import org.apache.tuscany.core.context.ScopeStrategy; -import org.apache.tuscany.model.assembly.Scope; - -/** - * Implements basic scope strategy functionality - * - * @version $Rev$ $Date$ - */ -public abstract class AbstractScopeStrategy implements ScopeStrategy { - - public AbstractScopeStrategy() { - } - - /** - * Determines legal scope references according to standard SCA scope rules - * - * @param pReferrer the scope of the component making the reference - * @param pReferee the scope of the component being referred to - */ - public boolean downScopeReference(Scope pReferrer, Scope pReferee) { - if (pReferrer == Scope.UNDEFINED || pReferee == Scope.UNDEFINED) { - return false; - } - if (pReferee == pReferrer){ - return false; - }else if(pReferrer == Scope.INSTANCE){ - return false; - }else if(pReferee == Scope.INSTANCE){ - return true; - }else if (pReferrer == Scope.REQUEST && pReferee == Scope.SESSION){ - return false; - }else if (pReferrer == Scope.REQUEST && pReferee == Scope.MODULE){ - return false; -// }else if (pReferrer == Scope.SESSION && pReferee == Scope.REQUEST){ -// return true; - }else if (pReferrer == Scope.SESSION && pReferee == Scope.MODULE){ - return false; -// }else if (pReferrer == Scope.MODULE){ -// return true; - }else{ - return true; - } - //FIXME Jim this does not work with enumerations, what does it mean to have a scope <0? -// } else if ((pReferrer < 0) || (pReferee < 0)) { -// return false; -// } -// -// return (pReferrer > pReferee); -// return pReferrer != pReferee; - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/scope/CompositeScopeContext.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/scope/CompositeScopeContext.java deleted file mode 100644 index 7468ff9dd6..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/scope/CompositeScopeContext.java +++ /dev/null @@ -1,156 +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.core.context.scope; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import org.apache.tuscany.core.builder.ContextFactory; -import org.apache.tuscany.core.context.CompositeContext; -import org.apache.tuscany.core.context.Context; -import org.apache.tuscany.core.context.EventContext; -import org.apache.tuscany.core.context.QualifiedName; -import org.apache.tuscany.core.context.ScopeContext; -import org.apache.tuscany.core.context.ScopeInitializationException; -import org.apache.tuscany.core.context.ScopeRuntimeException; -import org.apache.tuscany.core.context.TargetException; -import org.apache.tuscany.core.context.event.Event; -import org.apache.tuscany.core.context.event.ModuleStart; -import org.apache.tuscany.core.context.event.ModuleStop; -import org.apache.tuscany.core.context.impl.AbstractLifecycle; - -/** - * Manages the lifecycle of composite component contexts, i.e. contexts which contain child contexts - * - * @see org.apache.tuscany.core.context.CompositeContext - * @version $Rev$ $Date$ - */ -public class CompositeScopeContext extends AbstractLifecycle implements ScopeContext { - - private List<ContextFactory<Context>> configs = new ArrayList<ContextFactory<Context>>(); - - // Composite component contexts in this scope keyed by name - private Map<String, CompositeContext> contexts = new ConcurrentHashMap<String, CompositeContext>(); - - // indicates if a module start event has been previously propagated so child contexts added after can be notified - private boolean moduleScopeStarted; - - public CompositeScopeContext(EventContext eventContext) { - assert (eventContext != null) : "Event context was null"; - setName("Composite Scope"); - } - - public void start() throws ScopeInitializationException { - for (ContextFactory<Context> configuration : configs) { - Context context = configuration.createContext(); - if (!(context instanceof CompositeContext)) { - ScopeInitializationException e = new ScopeInitializationException("Context not an composite type"); - e.addContextName(context.getName()); - throw e; - } - CompositeContext compositeCtx = (CompositeContext) context; - compositeCtx.start(); - contexts.put(compositeCtx.getName(), compositeCtx); - } - lifecycleState = RUNNING; - } - - public void stop() throws ScopeRuntimeException { - for (CompositeContext context : contexts.values()) { - context.stop(); - } - } - - public void registerFactories(List<ContextFactory<Context>> configurations) { - this.configs = configurations; - } - - public void registerFactory(ContextFactory<Context> configuration) { - assert (configuration != null) : "Configuration was null"; - configs.add(configuration); - if (getLifecycleState() == RUNNING) { - Context context = configuration.createContext(); - if (!(context instanceof CompositeContext)) { - ScopeInitializationException e = new ScopeInitializationException("Context not an composite type"); - e.setIdentifier(context.getName()); - throw e; - } - CompositeContext compositeCtx = (CompositeContext) context; - compositeCtx.start(); - if (moduleScopeStarted) { - compositeCtx.publish(new ModuleStart(this)); - } - contexts.put(compositeCtx.getName(), compositeCtx); - } - } - - public boolean isCacheable() { - return false; - } - - public Object getInstance(QualifiedName qName) throws TargetException { - Context context = getContext(qName.getPartName()); - if (context == null) { - TargetException e = new TargetException("Component not found"); - e.setIdentifier(qName.getQualifiedName()); - throw e; - } - return context.getInstance(qName); - } - - public Context getContext(String ctxName) { - checkInit(); - return contexts.get(ctxName); - } - - public Context getContextByKey(String ctxName, Object key) { - return getContext(ctxName); - } - - public void removeContext(String ctxName) throws ScopeRuntimeException { - Context context = contexts.remove(ctxName); - if (context != null) { - context.stop(); - } - } - - public void removeContextByKey(String ctxName, Object key) throws ScopeRuntimeException { - throw new UnsupportedOperationException(); - } - - public void onEvent(Event event){ - if (event instanceof ModuleStart) { - // track module starting so that composite contexts registered after the event are notified properly - moduleScopeStarted = true; - } else if (event instanceof ModuleStop) { - moduleScopeStarted = false; - publish(event); - } - // propagate events to child contexts - for (CompositeContext context : contexts.values()) { - context.publish(event); - } - } - - private void checkInit() { - if (getLifecycleState()!= RUNNING) { - throw new IllegalStateException("Scope not running [" + getLifecycleState() + "]"); - } - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/scope/DefaultScopeStrategy.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/scope/DefaultScopeStrategy.java deleted file mode 100644 index 1f386fd35f..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/scope/DefaultScopeStrategy.java +++ /dev/null @@ -1,52 +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.core.context.scope; - -import org.apache.tuscany.core.context.EventContext; -import org.apache.tuscany.core.context.ScopeContext; -import org.apache.tuscany.model.assembly.Scope; - -import java.util.HashMap; -import java.util.Map; - -/** - * Implements a {@link org.apache.tuscany.core.context.ScopeStrategy} for the default module scopes: stateless, request, session, - * and module. - * - * @version $Rev$ $Date$ - */ -public class DefaultScopeStrategy extends AbstractScopeStrategy { - - public DefaultScopeStrategy() { - } - - public Map<Scope,ScopeContext> getScopeContexts(EventContext eventContext) { - ScopeContext moduleScope = new ModuleScopeContext(eventContext); - ScopeContext sessionScope = new SessionScopeContext(eventContext); - ScopeContext requestScope = new RequestScopeContext(eventContext); - ScopeContext statelessScope = new StatelessScopeContext(eventContext); - ScopeContext aggregrateScope = new CompositeScopeContext(eventContext); - Map<Scope,ScopeContext> scopes = new HashMap<Scope,ScopeContext>(); - scopes.put(Scope.MODULE,moduleScope); - scopes.put(Scope.SESSION,sessionScope); - scopes.put(Scope.REQUEST,requestScope); - scopes.put(Scope.INSTANCE,statelessScope); - scopes.put(Scope.AGGREGATE,aggregrateScope); - return scopes; - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeContext.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeContext.java deleted file mode 100644 index dbb342bb5a..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeContext.java +++ /dev/null @@ -1,194 +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.core.context.scope; - -import org.apache.tuscany.core.builder.ContextFactory; -import org.apache.tuscany.core.context.AtomicContext; -import org.apache.tuscany.core.context.Context; -import org.apache.tuscany.core.context.CoreRuntimeException; -import org.apache.tuscany.core.context.EventContext; -import org.apache.tuscany.core.context.TargetException; -import org.apache.tuscany.core.context.Lifecycle; -import org.apache.tuscany.core.context.event.InstanceCreated; -import org.apache.tuscany.core.context.event.Event; -import org.apache.tuscany.core.context.event.ModuleStart; -import org.apache.tuscany.core.context.event.ModuleStop; - -import java.util.Map; -import java.util.List; -import java.util.ArrayList; -import java.util.ListIterator; -import java.util.concurrent.ConcurrentHashMap; - -/** - * Manages contexts whose implementations are module scoped. This scope contexts eagerly starts contexts when - * a {@link ModuleStart} event is received. If a contained context has an implementation marked to eagerly initialized, - * the an instance will be created at that time as well. Contained contexts are shutdown when a {@link ModuleStop} - * event is received in reverse order to which their implementation instances were created. - * - * @version $Rev$ $Date$ - */ -public class ModuleScopeContext extends AbstractScopeContext { - - // Component contexts in this scope keyed by name - private Map<String, Context> contexts; - - // the queue of contexts to destroy, in the order that their instances were created - private List<Context> destroyQueue; - - public ModuleScopeContext(EventContext eventContext) { - super(eventContext); - setName("Module Scope"); - } - - public void onEvent(Event event) { - if (event instanceof ModuleStart) { - lifecycleState = RUNNING; - initComponentContexts(); - } else if (event instanceof ModuleStop) { - shutdownContexts(); - } else if (event instanceof InstanceCreated) { - checkInit(); - if (event.getSource() instanceof Context) { - Context context = (Context) event.getSource(); - // Queue the context to have its implementation instance released if destroyable - destroyQueue.add(context); - } - } - } - - public synchronized void start() { - if (lifecycleState != UNINITIALIZED) { - throw new IllegalStateException("Scope must be in UNINITIALIZED state [" + lifecycleState + "]"); - } - } - - public synchronized void stop() { - if (lifecycleState != RUNNING) { - throw new IllegalStateException("Scope in wrong state [" + lifecycleState + "]"); - } - contexts = null; - destroyQueue = null; - lifecycleState = STOPPED; - } - - public boolean isCacheable() { - return true; - } - - public void registerFactory(ContextFactory<Context> configuration) { - contextFactories.put(configuration.getName(), configuration); - if (lifecycleState == RUNNING) { - contexts.put(configuration.getName(), configuration.createContext()); - } - } - - public Context getContext(String ctxName) { - checkInit(); - initComponentContexts(); - return contexts.get(ctxName); - } - - public Context getContextByKey(String ctxName, Object key) { - checkInit(); - initComponentContexts(); - return contexts.get(ctxName); - } - - public void removeContext(String ctxName) { - checkInit(); - if (contexts == null){ - return; - } - Context context = contexts.remove(ctxName); - if (context != null) { - destroyQueue.remove(context); - } - } - - public void removeContextByKey(String ctxName, Object key){ - removeContext(ctxName); - } - - /** - * Notifies contexts of a shutdown in reverse order to which they were started - */ - private synchronized void shutdownContexts() { - if (destroyQueue == null || destroyQueue.size() == 0) { - return; - } - // shutdown destroyable instances in reverse instantiation order - ListIterator<Context> iter = destroyQueue.listIterator(destroyQueue.size()); - while(iter.hasPrevious()){ - Lifecycle context = iter.previous(); - if (context.getLifecycleState() == RUNNING) { - try { - if (context instanceof AtomicContext){ - ((AtomicContext)context).destroy(); - } - } catch (TargetException e) { - // TODO send a monitoring event - } - } - } - if (contexts == null){ - return; - } - for(Lifecycle context: contexts.values()) { - try { - if (context.getLifecycleState() == RUNNING) { - context.stop(); - } - } catch (CoreRuntimeException e){ - // TODO send monitoring event - } - } - contexts = null; - destroyQueue = null; - } - - /** - * Creates and starts components contexts in the module scope. Implementations marked to eagerly initialize will - * also be notified to do so. - * - * @throws CoreRuntimeException - */ - private synchronized void initComponentContexts() throws CoreRuntimeException { - if (contexts == null) { - contexts = new ConcurrentHashMap<String, Context>(); - destroyQueue = new ArrayList<Context>(); - for (ContextFactory<Context> config : contextFactories.values()) { - Context context = config.createContext(); - context.start(); - contexts.put(context.getName(), context); - } - // Initialize eager contexts. Note this cannot be done when we initially create each context since a component may - // contain a forward reference to a component which has not been instantiated - for (Context context : contexts.values()) { - if (context instanceof AtomicContext) { - AtomicContext atomic = (AtomicContext) context; - if (atomic.isEagerInit()) { - // perform silent creation and manual shutdown registration - atomic.init(); - destroyQueue.add(context); - } - } - context.addListener(this); - } - } - } -}
\ No newline at end of file diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/scope/RequestScopeContext.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/scope/RequestScopeContext.java deleted file mode 100644 index 67ce176af5..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/scope/RequestScopeContext.java +++ /dev/null @@ -1,228 +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.core.context.scope; - -import org.apache.tuscany.core.builder.ContextFactory; -import org.apache.tuscany.core.context.Context; -import org.apache.tuscany.core.context.CoreRuntimeException; -import org.apache.tuscany.core.context.EventContext; -import org.apache.tuscany.core.context.AtomicContext; -import org.apache.tuscany.core.context.TargetException; -import org.apache.tuscany.core.context.Lifecycle; -import org.apache.tuscany.core.context.event.InstanceCreated; -import org.apache.tuscany.core.context.event.Event; -import org.apache.tuscany.core.context.event.RequestEnd; -import org.apache.tuscany.core.context.event.RequestStart; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.ListIterator; -import java.util.concurrent.ConcurrentHashMap; - -/** - * An implementation of a request-scoped component container. This scope contexts eagerly starts contexts when - * a {@link org.apache.tuscany.core.context.event.RequestStart} event is received. If a contained context has an implementation marked to eagerly initialized, - * the an instance will be created at that time as well. Contained contexts are shutdown when a {@link org.apache.tuscany.core.context.event.RequestEnd} - * event is received in reverse order to which their implementation instances were created. - * - * @version $Rev$ $Date$ - */ -public class RequestScopeContext extends AbstractScopeContext { - - // A collection of service component contexts keyed by thread. Note this could have been implemented with a ThreadLocal but - // using a Map allows finer-grained concurrency. - private Map<Object, Map<String, Context>> contexts; - - // stores ordered lists of contexts to shutdown for each thread. - private Map<Object, List<Context>> destroyQueues; - - public RequestScopeContext(EventContext eventContext) { - super(eventContext); - setName("Request Scope"); - } - - public void onEvent(Event event){ - if (event instanceof RequestStart){ - getContexts(); // eager load - }else if (event instanceof RequestEnd){ - checkInit(); - getEventContext().clearIdentifiers(); // clean up current context for pooled threads - shutdownContexts(); - cleanupRequestContexts(); - }else if (event instanceof InstanceCreated){ - checkInit(); - assert(event.getSource() instanceof Context): "Context must be passed on created event"; - Context context = (Context)event.getSource(); - List<Context> collection = destroyQueues.get(Thread.currentThread()); - collection.add(context); - } - } - - public synchronized void start() { - if (lifecycleState != UNINITIALIZED) { - throw new IllegalStateException("Scope must be in UNINITIALIZED state [" + lifecycleState + "]"); - } - contexts = new ConcurrentHashMap<Object, Map<String, Context>>(); - destroyQueues = new ConcurrentHashMap<Object, List<Context>>(); - lifecycleState = RUNNING; - } - - public synchronized void stop() { - if (lifecycleState != RUNNING) { - throw new IllegalStateException("Scope in wrong state [" + lifecycleState + "]"); - } - contexts = null; - destroyQueues = null; - lifecycleState = STOPPED; - } - - public boolean isCacheable() { - return true; - } - - public void registerFactory(ContextFactory<Context> configuration) { - contextFactories.put(configuration.getName(), configuration); - } - - public Context getContext(String ctxName) { - checkInit(); - Map<String, Context> contexts = getContexts(); - Context ctx = contexts.get(ctxName); - if (ctx == null){ - // check to see if the configuration was added after the request was started - ContextFactory<Context> configuration = contextFactories.get(ctxName); - if (configuration != null) { - ctx = configuration.createContext(); - //ctx.addListener(this); - ctx.start(); - contexts.put(ctx.getName(), ctx); - } - } - return ctx; - } - - public Context getContextByKey(String ctxName, Object key) { - checkInit(); - if (key == null) { - return null; - } - Map<String, Context> components = contexts.get(key); - if (components == null) { - return null; - } - return components.get(ctxName); - } - - public void removeContext(String ctxName) { - removeContextByKey(ctxName, Thread.currentThread()); - } - - public void removeContextByKey(String ctxName, Object key) { - checkInit(); - if (key == null || ctxName == null) { - return; - } - Map components = contexts.get(key); - if (components == null) { - return; - } - components.remove(ctxName); - } - - - - private void cleanupRequestContexts() { - // TODO uninitialize all request-scoped components - contexts.remove(Thread.currentThread()); - destroyQueues.remove(Thread.currentThread()); - } - - /** - * Initializes ServiceComponentContexts for the current request. - * <p> - * TODO This eagerly creates all component contexts, even if the component is never accessed during the request. This method - * should be profiled to determine if lazy initialization is more performant - * <p> - * TODO Eager initialization is not performed for request-scoped components - */ - - private Map<String, Context> getContexts() throws CoreRuntimeException { - Map<String, Context> requestContexts = this.contexts.get(Thread.currentThread()); - if (requestContexts == null) { - requestContexts = new ConcurrentHashMap<String, Context>(); - List<Context> shutdownQueue = new ArrayList<Context>(); - for (ContextFactory<Context> config : contextFactories.values()) { - Context context = config.createContext(); - context.start(); - requestContexts.put(context.getName(), context); - } - // initialize eager components. Note this cannot be done when we initially create each context since a component may - // contain a forward reference to a component which has not been instantiated - for (Context context : requestContexts.values()) { - if (context instanceof AtomicContext) { - AtomicContext atomic = (AtomicContext) context; - if (atomic.isEagerInit()) { - atomic.init(); // Notify the instance - synchronized(shutdownQueue){ - shutdownQueue.add(context); - } - } - } - context.addListener(this); - } - contexts.put(Thread.currentThread(), requestContexts); - destroyQueues.put(Thread.currentThread(), shutdownQueue); - } - return requestContexts; - } - - private void shutdownContexts() { - List<Context> destroyQueue = destroyQueues.remove(Thread.currentThread()); - if (destroyQueue == null || destroyQueue.size() == 0) { - return; - } - synchronized(destroyQueue){ - // shutdown destroyable instances in reverse instantiation order - ListIterator<Context> iter = destroyQueue.listIterator(destroyQueue.size()); - while(iter.hasPrevious()){ - Lifecycle context = iter.previous(); - if (context.getLifecycleState() == RUNNING) { - try { - if (context instanceof AtomicContext){ - ((AtomicContext)context).destroy(); - } - } catch (TargetException e) { - // TODO send a monitoring event - } - } - } - } - // shutdown contexts - Map<String,Context> currentContexts = contexts.remove(Thread.currentThread()); - if (currentContexts == null){ - return; - } - for (Lifecycle context: currentContexts.values()){ - if (context.getLifecycleState() == RUNNING) { - context.stop(); - } - } - - } - -}
\ No newline at end of file diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/scope/SessionScopeContext.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/scope/SessionScopeContext.java deleted file mode 100644 index c5785d25f7..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/scope/SessionScopeContext.java +++ /dev/null @@ -1,258 +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.core.context.scope; - -import org.apache.tuscany.core.builder.ContextFactory; -import org.apache.tuscany.core.context.AtomicContext; -import org.apache.tuscany.core.context.Context; -import org.apache.tuscany.core.context.CoreRuntimeException; -import org.apache.tuscany.core.context.EventContext; -import org.apache.tuscany.core.context.ScopeRuntimeException; -import org.apache.tuscany.core.context.TargetException; -import org.apache.tuscany.core.context.Lifecycle; -import org.apache.tuscany.core.context.event.Event; -import org.apache.tuscany.core.context.event.HttpSessionEvent; -import org.apache.tuscany.core.context.event.InstanceCreated; -import org.apache.tuscany.core.context.event.SessionEnd; -import org.apache.tuscany.core.context.event.SessionStart; - -import java.util.ArrayList; -import java.util.List; -import java.util.ListIterator; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * An implementation of an session-scoped component container. This scope contexts eagerly starts contexts when a - * {@link org.apache.tuscany.core.context.event.SessionStart} event is received. If a contained context has an implementation - * marked to eagerly initialized, the an instance will be created at that time as well. Contained contexts are shutdown when a - * {@link org.apache.tuscany.core.context.event.SessionEnd} event is received in reverse order to which their implementation - * instances were created. - * TODO this implementation needs to be made generic so that it supports a range of session types, i.e. not tied to HTTP - * session scope - * - * @version $Rev$ $Date$ - */ -public class SessionScopeContext extends AbstractScopeContext { - - // The collection of service component contexts keyed by session - private Map<Object, Map<String, Context>> contexts; - - // Stores ordered lists of contexts to shutdown keyed by session - private Map<Object, List<Context>> destroyQueues; - - public SessionScopeContext(EventContext eventContext) { - super(eventContext); - setName("Session Scope"); - } - - public synchronized void start() { - if (lifecycleState != UNINITIALIZED) { - throw new IllegalStateException("Scope container must be in UNINITIALIZED state"); - } - contexts = new ConcurrentHashMap<Object, Map<String, Context>>(); - destroyQueues = new ConcurrentHashMap<Object, List<Context>>(); - lifecycleState = RUNNING; - } - - public synchronized void stop() { - if (lifecycleState != RUNNING) { - throw new IllegalStateException("Scope container in wrong state"); - } - contexts = null; - contexts = null; - destroyQueues = null; - lifecycleState = STOPPED; - } - - public void onEvent(Event event) { - if (event instanceof SessionStart) { - checkInit(); - Object key = ((SessionEnd) event).getId(); - getSessionContexts(key); - }else if (event instanceof SessionEnd) { - checkInit(); - Object key = ((SessionEnd) event).getId(); - shutdownContexts(key); - destroyComponentContext(key); - } else if (event instanceof InstanceCreated) { - checkInit(); - Object sessionKey = getEventContext().getIdentifier(HttpSessionEvent.HTTP_IDENTIFIER); - List<Context> shutdownQueue = destroyQueues.get(sessionKey); - Context context = (Context) event.getSource(); - assert(shutdownQueue != null): "Shutdown queue not found for key"; - shutdownQueue.add(context); - } - } - - public boolean isCacheable() { - return true; - } - - public void registerFactory(ContextFactory<Context> configuration) { - contextFactories.put(configuration.getName(), configuration); - } - - public Context getContext(String ctxName) { - assert(ctxName != null): "No context name specified"; - checkInit(); - Map<String, Context> ctxs = getSessionContexts(); - Context context = ctxs.get(ctxName); - if (context == null) { - // the configuration was added after the session had started, so create a context now and start it - ContextFactory<Context> configuration = contextFactories.get(ctxName); - if (configuration != null) { - context = configuration.createContext(); - context.start(); - if (context instanceof AtomicContext) { - ((AtomicContext) context).init(); - } - - ctxs.put(context.getName(), context); - List<Context> shutdownQueue = destroyQueues.get(getEventContext().getIdentifier(HttpSessionEvent.HTTP_IDENTIFIER)); - synchronized (shutdownQueue) { - shutdownQueue.add(context); - } - context.addListener(this); - } - } - return context; - } - - public Context getContextByKey(String ctxName, Object key) { - checkInit(); - assert(ctxName != null): "No context name specified"; - assert(key != null): "No key specified"; - Map ctxs = contexts.get(key); - if (ctxs == null) { - return null; - } - return (Context) ctxs.get(ctxName); - } - - public void removeContext(String ctxName) { - checkInit(); - Object key = getEventContext().getIdentifier(HttpSessionEvent.HTTP_IDENTIFIER); - removeContextByKey(ctxName, key); - } - - public void removeContextByKey(String ctxName, Object key) { - checkInit(); - assert(ctxName != null): "No context name specified"; - assert(key != null): "No key specified"; - Map components = contexts.get(key); - if (components == null) { - return; - } - components.remove(ctxName); - Map<String, Context> definitions = contexts.get(key); - Context ctx = definitions.get(ctxName); - if (ctx != null) { - destroyQueues.get(key).remove(ctx); - } - definitions.remove(ctxName); - } - - /** - * Returns and, if necessary, creates a context for the current sesion - */ - private Map<String, Context> getSessionContexts() throws CoreRuntimeException { - Object key = getEventContext().getIdentifier(HttpSessionEvent.HTTP_IDENTIFIER); - return getSessionContexts(key); - } - - /** - * Returns and, if necessary, creates a context for the given session key - */ - private Map<String, Context> getSessionContexts(Object key) throws CoreRuntimeException { - if (key == null) { - throw new ScopeRuntimeException("Session key not set in request context"); - } - Map<String, Context> m = contexts.get(key); - if (m != null) { - return m; // already created, return - } - Map<String, Context> sessionContext = new ConcurrentHashMap<String, Context>(contextFactories.size()); - for (ContextFactory<Context> config : contextFactories.values()) { - Context context = config.createContext(); - context.start(); - sessionContext.put(context.getName(), context); - } - - List<Context> shutdownQueue = new ArrayList<Context>(); - contexts.put(key, sessionContext); - destroyQueues.put(key, shutdownQueue); - // initialize eager components. Note this cannot be done when we initially create each context since a component may - // contain a forward reference to a component which has not been instantiated - for (Context context : sessionContext.values()) { - if (context instanceof AtomicContext) { - AtomicContext atomic = (AtomicContext) context; - if (atomic.isEagerInit()) { - atomic.init(); // Notify the instance - synchronized (shutdownQueue) { - shutdownQueue.add(context); - } - } - } - context.addListener(this); - } - return sessionContext; - } - - /** - * Removes the components associated with an expiring context - */ - private void destroyComponentContext(Object key) { - contexts.remove(key); - destroyQueues.remove(key); - } - - - private synchronized void shutdownContexts(Object key) { - List<Context> destroyQueue = destroyQueues.remove(key); - if (destroyQueue == null || destroyQueue.size() == 0) { - return; - } - // shutdown destroyable instances in reverse instantiation order - ListIterator<Context> iter = destroyQueue.listIterator(destroyQueue.size()); - synchronized (destroyQueue) { - while (iter.hasPrevious()) { - Lifecycle context = iter.previous(); - if (context.getLifecycleState() == RUNNING) { - try { - if (context instanceof AtomicContext) { - ((AtomicContext) context).destroy(); - } - } catch (TargetException e) { - // TODO send a monitoring event - } - } - } - } - // shutdown contexts - Map<String, Context> currentContexts = contexts.remove(Thread.currentThread()); - if (currentContexts == null) { - return; - } - for (Lifecycle context : currentContexts.values()) { - if (context.getLifecycleState() == RUNNING) { - context.stop(); - } - } - } - -}
\ No newline at end of file diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeContext.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeContext.java deleted file mode 100644 index 46bf58b548..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeContext.java +++ /dev/null @@ -1,132 +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.core.context.scope; - -import org.apache.tuscany.core.builder.ContextFactory; -import org.apache.tuscany.core.context.EventContext; -import org.apache.tuscany.core.context.Context; -import org.apache.tuscany.core.context.CoreRuntimeException; -import org.apache.tuscany.core.context.Lifecycle; -import org.apache.tuscany.core.context.event.Event; -import org.apache.tuscany.core.context.event.ModuleStop; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * A container that manages stateless components. - * - * @version $Rev$ $Date$ - */ -public class StatelessScopeContext extends AbstractScopeContext { - - // Component contexts keyed by name - private Map<String, Context> contexts; - - public StatelessScopeContext(EventContext eventContext) { - super(eventContext); - setName("Stateless Scope"); - } - - public synchronized void start() { - if (lifecycleState != UNINITIALIZED) { - throw new IllegalStateException("Scope must be in UNINITIALIZED state [" + lifecycleState + "]"); - } - lifecycleState = RUNNING; - } - - public synchronized void stop() { - if (lifecycleState != RUNNING) { - throw new IllegalStateException("Scope in wrong state [" + lifecycleState + "]"); - } - contexts = null; - lifecycleState = STOPPED; - } - - public void registerFactory(ContextFactory<Context> configuration) { - contextFactories.put(configuration.getName(), configuration); - if (contexts != null) { - contexts.put(configuration.getName(), configuration.createContext()); - } - } - - public void onEvent(Event event){ - if (event instanceof ModuleStop) { - shutdownContexts(); - } - } - - public boolean isCacheable() { - return true; - } - - public Context getContext(String ctxName) { - prepare(); - return contexts.get(ctxName); - } - - public Context getContextByKey(String ctxName, Object key) { - return getContext(ctxName); - } - - public void removeContext(String ctxName) { - if (contexts == null){ - return; - } - contexts.remove(ctxName); - } - - public void removeContextByKey(String ctxName, Object key) { - removeContext(ctxName); - } - - private void prepare() throws CoreRuntimeException { - if (lifecycleState != RUNNING) { - throw new IllegalStateException("Scope not in INITIALIZED state [" + lifecycleState + "]"); - } - if (contexts == null) { - contexts = new ConcurrentHashMap<String, Context> (); - for (ContextFactory<Context> config : contextFactories.values()) { - for (int i = 0; i < contextFactories.size(); i++) { - Context context = config.createContext(); - context.start(); - contexts.put(context.getName(), context); - } - - } - } - } - - private void shutdownContexts(){ - if (contexts == null){ - return; - } - for(Lifecycle context: contexts.values()) { - try { - if (context.getLifecycleState() == RUNNING) { - context.stop(); - } - } catch (CoreRuntimeException e){ - // TODO send monitoring event - } - - } - contexts = null; - } - - -}
\ No newline at end of file diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/ComponentTargetInvoker.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/ComponentTargetInvoker.java deleted file mode 100644 index 57fcffc2b2..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/ComponentTargetInvoker.java +++ /dev/null @@ -1,122 +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.core.extension;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-import org.apache.tuscany.core.context.AtomicContext;
-import org.apache.tuscany.core.context.Context;
-import org.apache.tuscany.core.context.QualifiedName;
-import org.apache.tuscany.core.context.ScopeContext;
-import org.apache.tuscany.core.context.TargetException;
-import org.apache.tuscany.core.message.Message;
-import org.apache.tuscany.core.wire.Interceptor;
-import org.apache.tuscany.core.wire.TargetInvoker;
-
-/**
- * Responsible for invoking an external service
- * TODO: virtualy identical to ExternalServiceTargetInvoker
- * @version $Rev$ $Date$
- */
-public class ComponentTargetInvoker implements TargetInvoker {
-
- private QualifiedName serviceName;
-
- private String esName;
-
- private Method method;
-
- private ScopeContext container;
-
- private AtomicContext context;
-
- /**
- * Constructs a new ExternalWebServiceTargetInvoker.
- *
- * @param container
- */
- public ComponentTargetInvoker(QualifiedName serviceName, Method method, ScopeContext container) {
- assert serviceName != null : "No service name specified";
- assert method != null : "No method specified";
- assert container != null : "No scope container specified";
- this.serviceName = serviceName;
- this.esName = serviceName.getPartName();
- this.method = method;
- this.container = container;
- }
-
- public Object invokeTarget(Object payload) throws InvocationTargetException {
- if (context == null) {
- Context iContext = container.getContext(esName);
- if (!(iContext instanceof AtomicContext)) {
- TargetException te = new TargetException("Unexpected target context type");
- te.setIdentifier(iContext.getClass().getName());
- te.addContextName(iContext.getName());
- throw te;
- }
- context = (AtomicContext) iContext;
- }
-
- ExternalServiceInvoker invoker = (ExternalServiceInvoker) context.getTargetInstance();
- if (payload != null) {
- return doInvoke(invoker, (Object[]) payload);
- } else {
- return doInvoke(invoker, null);
- }
- }
-
- protected Object doInvoke(ExternalServiceInvoker invoker, Object[] args) {
- return invoker.invoke(method.getName(), args);
- }
-
- public boolean isCacheable() {
- return false;
- }
-
- 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;
- }
-
- public void setNext(Interceptor next) {
- throw new UnsupportedOperationException();
- }
-
- public Object clone() throws CloneNotSupportedException {
- try {
- ComponentTargetInvoker invoker = (ComponentTargetInvoker) super.clone();
- invoker.container = container;
- invoker.context = this.context;
- invoker.esName = this.esName;
- invoker.method = this.method;
- invoker.serviceName = this.serviceName;
- return invoker;
- } catch (CloneNotSupportedException e) {
- // will not happen
- return null;
- }
- }
-
-}
diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/ContextFactoryBuilderSupport.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/ContextFactoryBuilderSupport.java deleted file mode 100644 index 81770d49b8..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/ContextFactoryBuilderSupport.java +++ /dev/null @@ -1,174 +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.core.extension; - -import org.apache.tuscany.core.builder.BuilderConfigException; -import org.apache.tuscany.core.builder.BuilderException; -import org.apache.tuscany.core.builder.ContextFactory; -import org.apache.tuscany.core.builder.ContextFactoryBuilder; -import org.apache.tuscany.core.builder.ContextFactoryBuilderRegistry; -import org.apache.tuscany.core.system.annotation.Autowire; -import org.apache.tuscany.core.wire.SourceWireFactory; -import org.apache.tuscany.core.wire.TargetWireFactory; -import org.apache.tuscany.core.wire.service.WireFactoryService; -import org.apache.tuscany.model.assembly.AssemblyObject; -import org.apache.tuscany.model.assembly.Component; -import org.apache.tuscany.model.assembly.ConfiguredProperty; -import org.apache.tuscany.model.assembly.ConfiguredReference; -import org.apache.tuscany.model.assembly.ConfiguredService; -import org.apache.tuscany.model.assembly.Implementation; -import org.apache.tuscany.model.assembly.Multiplicity; -import org.apache.tuscany.model.assembly.Scope; -import org.apache.tuscany.model.assembly.Service; -import org.osoa.sca.annotations.Init; - -import java.lang.reflect.ParameterizedType; -import java.lang.reflect.Type; -import java.util.List; - -/** - * A runtime extension point for component types. Subclasses must be genericized according to the model implementation type they - * handle, i.e. a subclass of {@link Implementation}, and implement {@link #createContextFactory}. - * - * @version $Rev: 368822 $ $Date: 2006-01-13 10:54:38 -0800 (Fri, 13 Jan 2006) $ - * @see org.apache.tuscany.core.builder.ContextFactory - */ -@org.osoa.sca.annotations.Scope("MODULE") -public abstract class ContextFactoryBuilderSupport<T extends Implementation> implements ContextFactoryBuilder { - - protected ContextFactoryBuilderRegistry builderRegistry; - - protected WireFactoryService wireFactoryService; - - protected Class implementationClass; - - /** - * Default constructor - */ - public ContextFactoryBuilderSupport() { - // reflect the generic type of the subclass - Type type = this.getClass().getGenericSuperclass(); - if (type instanceof ParameterizedType) { - implementationClass = (Class) ((ParameterizedType) type).getActualTypeArguments()[0]; - } else { - throw new AssertionError("Subclasses of " + ContextFactoryBuilderSupport.class.getName() + " must be genericized"); - } - } - - /** - * Constructs a new instance - * - * @param wireFactoryService the system service responsible for creating wire factories - */ - public ContextFactoryBuilderSupport(WireFactoryService wireFactoryService) { - this(); - this.wireFactoryService = wireFactoryService; - } - - @Init(eager = true) - public void init() { - builderRegistry.register(this); - } - - @Autowire - public void setBuilderRegistry(ContextFactoryBuilderRegistry builderRegistry) { - this.builderRegistry = builderRegistry; - } - - /** - * Sets the system service used to construct wire factories - */ - @Autowire - public void setWireFactoryService(WireFactoryService wireFactoryService) { - this.wireFactoryService = wireFactoryService; - } - - public void build(AssemblyObject modelObject) throws BuilderException { - if (!(modelObject instanceof Component)) { - return; - } - Component nonGenricComponent = (Component) modelObject; - if (!implementationClass.isAssignableFrom(nonGenricComponent.getImplementation().getClass())) { - return; - } - Component<T> component = (Component<T>) modelObject; - List<Service> services = component.getImplementation().getComponentType().getServices(); - Scope previous = null; - Scope scope = Scope.INSTANCE; - for (Service service : services) { - // calculate and validate the scope of the component; ensure that all service scopes are the same unless stateless - Scope current = service.getServiceContract().getScope(); - if (previous != null && current != null && current != previous - && (current != Scope.INSTANCE && previous != Scope.INSTANCE)) { - BuilderException e = new BuilderConfigException("Incompatible scopes specified for services on component"); - e.setIdentifier(component.getName()); - throw e; - } - if (scope != null && current != Scope.INSTANCE) { - scope = current; - } - } - ContextFactory contextFactory; - try { - contextFactory = createContextFactory(component.getName(), component.getImplementation(), scope); - // create target-side wire invocation chains for each service offered by the implementation - for (ConfiguredService configuredService : component.getConfiguredServices()) { - Service service = configuredService.getPort(); - TargetWireFactory wireFactory = wireFactoryService.createTargetFactory(configuredService); - contextFactory.addTargetWireFactory(service.getName(), wireFactory); - } - // handle properties - List<ConfiguredProperty> configuredProperties = component.getConfiguredProperties(); - if (configuredProperties != null) { - for (ConfiguredProperty property : configuredProperties) { - contextFactory.addProperty(property.getName(), property.getValue()); - } - } - // handle references and source side reference chains - List<ConfiguredReference> configuredReferences = component.getConfiguredReferences(); - if (configuredReferences != null) { - for (ConfiguredReference reference : configuredReferences) { - if (reference.getPort().getMultiplicity() == Multiplicity.ZERO_N || reference.getPort().getMultiplicity() == Multiplicity.ZERO_ONE){ - if (reference.getTargetConfiguredServices().size() < 1 && reference.getTargets().size() <1 ){ - continue; // not required, not configured fix TUSCANY-299 - } - } - List<SourceWireFactory> wireFactories = wireFactoryService.createSourceFactory(reference); - String refName = reference.getPort().getName(); - Class refClass = reference.getPort().getServiceContract().getInterface(); - boolean multiplicity = reference.getPort().getMultiplicity() == Multiplicity.ONE_N - || reference.getPort().getMultiplicity() == Multiplicity.ZERO_N; - contextFactory.addSourceWireFactories(refName, refClass, wireFactories, multiplicity); - } - } - component.setContextFactory(contextFactory); - } catch (BuilderException e) { - e.addContextName(component.getName()); - throw e; - } - } - - /** - * Subclasses must implement, returning a context factory appropriate to the component implementation - * - * @param componentName the name of the component - * @param implementation the component implementation - * @param scope the component implementation scope - */ - protected abstract ContextFactory createContextFactory(String componentName, T implementation, Scope scope); - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/EntryPointBuilderSupport.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/EntryPointBuilderSupport.java deleted file mode 100644 index 58d7a626a6..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/EntryPointBuilderSupport.java +++ /dev/null @@ -1,111 +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.core.extension; - -import java.lang.reflect.ParameterizedType; -import java.lang.reflect.Type; - -import org.apache.tuscany.core.builder.BuilderException; -import org.apache.tuscany.core.builder.ContextFactoryBuilder; -import org.apache.tuscany.core.builder.ContextFactoryBuilderRegistry; -import org.apache.tuscany.core.message.MessageFactory; -import org.apache.tuscany.core.system.annotation.Autowire; -import org.apache.tuscany.core.wire.SourceWireFactory; -import org.apache.tuscany.core.wire.service.WireFactoryService; -import org.apache.tuscany.model.assembly.AssemblyObject; -import org.apache.tuscany.model.assembly.Binding; -import org.apache.tuscany.model.assembly.ConfiguredService; -import org.apache.tuscany.model.assembly.EntryPoint; -import org.apache.tuscany.model.assembly.Service; -import org.osoa.sca.annotations.Init; - -/** - * A base class for a {@link ContextFactoryBuilder} that creates {@link org.apache.tuscany.core.context.EntryPointContext}s - * - * @version $$Rev$$ $$Date$$ - */ -public abstract class EntryPointBuilderSupport<T extends Binding> implements ContextFactoryBuilder { - - protected ContextFactoryBuilderRegistry builderRegistry; - protected WireFactoryService wireService; - protected MessageFactory messageFactory; - protected Class bindingClass; - - public EntryPointBuilderSupport() { - // reflect the generic type of the subclass - Type type = this.getClass().getGenericSuperclass(); - if (type instanceof ParameterizedType) { - bindingClass = (Class) ((ParameterizedType) type).getActualTypeArguments()[0]; - } else { - throw new AssertionError("Subclasses of " + ContextFactoryBuilderSupport.class.getName() + " must be genericized"); - } - } - - @Init(eager = true) - public void init() throws Exception { - builderRegistry.register(this); - } - - @Autowire - public void setBuilderRegistry(ContextFactoryBuilderRegistry registry) { - builderRegistry = registry; - } - - @Autowire - public void setWireService(WireFactoryService wireService) { - this.wireService = wireService; - } - - /** - * Sets the factory used to construct wire messages - * - * @param msgFactory - */ - @Autowire - public void setMessageFactory(MessageFactory msgFactory) { - this.messageFactory = msgFactory; - } - - public void build(AssemblyObject object) throws BuilderException { - if (!(object instanceof EntryPoint)) { - return; - } - EntryPoint entryPoint = (EntryPoint) object; - if (entryPoint.getBindings().size() < 1) { - return; - } - if (!bindingClass.isAssignableFrom(entryPoint.getBindings().get(0).getClass())) { - return; - } - - EntryPointContextFactory contextFactory = createEntryPointContextFactory(entryPoint, messageFactory); - ConfiguredService configuredService = entryPoint.getConfiguredService(); - Service service = configuredService.getPort(); - SourceWireFactory wireFactory = wireService.createSourceFactory(entryPoint.getConfiguredReference()).get(0); - contextFactory.addSourceWireFactory(service.getName(), wireFactory); - entryPoint.setContextFactory(contextFactory); - } - - /** - * Callback to create the specific <code>ContextFactory</code> type associated with the extending - * implementation - * - * @param entryPoint the entry point being processed - * @param msgFactory the message factory to be used by <code>EntryPointContext</code> when flowing - * invocations - */ - protected abstract EntryPointContextFactory createEntryPointContextFactory(EntryPoint entryPoint, MessageFactory msgFactory); - - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/EntryPointContextFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/EntryPointContextFactory.java deleted file mode 100644 index bb4d1207d4..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/EntryPointContextFactory.java +++ /dev/null @@ -1,111 +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.core.extension; - -import org.apache.tuscany.core.builder.ContextCreationException; -import org.apache.tuscany.core.builder.ContextFactory; -import org.apache.tuscany.core.context.CompositeContext; -import org.apache.tuscany.core.context.EntryPointContext; -import org.apache.tuscany.core.context.impl.EntryPointContextImpl; -import org.apache.tuscany.core.wire.SourceWireFactory; -import org.apache.tuscany.core.wire.TargetWireFactory; -import org.apache.tuscany.core.message.MessageFactory; -import org.apache.tuscany.model.assembly.Scope; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -/** - * Default factory for contexts that represent entry points. - * - * @version $Rev$ $Date$ - */ -public abstract class EntryPointContextFactory implements ContextFactory<EntryPointContext> { - - private String name; - - private SourceWireFactory sourceWireFactory; - - private MessageFactory msgFactory; - - private List<SourceWireFactory> sourceProxyFactories; - - public EntryPointContextFactory(String name, MessageFactory msgFactory) { - assert (name != null) : "Entry point name was null"; - assert (msgFactory != null) : "Message factory was null"; - this.name = name; - this.msgFactory = msgFactory; - } - - public EntryPointContext createContext() throws ContextCreationException { - return new EntryPointContextImpl(name, sourceWireFactory, msgFactory); - } - - public Scope getScope() { - return Scope.MODULE; - } - - public String getName() { - return name; - } - - public void prepare() { - } - - public void addTargetWireFactory(String serviceName, TargetWireFactory factory) { - // no wires to an entry point from within a composite - } - - public TargetWireFactory getTargetWireFactory(String serviceName) { - // no wires to an entry point from within a composite - return null; - } - - public Map<String, TargetWireFactory> getTargetWireFactories() { - // no wires to an entry point from within a composite - return Collections.emptyMap(); - } - - public void addSourceWireFactory(String refName, SourceWireFactory factory) { - assert (refName != null) : "No reference name specified"; - assert (factory != null) : "Proxy factory was null"; - this.sourceWireFactory = factory; - } - - public List<SourceWireFactory> getSourceWireFactories() { - if (sourceProxyFactories == null) { - sourceProxyFactories = new ArrayList<SourceWireFactory>(1); - sourceProxyFactories.add(sourceWireFactory); - } - return sourceProxyFactories; - } - - public void addProperty(String propertyName, Object value) { - throw new UnsupportedOperationException(); - } - - public void addSourceWireFactories(String referenceName, Class referenceInterface, List<SourceWireFactory> factories, boolean multiplicity) { - if (factories.size() >1){ - throw new UnsupportedOperationException("Multiple wires for an entry point not allowed"); - }else if(factories.size() <1){ - throw new AssertionError("Empty wire factory list"); - } - this.sourceWireFactory = factories.get(0); - } - - public void prepare(CompositeContext parent) { - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/ExternalServiceBuilderSupport.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/ExternalServiceBuilderSupport.java deleted file mode 100644 index 7c030324f1..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/ExternalServiceBuilderSupport.java +++ /dev/null @@ -1,112 +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.core.extension; - -import java.lang.reflect.ParameterizedType; -import java.lang.reflect.Type; - -import org.apache.tuscany.core.builder.BuilderException; -import org.apache.tuscany.core.builder.ContextFactoryBuilder; -import org.apache.tuscany.core.builder.ContextFactoryBuilderRegistry; -import org.apache.tuscany.core.system.annotation.Autowire; -import org.apache.tuscany.core.wire.TargetWireFactory; -import org.apache.tuscany.core.wire.service.WireFactoryService; -import org.apache.tuscany.model.assembly.AssemblyObject; -import org.apache.tuscany.model.assembly.Binding; -import org.apache.tuscany.model.assembly.ConfiguredService; -import org.apache.tuscany.model.assembly.ExternalService; -import org.apache.tuscany.model.assembly.Service; -import org.osoa.sca.annotations.Init; - -/** - * A base class for a {@link ContextFactoryBuilder} that creates {@link org.apache.tuscany.core.context.ExternalServiceContext}s - * - * @version $$Rev$$ $$Date$$ - */ -public abstract class ExternalServiceBuilderSupport<T extends Binding> implements ContextFactoryBuilder { - - private ContextFactoryBuilderRegistry builderRegistry; - private WireFactoryService wireService; - protected Class bindingClass; - - public ExternalServiceBuilderSupport() { - // reflect the generic type of the subclass - Type type = this.getClass().getGenericSuperclass(); - if (type instanceof ParameterizedType) { - bindingClass = (Class) ((ParameterizedType) type).getActualTypeArguments()[0]; - } else { - throw new AssertionError("Subclasses of " + ContextFactoryBuilderSupport.class.getName() + " must be genericized"); - } - } - - public ExternalServiceBuilderSupport(WireFactoryService wireService) { - this(); - this.wireService = wireService; - } - - @Init(eager = true) - public void init() throws Exception { - builderRegistry.register(this); - } - - @Autowire - public void setBuilderRegistry(ContextFactoryBuilderRegistry registry) { - builderRegistry = registry; - } - - @Autowire - public void setWireService(WireFactoryService wireService) { - this.wireService = wireService; - } - - public void build(AssemblyObject object) throws BuilderException { - if (!(object instanceof ExternalService)) { - return; - } - ExternalService externalService = (ExternalService) object; - if (externalService.getBindings().size() < 1) { - // || !(handlesBindingType(externalService.getBindings().get(0)))) { - return; - } - if (!bindingClass.isAssignableFrom(externalService.getBindings().get(0).getClass())) { - return; - } - - ExternalServiceContextFactory contextFactory - = createExternalServiceContextFactory(externalService); - - ConfiguredService configuredService = externalService.getConfiguredService(); - Service service = configuredService.getPort(); - TargetWireFactory wireFactory = wireService.createTargetFactory(configuredService); - contextFactory.addTargetWireFactory(service.getName(), wireFactory); - externalService.setContextFactory(contextFactory); - } - - /** - * Returns true if an extending implementation can process the given binding element - */ - //protected abstract boolean handlesBindingType(Binding binding); - - /** - * Callback to create the specific <code>ContextFactory</code> type associated with the extending - * implementation - * - * @param externalService the external service being processed - */ - protected abstract ExternalServiceContextFactory createExternalServiceContextFactory(ExternalService externalService); - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/ExternalServiceContextFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/ExternalServiceContextFactory.java deleted file mode 100644 index 396da3d39e..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/ExternalServiceContextFactory.java +++ /dev/null @@ -1,121 +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.core.extension; - -import org.apache.tuscany.core.builder.ContextCreationException; -import org.apache.tuscany.core.builder.ContextFactory; -import org.apache.tuscany.core.builder.ObjectFactory; -import org.apache.tuscany.core.context.CompositeContext; -import org.apache.tuscany.core.context.ExternalServiceContext; -import org.apache.tuscany.core.context.impl.ExternalServiceContextImpl; -import org.apache.tuscany.core.wire.TargetWireFactory; -import org.apache.tuscany.core.wire.SourceWireFactory; -import org.apache.tuscany.model.assembly.Scope; - -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * A template implementation that creates instances of {@link org.apache.tuscany.core.context.ExternalServiceContext} - * configured with the appropriate wire chains and bindings. This class is intended to be subclassed when - * contributing new bindings to the runtime. The subclass serves as a marker so the binding {@link org.apache.tuscany.core.builder.WireBuilder - * - * - * - * } - * responsible for setting the proper {@link org.apache.tuscany.core.wire.TargetInvoker} on the wire chains - * can be notified. - * - * @version $Rev$ $Date$ - */ -public abstract class ExternalServiceContextFactory implements ContextFactory<ExternalServiceContext> { - - private String name; - - private TargetWireFactory targetWireFactory; - - private ObjectFactory objectFactory; - - private String targetServiceName; - - private Map<String, TargetWireFactory> targetProxyFactories; - - public ExternalServiceContextFactory(String name, ObjectFactory objectFactory) { - assert (name != null) : "Name was null"; - assert (objectFactory != null) : "Object factory was null"; - this.name = name; - this.objectFactory = objectFactory; - } - - public ExternalServiceContext createContext() throws ContextCreationException { - return new ExternalServiceContextImpl(name, targetWireFactory, objectFactory); - } - - public Scope getScope() { - return Scope.MODULE; - } - - public String getName() { - return name; - } - - public void prepare() { - } - - public void addTargetWireFactory(String serviceName, TargetWireFactory factory) { - assert (serviceName != null) : "No service name specified"; - assert (factory != null) : "Proxy factory was null"; - this.targetServiceName = serviceName; // external services are configured with only one service - this.targetWireFactory = factory; - } - - public TargetWireFactory getTargetWireFactory(String serviceName) { - if (this.targetServiceName.equals(serviceName)) { - return targetWireFactory; - } else { - return null; - } - } - - public Map<String,TargetWireFactory> getTargetWireFactories() { - if (targetProxyFactories == null) { - targetProxyFactories = new HashMap<String, TargetWireFactory> (1); - targetProxyFactories.put(targetServiceName, targetWireFactory); - } - return targetProxyFactories; - } - - public void addSourceWireFactory(String referenceName, SourceWireFactory factory) { - throw new UnsupportedOperationException(); - } - - public void addSourceWireFactories(String referenceName, Class referenceInterface, List<SourceWireFactory> factory, boolean multiplicity) { - - } - - public List<SourceWireFactory> getSourceWireFactories() { - return Collections.emptyList(); - } - - public void addProperty(String propertyName, Object value) { - throw new UnsupportedOperationException(); - } - - public void prepare(CompositeContext parent) { - //parentContext = parent; - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/ExternalServiceInvoker.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/ExternalServiceInvoker.java deleted file mode 100644 index 0424bf5de6..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/ExternalServiceInvoker.java +++ /dev/null @@ -1,23 +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.core.extension;
-
-public interface ExternalServiceInvoker {
-
- public Object invoke(String methodName, Object[] args);
-
-}
diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/ExternalServiceTargetInvoker.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/ExternalServiceTargetInvoker.java deleted file mode 100644 index 0d664e0207..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/ExternalServiceTargetInvoker.java +++ /dev/null @@ -1,122 +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.core.extension;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-import org.apache.tuscany.core.context.Context;
-import org.apache.tuscany.core.context.ExternalServiceContext;
-import org.apache.tuscany.core.context.QualifiedName;
-import org.apache.tuscany.core.context.ScopeContext;
-import org.apache.tuscany.core.context.TargetException;
-import org.apache.tuscany.core.message.Message;
-import org.apache.tuscany.core.wire.Interceptor;
-import org.apache.tuscany.core.wire.TargetInvoker;
-
-/**
- * Responsible for invoking an external service
- *
- * @version $Rev$ $Date$
- */
-public class ExternalServiceTargetInvoker implements TargetInvoker {
-
- private QualifiedName serviceName;
-
- private String esName;
-
- private Method method;
-
- private ScopeContext container;
-
- private ExternalServiceContext context;
-
- /**
- * Constructs a new ExternalWebServiceTargetInvoker.
- *
- * @param container
- */
- public ExternalServiceTargetInvoker(QualifiedName serviceName, Method method, ScopeContext container) {
- assert serviceName != null : "No service name specified";
- assert method != null : "No method specified";
- assert container != null : "No scope container specified";
- this.serviceName = serviceName;
- this.esName = serviceName.getPartName();
- this.method = method;
- this.container = container;
- }
-
- public Object invokeTarget(Object payload) throws InvocationTargetException {
- if (context == null) {
- Context iContext = container.getContext(esName);
- if (!(iContext instanceof ExternalServiceContext)) {
- TargetException te = new TargetException("Unexpected target context type");
- te.setIdentifier(iContext.getClass().getName());
- te.addContextName(iContext.getName());
- throw te;
- }
- context = (ExternalServiceContext) iContext;
- }
-
- ExternalServiceInvoker invoker = (ExternalServiceInvoker) context.getHandler();
- if (payload != null) {
- return doInvoke(invoker, (Object[]) payload);
- } else {
- return doInvoke(invoker, null);
- }
- }
-
- protected Object doInvoke(ExternalServiceInvoker invoker, Object[] args) {
- return invoker.invoke(method.getName(), args);
- }
-
- public boolean isCacheable() {
- return false;
- }
-
- 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;
- }
-
- public void setNext(Interceptor next) {
- throw new UnsupportedOperationException();
- }
-
- public Object clone() throws CloneNotSupportedException {
- try {
- ExternalServiceTargetInvoker invoker = (ExternalServiceTargetInvoker) super.clone();
- invoker.container = container;
- invoker.context = this.context;
- invoker.esName = this.esName;
- invoker.method = this.method;
- invoker.serviceName = this.serviceName;
- return invoker;
- } catch (CloneNotSupportedException e) {
- // will not happen
- return null;
- }
- }
-
-}
diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/WireBuilderSupport.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/WireBuilderSupport.java deleted file mode 100644 index 5b2d9de0e3..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/WireBuilderSupport.java +++ /dev/null @@ -1,102 +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.core.extension; - -import java.lang.reflect.Method; -import java.lang.reflect.ParameterizedType; -import java.lang.reflect.Type; - -import org.apache.tuscany.core.builder.BuilderConfigException; -import org.apache.tuscany.core.builder.ContextFactory; -import org.apache.tuscany.core.builder.WireBuilder; -import org.apache.tuscany.core.context.QualifiedName; -import org.apache.tuscany.core.context.ScopeContext; -import org.apache.tuscany.core.runtime.RuntimeContext; -import org.apache.tuscany.core.system.annotation.Autowire; -import org.apache.tuscany.core.wire.SourceInvocationConfiguration; -import org.apache.tuscany.core.wire.SourceWireFactory; -import org.apache.tuscany.core.wire.TargetInvocationConfiguration; -import org.apache.tuscany.core.wire.TargetInvoker; -import org.apache.tuscany.core.wire.TargetWireFactory; -import org.osoa.sca.annotations.Init; - -/** - * A base class for {@link WireBuilder} implementations - * - * @version $$Rev$$ $$Date$$ - */ -public abstract class WireBuilderSupport<T extends ContextFactory<?>> implements WireBuilder { - - protected RuntimeContext runtimeContext; - protected Class targetClass; - - @Autowire - public void setRuntimeContext(RuntimeContext context) { - runtimeContext = context; - } - - public WireBuilderSupport() { - // reflect the generic type of the subclass - Type type = this.getClass().getGenericSuperclass(); - if (type instanceof ParameterizedType) { - targetClass = (Class) ((ParameterizedType) type).getActualTypeArguments()[0]; - } else { - throw new AssertionError("Subclasses of " + ContextFactoryBuilderSupport.class.getName() + " must be genericized"); - } - } - - @Init(eager = true) - public void init() throws Exception { - runtimeContext.addBuilder(this); - } - - public void connect(SourceWireFactory sourceFactory, TargetWireFactory targetFactory, Class targetType, boolean downScope, - ScopeContext targetScopeContext) throws BuilderConfigException { - if (!targetClass.isAssignableFrom(targetType)) { - return; - } - - for (SourceInvocationConfiguration sourceInvocationConfig : sourceFactory.getConfiguration().getInvocationConfigurations() - .values()) { - TargetInvoker invoker = createInvoker(sourceFactory.getConfiguration() - .getTargetName(), sourceInvocationConfig.getMethod(), targetScopeContext, downScope); - sourceInvocationConfig.setTargetInvoker(invoker); - } - } - - public void completeTargetChain(TargetWireFactory targetFactory, Class targetType, ScopeContext targetScopeContext) - throws BuilderConfigException { - - if (!targetClass.isAssignableFrom(targetType)) { - return; - } - for (TargetInvocationConfiguration targetInvocationConfig : targetFactory.getConfiguration().getInvocationConfigurations() - .values()) { - Method method = targetInvocationConfig.getMethod(); - TargetInvoker invoker = createInvoker(targetFactory.getConfiguration().getTargetName(), method, targetScopeContext, false); - targetInvocationConfig.setTargetInvoker(invoker); - } - } - - /** - * Callback to create the specific <code>TargetInvoker</code> type for dispatching to the target type - * - * @param targetName the fully qualified name of the wire target - * @param operation the operation the invoker will be associated with - * @param context the scope context that manages the target context - * @param downScope whether the wire source scope is "longer" than the target - */ - protected abstract TargetInvoker createInvoker(QualifiedName targetName, Method operation, ScopeContext context, boolean downScope); - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/config/ImplementationProcessor.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/config/ImplementationProcessor.java deleted file mode 100644 index b464a7f00f..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/config/ImplementationProcessor.java +++ /dev/null @@ -1,65 +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.core.extension.config; - -import java.lang.reflect.Constructor; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -import org.apache.tuscany.model.assembly.ComponentType; -import org.apache.tuscany.core.config.ConfigurationLoadException; - -/** - * Implementations process a Java class and contribute to a {@link org.apache.tuscany.model.assembly.ComponentType} - * or provide some validation function. Implementations may contribute to defined <code>ComponentType</code> - * metadata, a general <code>ComponentType</code> extensibility element, or a more specific Java extensibility - * element, which is associated with {@link org.apache.tuscany.core.extension.config.JavaExtensibilityElement} and - * stored in the <code>ComponentType</code>'s extensibility collection. Processors will typically use {@link - * JavaExtensibilityHelper#getExtensibilityElement(org.apache.tuscany.model.assembly.Extensible)}, which - * provides methods for retrieving the Java extensibility element. - * <p/> - * In the runtime, a {@link org.apache.tuscany.core.config.ComponentTypeIntrospector} system service introspects component implementation - * types when an assembly is loaded, calling out to registered processors in the order defined by {@link - * ComponentTypeIntrospector#introspect(Class<?>)}. Generally, processors are also system services which - * register themeselves with a <code>ComponentTypeIntrospector</code>. For convenience, a processor - * implementation can extend <@link org.apache.tuscany.core.config.processor.ImplementationProcessorSupport}, - * which provides mechanisms for doing this. - * <p/> - * There are a series of bootsrap, or primordial, processors configured in the runtime, and they serve as - * examples of how an <code>ImplementationProcessor</code> can be implemented. - * - * @see org.apache.tuscany.core.config.processor.PropertyProcessor - * @see org.apache.tuscany.core.config.processor.ReferenceProcessor - * @see org.apache.tuscany.core.config.processor.InitProcessor - * @see org.apache.tuscany.core.config.processor.DestroyProcessor - * @see org.apache.tuscany.core.config.processor.ComponentNameProcessor - * - * @version $$Rev$$ $$Date$$ - * @see org.apache.tuscany.core.config.processor.ImplementationProcessorSupport - */ -public interface ImplementationProcessor { - - public void visitClass(Class<?> clazz, ComponentType type) throws ConfigurationLoadException; - - public void visitSuperClass(Class<?> clazz, ComponentType type) throws ConfigurationLoadException; - - public void visitMethod(Method method, ComponentType type) throws ConfigurationLoadException; - - public void visitConstructor(Constructor<?> constructor, ComponentType type) throws ConfigurationLoadException; - - public void visitField(Field field, ComponentType type) throws ConfigurationLoadException; - - public void visitEnd(Class<?> clazz, ComponentType type) throws ConfigurationLoadException; - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/config/InjectorExtensibilityElement.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/config/InjectorExtensibilityElement.java deleted file mode 100644 index 50818d1ac0..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/config/InjectorExtensibilityElement.java +++ /dev/null @@ -1,32 +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.core.extension.config; - -import org.apache.tuscany.core.builder.ContextResolver; -import org.apache.tuscany.core.injection.Injector; - -/** - * An extensiblity element which provides {@link Injector}s based on component type metadata - * - * @version $$Rev$$ $$Date$$ - */ -public interface InjectorExtensibilityElement extends JavaExtensibilityElement { - - /** - * Creates an injector - * @param resolver that returns the current composite context - */ - public Injector<?> getInjector(ContextResolver resolver); - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/config/JavaExtensibilityElement.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/config/JavaExtensibilityElement.java deleted file mode 100644 index fba57d8254..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/config/JavaExtensibilityElement.java +++ /dev/null @@ -1,25 +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.core.extension.config; - -/** - * Serves as a marker for a metadata extensibility point. For example, {@link ImplementationProcessor}s may - * create extensibility elements which are responsible for implementing injection functionality prescribed by - * a Java source annotation. - * - * @version $$Rev$$ $$Date$$ - */ -public interface JavaExtensibilityElement { - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/ComponentNameExtensibilityElement.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/ComponentNameExtensibilityElement.java deleted file mode 100644 index e04ca34da6..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/ComponentNameExtensibilityElement.java +++ /dev/null @@ -1,52 +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.core.extension.config.extensibility; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -import org.apache.tuscany.core.injection.Injector; -import org.apache.tuscany.core.injection.MethodInjector; -import org.apache.tuscany.core.injection.SingletonObjectFactory; -import org.apache.tuscany.core.injection.FieldInjector; -import org.apache.tuscany.core.extension.config.JavaExtensibilityElement; - -/** - * @version $$Rev$$ $$Date$$ - */ -public class ComponentNameExtensibilityElement implements JavaExtensibilityElement { - - private Method method; - private Field field; - - public ComponentNameExtensibilityElement(Method m) { - method = m; - } - - public ComponentNameExtensibilityElement(Field f) { - field = f; - } - - public Injector<?> getEventInvoker(String name) { - if (method != null) { - return new MethodInjector(method, new SingletonObjectFactory<Object>(name)); - }else{ - return new FieldInjector(field, new SingletonObjectFactory<Object>(name)); - } - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/ContextExtensibilityElement.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/ContextExtensibilityElement.java deleted file mode 100644 index 9099132e36..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/ContextExtensibilityElement.java +++ /dev/null @@ -1,52 +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.core.extension.config.extensibility; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -import org.apache.tuscany.core.extension.config.JavaExtensibilityElement; -import org.apache.tuscany.core.injection.Injector; -import org.apache.tuscany.core.injection.MethodInjector; -import org.apache.tuscany.core.injection.FieldInjector; -import org.apache.tuscany.core.injection.ContextObjectFactory; -import org.apache.tuscany.core.builder.ContextResolver; - -/** - * @version $$Rev$$ $$Date$$ - */ -public class ContextExtensibilityElement implements JavaExtensibilityElement { - - private Method method; - private Field field; - - public ContextExtensibilityElement(Method m) { - method = m; - } - - public ContextExtensibilityElement(Field f) { - field = f; - } - - public Injector<?> getInjector(ContextResolver resolver) { - if (method != null) { - return new MethodInjector(method, new ContextObjectFactory(resolver)); - } else { - return new FieldInjector(field, new ContextObjectFactory(resolver)); - } - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/DestroyInvokerExtensibilityElement.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/DestroyInvokerExtensibilityElement.java deleted file mode 100644 index 9952f507b2..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/DestroyInvokerExtensibilityElement.java +++ /dev/null @@ -1,29 +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.core.extension.config.extensibility; - -import java.lang.reflect.Method; - -/** - * @version $$Rev$$ $$Date$$ - */ -public class DestroyInvokerExtensibilityElement extends InvokerExtensibilityElement{ - - public DestroyInvokerExtensibilityElement(Method m) { - super(m); - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/InitInvokerExtensibilityElement.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/InitInvokerExtensibilityElement.java deleted file mode 100644 index 4c542b4b5d..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/InitInvokerExtensibilityElement.java +++ /dev/null @@ -1,37 +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.core.extension.config.extensibility; - -import java.lang.reflect.Method; - -/** - * @version $$Rev$$ $$Date$$ - */ -public class InitInvokerExtensibilityElement extends InvokerExtensibilityElement{ - - private boolean eager; - - public InitInvokerExtensibilityElement(Method m, boolean eager) { - super(m); - this.eager = eager; - } - - public boolean isEager() { - return eager; - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/InvokerExtensibilityElement.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/InvokerExtensibilityElement.java deleted file mode 100644 index a87acd16cc..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/InvokerExtensibilityElement.java +++ /dev/null @@ -1,42 +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.core.extension.config.extensibility; - -import java.lang.reflect.Method; - -import org.apache.tuscany.core.extension.config.JavaExtensibilityElement; -import org.apache.tuscany.core.injection.MethodEventInvoker; - -/** - * @version $$Rev$$ $$Date$$ - */ -public class InvokerExtensibilityElement implements JavaExtensibilityElement { - - private Method method; - private MethodEventInvoker invoker; - - public InvokerExtensibilityElement(Method m) { - method = m; - } - - public MethodEventInvoker getEventInvoker() { - if (invoker == null) { - invoker = new MethodEventInvoker(method); - } - return invoker; - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/ContextObjectFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/ContextObjectFactory.java deleted file mode 100644 index 6facd25e59..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/ContextObjectFactory.java +++ /dev/null @@ -1,41 +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.core.injection; - -import org.apache.tuscany.core.builder.ContextResolver; -import org.apache.tuscany.core.builder.ObjectFactory; -import org.apache.tuscany.core.context.CompositeContext; - -/** - * An implementation of <code>ObjectFactory</code> that resolves the current parent context - * - * @version $Rev: 380903 $ $Date: 2006-02-25 00:53:26 -0800 (Sat, 25 Feb 2006) $ - */ -public class ContextObjectFactory implements ObjectFactory<CompositeContext> { - - private final ContextResolver resolver; - - public ContextObjectFactory(ContextResolver resolver) { - assert (resolver != null) : "Resolver cannot be null"; - this.resolver = resolver; - } - - public CompositeContext getInstance() { - return resolver.getCurrentContext(); - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/EventInvoker.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/EventInvoker.java deleted file mode 100644 index 6f5de43b96..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/EventInvoker.java +++ /dev/null @@ -1,33 +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.core.injection; - -/** - * Performs an wire on an instance - * - * @version $Rev$ $Date$ - * @see MethodEventInvoker - */ -public interface EventInvoker<T> { - - /** - * Performs the wire on a given instance - * - * @throws ObjectCallbackException - */ - void invokeEvent(T instance) throws ObjectCallbackException; -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/FactoryInitException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/FactoryInitException.java deleted file mode 100644 index 589ae796ac..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/FactoryInitException.java +++ /dev/null @@ -1,43 +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.core.injection; - -/** - * Denotes an exception initializing an object factory - * - * @version $Rev$ $Date$ - */ -public class FactoryInitException extends InjectionRuntimeException { - - public FactoryInitException(String message, Throwable cause) { - super(message, cause); - } - - public FactoryInitException(String message) { - super(message); - } - - public FactoryInitException(Throwable cause) { - super(cause); - } - - public FactoryInitException() { - super(); - } - -} - diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/FieldInjector.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/FieldInjector.java deleted file mode 100644 index 7be73462d3..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/FieldInjector.java +++ /dev/null @@ -1,53 +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.core.injection; - -import org.apache.tuscany.core.builder.ObjectFactory; - -import java.lang.reflect.Field; - -/** - * Injects a value created by an {@link ObjectFactory} on a given field - * - * @version $Rev$ $Date$ - */ -public class FieldInjector<T> implements Injector<T> { - - private final Field field; - - private final ObjectFactory<?> objectFactory; - - /** - * Create an injector and have it use the given <code>ObjectFactory</code> - * to inject a value on the instance using the reflected <code>Field</code> - */ - public FieldInjector(Field field, ObjectFactory<?> objectFactory) { - this.field = field; - this.objectFactory = objectFactory; - } - - /** - * Inject a new value on the given isntance - */ - public void inject(T instance) throws ObjectCreationException { - try { - field.set(instance, objectFactory.getInstance()); - } catch (IllegalAccessException e) { - throw new AssertionError("Field is not accessible [" + field + "]"); - } - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/InjectionRuntimeException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/InjectionRuntimeException.java deleted file mode 100644 index 2c26f3c4b1..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/InjectionRuntimeException.java +++ /dev/null @@ -1,45 +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.core.injection; - -import org.apache.tuscany.common.TuscanyRuntimeException; - -/** - * Root unchecked exception for the injection package - * - * @version $Rev$ $Date$ - */ -public abstract class InjectionRuntimeException extends TuscanyRuntimeException { - - public InjectionRuntimeException() { - super(); - } - - public InjectionRuntimeException(String message) { - super(message); - } - - public InjectionRuntimeException(String message, Throwable cause) { - super(message, cause); - } - - public InjectionRuntimeException(Throwable cause) { - super(cause); - } - -} - diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/Injector.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/Injector.java deleted file mode 100644 index 306dab3e98..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/Injector.java +++ /dev/null @@ -1,33 +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.core.injection; - -/** - * Implementations inject a pre-configured value on an instance - * - * @version $Rev$ $Date$ - * @see MethodInjector - * @see FieldInjector - */ -public interface Injector<T> { - - /** - * Inject a value on the given instance - */ - void inject(T instance) throws ObjectCreationException; - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/InterCompositeReferenceFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/InterCompositeReferenceFactory.java deleted file mode 100644 index 55d8a88790..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/InterCompositeReferenceFactory.java +++ /dev/null @@ -1,75 +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.core.injection; - -import org.apache.tuscany.core.builder.ContextResolver; -import org.apache.tuscany.core.builder.ObjectFactory; -import org.apache.tuscany.core.context.CompositeContext; -import org.apache.tuscany.core.context.Context; -import org.apache.tuscany.core.context.QualifiedName; -import org.apache.tuscany.core.context.TargetException; - -/** - * Returns a direct reference to a target service exposed in another composite, i.e. the factory avoids creating proxies - * and returns the actual target instance - * - * @version $Rev: 384135 $ $Date: 2006-03-07 22:53:58 -0800 (Tue, 07 Mar 2006) $ - */ -public class InterCompositeReferenceFactory<T> implements ObjectFactory<T> { - - private ContextResolver resolver; - - private QualifiedName targetQualifiedName; - - /** - * Reference source is an external service, target is in another module - * - * @param targetName the name of the target service - */ - public InterCompositeReferenceFactory(String targetName) { - targetQualifiedName = new QualifiedName(targetName); - } - - public void setContextResolver(ContextResolver resolver){ - this.resolver = resolver; - } - - public T getInstance() throws ObjectCreationException { - // only return entry points since this is an inter-module wire - Object o = resolver.getCurrentContext().getInstance(targetQualifiedName); - if (o != null) { - return (T) o; - } else { - // walk up the hierarchy of composite contexts - CompositeContext ctx = resolver.getCurrentContext(); - do { - if (ctx == null) { - break; // reached top of context hierarchy - } - Context compContext = ctx.getContext(targetQualifiedName.getPartName()); - if (compContext != null) { - o = compContext.getInstance(targetQualifiedName); - if (o != null) { - return (T) o; - } - } - ctx = ctx.getParent(); - } while (ctx != null); - TargetException e = new TargetException("Target reference not found"); - e.setIdentifier(targetQualifiedName.getQualifiedName()); - throw e; - } - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/JNDIObjectFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/JNDIObjectFactory.java deleted file mode 100644 index bed7db887a..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/JNDIObjectFactory.java +++ /dev/null @@ -1,46 +0,0 @@ -/** - * - * Copyright 2006 The Apache Software Foundation - * - * 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.core.injection; - -import javax.naming.Context; -import javax.naming.NamingException; - -import org.apache.tuscany.core.builder.ObjectFactory; - -/** - * An implementation of ObjectFactory that creates instances - * by looking them up in a JNDI context. - * - * @version $Rev$ $Date$ - */ -public class JNDIObjectFactory<T> implements ObjectFactory<T> { - private final Context context; - private final String name; - - public JNDIObjectFactory(Context context, String name) { - this.context = context; - this.name = name; - } - - public T getInstance() throws ObjectCreationException { - try { - return (T) context.lookup(name); - } catch (NamingException e) { - throw new ObjectCreationException(e); - } - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/MethodEventInvoker.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/MethodEventInvoker.java deleted file mode 100644 index 69c7670c03..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/MethodEventInvoker.java +++ /dev/null @@ -1,47 +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.core.injection; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - -/** - * Performs an wire on a method of a given instance - * - * @version $Rev$ $Date$ - */ -public class MethodEventInvoker<T> implements EventInvoker<T> { - private final Method method; - - /** - * Intantiates an invoker for the given method - */ - public MethodEventInvoker(Method method) { - this.method = method; - } - - public void invokeEvent(T instance) throws ObjectCallbackException { - try { - method.invoke(instance, (Object[]) null); - } catch (IllegalAccessException e) { - throw new AssertionError("Method is not accessible [" + method + "]"); - } catch (InvocationTargetException e) { - throw new ObjectCallbackException("Exception thrown by callback method [" + method + "]", e); - } - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/MethodInjector.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/MethodInjector.java deleted file mode 100644 index 6095061872..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/MethodInjector.java +++ /dev/null @@ -1,48 +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.core.injection; - -import org.apache.tuscany.core.builder.ObjectFactory; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - -/** - * Injects a value created by an {@link ObjectFactory} using a given method - * @version $Rev$ $Date$ - */ -public class MethodInjector<T> implements Injector<T> { - private final Method method; - private final ObjectFactory<?> objectFactory; - - public MethodInjector(Method method, ObjectFactory<?> objectFactory) { - this.method = method; - this.objectFactory = objectFactory; - } - - public void inject(T instance) throws ObjectCreationException { - try { - method.invoke(instance, objectFactory.getInstance()); - } catch (IllegalAccessException e) { - throw new AssertionError("Method is not accessible [" + method + "]"); - } catch (InvocationTargetException e) { - ObjectCreationException oce= new ObjectCreationException("Exception thrown by setter", e); - oce.setIdentifier(method.getName()); - throw oce; - } - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/NonProxiedTargetFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/NonProxiedTargetFactory.java deleted file mode 100644 index 7f7a307433..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/NonProxiedTargetFactory.java +++ /dev/null @@ -1,54 +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.core.injection; - -import org.apache.tuscany.core.builder.ContextResolver; -import org.apache.tuscany.core.builder.ObjectFactory; -import org.apache.tuscany.core.context.QualifiedName; -import org.apache.tuscany.model.assembly.ConfiguredService; - -/** - * Returns a direct reference to a target within the same composite, i.e. the factory avoids creating proxies and - * returns the actual target instance - * - * @version $Rev$ $Date$ - */ -public class NonProxiedTargetFactory<T> implements ObjectFactory<T> { - - private ContextResolver resolver; - - // the name of the target component/service for this reference - private QualifiedName targetName; - private QualifiedName qualifiedServiceName; - - /** - * Constructs a reference object factory from a configured reference on a type - * - * @throws FactoryInitException - */ - public NonProxiedTargetFactory(ConfiguredService targetService, ContextResolver resolver) throws FactoryInitException { - assert (targetService != null) : "Target service was null"; - assert (resolver != null) : "Context resolver was null"; - - this.resolver = resolver; - targetName = new QualifiedName(targetService.getPart().getName()); - qualifiedServiceName = new QualifiedName("./"+targetName.getPortName()); - } - - public T getInstance() throws ObjectCreationException { - return (T) resolver.getCurrentContext().getContext(targetName.getPartName()).getInstance(qualifiedServiceName); //locateInstance(targetName); //locateInstance(targetName); - } - - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/NullEventInvoker.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/NullEventInvoker.java deleted file mode 100644 index e8f109f2d8..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/NullEventInvoker.java +++ /dev/null @@ -1,30 +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.core.injection; - -/** - * A no-op invoker - * - * @version $Rev$ $Date$ - */ -public final class NullEventInvoker<T> implements EventInvoker<T> { - public static final EventInvoker<?> NULL_INVOKER = new NullEventInvoker(); - - public void invokeEvent(T instance) { - // does nothing - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/ObjectCallbackException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/ObjectCallbackException.java deleted file mode 100644 index 44edee43eb..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/ObjectCallbackException.java +++ /dev/null @@ -1,42 +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.core.injection; - -/** - * Denotes an error when invoking on an object - * - * @version $Rev$ $Date$ - */ -public class ObjectCallbackException extends InjectionRuntimeException { - - public ObjectCallbackException() { - super(); - } - - public ObjectCallbackException(String message) { - super(message); - } - - public ObjectCallbackException(String message, Throwable cause) { - super(message, cause); - } - - public ObjectCallbackException(Throwable cause) { - super(cause); - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/ObjectCreationException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/ObjectCreationException.java deleted file mode 100644 index 875eda3680..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/ObjectCreationException.java +++ /dev/null @@ -1,43 +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.core.injection; - -/** - * Denotes an error creating a new object instance - * - * @version $Rev$ $Date$ - */ -public class ObjectCreationException extends InjectionRuntimeException { - - public ObjectCreationException() { - super(); - } - - public ObjectCreationException(String message) { - super(message); - } - - public ObjectCreationException(String message, Throwable cause) { - super(message, cause); - } - - public ObjectCreationException(Throwable cause) { - super(cause); - } - -} - diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/PojoObjectFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/PojoObjectFactory.java deleted file mode 100644 index fac8248b0c..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/PojoObjectFactory.java +++ /dev/null @@ -1,76 +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.core.injection; - -import org.apache.tuscany.core.builder.ObjectFactory; - -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.util.Collections; -import java.util.List; - -/** - * Creates new instances of a Java class, calling a given set of injectors to configure the instance - * - * @version $Rev$ $Date$ - * @see Injector - */ -public class PojoObjectFactory<T> implements ObjectFactory<T> { - - private static final ObjectFactory[] NO_INIT_PARAM = {}; - - private static final List<Injector> NO_SETTER_PARAM = Collections.emptyList(); - - private final Constructor<T> ctr; - - private final ObjectFactory<?>[] initParamsArray; - - private final List<Injector> setters; - - public PojoObjectFactory(Constructor<T> ctr, List<ObjectFactory> initParams, List<Injector> setters) { - this.ctr = ctr; - if (initParams != null && initParams.size() > 0) { - initParamsArray = initParams.toArray(new ObjectFactory[initParams.size()]); - } else { - initParamsArray = NO_INIT_PARAM; - } - this.setters = setters != null ? setters : NO_SETTER_PARAM; - } - - public T getInstance() throws ObjectCreationException { - Object[] initargs = new Object[initParamsArray.length]; - // create the constructor arg array - for (int i = 0; i < initParamsArray.length; i++) { - ObjectFactory<?> objectFactory = initParamsArray[i]; - initargs[i] = objectFactory.getInstance(); - } - try { - T instance = ctr.newInstance(initargs); - // interate through the injectors and inject the instance - for (Injector<T> setter : setters) { - setter.inject(instance); - } - return instance; - } catch (InstantiationException e) { - throw new AssertionError("Class is not instantiable [" + ctr.getDeclaringClass().getName() + "]"); - } catch (IllegalAccessException e) { - throw new AssertionError("Constructor is not accessible [" + ctr + "]"); - } catch (InvocationTargetException e) { - throw new ObjectCreationException("Exception thrown by constructor [" + ctr + "]", e); - } - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/SingletonObjectFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/SingletonObjectFactory.java deleted file mode 100644 index 8a7e0bf782..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/injection/SingletonObjectFactory.java +++ /dev/null @@ -1,37 +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.core.injection; - -import org.apache.tuscany.core.builder.ObjectFactory; - -/** - * Implementation of ObjectFactory that returns a single instance, typically an immutable type. - * - * @version $Rev$ $Date$ - */ -public class SingletonObjectFactory<T> implements ObjectFactory<T> { - private final T instance; - - public SingletonObjectFactory(T instance) { - this.instance = instance; - } - - public T getInstance() { - return instance; - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/InvalidPropertyFactoryException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/InvalidPropertyFactoryException.java deleted file mode 100644 index 9ccbbb3a7a..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/InvalidPropertyFactoryException.java +++ /dev/null @@ -1,46 +0,0 @@ -/** - * - * Copyright 2006 The Apache Software Foundation - * - * 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.core.loader; - -import org.apache.tuscany.core.config.ConfigurationLoadException; - -/** - * Exception raised if there is a problem configuring a PropertyFactory. - * - * @version $Rev$ $Date$ - */ -public class InvalidPropertyFactoryException extends ConfigurationLoadException { - private static final long serialVersionUID = 5017976138519117474L; - - /** - * Constructor indicating the cause why the property factory could not be created. - * - * @param className the name of the class that is intended to be the PropertyFactory - * @param cause the Throwable that prevented the PropertyFactory from being created - */ - public InvalidPropertyFactoryException(String className, Throwable cause) { - super(className, cause); - } - - /** - * Returns the name of the property factory implementation class. - * @return the name of the property factory implementation class - */ - public String getClassName() { - return getMessage(); - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/LoaderContext.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/LoaderContext.java deleted file mode 100644 index cef7353bbf..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/LoaderContext.java +++ /dev/null @@ -1,47 +0,0 @@ -/** - * - * Copyright 2006 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.core.loader; - -import org.apache.tuscany.common.resource.ResourceLoader; - -/** - * Context holder that can be used during the load process to store information - * that is not part of the logical model. This should be regarded as transient - * and references to this context should not be stored inside the model. - * - * @version $Rev$ $Date$ - */ -public class LoaderContext { - private final ResourceLoader resourceLoader; - - /** - * Constructor specifying the loader for application resources. - * - * @param resourceLoader the loader for application resources - */ - public LoaderContext(ResourceLoader resourceLoader) { - this.resourceLoader = resourceLoader; - } - - /** - * Returns a resource loader that can be used to load application resources. - * @return a resource loader that can be used to load application resources - */ - public ResourceLoader getResourceLoader() { - return resourceLoader; - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/StAXElementLoader.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/StAXElementLoader.java deleted file mode 100644 index e1a9f55ca4..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/StAXElementLoader.java +++ /dev/null @@ -1,40 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.loader; - -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.model.assembly.AssemblyObject; - -/** - * A loader that creates a model object from a StAX input stream. - * - * @version $Rev$ $Date$ - */ -public interface StAXElementLoader<T extends AssemblyObject> { - /** - * Build the model object for an element in an XML stream. - * When this method returns the stream will be positioned on the corresponding END_ELEMENT. - * - * @param reader the XML stream reader positioned on the applicable START_ELEMENT - * @param loaderContext the context for the load operation - * @return the model object for that element - */ - T load(XMLStreamReader reader, LoaderContext loaderContext) throws XMLStreamException, ConfigurationLoadException; -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/StAXLoaderRegistry.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/StAXLoaderRegistry.java deleted file mode 100644 index a38d388815..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/StAXLoaderRegistry.java +++ /dev/null @@ -1,91 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.loader; - -import javax.xml.namespace.QName; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.model.assembly.AssemblyContext; -import org.apache.tuscany.model.assembly.AssemblyObject; - -/** - * Registry for XML loaders that can parse a StAX input stream and return model objects. - * <p/> - * Loaders will typically be contributed to the system by any extension that needs to - * handle extension specific information contained in some XML configuration file. - * The loader can be contributed as a system component with an autowire reference - * to this registry which is used during initialization to actually register. - * </p> - * This registry can also be used to parse an input stream, dispatching to the - * appropriate loader for each element accepted. Loaders can call back to the - * registry to load sub-elements that they are not able to handle directly. - * - * @version $Rev$ $Date$ - */ -public interface StAXLoaderRegistry { - /** - * Register a loader. This operation will typically be called by a loader - * during its initialization. - * - * @param element the element that should be delegated to the contibuted loader - * @param loader a loader that is being contributed to the system - */ - <T extends AssemblyObject> void registerLoader(QName element, StAXElementLoader<T> loader); - - /** - * Unregister a loader. This will typically be called by a loader as it is being destroyed. - * - * @param element the element that was being delegated to the contibuted loader - * @param loader a loader that should no longer be used - */ - <T extends AssemblyObject> void unregisterLoader(QName element, StAXElementLoader<T> loader); - - /** - * Parse the supplied XML stream dispatching to the appropriate registered loader - * for each element encountered in the stream. - * <p/> - * This method must be called with the XML cursor positioned on a START_ELEMENT event. - * When this method returns, the stream will be positioned on the corresponding - * END_ELEMENT event. - * - * @param reader the XML stream to parse - * @param loaderContext - * @return the model object obtained by parsing the current element on the stream - * @throws XMLStreamException if there was a problem reading the stream - */ - AssemblyObject load(XMLStreamReader reader, LoaderContext loaderContext) throws XMLStreamException, ConfigurationLoadException; - - /** - * Hack to allow loaders to initialize model objects on the fly. - * Remove when initialization has been moved from the model implementation to the loader. - * - * @return the model context for this load operation - */ - @Deprecated - AssemblyContext getContext(); - - /** - * Hack to allow loaders to initialize model objects on the fly. - * Remove when initialization has been moved from the model implementation to the loader. - * - * @param context the model context for this load operation - */ - @Deprecated - void setContext(AssemblyContext context); -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/StAXPropertyFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/StAXPropertyFactory.java deleted file mode 100644 index a05597b51b..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/StAXPropertyFactory.java +++ /dev/null @@ -1,42 +0,0 @@ -/** - * - * Copyright 2006 The Apache Software Foundation - * - * 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.core.loader; - -import org.apache.tuscany.core.builder.ObjectFactory; -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.model.assembly.Property; - -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; - -/** - * A factory that will create an ObjectFactory for a property by parsing a StAX XMLStreamReader. - * - * @version $Rev$ $Date$ - */ -public interface StAXPropertyFactory<T> { - /** - * Return an ObjectFactory for instances of a property defined in an XML stream. - * - * @param reader the reader to use to access the XML stream - * @param property the Property definition that the resulting ObjectFactory must be able to assign to - * @return an ObjectFactory that can produce instances that can be assigned to the supplied Property - * @throws XMLStreamException if there is a problem reading the stream - * @throws ConfigurationLoadException if there is a problem creating the ObjectFactory - */ - ObjectFactory<T> createObjectFactory(XMLStreamReader reader, Property property) throws XMLStreamException, ConfigurationLoadException; -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/StAXUtil.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/StAXUtil.java deleted file mode 100644 index f9ac2b0559..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/StAXUtil.java +++ /dev/null @@ -1,160 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.loader; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import javax.xml.stream.XMLStreamConstants; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; - -import org.apache.tuscany.core.config.ComponentTypeIntrospector; -import org.apache.tuscany.core.config.ConfigurationException; -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.config.impl.Java5ComponentTypeIntrospector; -import org.apache.tuscany.core.config.processor.ProcessorUtils; -import org.apache.tuscany.core.loader.assembly.ComponentLoader; -import org.apache.tuscany.core.loader.assembly.EntryPointLoader; -import org.apache.tuscany.core.loader.assembly.InterfaceJavaLoader; -import org.apache.tuscany.core.loader.assembly.ModuleFragmentLoader; -import org.apache.tuscany.core.loader.assembly.ModuleLoader; -import org.apache.tuscany.core.loader.impl.StAXLoaderRegistryImpl; -import org.apache.tuscany.core.loader.impl.StringParserPropertyFactory; -import org.apache.tuscany.core.loader.system.SystemBindingLoader; -import org.apache.tuscany.core.loader.system.SystemImplementationLoader; -import org.apache.tuscany.core.system.assembly.SystemAssemblyFactory; -import org.apache.tuscany.core.system.assembly.SystemImplementation; -import org.apache.tuscany.core.system.assembly.impl.SystemAssemblyFactoryImpl; -import org.apache.tuscany.model.assembly.AssemblyContext; -import org.apache.tuscany.model.assembly.Component; -import org.apache.tuscany.model.assembly.EntryPoint; -import org.apache.tuscany.model.assembly.Module; -import org.apache.tuscany.model.assembly.ModuleComponent; -import org.apache.tuscany.model.assembly.Multiplicity; -import org.apache.tuscany.model.assembly.OverrideOption; -import org.apache.tuscany.model.assembly.Scope; - -/** - * @version $Rev$ $Date$ - */ -public final class StAXUtil { - private static final Map<String, Multiplicity> MULTIPLICITY = new HashMap<String, Multiplicity>(4); - private static final Map<String, OverrideOption> OVERRIDE_OPTIONS = new HashMap<String, OverrideOption>(3); - - static { - MULTIPLICITY.put("0..1", Multiplicity.ZERO_ONE); - MULTIPLICITY.put("1..1", Multiplicity.ONE_ONE); - MULTIPLICITY.put("0..n", Multiplicity.ZERO_N); - MULTIPLICITY.put("1..n", Multiplicity.ONE_N); - - OVERRIDE_OPTIONS.put("no", OverrideOption.NO); - OVERRIDE_OPTIONS.put("may", OverrideOption.MAY); - OVERRIDE_OPTIONS.put("must", OverrideOption.MUST); - } - - private StAXUtil() { - } - - public static void skipToEndElement(XMLStreamReader reader) throws XMLStreamException { - int depth = 0; - while (true) { - int event = reader.next(); - if (event == XMLStreamConstants.START_ELEMENT) { - depth++; - } else if (event == XMLStreamConstants.END_ELEMENT) { - if (depth == 0) { - return; - } - depth--; - } - } - } - - public static Multiplicity multiplicity(String multiplicity, Multiplicity def) { - return multiplicity == null ? def : MULTIPLICITY.get(multiplicity); - } - - public static OverrideOption overrideOption(String overrideOption, OverrideOption def) { - return overrideOption == null ? def : OVERRIDE_OPTIONS.get(overrideOption); - } - - public static ModuleComponent bootstrapLoader(String name, AssemblyContext context) throws ConfigurationLoadException { - SystemAssemblyFactory factory = new SystemAssemblyFactoryImpl(); - ComponentTypeIntrospector introspector = ProcessorUtils.createCoreIntrospector(factory); - Module module = factory.createModule(); - module.setName("org.apache.tuscany.core.system.loader"); - - List<Component> components = module.getComponents(); - - // bootstrap the minimal set of loaders needed to read the system module files - // all others should be defined in the system.module file - components.add(bootstrapLoader(factory, introspector, ModuleLoader.class)); - components.add(bootstrapLoader(factory, introspector, ModuleFragmentLoader.class)); - Component propFactory = factory.createSystemComponent("org.apache.tuscany.core.system.loader.DefaultPropertyFactory", StAXPropertyFactory.class, StringParserPropertyFactory.class, Scope.MODULE); - introspector.introspect(StAXPropertyFactory.class); - components.add(propFactory); - components.add(bootstrapLoader(factory, introspector, ComponentLoader.class)); - components.add(bootstrapLoader(factory, introspector, EntryPointLoader.class)); - components.add(bootstrapLoader(factory, introspector, InterfaceJavaLoader.class)); - components.add(bootstrapLoader(factory, introspector, SystemImplementationLoader.class)); - components.add(bootstrapLoader(factory, introspector, SystemBindingLoader.class)); - // do not add additional loaders above - they should be in the system.module file - - // bootstrap the registries needed by the bootstrap loaders above - bootstrapService(factory, introspector, module, StAXLoaderRegistry.class, StAXLoaderRegistryImpl.class); - bootstrapService(factory, introspector, module, SystemAssemblyFactory.class, SystemAssemblyFactoryImpl.class); - bootstrapService(factory, introspector, module, ComponentTypeIntrospector.class, Java5ComponentTypeIntrospector.class); - - ModuleComponent mc = factory.createModuleComponent(); - mc.setName(name); - mc.setImplementation(module); - mc.initialize(context); - return mc; - } - - private static Component bootstrapLoader(SystemAssemblyFactory factory, ComponentTypeIntrospector introspector, Class<?> loaderClass) { - SystemImplementation implementation = factory.createSystemImplementation(); - implementation.setImplementationClass(loaderClass); - try { - implementation.setComponentType(introspector.introspect(loaderClass)); - } catch (ConfigurationException e) { - throw (AssertionError) new AssertionError("Invalid bootstrap loader").initCause(e); - } - Component component = factory.createSimpleComponent(); - component.setName(loaderClass.getName()); - component.setImplementation(implementation); - return component; - } - - private static <T> void bootstrapService(SystemAssemblyFactory factory, ComponentTypeIntrospector introspector, Module module, Class<T> service, Class<? extends T> impl) { - String epName = service.getName(); - String compName = impl.getName(); - - Component component = factory.createSystemComponent(compName, service, impl, Scope.MODULE); - try { - component.getImplementation().setComponentType(introspector.introspect(impl)); - } catch (ConfigurationException e) { - throw (AssertionError) new AssertionError("Invalid bootstrap loader").initCause(e); - } - - EntryPoint entryPoint = factory.createSystemEntryPoint(epName, service, compName); - - module.getComponents().add(component); - module.getEntryPoints().add(entryPoint); - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/WSDLDefinitionRegistry.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/WSDLDefinitionRegistry.java deleted file mode 100644 index f88e0f0b35..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/WSDLDefinitionRegistry.java +++ /dev/null @@ -1,95 +0,0 @@ -/** - * - * Copyright 2006 The Apache Software Foundation - * - * 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.core.loader; - -import java.net.URL; -import java.util.List; -import java.io.IOException; -import javax.wsdl.Definition; -import javax.wsdl.PortType; -import javax.wsdl.Service; -import javax.wsdl.WSDLException; -import javax.wsdl.extensions.ExtensionRegistry; -import javax.xml.namespace.QName; - -import org.apache.tuscany.common.resource.ResourceLoader; - -/** - * @version $Rev$ $Date$ - */ -public interface WSDLDefinitionRegistry { - /** - * Loads and registers a WSDL Definition. - * - * @param namespace the expected namespace, or null if any namespace should be allowed - * @param location the location to load the definition from - * @param resourceLoader the application resource loader - * @return the loaded Definition - * @throws IOException if there was a problem reading the document - * @throws WSDLException if there was a problem parsing the definition - */ - Definition loadDefinition(String namespace, URL location, ResourceLoader resourceLoader) throws IOException, WSDLException; - - /** - * Load and register a WSDL definition as specified in a WSDL2.0 wsdlLocation attribute. - * - * @param wsdlLocation the value of the wsdlLocation attribute - * @param resourceLoader application resource loader used to support relative locations - * @return the loaded Definition - * @throws IOException if there was a problem reading the document - * @throws WSDLException if there was a problem parsing the definition - */ - Definition loadDefinition(String wsdlLocation, ResourceLoader resourceLoader) throws IOException, WSDLException; - - /** - * Returns the PortType with the supplied qualified name, or null if no such port has been defined. - * - * @param name the qualified name of the WSDL portType - * @param resourceLoader the application resource loader - * @return the PortType for the supplied name, or null if none has been defined - */ - PortType getPortType(QName name, ResourceLoader resourceLoader); - - /** - * Returns the Service with the supplied qualified name, or null if no such service has been defined. - * - * @param name the qualified name of the WSDL service - * @param resourceLoader the application resource loader - * @return the Service for the supplied name, or null if none has been defined - */ - Service getService(QName name, ResourceLoader resourceLoader); - - - /** - * Returns a list of definitions that have been loaded for the given namespace, or null if - * no WSDL documents have been loaded for the given namespace - * - * @param namespace the namespace to lookup - * @param resourceLoader the application resource loader - * @return The list of definitions that have been loaded for the given namespace, or null - */ - List<Definition> getDefinitionsForNamespace(String namespace, ResourceLoader resourceLoader); - - - /** - * Returns the ExtensionRegistry that is used when parsing WSDL documents during the - * loadDefinition call. - * - * @return the ExtensionRegistry that is used when parsing WSDL documents. - */ - ExtensionRegistry getExtensionRegistry(); -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/AbstractLoader.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/AbstractLoader.java deleted file mode 100644 index fce343df4b..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/AbstractLoader.java +++ /dev/null @@ -1,61 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.loader.assembly; - -import javax.xml.namespace.QName; - -import org.apache.tuscany.core.loader.StAXElementLoader; -import org.apache.tuscany.core.loader.StAXLoaderRegistry; -import org.apache.tuscany.core.system.annotation.Autowire; -import org.apache.tuscany.core.system.assembly.SystemAssemblyFactory; -import org.apache.tuscany.model.assembly.AssemblyObject; -import org.osoa.sca.annotations.Destroy; -import org.osoa.sca.annotations.Init; - -/** - * @version $Rev$ $Date$ - */ -public abstract class AbstractLoader<T extends AssemblyObject> implements StAXElementLoader<T> { - protected SystemAssemblyFactory factory; - protected StAXLoaderRegistry registry; - - @Autowire - public void setFactory(SystemAssemblyFactory factory) { - this.factory = factory; - } - - @Autowire - public void setRegistry(StAXLoaderRegistry registry) { - this.registry = registry; - } - - @Init(eager = true) - public void start() { - registry.registerLoader(getXMLType(), this); - } - - @Destroy - public void stop() { - registry.unregisterLoader(getXMLType(), this); - } - - /** - * Returns the QName of the element that this implementation handles. - * @return the QName of the element that this implementation handles - */ - protected abstract QName getXMLType(); -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/AssemblyConstants.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/AssemblyConstants.java deleted file mode 100644 index 73ef4119f8..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/AssemblyConstants.java +++ /dev/null @@ -1,47 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.loader.assembly; - -import javax.xml.namespace.QName; - -/** - * @version $Rev$ $Date$ - */ -public final class AssemblyConstants { - public static final String SCA_NAMESPACE = "http://www.osoa.org/xmlns/sca/0.9"; - - public static final QName COMPONENT = new QName(SCA_NAMESPACE, "component"); - public static final QName COMPONENT_TYPE = new QName(SCA_NAMESPACE, "componentType"); - public static final QName ENTRY_POINT = new QName(SCA_NAMESPACE, "entryPoint"); - public static final QName EXTERNAL_SERVICE = new QName(SCA_NAMESPACE, "externalService"); - public static final QName IMPORT_WSDL = new QName(SCA_NAMESPACE, "import.wsdl"); - public static final QName INTERFACE_JAVA = new QName(SCA_NAMESPACE, "interface.java"); - public static final QName INTERFACE_WSDL = new QName(SCA_NAMESPACE, "interface.wsdl"); - public static final QName MODULE = new QName(SCA_NAMESPACE, "module"); - public static final QName MODULE_FRAGMENT = new QName(SCA_NAMESPACE, "moduleFragment"); - public static final QName PROPERTY = new QName(SCA_NAMESPACE, "property"); - public static final QName PROPERTIES = new QName(SCA_NAMESPACE, "properties"); - public static final QName REFERENCE = new QName(SCA_NAMESPACE, "reference"); - public static final QName REFERENCES = new QName(SCA_NAMESPACE, "references"); - public static final QName SERVICE = new QName(SCA_NAMESPACE, "service"); - public static final QName WIRE = new QName(SCA_NAMESPACE, "wire"); - public static final QName WIRE_SOURCE = new QName(SCA_NAMESPACE, "source.uri"); - public static final QName WIRE_TARGET = new QName(SCA_NAMESPACE, "target.uri"); - - private AssemblyConstants() { - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ComponentLoader.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ComponentLoader.java deleted file mode 100644 index 0fa3e7ddeb..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ComponentLoader.java +++ /dev/null @@ -1,189 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.loader.assembly; - -import java.util.List; -import javax.xml.namespace.QName; -import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; -import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; - -import org.apache.tuscany.common.resource.ResourceLoader; -import org.apache.tuscany.core.builder.ObjectFactory; -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.loader.InvalidPropertyFactoryException; -import org.apache.tuscany.core.loader.LoaderContext; -import org.apache.tuscany.core.loader.StAXPropertyFactory; -import org.apache.tuscany.core.loader.StAXUtil; -import static org.apache.tuscany.core.loader.assembly.AssemblyConstants.*; -import org.apache.tuscany.core.system.annotation.Autowire; -import org.apache.tuscany.model.assembly.AssemblyObject; -import org.apache.tuscany.model.assembly.Component; -import org.apache.tuscany.model.assembly.ComponentType; -import org.apache.tuscany.model.assembly.ConfiguredProperty; -import org.apache.tuscany.model.assembly.ConfiguredReference; -import org.apache.tuscany.model.assembly.Implementation; -import org.apache.tuscany.model.assembly.OverrideOption; -import org.apache.tuscany.model.assembly.Property; -import org.osoa.sca.annotations.Scope; - -/** - * @version $Rev$ $Date$ - */ -@Scope("MODULE") -public class ComponentLoader extends AbstractLoader { - private StAXPropertyFactory<?> defaultPropertyFactory; - - @Autowire - public void setDefaultPropertyFactory(StAXPropertyFactory<?> defaultPropertyFactory) { - this.defaultPropertyFactory = defaultPropertyFactory; - } - - public QName getXMLType() { - return COMPONENT; - } - - public Component load(XMLStreamReader reader, LoaderContext loaderContext) throws XMLStreamException, ConfigurationLoadException { - assert COMPONENT.equals(reader.getName()); - - Component component = factory.createSimpleComponent(); - component.setName(reader.getAttributeValue(null, "name")); - - while (true) { - switch (reader.next()) { - case START_ELEMENT: - QName name = reader.getName(); - if (PROPERTIES.equals(name)) { - loadProperties(reader, loaderContext.getResourceLoader(), component); - } else if (REFERENCES.equals(name)) { - loadReferences(reader, component); - } else { - AssemblyObject o = registry.load(reader, loaderContext); - if (o instanceof Implementation) { - Implementation impl = (Implementation) o; - impl.initialize(registry.getContext()); - component.setImplementation(impl); - } - } - reader.next(); - break; - case END_ELEMENT: - List<Property> props = component.getImplementation().getComponentType().getProperties(); - for (Property property : props) { - if (property.isRequired()) { - if (component.getConfiguredProperty(property.getName()) == null) { - ConfigurationLoadException e = new ConfigurationLoadException("Required property not configured"); - e.setIdentifier(property.getName()); - throw e; - } - } - } - return component; - } - } - } - - protected void loadProperties(XMLStreamReader reader, ResourceLoader resourceLoader, Component<?> component) throws XMLStreamException, ConfigurationLoadException { - ComponentType componentType = component.getImplementation().getComponentType(); - List<ConfiguredProperty> configuredProperties = component.getConfiguredProperties(); - - while (true) { - switch (reader.next()) { - case START_ELEMENT: - String name = reader.getLocalName(); - Property property = componentType.getProperty(name); - if (property == null) { - throw new ConfigurationLoadException(name); - } - OverrideOption override = StAXUtil.overrideOption(reader.getAttributeValue(null, "override"), OverrideOption.NO); - -// get a factory for the property - StAXPropertyFactory<?> propertyFactory; - String factoryName = reader.getAttributeValue(null, "factory"); - if (factoryName == null) { - propertyFactory = defaultPropertyFactory; - } else { - propertyFactory = getPropertyFactory(factoryName, resourceLoader); - } - - // create the property value - // FIXME to support complex types we probably should store the factory in the ConfiguredProperty - // FIXME instead of the value as the value may be mutable and should not be shared between instances - ObjectFactory<?> objectFactory = propertyFactory.createObjectFactory(reader, property); - Object value = objectFactory.getInstance(); - - // create the configured property definition - ConfiguredProperty configuredProperty = factory.createConfiguredProperty(); - configuredProperty.setName(name); - configuredProperty.setValue(value); - configuredProperty.setOverrideOption(override); - configuredProperties.add(configuredProperty); - break; - case END_ELEMENT: - return; - } - } - } - - protected StAXPropertyFactory<?> getPropertyFactory(String factoryName, ResourceLoader resourceLoader) throws InvalidPropertyFactoryException { - Class<?> impl; - try { - // try to load factory from application classloader - impl = resourceLoader.loadClass(factoryName); - } catch (ClassNotFoundException e) { - try { - // try to load factory from container classloader - impl = Class.forName(factoryName); - } catch (ClassNotFoundException e1) { - throw new InvalidPropertyFactoryException(factoryName, e); - } - } - try { - return (StAXPropertyFactory<?>) impl.newInstance(); - } catch (InstantiationException e) { - throw new InvalidPropertyFactoryException(factoryName, e); - } catch (IllegalAccessException e) { - throw new InvalidPropertyFactoryException(factoryName, e); - } catch (ClassCastException e) { - throw new InvalidPropertyFactoryException(factoryName, e); - } - } - - protected void loadReferences(XMLStreamReader reader, Component<?> component) throws XMLStreamException { - List<ConfiguredReference> configuredReferences = component.getConfiguredReferences(); - while (true) { - switch (reader.next()) { - case START_ELEMENT: - String name = reader.getLocalName(); - String uri = reader.getElementText(); - - ConfiguredReference configuredReference = component.getConfiguredReference(name); - if (configuredReference == null) { - configuredReference = factory.createConfiguredReference(); - configuredReference.setName(name); - configuredReferences.add(configuredReference); - } - - configuredReference.getTargets().add(uri); - break; - case END_ELEMENT: - return; - } - } - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ComponentTypeLoader.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ComponentTypeLoader.java deleted file mode 100644 index fdb8893830..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ComponentTypeLoader.java +++ /dev/null @@ -1,65 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.loader.assembly; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import static org.apache.tuscany.core.loader.assembly.AssemblyConstants.COMPONENT_TYPE; -import org.apache.tuscany.core.loader.LoaderContext; -import org.apache.tuscany.model.assembly.AssemblyObject; -import org.apache.tuscany.model.assembly.ComponentType; -import org.apache.tuscany.model.assembly.Property; -import org.apache.tuscany.model.assembly.Reference; -import org.apache.tuscany.model.assembly.Service; -import org.osoa.sca.annotations.Scope; - -import javax.xml.namespace.QName; -import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; -import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; - -/** - * @version $Rev$ $Date$ - */ -@Scope("MODULE") -public class ComponentTypeLoader extends AbstractLoader { - public QName getXMLType() { - return COMPONENT_TYPE; - } - - public ComponentType load(XMLStreamReader reader, LoaderContext loaderContext) throws XMLStreamException, ConfigurationLoadException { - assert COMPONENT_TYPE.equals(reader.getName()); - ComponentType componentType = factory.createComponentType(); - - while (true) { - switch (reader.next()) { - case START_ELEMENT: - AssemblyObject o = registry.load(reader, loaderContext); - if (o instanceof Service) { - componentType.getServices().add((Service) o); - } else if (o instanceof Reference) { - componentType.getReferences().add((Reference) o); - } else if (o instanceof Property) { - componentType.getProperties().add((Property) o); - } - break; - case END_ELEMENT: - return componentType; - } - } - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/CompositeLoader.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/CompositeLoader.java deleted file mode 100644 index 9b22a24784..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/CompositeLoader.java +++ /dev/null @@ -1,62 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.loader.assembly; - -import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; -import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.loader.LoaderContext; -import org.apache.tuscany.model.assembly.AssemblyObject; -import org.apache.tuscany.model.assembly.Component; -import org.apache.tuscany.model.assembly.Composite; -import org.apache.tuscany.model.assembly.EntryPoint; -import org.apache.tuscany.model.assembly.ExternalService; -import org.apache.tuscany.model.assembly.ImportWSDL; -import org.apache.tuscany.model.assembly.Wire; - -/** - * @version $Rev$ $Date$ - */ -public abstract class CompositeLoader extends AbstractLoader { - public void loadComposite(XMLStreamReader reader, Composite composite, LoaderContext loaderContext) throws XMLStreamException, ConfigurationLoadException { - composite.setName(reader.getAttributeValue(null, "name")); - while (true) { - switch (reader.next()) { - case START_ELEMENT: - AssemblyObject o = registry.load(reader, loaderContext); - if (o instanceof EntryPoint) { - composite.getEntryPoints().add((EntryPoint) o); - } else if (o instanceof ExternalService) { - composite.getExternalServices().add((ExternalService) o); - } else if (o instanceof Component) { - composite.getComponents().add((Component) o); - } else if (o instanceof Wire) { - composite.getWires().add((Wire) o); - } else if (o instanceof ImportWSDL) { - composite.getWSDLImports().add((ImportWSDL) o); - } - reader.next(); - break; - case END_ELEMENT: - return; - } - } - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/EntryPointLoader.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/EntryPointLoader.java deleted file mode 100644 index 14b60964d5..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/EntryPointLoader.java +++ /dev/null @@ -1,90 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.loader.assembly; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.loader.StAXUtil; -import org.apache.tuscany.core.loader.LoaderContext; -import static org.apache.tuscany.core.loader.assembly.AssemblyConstants.ENTRY_POINT; -import org.apache.tuscany.model.assembly.AssemblyObject; -import org.apache.tuscany.model.assembly.Binding; -import org.apache.tuscany.model.assembly.ConfiguredReference; -import org.apache.tuscany.model.assembly.ConfiguredService; -import org.apache.tuscany.model.assembly.EntryPoint; -import org.apache.tuscany.model.assembly.Multiplicity; -import org.apache.tuscany.model.assembly.Reference; -import org.apache.tuscany.model.assembly.Service; -import org.apache.tuscany.model.assembly.ServiceContract; -import org.osoa.sca.annotations.Scope; - -import javax.xml.namespace.QName; -import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; -import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; - -/** - * @version $Rev$ $Date$ - */ -@Scope("MODULE") -public class EntryPointLoader extends AbstractLoader { - public QName getXMLType() { - return ENTRY_POINT; - } - - public EntryPoint load(XMLStreamReader reader, LoaderContext loaderContext) throws XMLStreamException, ConfigurationLoadException { - assert ENTRY_POINT.equals(reader.getName()); - EntryPoint entryPoint = factory.createEntryPoint(); - String name = reader.getAttributeValue(null, "name"); - entryPoint.setName(name); - - Service service = factory.createService(); - service.setName(name); - ConfiguredService configuredService = factory.createConfiguredService(); - configuredService.setPort(service); - entryPoint.setConfiguredService(configuredService); - - Reference reference = factory.createReference(); - reference.setMultiplicity(StAXUtil.multiplicity(reader.getAttributeValue(null, "multiplicity"), Multiplicity.ONE_ONE)); - ConfiguredReference configuredReference = factory.createConfiguredReference(); - configuredReference.setPort(reference); - entryPoint.setConfiguredReference(configuredReference); - - while (true) { - switch (reader.next()) { - case START_ELEMENT: - QName qname = reader.getName(); - if (AssemblyConstants.REFERENCE.equals(qname)) { - String uri = reader.getElementText(); - configuredReference.getTargets().add(uri); - } else { - AssemblyObject o = registry.load(reader, loaderContext); - if (o instanceof Binding) { - entryPoint.getBindings().add((Binding) o); - } else if (o instanceof ServiceContract) { - service.setServiceContract((ServiceContract) o); - reference.setServiceContract((ServiceContract) o); - } - } - reader.next(); - break; - case END_ELEMENT: - return entryPoint; - } - } - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ExternalServiceLoader.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ExternalServiceLoader.java deleted file mode 100644 index 4910c016d8..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ExternalServiceLoader.java +++ /dev/null @@ -1,75 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.loader.assembly; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.loader.StAXUtil; -import org.apache.tuscany.core.loader.LoaderContext; -import static org.apache.tuscany.core.loader.assembly.AssemblyConstants.EXTERNAL_SERVICE; -import org.apache.tuscany.model.assembly.AssemblyObject; -import org.apache.tuscany.model.assembly.Binding; -import org.apache.tuscany.model.assembly.ConfiguredService; -import org.apache.tuscany.model.assembly.ExternalService; -import org.apache.tuscany.model.assembly.OverrideOption; -import org.apache.tuscany.model.assembly.Service; -import org.apache.tuscany.model.assembly.ServiceContract; -import org.osoa.sca.annotations.Scope; - -import javax.xml.namespace.QName; -import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; -import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; - -/** - * @version $Rev$ $Date$ - */ -@Scope("MODULE") -public class ExternalServiceLoader extends AbstractLoader { - public QName getXMLType() { - return EXTERNAL_SERVICE; - } - - public ExternalService load(XMLStreamReader reader, LoaderContext loaderContext) throws XMLStreamException, ConfigurationLoadException { - assert EXTERNAL_SERVICE.equals(reader.getName()); - String name = reader.getAttributeValue(null, "name"); - ExternalService externalService = factory.createExternalService(); - externalService.setName(name); - externalService.setOverrideOption(StAXUtil.overrideOption(reader.getAttributeValue(null, "overridable"), OverrideOption.NO)); - - while (true) { - switch (reader.next()) { - case START_ELEMENT: - AssemblyObject o = registry.load(reader, loaderContext); - if (o instanceof ServiceContract) { - Service service = factory.createService(); - service.setName(name); - service.setServiceContract((ServiceContract) o); - ConfiguredService configuredService = factory.createConfiguredService(); - configuredService.setPort(service); - externalService.setConfiguredService(configuredService); - } else if (o instanceof Binding) { - externalService.getBindings().add((Binding) o); - } - reader.next(); - break; - case END_ELEMENT: - return externalService; - } - } - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ImportWSDLLoader.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ImportWSDLLoader.java deleted file mode 100644 index 6981f05372..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ImportWSDLLoader.java +++ /dev/null @@ -1,95 +0,0 @@ -/** - * - * Copyright 2006 The Apache Software Foundation - * - * 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.core.loader.assembly; - -import static org.apache.tuscany.core.loader.assembly.AssemblyConstants.IMPORT_WSDL; - -import java.io.IOException; -import java.net.URL; - -import javax.wsdl.Definition; -import javax.wsdl.WSDLException; -import javax.xml.namespace.QName; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; - -import org.apache.tuscany.common.resource.ResourceLoader; -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.config.MissingResourceException; -import org.apache.tuscany.core.config.SidefileLoadException; -import org.apache.tuscany.core.loader.LoaderContext; -import org.apache.tuscany.core.loader.StAXUtil; -import org.apache.tuscany.core.loader.WSDLDefinitionRegistry; -import org.apache.tuscany.core.system.annotation.Autowire; -import org.apache.tuscany.model.assembly.ImportWSDL; -import org.osoa.sca.annotations.Scope; - -/** - * Loader that handles <import.wsdl> elements. - * - * @version $Rev$ $Date$ - */ -@Scope("MODULE") -public class ImportWSDLLoader extends AbstractLoader { - private WSDLDefinitionRegistry wsdlRegistry; - - @Autowire - public void setWsdlRegistry(WSDLDefinitionRegistry wsdlRegistry) { - this.wsdlRegistry = wsdlRegistry; - } - - public QName getXMLType() { - return IMPORT_WSDL; - } - - public ImportWSDL load(XMLStreamReader reader, LoaderContext loaderContext) throws XMLStreamException, ConfigurationLoadException { - assert AssemblyConstants.IMPORT_WSDL.equals(reader.getName()); - String namespace = reader.getAttributeValue(null, "namespace"); - String location = reader.getAttributeValue(null, "location"); - if (location == null) - location = reader.getAttributeValue(null, "wsdlLocation"); - ImportWSDL importWSDL = factory.createImportWSDL(location, namespace); - - Definition definition = loadDefinition(namespace, location, loaderContext.getResourceLoader()); -// importWSDL.setDefinition(definition); - - StAXUtil.skipToEndElement(reader); - return importWSDL; - } - - protected Definition loadDefinition(String namespace, String location, ResourceLoader resourceLoader) throws MissingResourceException, SidefileLoadException { - Definition definition; - URL wsdlURL = resourceLoader.getResource(location); - if (wsdlURL == null) { - throw new MissingResourceException(location); - } - - try { - definition = wsdlRegistry.loadDefinition(namespace, wsdlURL, resourceLoader); - } catch (IOException e) { - SidefileLoadException sfe = new SidefileLoadException(e.getMessage()); - sfe.setResourceURI(location); - throw sfe; - } catch (WSDLException e) { - SidefileLoadException sfe = new SidefileLoadException(e.getMessage()); - sfe.setResourceURI(location); - throw sfe; - } - - return definition; - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/InterfaceJavaLoader.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/InterfaceJavaLoader.java deleted file mode 100644 index 602cf2cc0a..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/InterfaceJavaLoader.java +++ /dev/null @@ -1,45 +0,0 @@ -/** - * - * Copyright 2006 The Apache Software Foundation - * - * 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.core.loader.assembly; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.loader.LoaderContext; -import org.apache.tuscany.model.assembly.Scope; -import org.apache.tuscany.model.types.java.JavaServiceContract; - -import javax.xml.namespace.QName; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; - -/** - * @version $Rev$ $Date$ - */ -@org.osoa.sca.annotations.Scope("MODULE") -public class InterfaceJavaLoader extends AbstractLoader { - public QName getXMLType() { - return AssemblyConstants.INTERFACE_JAVA; - } - - public JavaServiceContract load(XMLStreamReader reader, LoaderContext loaderContext) throws XMLStreamException, ConfigurationLoadException { - assert AssemblyConstants.INTERFACE_JAVA.equals(reader.getName()); - JavaServiceContract serviceContract = factory.createJavaServiceContract(); - serviceContract.setScope(Scope.INSTANCE); - serviceContract.setInterfaceName(reader.getAttributeValue(null, "interface")); - serviceContract.setCallbackInterfaceName(reader.getAttributeValue(null, "callbackInterface")); - return serviceContract; - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/InterfaceWSDLLoader.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/InterfaceWSDLLoader.java deleted file mode 100644 index 9617cf805f..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/InterfaceWSDLLoader.java +++ /dev/null @@ -1,110 +0,0 @@ -/** - * - * Copyright 2006 The Apache Software Foundation - * - * 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.core.loader.assembly; - -import java.io.IOException; - -import org.apache.tuscany.common.resource.ResourceLoader; -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.config.MissingInterfaceException; -import org.apache.tuscany.core.loader.WSDLDefinitionRegistry; -import org.apache.tuscany.core.loader.StAXUtil; -import org.apache.tuscany.core.loader.LoaderContext; -import org.apache.tuscany.core.system.annotation.Autowire; -import org.apache.tuscany.model.assembly.Scope; -import org.apache.tuscany.model.types.wsdl.WSDLServiceContract; - -import javax.xml.namespace.QName; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; -import javax.wsdl.PortType; -import javax.wsdl.WSDLException; - -/** - * @version $Rev$ $Date$ - */ -@org.osoa.sca.annotations.Scope("MODULE") -public class InterfaceWSDLLoader extends AbstractLoader { - private static final String WSDLI = "http://www.w3.org/2006/01/wsdl-instance"; - private static final String WSDLI_LOCATION = "wsdlLocation"; - - private WSDLDefinitionRegistry wsdlRegistry; - - @Autowire - public void setWsdlRegistry(WSDLDefinitionRegistry wsdlRegistry) { - this.wsdlRegistry = wsdlRegistry; - } - - public QName getXMLType() { - return AssemblyConstants.INTERFACE_WSDL; - } - - public WSDLServiceContract load(XMLStreamReader reader, LoaderContext loaderContext) throws XMLStreamException, ConfigurationLoadException { - assert AssemblyConstants.INTERFACE_WSDL.equals(reader.getName()); - WSDLServiceContract serviceContract = factory.createWSDLServiceContract(); - serviceContract.setScope(Scope.INSTANCE); - - ResourceLoader resourceLoader = loaderContext.getResourceLoader(); - - String location = reader.getAttributeValue(WSDLI, WSDLI_LOCATION); - if (location != null) { - try { - wsdlRegistry.loadDefinition(location, resourceLoader); - } catch (IOException e) { - throw new MissingInterfaceException(e); - } catch (WSDLException e) { - throw new MissingInterfaceException(e); - } - } - - String portTypeURI = reader.getAttributeValue(null, "interface"); - if (portTypeURI != null) { - serviceContract.setPortType(getPortType(portTypeURI, resourceLoader)); - } - - portTypeURI = reader.getAttributeValue(null, "callbackInterface"); - if (portTypeURI != null) { - serviceContract.setCallbackPortType(getPortType(portTypeURI, resourceLoader)); - } - StAXUtil.skipToEndElement(reader); - return serviceContract; - } - - protected PortType getPortType(String uri, ResourceLoader resourceLoader) throws MissingInterfaceException { - - // We currently support two syntaxes for specifying a WSDL portType: - // namespace#portTypeName, this is what we supported in the initial contribution, we will - // deprecate this after M1 - // namespace#wsdl.interface(portTypeName), this is the WSDL 2.0 syntax - - int index = uri.indexOf('#'); - String namespace = uri.substring(0, index); - String fragment = uri.substring(index + 1); - String localName; - if (fragment.startsWith("wsdl.interface(") && fragment.endsWith(")")) { - localName = fragment.substring(15, fragment.length()-1); - } else { - localName = fragment; - } - QName qname = new QName(namespace, localName); - PortType portType = wsdlRegistry.getPortType(qname, resourceLoader); - if (portType == null) { - throw new MissingInterfaceException(uri); - } - return portType; - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ModuleFragmentLoader.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ModuleFragmentLoader.java deleted file mode 100644 index 4b3e96cfab..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ModuleFragmentLoader.java +++ /dev/null @@ -1,42 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.loader.assembly; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.loader.LoaderContext; -import org.apache.tuscany.model.assembly.ModuleFragment; -import org.osoa.sca.annotations.Scope; - -import javax.xml.namespace.QName; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; - -/** - * @version $Rev$ $Date$ - */ -@Scope("MODULE") -public class ModuleFragmentLoader extends CompositeLoader { - public QName getXMLType() { - return AssemblyConstants.MODULE_FRAGMENT; - } - - public ModuleFragment load(XMLStreamReader reader, LoaderContext loaderContext) throws XMLStreamException, ConfigurationLoadException { - ModuleFragment fragment = factory.createModuleFragment(); - loadComposite(reader, fragment, loaderContext); - return fragment; - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ModuleLoader.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ModuleLoader.java deleted file mode 100644 index 08ab23b3a6..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ModuleLoader.java +++ /dev/null @@ -1,50 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.loader.assembly; - -import javax.xml.namespace.QName; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.context.impl.CompositeContextImpl; -import org.apache.tuscany.core.loader.LoaderContext; -import org.apache.tuscany.core.system.context.SystemCompositeContextImpl; -import org.apache.tuscany.model.assembly.Module; -import org.osoa.sca.annotations.Scope; - -/** - * @version $Rev$ $Date$ - */ -@Scope("MODULE") -public class ModuleLoader extends CompositeLoader { - public QName getXMLType() { - return AssemblyConstants.MODULE; - } - - public Module load(XMLStreamReader reader, LoaderContext loaderContext) throws XMLStreamException, ConfigurationLoadException { - Module module = factory.createModule(); - loadComposite(reader, module, loaderContext); - // JFM Hack until recursive model in place - if (module.getName().startsWith("org.apache.tuscany.core.system")) { - module.setImplementationClass(SystemCompositeContextImpl.class); - } else { - module.setImplementationClass(CompositeContextImpl.class); - } - return module; - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/PropertyLoader.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/PropertyLoader.java deleted file mode 100644 index cbf1ca00df..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/PropertyLoader.java +++ /dev/null @@ -1,79 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.loader.assembly; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.loader.StAXUtil; -import org.apache.tuscany.core.loader.LoaderContext; -import static org.apache.tuscany.core.loader.assembly.AssemblyConstants.PROPERTY; -import org.apache.tuscany.model.assembly.Property; -import org.osoa.sca.annotations.Scope; - -import javax.xml.namespace.QName; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; -import java.util.HashMap; -import java.util.Map; - -/** - * @version $Rev$ $Date$ - */ -@Scope("MODULE") -public class PropertyLoader extends AbstractLoader { - private static final String XSD = "http://www.w3.org/2001/XMLSchema"; - - private static final Map<QName, Class<?>> TYPE_MAP; - static { - // todo support more XSD types, or remove if we store the QName - TYPE_MAP = new HashMap<QName, Class<?>>(17); - TYPE_MAP.put(new QName(XSD, "string"), String.class); - } - - public QName getXMLType() { - return PROPERTY; - } - - public Property load(XMLStreamReader reader, LoaderContext loaderContext) throws XMLStreamException, ConfigurationLoadException { - assert PROPERTY.equals(reader.getName()); - Property property = factory.createProperty(); - property.setName(reader.getAttributeValue(null, "name")); - String typeName = reader.getAttributeValue(null, "type"); - // support XSD type or Java class name - // todo perhaps we should just store the QName for the PropertyFactory to use - int index = typeName.indexOf(':'); - if (index != -1) { - String prefix = typeName.substring(0, index); - String namespaceURI = reader.getNamespaceURI(prefix); - QName qname = new QName(namespaceURI, typeName.substring(index+1)); - property.setType(TYPE_MAP.get(qname)); - } else { - try { - Class<?> type = loaderContext.getResourceLoader().loadClass(typeName); - property.setType(type); - } catch (ClassNotFoundException e) { - throw new ConfigurationLoadException(e); - } - } - property.setMany(Boolean.parseBoolean(reader.getAttributeValue(null, "many"))); - property.setDefaultValue(reader.getAttributeValue(null, "default")); - String required = reader.getAttributeValue(null, "required"); - property.setRequired(required != null && Boolean.valueOf(required)); - - StAXUtil.skipToEndElement(reader); - return property; - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ReferenceLoader.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ReferenceLoader.java deleted file mode 100644 index aa95210757..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ReferenceLoader.java +++ /dev/null @@ -1,64 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.loader.assembly; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.loader.StAXUtil; -import org.apache.tuscany.core.loader.LoaderContext; -import static org.apache.tuscany.core.loader.assembly.AssemblyConstants.REFERENCE; -import org.apache.tuscany.model.assembly.AssemblyObject; -import org.apache.tuscany.model.assembly.Multiplicity; -import org.apache.tuscany.model.assembly.Reference; -import org.apache.tuscany.model.assembly.ServiceContract; -import org.osoa.sca.annotations.Scope; - -import javax.xml.namespace.QName; -import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; -import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; - -/** - * @version $Rev$ $Date$ - */ -@Scope("MODULE") -public class ReferenceLoader extends AbstractLoader { - public QName getXMLType() { - return REFERENCE; - } - - public Reference load(XMLStreamReader reader, LoaderContext loaderContext) throws XMLStreamException, ConfigurationLoadException { - assert REFERENCE.equals(reader.getName()); - Reference reference = factory.createReference(); - reference.setName(reader.getAttributeValue(null, "name")); - reference.setMultiplicity(StAXUtil.multiplicity(reader.getAttributeValue(null, "multiplicity"), Multiplicity.ONE_ONE)); - - while (true) { - switch (reader.next()) { - case START_ELEMENT: - AssemblyObject o = registry.load(reader, loaderContext); - if (o instanceof ServiceContract) { - reference.setServiceContract((ServiceContract) o); - } - reader.next(); - break; - case END_ELEMENT: - return reference; - } - } - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ServiceLoader.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ServiceLoader.java deleted file mode 100644 index 9cb31b55ff..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/ServiceLoader.java +++ /dev/null @@ -1,61 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.loader.assembly; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import static org.apache.tuscany.core.loader.assembly.AssemblyConstants.SERVICE; -import org.apache.tuscany.core.loader.LoaderContext; -import org.apache.tuscany.model.assembly.AssemblyObject; -import org.apache.tuscany.model.assembly.Service; -import org.apache.tuscany.model.assembly.ServiceContract; -import org.osoa.sca.annotations.Scope; - -import javax.xml.namespace.QName; -import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; -import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; - -/** - * @version $Rev$ $Date$ - */ -@Scope("MODULE") -public class ServiceLoader extends AbstractLoader { - public QName getXMLType() { - return SERVICE; - } - - public Service load(XMLStreamReader reader, LoaderContext loaderContext) throws XMLStreamException, ConfigurationLoadException { - assert SERVICE.equals(reader.getName()); - Service service = factory.createService(); - service.setName(reader.getAttributeValue(null, "name")); - - while (true) { - switch (reader.next()) { - case START_ELEMENT: - AssemblyObject o = registry.load(reader, loaderContext); - if (o instanceof ServiceContract) { - service.setServiceContract((ServiceContract) o); - } - reader.next(); - break; - case END_ELEMENT: - return service; - } - } - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/WireLoader.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/WireLoader.java deleted file mode 100644 index 0ae3c4405d..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/WireLoader.java +++ /dev/null @@ -1,84 +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.core.loader.assembly; - -import java.util.HashMap; -import java.util.Map; -import javax.xml.namespace.QName; -import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; -import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.loader.LoaderContext; -import org.apache.tuscany.model.assembly.Wire; -import org.osoa.sca.annotations.Scope; - -/** - * @version $Rev$ $Date$ - */ -@Scope("MODULE") -public class WireLoader extends AbstractLoader { - private static final String XSD = "http://www.w3.org/2001/XMLSchema"; - - private static final Map<QName, Class<?>> TYPE_MAP; - - static { - // todo support more XSD types, or remove if we store the QName - TYPE_MAP = new HashMap<QName, Class<?>>(17); - TYPE_MAP.put(new QName(XSD, "string"), String.class); - } - - public QName getXMLType() { - return AssemblyConstants.WIRE; - } - - public Wire load(XMLStreamReader reader, LoaderContext loaderContext) throws XMLStreamException, ConfigurationLoadException { - assert AssemblyConstants.WIRE.equals(reader.getName()); - Wire wire = factory.createWire(); - while (true) { - switch (reader.next()) { - case START_ELEMENT: - QName qname = reader.getName(); - if (AssemblyConstants.WIRE_SOURCE.equals(qname)) { - String uri = reader.getElementText(); - int pos = uri.indexOf('/'); - if (pos < 1) { - throw new ConfigurationLoadException("Invalid source wire"); - } - String partName = uri.substring(0, pos); - String portName = uri.substring(pos + 1); - wire.setSource(factory.createServiceURI(null, partName, portName)); - } else if (AssemblyConstants.WIRE_TARGET.equals(qname)) { - String uri = reader.getElementText(); - int pos = uri.indexOf('/'); - if (pos < 1) { - wire.setTarget(factory.createServiceURI(null, uri)); - }else{ - String partName = uri.substring(0, pos); - String portName = uri.substring(pos + 1); - wire.setTarget(factory.createServiceURI(null, partName, portName)); - } - } - break; - case END_ELEMENT: - return wire; - } - } - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/AssemblyConstants.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/AssemblyConstants.java deleted file mode 100644 index 81b047fd7d..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/AssemblyConstants.java +++ /dev/null @@ -1,46 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.loader.assembly.recursive; - -import javax.xml.namespace.QName; - -/** - * @version $Rev$ $Date$ - */ -public final class AssemblyConstants { - public static final String SCA_NAMESPACE = "http://www.osoa.org/xmlns/sca/1.0"; - - public static final QName COMPONENT = new QName(SCA_NAMESPACE, "component"); - public static final QName COMPONENT_TYPE = new QName(SCA_NAMESPACE, "componentType"); - public static final QName COMPOSITE_SERVICE = new QName(SCA_NAMESPACE, "service"); - public static final QName COMPOSITE_REFERENCE = new QName(SCA_NAMESPACE, "reference"); - public static final QName IMPORT_WSDL = new QName(SCA_NAMESPACE, "import.wsdl"); - public static final QName INTERFACE_JAVA = new QName(SCA_NAMESPACE, "interface.java"); - public static final QName INTERFACE_WSDL = new QName(SCA_NAMESPACE, "interface.wsdl"); - public static final QName MODULE = new QName(SCA_NAMESPACE, "module"); - public static final QName COMPOSITE = new QName(SCA_NAMESPACE, "composite"); - public static final QName MODULE_FRAGMENT = new QName(SCA_NAMESPACE, "moduleFragment"); - public static final QName PROPERTY = new QName(SCA_NAMESPACE, "property"); - public static final QName REFERENCE = new QName(SCA_NAMESPACE, "reference"); - public static final QName SERVICE = new QName(SCA_NAMESPACE, "service"); - public static final QName WIRE = new QName(SCA_NAMESPACE, "wire"); - public static final QName WIRE_SOURCE = new QName(SCA_NAMESPACE, "source.uri"); - public static final QName WIRE_TARGET = new QName(SCA_NAMESPACE, "target.uri"); - - private AssemblyConstants() { - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/ComponentLoader.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/ComponentLoader.java deleted file mode 100644 index 3cb005ae5b..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/ComponentLoader.java +++ /dev/null @@ -1,181 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.loader.assembly.recursive; - -import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; -import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; -import static org.apache.tuscany.core.loader.assembly.recursive.AssemblyConstants.COMPONENT; -import static org.apache.tuscany.core.loader.assembly.recursive.AssemblyConstants.PROPERTY; -import static org.apache.tuscany.core.loader.assembly.recursive.AssemblyConstants.REFERENCE; - -import java.util.List; - -import javax.xml.namespace.QName; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; - -import org.apache.tuscany.common.resource.ResourceLoader; -import org.apache.tuscany.core.builder.ObjectFactory; -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.loader.InvalidPropertyFactoryException; -import org.apache.tuscany.core.loader.LoaderContext; -import org.apache.tuscany.core.loader.StAXPropertyFactory; -import org.apache.tuscany.core.loader.StAXUtil; -import org.apache.tuscany.core.loader.assembly.AbstractLoader; -import org.apache.tuscany.core.system.annotation.Autowire; -import org.apache.tuscany.model.assembly.AssemblyObject; -import org.apache.tuscany.model.assembly.Component; -import org.apache.tuscany.model.assembly.ComponentType; -import org.apache.tuscany.model.assembly.ConfiguredProperty; -import org.apache.tuscany.model.assembly.ConfiguredReference; -import org.apache.tuscany.model.assembly.Implementation; -import org.apache.tuscany.model.assembly.OverrideOption; -import org.apache.tuscany.model.assembly.Property; -import org.osoa.sca.annotations.Scope; - -/** - * @version $Rev$ $Date$ - */ -@Scope("MODULE") -public class ComponentLoader extends AbstractLoader { - private StAXPropertyFactory<?> defaultPropertyFactory; - - @Autowire - public void setDefaultPropertyFactory(StAXPropertyFactory<?> defaultPropertyFactory) { - this.defaultPropertyFactory = defaultPropertyFactory; - } - - public QName getXMLType() { - return COMPONENT; - } - - public Component load(XMLStreamReader reader, LoaderContext loaderContext) throws XMLStreamException, ConfigurationLoadException { - assert COMPONENT.equals(reader.getName()); - - Component component = factory.createSimpleComponent(); - component.setName(reader.getAttributeValue(null, "name")); - - while (true) { - switch (reader.next()) { - case START_ELEMENT: - QName name = reader.getName(); - if (PROPERTY.equals(name)) { - loadProperty(reader, loaderContext.getResourceLoader(), component); - } else if (REFERENCE.equals(name)) { - loadReference(reader, component); - } else { - AssemblyObject o = registry.load(reader, loaderContext); - if (o instanceof Implementation) { - Implementation impl = (Implementation) o; - impl.initialize(registry.getContext()); - component.setImplementation(impl); - } - reader.next(); - } - break; - case END_ELEMENT: - List<Property> props = component.getImplementation().getComponentType().getProperties(); - for (Property property : props) { - if (property.isRequired()) { - if (component.getConfiguredProperty(property.getName()) == null) { - ConfigurationLoadException e = new ConfigurationLoadException("Required property not configured"); - e.setIdentifier(property.getName()); - throw e; - } - } - } - return component; - } - } - } - - protected void loadProperty(XMLStreamReader reader, ResourceLoader resourceLoader, Component<?> component) throws XMLStreamException, ConfigurationLoadException { - ComponentType componentType = component.getImplementation().getComponentType(); - List<ConfiguredProperty> configuredProperties = component.getConfiguredProperties(); - - String name = reader.getLocalName(); - Property property = componentType.getProperty(name); - if (property == null) { - throw new ConfigurationLoadException(name); - } - OverrideOption override = StAXUtil.overrideOption(reader.getAttributeValue(null, "override"), OverrideOption.NO); - -// get a factory for the property - StAXPropertyFactory<?> propertyFactory; - String factoryName = reader.getAttributeValue(null, "factory"); - if (factoryName == null) { - propertyFactory = defaultPropertyFactory; - } else { - propertyFactory = getPropertyFactory(factoryName, resourceLoader); - } - - // create the property value - // FIXME to support complex types we probably should store the factory in the ConfiguredProperty - // FIXME instead of the value as the value may be mutable and should not be shared between instances - ObjectFactory<?> objectFactory = propertyFactory.createObjectFactory(reader, property); - Object value = objectFactory.getInstance(); - - // create the configured property definition - ConfiguredProperty configuredProperty = factory.createConfiguredProperty(); - configuredProperty.setName(name); - configuredProperty.setValue(value); - configuredProperty.setOverrideOption(override); - configuredProperties.add(configuredProperty); - - reader.next(); - } - - protected StAXPropertyFactory<?> getPropertyFactory(String factoryName, ResourceLoader resourceLoader) throws InvalidPropertyFactoryException { - Class<?> impl; - try { - // try to load factory from application classloader - impl = resourceLoader.loadClass(factoryName); - } catch (ClassNotFoundException e) { - try { - // try to load factory from container classloader - impl = Class.forName(factoryName); - } catch (ClassNotFoundException e1) { - throw new InvalidPropertyFactoryException(factoryName, e); - } - } - try { - return (StAXPropertyFactory<?>) impl.newInstance(); - } catch (InstantiationException e) { - throw new InvalidPropertyFactoryException(factoryName, e); - } catch (IllegalAccessException e) { - throw new InvalidPropertyFactoryException(factoryName, e); - } catch (ClassCastException e) { - throw new InvalidPropertyFactoryException(factoryName, e); - } - } - - protected void loadReference(XMLStreamReader reader, Component<?> component) throws XMLStreamException { - List<ConfiguredReference> configuredReferences = component.getConfiguredReferences(); - String name = reader.getAttributeValue(null, "name"); - String uri = reader.getElementText(); - - ConfiguredReference configuredReference = component.getConfiguredReference(name); - if (configuredReference == null) { - configuredReference = factory.createConfiguredReference(); - configuredReference.setName(name); - configuredReferences.add(configuredReference); - } - - configuredReference.getTargets().add(uri); - reader.next(); - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/ComponentTypeLoader.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/ComponentTypeLoader.java deleted file mode 100644 index 4c40db11fa..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/ComponentTypeLoader.java +++ /dev/null @@ -1,66 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.loader.assembly.recursive; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import static org.apache.tuscany.core.loader.assembly.recursive.AssemblyConstants.COMPONENT_TYPE; -import org.apache.tuscany.core.loader.LoaderContext; -import org.apache.tuscany.core.loader.assembly.AbstractLoader; -import org.apache.tuscany.model.assembly.AssemblyObject; -import org.apache.tuscany.model.assembly.ComponentType; -import org.apache.tuscany.model.assembly.Property; -import org.apache.tuscany.model.assembly.Reference; -import org.apache.tuscany.model.assembly.Service; -import org.osoa.sca.annotations.Scope; - -import javax.xml.namespace.QName; -import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; -import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; - -/** - * @version $Rev$ $Date$ - */ -@Scope("MODULE") -public class ComponentTypeLoader extends AbstractLoader { - public QName getXMLType() { - return COMPONENT_TYPE; - } - - public ComponentType load(XMLStreamReader reader, LoaderContext loaderContext) throws XMLStreamException, ConfigurationLoadException { - assert COMPONENT_TYPE.equals(reader.getName()); - ComponentType componentType = factory.createComponentType(); - - while (true) { - switch (reader.next()) { - case START_ELEMENT: - AssemblyObject o = registry.load(reader, loaderContext); - if (o instanceof Service) { - componentType.getServices().add((Service) o); - } else if (o instanceof Reference) { - componentType.getReferences().add((Reference) o); - } else if (o instanceof Property) { - componentType.getProperties().add((Property) o); - } - break; - case END_ELEMENT: - return componentType; - } - } - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/CompositeLoader.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/CompositeLoader.java deleted file mode 100644 index d1acdd4c25..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/CompositeLoader.java +++ /dev/null @@ -1,51 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.loader.assembly.recursive; - -import javax.xml.namespace.QName; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.context.impl.CompositeContextImpl; -import org.apache.tuscany.core.loader.LoaderContext; -import org.apache.tuscany.core.loader.assembly.recursive.AssemblyConstants; -import org.apache.tuscany.core.system.context.SystemCompositeContextImpl; -import org.apache.tuscany.model.assembly.Module; -import org.osoa.sca.annotations.Scope; - -/** - * @version $Rev$ $Date$ - */ -@Scope("MODULE") -public class CompositeLoader extends org.apache.tuscany.core.loader.assembly.CompositeLoader { - public QName getXMLType() { - return AssemblyConstants.COMPOSITE; - } - - public Module load(XMLStreamReader reader, LoaderContext loaderContext) throws XMLStreamException, ConfigurationLoadException { - Module module = factory.createModule(); - loadComposite(reader, module, loaderContext); - // JFM Hack until recursive model in place - if (module.getName().startsWith("org.apache.tuscany.core.system")) { - module.setImplementationClass(SystemCompositeContextImpl.class); - } else { - module.setImplementationClass(CompositeContextImpl.class); - } - return module; - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/CompositeReferenceLoader.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/CompositeReferenceLoader.java deleted file mode 100644 index 3fa78a252f..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/CompositeReferenceLoader.java +++ /dev/null @@ -1,77 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.loader.assembly.recursive; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.loader.StAXUtil; -import org.apache.tuscany.core.loader.LoaderContext; -import org.apache.tuscany.core.loader.assembly.AbstractLoader; - -import static org.apache.tuscany.core.loader.assembly.recursive.AssemblyConstants.COMPOSITE_REFERENCE; -import org.apache.tuscany.model.assembly.AssemblyObject; -import org.apache.tuscany.model.assembly.Binding; -import org.apache.tuscany.model.assembly.ConfiguredService; -import org.apache.tuscany.model.assembly.ExternalService; -import org.apache.tuscany.model.assembly.OverrideOption; -import org.apache.tuscany.model.assembly.Service; -import org.apache.tuscany.model.assembly.ServiceContract; -import org.osoa.sca.annotations.Scope; - -import javax.xml.namespace.QName; -import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; -import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; - -/** - * @version $Rev$ $Date$ - */ -@Scope("MODULE") -public class CompositeReferenceLoader extends AbstractLoader { - public QName getXMLType() { - return COMPOSITE_REFERENCE; - } - - public ExternalService load(XMLStreamReader reader, LoaderContext loaderContext) throws XMLStreamException, ConfigurationLoadException { - assert COMPOSITE_REFERENCE.equals(reader.getName()); - String name = reader.getAttributeValue(null, "name"); - ExternalService externalService = factory.createExternalService(); - externalService.setName(name); - externalService.setOverrideOption(StAXUtil.overrideOption(reader.getAttributeValue(null, "overridable"), OverrideOption.NO)); - - while (true) { - switch (reader.next()) { - case START_ELEMENT: - AssemblyObject o = registry.load(reader, loaderContext); - if (o instanceof ServiceContract) { - Service service = factory.createService(); - service.setName(name); - service.setServiceContract((ServiceContract) o); - ConfiguredService configuredService = factory.createConfiguredService(); - configuredService.setPort(service); - externalService.setConfiguredService(configuredService); - } else if (o instanceof Binding) { - externalService.getBindings().add((Binding) o); - } - reader.next(); - break; - case END_ELEMENT: - return externalService; - } - } - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/CompositeServiceLoader.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/CompositeServiceLoader.java deleted file mode 100644 index 463388429b..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/CompositeServiceLoader.java +++ /dev/null @@ -1,92 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.loader.assembly.recursive; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.loader.StAXUtil; -import org.apache.tuscany.core.loader.LoaderContext; -import org.apache.tuscany.core.loader.assembly.AbstractLoader; - -import static org.apache.tuscany.core.loader.assembly.recursive.AssemblyConstants.COMPOSITE_SERVICE; -import org.apache.tuscany.model.assembly.AssemblyObject; -import org.apache.tuscany.model.assembly.Binding; -import org.apache.tuscany.model.assembly.ConfiguredReference; -import org.apache.tuscany.model.assembly.ConfiguredService; -import org.apache.tuscany.model.assembly.EntryPoint; -import org.apache.tuscany.model.assembly.Multiplicity; -import org.apache.tuscany.model.assembly.Reference; -import org.apache.tuscany.model.assembly.Service; -import org.apache.tuscany.model.assembly.ServiceContract; -import org.osoa.sca.annotations.Scope; - -import javax.xml.namespace.QName; -import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; -import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; - -/** - * @version $Rev$ $Date$ - */ -@Scope("MODULE") -public class CompositeServiceLoader extends AbstractLoader { - public QName getXMLType() { - return COMPOSITE_SERVICE; - } - - public EntryPoint load(XMLStreamReader reader, LoaderContext loaderContext) throws XMLStreamException, ConfigurationLoadException { - assert COMPOSITE_SERVICE.equals(reader.getName()); - EntryPoint entryPoint = factory.createEntryPoint(); - String name = reader.getAttributeValue(null, "name"); - entryPoint.setName(name); - - Service service = factory.createService(); - service.setName(name); - ConfiguredService configuredService = factory.createConfiguredService(); - configuredService.setPort(service); - entryPoint.setConfiguredService(configuredService); - - Reference reference = factory.createReference(); - reference.setMultiplicity(StAXUtil.multiplicity(reader.getAttributeValue(null, "multiplicity"), Multiplicity.ONE_ONE)); - ConfiguredReference configuredReference = factory.createConfiguredReference(); - configuredReference.setPort(reference); - entryPoint.setConfiguredReference(configuredReference); - - while (true) { - switch (reader.next()) { - case START_ELEMENT: - QName qname = reader.getName(); - if (AssemblyConstants.REFERENCE.equals(qname)) { - String uri = reader.getElementText(); - configuredReference.getTargets().add(uri); - } else { - AssemblyObject o = registry.load(reader, loaderContext); - if (o instanceof Binding) { - entryPoint.getBindings().add((Binding) o); - } else if (o instanceof ServiceContract) { - service.setServiceContract((ServiceContract) o); - reference.setServiceContract((ServiceContract) o); - } - } - reader.next(); - break; - case END_ELEMENT: - return entryPoint; - } - } - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/ImportWSDLLoader.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/ImportWSDLLoader.java deleted file mode 100644 index 1b642704f0..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/ImportWSDLLoader.java +++ /dev/null @@ -1,96 +0,0 @@ -/** - * - * Copyright 2006 The Apache Software Foundation - * - * 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.core.loader.assembly.recursive; - -import static org.apache.tuscany.core.loader.assembly.recursive.AssemblyConstants.IMPORT_WSDL; - -import java.io.IOException; -import java.net.URL; - -import javax.wsdl.Definition; -import javax.wsdl.WSDLException; -import javax.xml.namespace.QName; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; - -import org.apache.tuscany.common.resource.ResourceLoader; -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.config.MissingResourceException; -import org.apache.tuscany.core.config.SidefileLoadException; -import org.apache.tuscany.core.loader.LoaderContext; -import org.apache.tuscany.core.loader.StAXUtil; -import org.apache.tuscany.core.loader.WSDLDefinitionRegistry; -import org.apache.tuscany.core.loader.assembly.AbstractLoader; -import org.apache.tuscany.core.system.annotation.Autowire; -import org.apache.tuscany.model.assembly.ImportWSDL; -import org.osoa.sca.annotations.Scope; - -/** - * Loader that handles <import.wsdl> elements. - * - * @version $Rev$ $Date$ - */ -@Scope("MODULE") -public class ImportWSDLLoader extends AbstractLoader { - private WSDLDefinitionRegistry wsdlRegistry; - - @Autowire - public void setWsdlRegistry(WSDLDefinitionRegistry wsdlRegistry) { - this.wsdlRegistry = wsdlRegistry; - } - - public QName getXMLType() { - return IMPORT_WSDL; - } - - public ImportWSDL load(XMLStreamReader reader, LoaderContext loaderContext) throws XMLStreamException, ConfigurationLoadException { - assert AssemblyConstants.IMPORT_WSDL.equals(reader.getName()); - String namespace = reader.getAttributeValue(null, "namespace"); - String location = reader.getAttributeValue(null, "location"); - if (location == null) - location = reader.getAttributeValue(null, "wsdlLocation"); - ImportWSDL importWSDL = factory.createImportWSDL(location, namespace); - - Definition definition = loadDefinition(namespace, location, loaderContext.getResourceLoader()); -// importWSDL.setDefinition(definition); - - StAXUtil.skipToEndElement(reader); - return importWSDL; - } - - protected Definition loadDefinition(String namespace, String location, ResourceLoader resourceLoader) throws MissingResourceException, SidefileLoadException { - Definition definition; - URL wsdlURL = resourceLoader.getResource(location); - if (wsdlURL == null) { - throw new MissingResourceException(location); - } - - try { - definition = wsdlRegistry.loadDefinition(namespace, wsdlURL, resourceLoader); - } catch (IOException e) { - SidefileLoadException sfe = new SidefileLoadException(e.getMessage()); - sfe.setResourceURI(location); - throw sfe; - } catch (WSDLException e) { - SidefileLoadException sfe = new SidefileLoadException(e.getMessage()); - sfe.setResourceURI(location); - throw sfe; - } - - return definition; - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/InterfaceJavaLoader.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/InterfaceJavaLoader.java deleted file mode 100644 index 84d988be0a..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/InterfaceJavaLoader.java +++ /dev/null @@ -1,46 +0,0 @@ -/** - * - * Copyright 2006 The Apache Software Foundation - * - * 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.core.loader.assembly.recursive; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.loader.LoaderContext; -import org.apache.tuscany.core.loader.assembly.AbstractLoader; -import org.apache.tuscany.model.assembly.Scope; -import org.apache.tuscany.model.types.java.JavaServiceContract; - -import javax.xml.namespace.QName; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; - -/** - * @version $Rev$ $Date$ - */ -@org.osoa.sca.annotations.Scope("MODULE") -public class InterfaceJavaLoader extends AbstractLoader { - public QName getXMLType() { - return AssemblyConstants.INTERFACE_JAVA; - } - - public JavaServiceContract load(XMLStreamReader reader, LoaderContext loaderContext) throws XMLStreamException, ConfigurationLoadException { - assert AssemblyConstants.INTERFACE_JAVA.equals(reader.getName()); - JavaServiceContract serviceContract = factory.createJavaServiceContract(); - serviceContract.setScope(Scope.INSTANCE); - serviceContract.setInterfaceName(reader.getAttributeValue(null, "interface")); - serviceContract.setCallbackInterfaceName(reader.getAttributeValue(null, "callbackInterface")); - return serviceContract; - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/InterfaceWSDLLoader.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/InterfaceWSDLLoader.java deleted file mode 100644 index 4da0261afa..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/InterfaceWSDLLoader.java +++ /dev/null @@ -1,111 +0,0 @@ -/** - * - * Copyright 2006 The Apache Software Foundation - * - * 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.core.loader.assembly.recursive; - -import java.io.IOException; - -import org.apache.tuscany.common.resource.ResourceLoader; -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.config.MissingInterfaceException; -import org.apache.tuscany.core.loader.WSDLDefinitionRegistry; -import org.apache.tuscany.core.loader.StAXUtil; -import org.apache.tuscany.core.loader.LoaderContext; -import org.apache.tuscany.core.loader.assembly.AbstractLoader; -import org.apache.tuscany.core.system.annotation.Autowire; -import org.apache.tuscany.model.assembly.Scope; -import org.apache.tuscany.model.types.wsdl.WSDLServiceContract; - -import javax.xml.namespace.QName; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; -import javax.wsdl.PortType; -import javax.wsdl.WSDLException; - -/** - * @version $Rev$ $Date$ - */ -@org.osoa.sca.annotations.Scope("MODULE") -public class InterfaceWSDLLoader extends AbstractLoader { - private static final String WSDLI = "http://www.w3.org/2006/01/wsdl-instance"; - private static final String WSDLI_LOCATION = "wsdlLocation"; - - private WSDLDefinitionRegistry wsdlRegistry; - - @Autowire - public void setWsdlRegistry(WSDLDefinitionRegistry wsdlRegistry) { - this.wsdlRegistry = wsdlRegistry; - } - - public QName getXMLType() { - return AssemblyConstants.INTERFACE_WSDL; - } - - public WSDLServiceContract load(XMLStreamReader reader, LoaderContext loaderContext) throws XMLStreamException, ConfigurationLoadException { - assert AssemblyConstants.INTERFACE_WSDL.equals(reader.getName()); - WSDLServiceContract serviceContract = factory.createWSDLServiceContract(); - serviceContract.setScope(Scope.INSTANCE); - - ResourceLoader resourceLoader = loaderContext.getResourceLoader(); - - String location = reader.getAttributeValue(WSDLI, WSDLI_LOCATION); - if (location != null) { - try { - wsdlRegistry.loadDefinition(location, resourceLoader); - } catch (IOException e) { - throw new MissingInterfaceException(e); - } catch (WSDLException e) { - throw new MissingInterfaceException(e); - } - } - - String portTypeURI = reader.getAttributeValue(null, "interface"); - if (portTypeURI != null) { - serviceContract.setPortType(getPortType(portTypeURI, resourceLoader)); - } - - portTypeURI = reader.getAttributeValue(null, "callbackInterface"); - if (portTypeURI != null) { - serviceContract.setCallbackPortType(getPortType(portTypeURI, resourceLoader)); - } - StAXUtil.skipToEndElement(reader); - return serviceContract; - } - - protected PortType getPortType(String uri, ResourceLoader resourceLoader) throws MissingInterfaceException { - - // We currently support two syntaxes for specifying a WSDL portType: - // namespace#portTypeName, this is what we supported in the initial contribution, we will - // deprecate this after M1 - // namespace#wsdl.interface(portTypeName), this is the WSDL 2.0 syntax - - int index = uri.indexOf('#'); - String namespace = uri.substring(0, index); - String fragment = uri.substring(index + 1); - String localName; - if (fragment.startsWith("wsdl.interface(") && fragment.endsWith(")")) { - localName = fragment.substring(15, fragment.length()-1); - } else { - localName = fragment; - } - QName qname = new QName(namespace, localName); - PortType portType = wsdlRegistry.getPortType(qname, resourceLoader); - if (portType == null) { - throw new MissingInterfaceException(uri); - } - return portType; - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/PropertyLoader.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/PropertyLoader.java deleted file mode 100644 index 5f4ffa5637..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/PropertyLoader.java +++ /dev/null @@ -1,81 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.loader.assembly.recursive; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.loader.StAXUtil; -import org.apache.tuscany.core.loader.LoaderContext; -import org.apache.tuscany.core.loader.assembly.AbstractLoader; - -import static org.apache.tuscany.core.loader.assembly.recursive.AssemblyConstants.PROPERTY; -import org.apache.tuscany.model.assembly.Property; -import org.osoa.sca.annotations.Scope; - -import javax.xml.namespace.QName; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; -import java.util.HashMap; -import java.util.Map; - -/** - * @version $Rev$ $Date$ - */ -@Scope("MODULE") -public class PropertyLoader extends AbstractLoader { - private static final String XSD = "http://www.w3.org/2001/XMLSchema"; - - private static final Map<QName, Class<?>> TYPE_MAP; - static { - // todo support more XSD types, or remove if we store the QName - TYPE_MAP = new HashMap<QName, Class<?>>(17); - TYPE_MAP.put(new QName(XSD, "string"), String.class); - } - - public QName getXMLType() { - return PROPERTY; - } - - public Property load(XMLStreamReader reader, LoaderContext loaderContext) throws XMLStreamException, ConfigurationLoadException { - assert PROPERTY.equals(reader.getName()); - Property property = factory.createProperty(); - property.setName(reader.getAttributeValue(null, "name")); - String typeName = reader.getAttributeValue(null, "type"); - // support XSD type or Java class name - // todo perhaps we should just store the QName for the PropertyFactory to use - int index = typeName.indexOf(':'); - if (index != -1) { - String prefix = typeName.substring(0, index); - String namespaceURI = reader.getNamespaceURI(prefix); - QName qname = new QName(namespaceURI, typeName.substring(index+1)); - property.setType(TYPE_MAP.get(qname)); - } else { - try { - Class<?> type = loaderContext.getResourceLoader().loadClass(typeName); - property.setType(type); - } catch (ClassNotFoundException e) { - throw new ConfigurationLoadException(e); - } - } - property.setMany(Boolean.parseBoolean(reader.getAttributeValue(null, "many"))); - property.setDefaultValue(reader.getAttributeValue(null, "default")); - String required = reader.getAttributeValue(null, "required"); - property.setRequired(required != null && Boolean.valueOf(required)); - - StAXUtil.skipToEndElement(reader); - return property; - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/ReferenceLoader.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/ReferenceLoader.java deleted file mode 100644 index a254455092..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/ReferenceLoader.java +++ /dev/null @@ -1,66 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.loader.assembly.recursive; - -import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; -import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; -import static org.apache.tuscany.core.loader.assembly.recursive.AssemblyConstants.REFERENCE; - -import javax.xml.namespace.QName; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.loader.LoaderContext; -import org.apache.tuscany.core.loader.StAXUtil; -import org.apache.tuscany.core.loader.assembly.AbstractLoader; -import org.apache.tuscany.model.assembly.AssemblyObject; -import org.apache.tuscany.model.assembly.Multiplicity; -import org.apache.tuscany.model.assembly.Reference; -import org.apache.tuscany.model.assembly.ServiceContract; -import org.osoa.sca.annotations.Scope; - -/** - * @version $Rev$ $Date$ - */ -@Scope("MODULE") -public class ReferenceLoader extends AbstractLoader { - public QName getXMLType() { - return REFERENCE; - } - - public Reference load(XMLStreamReader reader, LoaderContext loaderContext) throws XMLStreamException, ConfigurationLoadException { - assert REFERENCE.equals(reader.getName()); - Reference reference = factory.createReference(); - reference.setName(reader.getAttributeValue(null, "name")); - reference.setMultiplicity(StAXUtil.multiplicity(reader.getAttributeValue(null, "multiplicity"), Multiplicity.ONE_ONE)); - - while (true) { - switch (reader.next()) { - case START_ELEMENT: - AssemblyObject o = registry.load(reader, loaderContext); - if (o instanceof ServiceContract) { - reference.setServiceContract((ServiceContract) o); - } - reader.next(); - break; - case END_ELEMENT: - return reference; - } - } - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/ServiceLoader.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/ServiceLoader.java deleted file mode 100644 index 614ab82d98..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/ServiceLoader.java +++ /dev/null @@ -1,62 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.loader.assembly.recursive; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import static org.apache.tuscany.core.loader.assembly.recursive.AssemblyConstants.SERVICE; -import org.apache.tuscany.core.loader.LoaderContext; -import org.apache.tuscany.core.loader.assembly.AbstractLoader; -import org.apache.tuscany.model.assembly.AssemblyObject; -import org.apache.tuscany.model.assembly.Service; -import org.apache.tuscany.model.assembly.ServiceContract; -import org.osoa.sca.annotations.Scope; - -import javax.xml.namespace.QName; -import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; -import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; - -/** - * @version $Rev$ $Date$ - */ -@Scope("MODULE") -public class ServiceLoader extends AbstractLoader { - public QName getXMLType() { - return SERVICE; - } - - public Service load(XMLStreamReader reader, LoaderContext loaderContext) throws XMLStreamException, ConfigurationLoadException { - assert SERVICE.equals(reader.getName()); - Service service = factory.createService(); - service.setName(reader.getAttributeValue(null, "name")); - - while (true) { - switch (reader.next()) { - case START_ELEMENT: - AssemblyObject o = registry.load(reader, loaderContext); - if (o instanceof ServiceContract) { - service.setServiceContract((ServiceContract) o); - } - reader.next(); - break; - case END_ELEMENT: - return service; - } - } - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/WireLoader.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/WireLoader.java deleted file mode 100644 index 1d82ca195f..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/recursive/WireLoader.java +++ /dev/null @@ -1,85 +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.core.loader.assembly.recursive; - -import java.util.HashMap; -import java.util.Map; -import javax.xml.namespace.QName; -import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; -import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.loader.LoaderContext; -import org.apache.tuscany.core.loader.assembly.AbstractLoader; -import org.apache.tuscany.model.assembly.Wire; -import org.osoa.sca.annotations.Scope; - -/** - * @version $Rev$ $Date$ - */ -@Scope("MODULE") -public class WireLoader extends AbstractLoader { - private static final String XSD = "http://www.w3.org/2001/XMLSchema"; - - private static final Map<QName, Class<?>> TYPE_MAP; - - static { - // todo support more XSD types, or remove if we store the QName - TYPE_MAP = new HashMap<QName, Class<?>>(17); - TYPE_MAP.put(new QName(XSD, "string"), String.class); - } - - public QName getXMLType() { - return AssemblyConstants.WIRE; - } - - public Wire load(XMLStreamReader reader, LoaderContext loaderContext) throws XMLStreamException, ConfigurationLoadException { - assert AssemblyConstants.WIRE.equals(reader.getName()); - Wire wire = factory.createWire(); - while (true) { - switch (reader.next()) { - case START_ELEMENT: - QName qname = reader.getName(); - if (AssemblyConstants.WIRE_SOURCE.equals(qname)) { - String uri = reader.getElementText(); - int pos = uri.indexOf('/'); - if (pos < 1) { - throw new ConfigurationLoadException("Invalid source wire"); - } - String partName = uri.substring(0, pos); - String portName = uri.substring(pos + 1); - wire.setSource(factory.createServiceURI(null, partName, portName)); - } else if (AssemblyConstants.WIRE_TARGET.equals(qname)) { - String uri = reader.getElementText(); - int pos = uri.indexOf('/'); - if (pos < 1) { - wire.setTarget(factory.createServiceURI(null, uri)); - }else{ - String partName = uri.substring(0, pos); - String portName = uri.substring(pos + 1); - wire.setTarget(factory.createServiceURI(null, partName, portName)); - } - } - break; - case END_ELEMENT: - return wire; - } - } - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/impl/JNDIPropertyFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/impl/JNDIPropertyFactory.java deleted file mode 100644 index 763c88295c..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/impl/JNDIPropertyFactory.java +++ /dev/null @@ -1,62 +0,0 @@ -/** - * - * Copyright 2006 The Apache Software Foundation - * - * 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.core.loader.impl; - -import javax.xml.stream.XMLStreamReader; -import javax.xml.stream.XMLStreamException; -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.naming.NamingException; - -import org.apache.tuscany.core.loader.StAXPropertyFactory; -import org.apache.tuscany.core.builder.ObjectFactory; -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.injection.JNDIObjectFactory; -import org.apache.tuscany.model.assembly.Property; - -/** - * A StAXPropertyFactory that creates property values by looking them - * up in the default JNDI InitialContext. - * - * This can be used to locate resources in a J2EE environment and inject - * them as configuration properties. For example, to access a database - * a component could write: - * <code> - * &at;Property DataSource myDB; - * </code> - * and configure with - * <code> - * <properties> - * <v:myDb>java:comp/env/jdbc/MyDatabase</v:myDB> - * </properties> - * </code> - * - * @version $Rev$ $Date$ - */ -public class JNDIPropertyFactory implements StAXPropertyFactory { - public ObjectFactory<?> createObjectFactory(XMLStreamReader reader, Property property) throws XMLStreamException, ConfigurationLoadException { - Class<?> type = property.getType(); - assert type != null : "property type is null"; - String text = reader.getElementText(); - try { - Context context = new InitialContext(); - return new JNDIObjectFactory(context, text); - } catch (NamingException e) { - throw new ConfigurationLoadException(e); - } - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/impl/StAXLoaderRegistryImpl.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/impl/StAXLoaderRegistryImpl.java deleted file mode 100644 index 1e9e8ec8fb..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/impl/StAXLoaderRegistryImpl.java +++ /dev/null @@ -1,105 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.loader.impl; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.loader.StAXElementLoader; -import org.apache.tuscany.core.loader.StAXLoaderRegistry; -import org.apache.tuscany.core.loader.LoaderContext; -import org.apache.tuscany.model.assembly.AssemblyContext; -import org.apache.tuscany.model.assembly.AssemblyObject; -import org.osoa.sca.annotations.Scope; - -import javax.xml.namespace.QName; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; -import java.util.HashMap; -import java.util.Map; - -/** - * @version $Rev$ $Date$ - */ -@Scope("MODULE") -public class StAXLoaderRegistryImpl implements StAXLoaderRegistry { - private final Map<QName, StAXElementLoader<? extends AssemblyObject>> loaders = new HashMap<QName, StAXElementLoader<? extends AssemblyObject>>(); - - private Monitor monitor; - - @org.apache.tuscany.core.system.annotation.Monitor - public void setMonitor(Monitor monitor) { - this.monitor = monitor; - } - - public <T extends AssemblyObject> void registerLoader(QName element, StAXElementLoader<T> loader) { - monitor.registeringLoader(element); - loaders.put(element, loader); - } - - public <T extends AssemblyObject> void unregisterLoader(QName element, StAXElementLoader<T> loader) { - monitor.unregisteringLoader(element); - loaders.remove(element); - } - - public AssemblyObject load(XMLStreamReader reader, LoaderContext loaderContext) throws XMLStreamException, ConfigurationLoadException { - QName name = reader.getName(); - monitor.elementLoad(name); - StAXElementLoader<? extends AssemblyObject> loader = loaders.get(name); - if (loader == null) { - ConfigurationLoadException e = new ConfigurationLoadException("Unrecognized element"); - e.setIdentifier(name.toString()); - throw e; - } else { - return loader.load(reader, loaderContext); - } - } - - - private final ThreadLocal<AssemblyContext> modelContext = new ThreadLocal<AssemblyContext>(); - - @Deprecated - public AssemblyContext getContext() { - return modelContext.get(); - } - - @Deprecated - public void setContext(AssemblyContext context) { - modelContext.set(context); - } - - public static interface Monitor { - /** - * Event emitted when a StAX element loader is registered. - * - * @param xmlType the QName of the element the loader will handle - */ - void registeringLoader(QName xmlType); - - /** - * Event emitted when a StAX element loader is unregistered. - * - * @param xmlType the QName of the element the loader will handle - */ - void unregisteringLoader(QName xmlType); - - /** - * Event emitted when a request is made to load an element. - * - * @param xmlType the QName of the element that should be loaded - */ - void elementLoad(QName xmlType); - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/impl/StringParserPropertyFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/impl/StringParserPropertyFactory.java deleted file mode 100644 index 2ed33f895c..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/impl/StringParserPropertyFactory.java +++ /dev/null @@ -1,110 +0,0 @@ -/** - * - * Copyright 2006 The Apache Software Foundation - * - * 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.core.loader.impl; - -import org.apache.tuscany.core.builder.ObjectFactory; -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.injection.SingletonObjectFactory; -import org.apache.tuscany.core.loader.StAXPropertyFactory; -import org.apache.tuscany.model.assembly.Property; - -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; -import java.beans.PropertyEditor; -import java.beans.PropertyEditorManager; -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; - -import org.osoa.sca.annotations.Scope; -import org.osoa.sca.annotations.Service; - -/** - * @version $Rev$ $Date$ - */ -@Scope("MODULE") -@Service(interfaces = {StAXPropertyFactory.class}) -public class StringParserPropertyFactory implements StAXPropertyFactory { - public ObjectFactory<?> createObjectFactory(XMLStreamReader reader, Property property) throws XMLStreamException, ConfigurationLoadException { - Class<?> type = property.getType(); - assert type != null : "property type is null"; - String text = reader.getElementText(); - - // degenerate case where we are returning a String - if (String.class.equals(type)) { - return new SingletonObjectFactory(text); - } - - // special handler to convert hexBinary to a byte[] - if (byte[].class.equals(type)) { - byte[] instance = new byte[text.length() >> 1]; - for (int i = 0; i < instance.length; i++) { - instance[i] = (byte) (Character.digit(text.charAt(i << 1), 16) << 4 | Character.digit(text.charAt((i << 1) + 1), 16)); - } - return new SingletonObjectFactory(instance); - } - - // does this type have a static valueOf(String) method? - try { - Method valueOf = type.getMethod("valueOf", String.class); - if (Modifier.isStatic(valueOf.getModifiers())) { - try { - return new SingletonObjectFactory(valueOf.invoke(null, text)); - } catch (IllegalAccessException e) { - throw new AssertionError("getMethod returned an inaccessible method"); - } catch (InvocationTargetException e) { - // FIXME we should throw something better - throw new ConfigurationLoadException(e.getCause()); - } - } - } catch (NoSuchMethodException e) { - // try something else - } - - // does this type have a constructor that takes a String? - try { - Constructor<?> ctr = type.getConstructor(String.class); - return new SingletonObjectFactory(ctr.newInstance(text)); - } catch (NoSuchMethodException e) { - // try something else - } catch (IllegalAccessException e) { - throw new AssertionError("getConstructor returned an inaccessible method"); - } catch (InstantiationException e) { - throw new ConfigurationLoadException("Property type cannot be instantiated: " + type.getName()); - } catch (InvocationTargetException e) { - // FIXME we should throw something better - throw new ConfigurationLoadException(e.getCause()); - } - - // do we have a property editor for it? - PropertyEditor editor = PropertyEditorManager.findEditor(type); - if (editor != null) { - try { - editor.setAsText(text); - return new SingletonObjectFactory(editor.getValue()); - } catch (IllegalArgumentException e) { - // FIXME we should throw something better - throw new ConfigurationLoadException(e); - - } - } - - // FIXME we should throw something better - throw new ConfigurationLoadException("Do not have a way to parse a String into a " + type.getName()); - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/impl/WSDLDefinitionRegistryImpl.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/impl/WSDLDefinitionRegistryImpl.java deleted file mode 100644 index 1063dec3fc..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/impl/WSDLDefinitionRegistryImpl.java +++ /dev/null @@ -1,202 +0,0 @@ -/** - * - * Copyright 2006 The Apache Software Foundation - * - * 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.core.loader.impl; - -import java.io.IOException; -import java.net.URL; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.WeakHashMap; - -import javax.wsdl.Definition; -import javax.wsdl.PortType; -import javax.wsdl.Service; -import javax.wsdl.WSDLException; -import javax.wsdl.extensions.ExtensionRegistry; -import javax.wsdl.factory.WSDLFactory; -import javax.wsdl.xml.WSDLReader; -import javax.xml.namespace.QName; - -import org.apache.tuscany.common.resource.ResourceLoader; -import org.apache.tuscany.core.loader.WSDLDefinitionRegistry; -import org.osoa.sca.annotations.Scope; - -/** - * @version $Rev$ $Date$ - */ -@org.osoa.sca.annotations.Service(interfaces = {WSDLDefinitionRegistry.class}) -@Scope("MODULE") -public class WSDLDefinitionRegistryImpl implements WSDLDefinitionRegistry { - private final WSDLFactory wsdlFactory; - private final ExtensionRegistry registry; - - private final Map<ResourceLoader,Map<URL, Definition>> definitionsByLocationByLoader = new WeakHashMap<ResourceLoader,Map<URL, Definition>>(); - private final Map<ResourceLoader,Map<String, List<Definition>>> definitionsByNamespaceByLoader = new WeakHashMap<ResourceLoader,Map<String, List<Definition>>>(); - - private Monitor monitor; - - public WSDLDefinitionRegistryImpl() throws WSDLException { - wsdlFactory = WSDLFactory.newInstance(); - registry = wsdlFactory.newPopulatedExtensionRegistry(); - } - - @org.apache.tuscany.core.system.annotation.Monitor - public void setMonitor(Monitor monitor) { - this.monitor = monitor; - } - - public ExtensionRegistry getExtensionRegistry() { - return registry; - } - - public Definition loadDefinition(String wsdlLocation, ResourceLoader resourceLoader) throws IOException, WSDLException { - int index = wsdlLocation.indexOf(' '); - if (index == -1) { - throw new WSDLException(WSDLException.CONFIGURATION_ERROR, "Invalid wsdlLocation: " + wsdlLocation); - } - String namespace = wsdlLocation.substring(0, index).trim(); - URL url; - URI uri; - try { - uri = new URI(wsdlLocation.substring(index + 1).trim()); - } catch (URISyntaxException e) { - throw new WSDLException(WSDLException.CONFIGURATION_ERROR, "Invalid wsdlLocation: " + wsdlLocation); - } - if (uri.isAbsolute()) { - url = uri.toURL(); - } else { - url = resourceLoader.getResource(uri.toString()); - if (url == null) { - throw new WSDLException(WSDLException.CONFIGURATION_ERROR, "Resource not found: " + uri); - } - } - return loadDefinition(namespace, url, resourceLoader); - } - - public Definition loadDefinition(String namespace, URL location, ResourceLoader resourceLoader) throws IOException, WSDLException { - Map<URL, Definition> definitionsByLocation = getDefinitionsByLocation(resourceLoader); - Map<String, List<Definition>> definitionsByNamespace = getDefinitionsByNamespace(resourceLoader); - - Definition definition = definitionsByLocation.get(location); - if (definition != null) { - // return cached copy - return definition; - } - - monitor.readingWSDL(namespace, location); - WSDLReader reader = wsdlFactory.newWSDLReader(); - reader.setFeature("javax.wsdl.verbose", false); - reader.setExtensionRegistry(registry); - - definition = reader.readWSDL(location.toString()); - String definitionNamespace = definition.getTargetNamespace(); - if (namespace != null && !namespace.equals(definitionNamespace)) { - throw new WSDLException(WSDLException.CONFIGURATION_ERROR, namespace + " != " + definition.getTargetNamespace()); - } - - monitor.cachingDefinition(definitionNamespace, location); - definitionsByLocation.put(location, definition); - List<Definition> definitions = definitionsByNamespace.get(definitionNamespace); - if (definitions == null) { - definitions = new ArrayList<Definition>(); - definitionsByNamespace.put(definitionNamespace, definitions); - } - definitions.add(definition); - - return definition; - } - - public List<Definition> getDefinitionsForNamespace(String namespace, ResourceLoader resourceLoader) { - Map<String, List<Definition>> definitionsByNamespace = getDefinitionsByNamespace(resourceLoader); - return definitionsByNamespace.get(namespace); - } - - public PortType getPortType(QName name, ResourceLoader resourceLoader) { - Map<String, List<Definition>> definitionsByNamespace = getDefinitionsByNamespace(resourceLoader); - String namespace = name.getNamespaceURI(); - List<Definition> definitions = definitionsByNamespace.get(namespace); - if (definitions == null) { - return null; - } - for (Definition definition : definitions) { - PortType portType = definition.getPortType(name); - if (portType != null) { - return portType; - } - } - return null; - } - - public Service getService(QName name, ResourceLoader resourceLoader) { - Map<String, List<Definition>> definitionsByNamespace = getDefinitionsByNamespace(resourceLoader); - String namespace = name.getNamespaceURI(); - List<Definition> definitions = definitionsByNamespace.get(namespace); - if (definitions == null) { - return null; - } - for (Definition definition : definitions) { - Service service = definition.getService(name); - if (service != null) { - return service; - } - } - return null; - } - - private Map<String, List<Definition>> getDefinitionsByNamespace(ResourceLoader resourceLoader) { - Map<String, List<Definition>> map = definitionsByNamespaceByLoader.get(resourceLoader); - if (map == null) { - map = new HashMap<String, List<Definition>>(); - definitionsByNamespaceByLoader.put(resourceLoader, map); - } - return map; - } - - private Map<URL, Definition> getDefinitionsByLocation(ResourceLoader resourceLoader) { - Map<URL, Definition> map = definitionsByLocationByLoader.get(resourceLoader); - if (map == null) { - map = new HashMap<URL, Definition>(); - definitionsByLocationByLoader.put(resourceLoader, map); - } - return map; - } - - public static interface Monitor { - /** - * Monitor event emitted immediately before an attempt is made to - * read WSDL for the supplied namespace from the supplied location. - * - * @param namespace the target namespace expected in the WSDL; may be null - * @param location the location where we will attempt to read the WSDL definition from - */ - void readingWSDL(String namespace, URL location); - - /** - * Monitor event emitted immediately before registering a WSDL definition - * in the cache. - * - * @param namespace the target namespace for the WSDL - * @param location the location where the WSDL definition was read from - */ - void cachingDefinition(String namespace, URL location); - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/system/SystemBindingLoader.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/system/SystemBindingLoader.java deleted file mode 100644 index d75f25a232..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/system/SystemBindingLoader.java +++ /dev/null @@ -1,47 +0,0 @@ -/** - * - * Copyright 2006 The Apache Software Foundation - * - * 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.core.loader.system; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.loader.StAXUtil; -import org.apache.tuscany.core.loader.LoaderContext; -import org.apache.tuscany.core.loader.assembly.AbstractLoader; -import org.apache.tuscany.core.system.assembly.SystemBinding; -import org.osoa.sca.annotations.Scope; - -import javax.xml.namespace.QName; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; - -/** - * @version $Rev$ $Date$ - */ -@Scope("MODULE") -public class SystemBindingLoader extends AbstractLoader { - public static final QName SYSTEM_BINDING = new QName("http://org.apache.tuscany/xmlns/system/0.9", "binding.system"); - - protected QName getXMLType() { - return SYSTEM_BINDING; - } - - public SystemBinding load(XMLStreamReader reader, LoaderContext loaderContext) throws XMLStreamException, ConfigurationLoadException { - assert SystemBindingLoader.SYSTEM_BINDING.equals(reader.getName()); - SystemBinding binding = factory.createSystemBinding(); - StAXUtil.skipToEndElement(reader); - return binding; - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/system/SystemImplementationLoader.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/system/SystemImplementationLoader.java deleted file mode 100644 index b9f35d8656..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/loader/system/SystemImplementationLoader.java +++ /dev/null @@ -1,68 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.loader.system; - -import org.apache.tuscany.core.config.ComponentTypeIntrospector; -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.loader.StAXUtil; -import org.apache.tuscany.core.loader.LoaderContext; -import org.apache.tuscany.core.loader.assembly.AbstractLoader; -import org.apache.tuscany.core.system.annotation.Autowire; -import org.apache.tuscany.core.system.assembly.SystemImplementation; -import org.osoa.sca.annotations.Scope; - -import javax.xml.namespace.QName; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; - -/** - * @version $Rev$ $Date$ - */ -@Scope("MODULE") -public class SystemImplementationLoader extends AbstractLoader { - public static final QName SYSTEM_IMPLEMENTATION = new QName("http://org.apache.tuscany/xmlns/system/0.9", "implementation.system"); - - private ComponentTypeIntrospector introspector; - - @Autowire - public void setIntrospector(ComponentTypeIntrospector introspector) { - this.introspector = introspector; - } - - protected QName getXMLType() { - return SYSTEM_IMPLEMENTATION; - } - - public SystemImplementation load(XMLStreamReader reader, LoaderContext loaderContext) throws XMLStreamException, ConfigurationLoadException { - assert SYSTEM_IMPLEMENTATION.equals(reader.getName()); - SystemImplementation implementation = factory.createSystemImplementation(); - String implClass = reader.getAttributeValue(null, "class"); - Class<?> implementationClass; - try { - implementationClass = loaderContext.getResourceLoader().loadClass(implClass); - implementation.setImplementationClass(implementationClass); - } catch (ClassNotFoundException e) { - throw new ConfigurationLoadException(e); - } - - // todo we should allow componentType sidefiles for system implementations - implementation.setComponentType(introspector.introspect(implementationClass)); - - StAXUtil.skipToEndElement(reader); - return implementation; - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/message/Message.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/message/Message.java deleted file mode 100644 index dc623af1fc..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/message/Message.java +++ /dev/null @@ -1,58 +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.core.message; - -import org.apache.tuscany.core.wire.MessageChannel; -import org.apache.tuscany.core.wire.TargetInvoker; - -/** - * Represents a request, response, or exception flowing through a wire - * - * @version $Rev $Date - */ -public interface Message { - - /** - * Returns the body of the message, which will be the payload or parameters associated with the wire - */ - Object getBody(); - - /** - * Sets the body of the message. - */ - void setBody(Object body); - - /** - * Sets the target invoker to dispatch to when the message passes through the request side of the invocation chain - */ - public void setTargetInvoker(TargetInvoker invoker); - - /** - * Sets the target invoker to dispatch to when the message passes through the request side of the invocation chain - */ - public TargetInvoker getTargetInvoker(); - - /** - * Returns the callback channel - */ - public MessageChannel getCallbackChannel(); - - /** - * - */ - public Message getRelatedCallbackMessage(); -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/message/MessageFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/message/MessageFactory.java deleted file mode 100644 index 265e4ba601..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/message/MessageFactory.java +++ /dev/null @@ -1,29 +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.core.message; - -/** - * A factory for creating messages flowed through a wire during an invocation - */ -public interface MessageFactory { - - /** - * Returns a new message. - */ - Message createMessage(); - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/message/impl/MessageFactoryImpl.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/message/impl/MessageFactoryImpl.java deleted file mode 100644 index a30f17a938..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/message/impl/MessageFactoryImpl.java +++ /dev/null @@ -1,44 +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.core.message.impl; - -import org.apache.tuscany.core.message.Message; -import org.apache.tuscany.core.message.MessageFactory; -import org.osoa.sca.annotations.Scope; -import org.osoa.sca.annotations.Init; - -/** - * The default message factory - * - * @version $Rev$ $Date$ - */ -@Scope("MODULE") -public class MessageFactoryImpl implements MessageFactory { - - public MessageFactoryImpl() { - super(); - } - - @Init(eager = true) - public void init(){ - } - - public Message createMessage() { - return new MessageImpl(); - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/message/impl/MessageImpl.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/message/impl/MessageImpl.java deleted file mode 100644 index f7f365952c..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/message/impl/MessageImpl.java +++ /dev/null @@ -1,86 +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.core.message.impl; - -import org.apache.tuscany.core.message.Message; -import org.apache.tuscany.core.wire.MessageChannel; -import org.apache.tuscany.core.wire.TargetInvoker; - -/** - * The default implementation of a message flowed through a wire during an invocation - * - * @version $Rev $Date - */ -public class MessageImpl implements Message, MessageChannel { - - private Object body; - private Message relatedCallbackMessage; - private TargetInvoker invoker; - - protected MessageImpl() { - super(); - } - - /** - * @see org.apache.tuscany.core.message.Message#getBody() - */ - public Object getBody() { - return body; - } - - /** - * @see org.apache.tuscany.core.message.Message#setBody(java.lang.Object) - */ - public void setBody(Object body) { - this.body = body; - } - - /** - * @see org.apache.tuscany.core.message.Message#getCallbackChannel() - */ - public MessageChannel getCallbackChannel() { - return this; - } - - /** - * @see org.apache.tuscany.core.wire.MessageChannel#send(org.apache.tuscany.core.message.Message) - */ - public void send(Message message) { - relatedCallbackMessage = message; - } - - /** - * @see org.apache.tuscany.core.message.Message#getRelatedCallbackMessage() - */ - public Message getRelatedCallbackMessage() { - return relatedCallbackMessage; - } - - /** - * @see org.apache.tuscany.core.message.Message#setTargetInvoker(org.apache.tuscany.core.wire.TargetInvoker) - */ - public void setTargetInvoker(TargetInvoker invoker) { - this.invoker = invoker; - } - - /** - * @see org.apache.tuscany.core.message.Message#getTargetInvoker() - */ - public TargetInvoker getTargetInvoker() { - return invoker; - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContext.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContext.java deleted file mode 100644 index 16e1fc6483..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContext.java +++ /dev/null @@ -1,62 +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.core.runtime; - -import org.apache.tuscany.core.builder.WireBuilder; -import org.apache.tuscany.core.context.AutowireContext; -import org.apache.tuscany.core.context.CompositeContext; -import org.apache.tuscany.core.context.ConfigurationContext; -import org.apache.tuscany.core.context.SystemCompositeContext; - -/** - * Represents a top-level component context in the runtime, that is the bootstrap context. - * This context serves as the ultimate root of the context hierarchy. Under it are two - * separate trees: the rootContext for user components and the systemContext for - * system components (those that comprise the runtime itself). - * - * @version $Rev$ $Date$ - */ -public interface RuntimeContext extends AutowireContext, ConfigurationContext { - - /* the symbolic name of the runtime bootstrap context */ - public static final String RUNTIME = "tuscany.runtime"; - - /* the symbolic name of the composite context containing all system components in the runtime */ - public static final String SYSTEM = "tuscany.system"; - - /* the symbolic name of the composite context containing all user components in the runtime */ - public static final String ROOT = "tuscany.root"; - - /** - * Returns the context that forms the root of the user component tree. - * All user components will managed by contexts that are children of this root. - * @return the root of the user component tree - */ - public CompositeContext getRootContext(); - - /** - * Returns the context that forms the root of the system component tree. - * All system components, components that provide system services needed by the - * Tuscany runtime itself, will be managed by contexts that are children of this root. - * @return the root of the system component tree - */ - public SystemCompositeContext getSystemContext(); - - /** - * Adds a wire builder to the runtime - */ - @Deprecated - public void addBuilder(WireBuilder builder); - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContextImpl.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContextImpl.java deleted file mode 100644 index 0ebc063b90..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContextImpl.java +++ /dev/null @@ -1,221 +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.core.runtime; - -import java.util.List; - -import org.apache.tuscany.common.monitor.MonitorFactory; -import org.apache.tuscany.core.builder.BuilderConfigException; -import org.apache.tuscany.core.builder.ContextFactoryBuilderRegistry; -import org.apache.tuscany.core.builder.HierarchicalWireBuilder; -import org.apache.tuscany.core.builder.WireBuilder; -import org.apache.tuscany.core.builder.impl.AssemblyVisitorImpl; -import org.apache.tuscany.core.builder.impl.ContextFactoryBuilderRegistryImpl; -import org.apache.tuscany.core.config.ConfigurationException; -import org.apache.tuscany.core.context.AutowireContext; -import org.apache.tuscany.core.context.AutowireResolutionException; -import org.apache.tuscany.core.context.CompositeContext; -import org.apache.tuscany.core.context.ConfigurationContext; -import org.apache.tuscany.core.context.Context; -import org.apache.tuscany.core.context.CoreRuntimeException; -import org.apache.tuscany.core.context.EventException; -import org.apache.tuscany.core.context.QualifiedName; -import org.apache.tuscany.core.context.ScopeContext; -import org.apache.tuscany.core.context.SystemCompositeContext; -import org.apache.tuscany.core.context.TargetException; -import org.apache.tuscany.core.context.impl.AbstractContext; -import org.apache.tuscany.core.context.impl.CompositeContextImpl; -import org.apache.tuscany.core.context.impl.EventContextImpl; -import org.apache.tuscany.core.system.context.SystemCompositeContextImpl; -import org.apache.tuscany.core.system.context.SystemScopeStrategy; -import org.apache.tuscany.core.wire.SourceWireFactory; -import org.apache.tuscany.core.wire.TargetWireFactory; -import org.apache.tuscany.model.assembly.AssemblyContext; -import org.apache.tuscany.model.assembly.AssemblyObject; -import org.apache.tuscany.model.assembly.Composite; -import org.apache.tuscany.model.assembly.Extensible; - -/** - * Implementation of a <code>RuntimeContext</code> that forms the foundation for a Tuscany environment. - * - * @version $Rev$ $Date$ - */ -public class RuntimeContextImpl extends AbstractContext implements RuntimeContext { - - // the top-level wire builder in the runtime - private final HierarchicalWireBuilder wireBuilder; - - //private final List<RuntimeEventListener> listeners = new ArrayList<RuntimeEventListener>(1); - - private final CompositeContext rootContext; - - private final SystemCompositeContext systemContext; - - private final MonitorFactory monitorFactory; - - private final ContextFactoryBuilderRegistryImpl builderRegistry; - - public RuntimeContextImpl(MonitorFactory monitorFactory, ContextFactoryBuilderRegistry builderRegistry, HierarchicalWireBuilder wireBuilder) { - super(RUNTIME); - this.monitorFactory = monitorFactory; - this.builderRegistry = (ContextFactoryBuilderRegistryImpl) builderRegistry; - this.wireBuilder = wireBuilder; - - rootContext = new CompositeContextImpl(ROOT, this, this, new RuntimeScopeStrategy(), new EventContextImpl(), this); - systemContext = new SystemCompositeContextImpl(SYSTEM, this, this, new SystemScopeStrategy(), new EventContextImpl(), this); - } - - public void start() throws CoreRuntimeException { - if (lifecycleState == RUNNING) { - return; - } - systemContext.start(); - - rootContext.start(); - lifecycleState = RUNNING; - } - - public void stop() throws CoreRuntimeException { - if (lifecycleState == STOPPED) { - return; - } - rootContext.stop(); - systemContext.stop(); - lifecycleState = STOPPED; - } - - public void addBuilder(WireBuilder builder) { - assert (builder != null) : "Builder was null"; - wireBuilder.addWireBuilder(builder); - } - - public Context getContext(String ctxName) { - checkRunning(); - if (ROOT.equals(ctxName)) { - return rootContext; - } else if (SYSTEM.equals(ctxName)) { - return systemContext; - } - return rootContext.getContext(ctxName); - } - - public CompositeContext getRootContext() { - checkRunning(); - return rootContext; - } - - public SystemCompositeContext getSystemContext() { - checkRunning(); - return systemContext; - } - - public void registerModelObject(Extensible model) throws ConfigurationException { - assert (model != null) : "Model was null"; - // note do not configure or buildSource model object since the root context will perform a call back - rootContext.registerModelObject(model); - } - - public void registerModelObjects(List<? extends Extensible> models) throws ConfigurationException { - for (Extensible model : models) { - registerModelObject(model); - } - } - - public CompositeContext getParent() { - return null; // there is no parent - } - - public void setParent(CompositeContext parent) { - throw new UnsupportedOperationException(); - } - - public String getURI() { - return null; - } - - public void setURI(String uri) { - } - - public void setAssemblyContext(AssemblyContext context) { - - } - - //TODO remove - public void fireEvent(int pEventType, Object pMessage) throws EventException { - throw new UnsupportedOperationException(); - } - - public Object locateService(QualifiedName serviceName) { - return null; - } - - public Object locateInstance(QualifiedName serviceName) { - return null; - } - - public Object getInstance(QualifiedName qName) throws TargetException { - return getSystemContext().getInstance(qName); - } - - public synchronized void build(AssemblyObject model) throws BuilderConfigException { - AssemblyVisitorImpl visitor = new AssemblyVisitorImpl(builderRegistry.getBuilders()); - visitor.start(model); - } - - public void connect(SourceWireFactory sourceFactory, TargetWireFactory targetFactory, Class targetType, boolean downScope, - ScopeContext targetScopeContext) throws BuilderConfigException { - wireBuilder.connect(sourceFactory, targetFactory, targetType, downScope, targetScopeContext); - } - - public void completeTargetChain(TargetWireFactory targetFactory, Class targetType, ScopeContext targetScopeContext) - throws BuilderConfigException { - wireBuilder.completeTargetChain(targetFactory, targetType, targetScopeContext); - } - - public <T> T resolveInstance(Class<T> instanceInterface) throws AutowireResolutionException { - if (MonitorFactory.class.equals(instanceInterface)) { - return instanceInterface.cast(monitorFactory); - } else if (ConfigurationContext.class.equals(instanceInterface)) { - return instanceInterface.cast(this); - } else if (AutowireContext.class.equals(instanceInterface)) { - return instanceInterface.cast(this); - } else if (RuntimeContext.class.equals(instanceInterface)) { - return instanceInterface.cast(this); - } else if (ContextFactoryBuilderRegistry.class.equals(instanceInterface)) { - return instanceInterface.cast(builderRegistry); - } else { - // autowire to system components - return instanceInterface.cast(getSystemContext().resolveExternalInstance(instanceInterface)); - } - } - - public <T> T resolveExternalInstance(Class<T> instanceInterface) throws AutowireResolutionException { - return systemContext.resolveExternalInstance(instanceInterface); - } - - public Composite getComposite() { - return systemContext.getComposite(); - } - - public void removeContext(String name) { - - } - - private void checkRunning() { - if (lifecycleState != RUNNING) { - throw new IllegalStateException("Context must be in RUNNING state"); - } - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeMonitor.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeMonitor.java deleted file mode 100644 index c1b87d6a13..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeMonitor.java +++ /dev/null @@ -1,32 +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.core.runtime; - -import org.apache.tuscany.common.TuscanyException; -import org.apache.tuscany.common.TuscanyRuntimeException; - - -/** - * Serves as a top-level error logging monitor - * - * @version $Rev$ $Date$ - */ -public interface RuntimeMonitor { - - public void log(TuscanyRuntimeException e); - - public void log(TuscanyException e); - -} - diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeScopeStrategy.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeScopeStrategy.java deleted file mode 100644 index 5051c2674d..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeScopeStrategy.java +++ /dev/null @@ -1,46 +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.core.runtime; - -import org.apache.tuscany.core.context.EventContext; -import org.apache.tuscany.core.context.ScopeContext; -import org.apache.tuscany.core.context.scope.AbstractScopeStrategy; -import org.apache.tuscany.core.context.scope.CompositeScopeContext; -import org.apache.tuscany.model.assembly.Scope; - -import java.util.HashMap; -import java.util.Map; - -/** - * Implements a {@link org.apache.tuscany.core.context.ScopeStrategy} for a runtime context. Specifically, a runtime - * context has only one scope, {@link org.apache.tuscany.model.assembly.Scope#AGGREGATE} - * - * @version $Rev$ $Date$ - */ -public class RuntimeScopeStrategy extends AbstractScopeStrategy { - - public RuntimeScopeStrategy() { - } - - public Map<Scope, ScopeContext> getScopeContexts(EventContext eventContext) { - ScopeContext aggregrateScope = new CompositeScopeContext(eventContext); - Map<Scope, ScopeContext> scopes = new HashMap<Scope, ScopeContext>(); - scopes.put(Scope.AGGREGATE, aggregrateScope); - return scopes; - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/sdo/DataFactoryObjectFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/sdo/DataFactoryObjectFactory.java deleted file mode 100644 index 6b35115e1f..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/sdo/DataFactoryObjectFactory.java +++ /dev/null @@ -1,61 +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.core.sdo; - -import commonj.sdo.helper.DataFactory; -import org.apache.tuscany.core.builder.ContextResolver; -import org.apache.tuscany.core.builder.ObjectFactory; -import org.apache.tuscany.core.context.AutowireContext; -import org.apache.tuscany.core.context.CompositeContext; -import org.apache.tuscany.core.injection.ObjectCreationException; -import org.apache.tuscany.model.assembly.AssemblyContext; -import org.apache.tuscany.sdo.util.SDOUtil; - -/** - * @version $$Rev$$ $$Date$$ - */ -public class DataFactoryObjectFactory implements ObjectFactory<DataFactory> { - - private ContextResolver resolver; - - /** - * @throws org.apache.tuscany.core.injection.FactoryInitException - * - */ - public DataFactoryObjectFactory(ContextResolver resolver) { - this.resolver = resolver; - } - - - public DataFactory getInstance() throws ObjectCreationException { - CompositeContext parent = resolver.getCurrentContext(); - if (parent == null) { - return null;// FIXME semantic here means required is not followed - } - if (!(parent instanceof AutowireContext)) { - ObjectCreationException e = new ObjectCreationException("Parent does not implement " - + AutowireContext.class.getName()); - e.setIdentifier(parent.getName()); - throw e; - } - AutowireContext ctx = (AutowireContext) parent; - AssemblyContext assemblyContext = ctx.resolveInstance(AssemblyContext.class); - return SDOUtil.createDataFactory(assemblyContext.getTypeHelper()); - } - - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/sdo/TypeHelperObjectFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/sdo/TypeHelperObjectFactory.java deleted file mode 100644 index d345e7be95..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/sdo/TypeHelperObjectFactory.java +++ /dev/null @@ -1,61 +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.core.sdo; - -import commonj.sdo.helper.TypeHelper; -import org.apache.tuscany.core.builder.ContextResolver; -import org.apache.tuscany.core.builder.ObjectFactory; -import org.apache.tuscany.core.context.AutowireContext; -import org.apache.tuscany.core.context.CompositeContext; -import org.apache.tuscany.core.injection.ObjectCreationException; -import org.apache.tuscany.model.assembly.AssemblyContext; - -/** - * @version $$Rev$$ $$Date$$ - */ -public class TypeHelperObjectFactory implements ObjectFactory<TypeHelper> { - - - private ContextResolver resolver; - - /** - * @throws org.apache.tuscany.core.injection.FactoryInitException - * - */ - public TypeHelperObjectFactory(ContextResolver resolver) { - this.resolver = resolver; - } - - - public TypeHelper getInstance() throws ObjectCreationException { - CompositeContext parent = resolver.getCurrentContext(); - if (parent == null) { - return null;// FIXME semantic here means required is not followed - } - if (!(parent instanceof AutowireContext)) { - ObjectCreationException e = new ObjectCreationException("Parent does not implement " - + AutowireContext.class.getName()); - e.setIdentifier(parent.getName()); - throw e; - } - AutowireContext ctx = (AutowireContext) parent; - AssemblyContext assemblyContext = ctx.resolveInstance(AssemblyContext.class); - return assemblyContext.getTypeHelper(); - } - - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/sdo/XMLHelperObjectFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/sdo/XMLHelperObjectFactory.java deleted file mode 100644 index 04773f9770..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/sdo/XMLHelperObjectFactory.java +++ /dev/null @@ -1,61 +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.core.sdo; - -import commonj.sdo.helper.XMLHelper; -import org.apache.tuscany.core.builder.ContextResolver; -import org.apache.tuscany.core.builder.ObjectFactory; -import org.apache.tuscany.core.context.AutowireContext; -import org.apache.tuscany.core.context.CompositeContext; -import org.apache.tuscany.core.injection.ObjectCreationException; -import org.apache.tuscany.model.assembly.AssemblyContext; -import org.apache.tuscany.sdo.util.SDOUtil; - -/** - * @version $$Rev$$ $$Date$$ - */ -public class XMLHelperObjectFactory implements ObjectFactory<XMLHelper> { - - - private ContextResolver resolver; - - /** - * @throws org.apache.tuscany.core.injection.FactoryInitException - * - */ - public XMLHelperObjectFactory(ContextResolver resolver) { - this.resolver = resolver; - } - - - public XMLHelper getInstance() throws ObjectCreationException { - CompositeContext parent = resolver.getCurrentContext(); - if (parent == null) { - return null;// FIXME semantic here means required is not followed - } - if (!(parent instanceof AutowireContext)) { - ObjectCreationException e = new ObjectCreationException("Parent does not implement " - + AutowireContext.class.getName()); - e.setIdentifier(parent.getName()); - throw e; - } - AutowireContext ctx = (AutowireContext) parent; - AssemblyContext assemblyContext = ctx.resolveInstance(AssemblyContext.class); - return SDOUtil.createXMLHelper(assemblyContext.getTypeHelper()); - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/sdo/XSDHelperObjectFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/sdo/XSDHelperObjectFactory.java deleted file mode 100644 index eaddf15cb2..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/sdo/XSDHelperObjectFactory.java +++ /dev/null @@ -1,62 +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.core.sdo; - -import commonj.sdo.helper.XSDHelper; -import org.apache.tuscany.core.builder.ContextResolver; -import org.apache.tuscany.core.builder.ObjectFactory; -import org.apache.tuscany.core.context.AutowireContext; -import org.apache.tuscany.core.context.CompositeContext; -import org.apache.tuscany.core.injection.ObjectCreationException; -import org.apache.tuscany.model.assembly.AssemblyContext; -import org.apache.tuscany.sdo.util.SDOUtil; - -/** - * @version $$Rev$$ $$Date$$ - */ -public class XSDHelperObjectFactory implements ObjectFactory<XSDHelper> { - - - private ContextResolver resolver; - - /** - * @throws org.apache.tuscany.core.injection.FactoryInitException - * - */ - public XSDHelperObjectFactory(ContextResolver resolver) { - this.resolver = resolver; - } - - - public XSDHelper getInstance() throws ObjectCreationException { - CompositeContext parent = resolver.getCurrentContext(); - if (parent == null) { - return null;// FIXME semantic here means required is not followed - } - if (!(parent instanceof AutowireContext)) { - ObjectCreationException e = new ObjectCreationException("Parent does not implement " - + AutowireContext.class.getName()); - e.setIdentifier(parent.getName()); - throw e; - } - AutowireContext ctx = (AutowireContext) parent; - AssemblyContext assemblyContext = ctx.resolveInstance(AssemblyContext.class); - return SDOUtil.createXSDHelper(assemblyContext.getTypeHelper()); - } - - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelper.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelper.java deleted file mode 100644 index a804fc51b4..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelper.java +++ /dev/null @@ -1,40 +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.core.sdo.helper; - -import static java.lang.annotation.ElementType.FIELD; -import static java.lang.annotation.ElementType.METHOD; -import static java.lang.annotation.RetentionPolicy.RUNTIME; - -import java.lang.annotation.Retention; -import java.lang.annotation.Target; - -/** - * Annotation used to indicate a field or method that is used to inject an SDO helper. - * - * The following helpers are supported: - * commonj.sdo.helper.TypeHelper - * commonj.sdo.helper.DataFactory - * commonj.sdo.helper.XSDHelper - * commonj.sdo.helper.XMLHelper - * - */ -@Target({METHOD, FIELD}) -@Retention(RUNTIME) -public @interface SDOHelper { - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelperExtensibilityElement.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelperExtensibilityElement.java deleted file mode 100644 index c6f84fa485..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelperExtensibilityElement.java +++ /dev/null @@ -1,80 +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.core.sdo.helper; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -import commonj.sdo.helper.DataFactory; -import commonj.sdo.helper.TypeHelper; -import commonj.sdo.helper.XMLHelper; -import commonj.sdo.helper.XSDHelper; -import org.apache.tuscany.core.builder.ContextResolver; -import org.apache.tuscany.core.builder.ObjectFactory; -import org.apache.tuscany.core.extension.config.InjectorExtensibilityElement; -import org.apache.tuscany.core.injection.FieldInjector; -import org.apache.tuscany.core.injection.Injector; -import org.apache.tuscany.core.injection.MethodInjector; -import org.apache.tuscany.core.injection.ObjectCreationException; -import org.apache.tuscany.core.sdo.DataFactoryObjectFactory; -import org.apache.tuscany.core.sdo.TypeHelperObjectFactory; -import org.apache.tuscany.core.sdo.XMLHelperObjectFactory; -import org.apache.tuscany.core.sdo.XSDHelperObjectFactory; - -/** - * @version $$Rev$$ $$Date$$ - */ -public class SDOHelperExtensibilityElement implements InjectorExtensibilityElement { - - private Method method; - private Field field; - private Class<?> type; - - public SDOHelperExtensibilityElement(Method m) { - method = m; - assert(method != null); - assert(method.getParameterTypes().length == 1); - type = method.getParameterTypes()[0]; - } - - public SDOHelperExtensibilityElement(Field field) { - assert (field != null); - this.field = field; - this.type = field.getType(); - } - - public Injector<?> getInjector(ContextResolver resolver) { - ObjectFactory<?> factory; - if (TypeHelper.class.equals(type)) { - factory = new TypeHelperObjectFactory(resolver); - } else if (DataFactory.class.equals(type)) { - factory = new DataFactoryObjectFactory(resolver); - } else if (XSDHelper.class.equals(type)) { - factory = new XSDHelperObjectFactory(resolver); - } else if (XMLHelper.class.equals(type)) { - factory = new XMLHelperObjectFactory(resolver); - } else { - ObjectCreationException e = new ObjectCreationException("Unknown type"); - e.setIdentifier(type.getName()); - throw e; - } - if (method != null) { - return new MethodInjector(method, factory); - } - return new FieldInjector(field, factory); - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelperProcessor.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelperProcessor.java deleted file mode 100644 index dc8d97779f..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelperProcessor.java +++ /dev/null @@ -1,78 +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.core.sdo.helper; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.config.InvalidSetterException; -import org.apache.tuscany.core.config.processor.ImplementationProcessorSupport; -import org.apache.tuscany.model.assembly.ComponentType; -import org.osoa.sca.annotations.Scope; - -/** - * @version $$Rev$$ $$Date$$ - */ -@Scope("Module") -public class SDOHelperProcessor extends ImplementationProcessorSupport { - - @Override - public void visitMethod(Method method, ComponentType type) throws ConfigurationLoadException { - if (method.getDeclaringClass().equals(Object.class)) { - return; - } - SDOHelper annotation = method.getAnnotation(SDOHelper.class); - if (annotation != null) { - if (!Modifier.isPublic(method.getModifiers())) { - InvalidSetterException e = new InvalidSetterException("SDO setter method is not public"); - e.setIdentifier(method.toString()); - throw e; - } - Class<?>[] params = method.getParameterTypes(); - if (params.length != 1) { - InvalidSetterException e = new InvalidSetterException("SDO setter method must have one parameter"); - e.setIdentifier(method.toString()); - throw e; - } - type.getExtensibilityElements().add(new SDOHelperExtensibilityElement(method)); - - } - - - } - - @Override - public void visitField(Field field, ComponentType type) throws ConfigurationLoadException { - if (field.getDeclaringClass().equals(Object.class)) { - return; - } - int modifiers = field.getModifiers(); - SDOHelper annotation = field.getAnnotation(SDOHelper.class); - if (annotation != null) { - if (!Modifier.isPublic(modifiers) && !Modifier.isProtected(modifiers)) { - InvalidSetterException e = new InvalidSetterException("Property field is not public or protected"); - e.setIdentifier(field.getName()); - throw e; - } - type.getExtensibilityElements().add(new SDOHelperExtensibilityElement(field)); - } - } - - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/annotation/Autowire.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/annotation/Autowire.java deleted file mode 100644 index 5eb1f6b926..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/annotation/Autowire.java +++ /dev/null @@ -1,31 +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.core.system.annotation; - -import static java.lang.annotation.ElementType.FIELD; -import static java.lang.annotation.ElementType.METHOD; -import java.lang.annotation.Retention; -import static java.lang.annotation.RetentionPolicy.RUNTIME; -import java.lang.annotation.Target; - -/** - * A system annotation to inject an autowired instance - * - * @version $Rev$ $Date$ - */ -@Target( { METHOD, FIELD }) -@Retention(RUNTIME) -public @interface Autowire { - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/annotation/Monitor.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/annotation/Monitor.java deleted file mode 100644 index aa552b8e0d..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/annotation/Monitor.java +++ /dev/null @@ -1,32 +0,0 @@ -/** - * - * Copyright 2006 The Apache Software Foundation - * - * 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.core.system.annotation; - -import java.lang.annotation.Target; -import java.lang.annotation.Retention; -import java.lang.annotation.ElementType; -import java.lang.annotation.RetentionPolicy; - -/** - * A system annotation to inject a monitor - * - * @version $Rev: 392146 $ $Date: 2006-04-06 18:11:28 -0700 (Thu, 06 Apr 2006) $ - */ -@Target( { ElementType.METHOD, ElementType.FIELD }) -@Retention(RetentionPolicy.RUNTIME) -public @interface Monitor { -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/annotation/ParentContext.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/annotation/ParentContext.java deleted file mode 100644 index a9d07dbb5f..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/annotation/ParentContext.java +++ /dev/null @@ -1,32 +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.core.system.annotation; - -import static java.lang.annotation.ElementType.FIELD; -import static java.lang.annotation.ElementType.METHOD; -import java.lang.annotation.Retention; -import static java.lang.annotation.RetentionPolicy.RUNTIME; -import java.lang.annotation.Target; - -/** - * A system annotation to inject the parent context - * - * @version $Rev$ $Date$ - */ - -@Target( { METHOD, FIELD }) -@Retention(RUNTIME) -public @interface ParentContext { - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/assembly/SystemAssemblyFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/assembly/SystemAssemblyFactory.java deleted file mode 100644 index fea8d24ba6..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/assembly/SystemAssemblyFactory.java +++ /dev/null @@ -1,66 +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.core.system.assembly; - -import org.apache.tuscany.model.assembly.AssemblyFactory; -import org.apache.tuscany.model.assembly.Component; -import org.apache.tuscany.model.assembly.EntryPoint; -import org.apache.tuscany.model.assembly.Scope; - -/** - * A factory for building system assembly model artifacts - * - * @version $Rev$ $Date$ - */ -public interface SystemAssemblyFactory extends AssemblyFactory { - - /** - * Returns an assembly model artifact representing a system component implementation - */ - SystemImplementation createSystemImplementation(); - - /** - * Returns an assembly model artifact representing a system module - */ - SystemModule createSystemModule(); - - /** - * Returns an assembly model artifact representing a system binding - */ - SystemBinding createSystemBinding(); - - /** - * Helper method for creating a typical system component. - * - * @param name the name of the component - * @param service the service that the component provides - * @param impl the component implementation - * @param scope the component's scope - * @return a Component model object with the appropriate system implementation - */ - <T> Component createSystemComponent(String name, Class<T> service, Class<? extends T> impl, Scope scope); - - /** - * Helper method for creating a system entry point wired to a component. - * - * @param entryPointName the name of the entry point - * @param serviceContract the service contract exposed - * @param targetName the component to wire the entry point to - * @return a EntryPoint model object that exposes the service contract and is wired to the named component - */ - EntryPoint createSystemEntryPoint(String entryPointName, Class<?> serviceContract, String targetName); -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/assembly/SystemBinding.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/assembly/SystemBinding.java deleted file mode 100644 index edc7c87c85..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/assembly/SystemBinding.java +++ /dev/null @@ -1,37 +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.core.system.assembly; - -import org.apache.tuscany.model.assembly.Binding; - -/** - * Represents a system binding - * - * @version $Rev$ $Date$ - */ -public interface SystemBinding extends Binding { - - /** - * Returns the qualified name of the wire target the binding is associated with in component/service form - */ - public String getTargetName(); - - /** - * Sets the qualified name of the wire target the binding is associated with in component/service form - */ - public void setTargetName(String name); -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/assembly/SystemImplementation.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/assembly/SystemImplementation.java deleted file mode 100644 index a6a024ceca..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/assembly/SystemImplementation.java +++ /dev/null @@ -1,38 +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.core.system.assembly; - -import org.apache.tuscany.model.assembly.AtomicImplementation; - -/** - * Represents a system component implementation - * - * @version $Rev$ $Date$ - */ -public interface SystemImplementation extends AtomicImplementation { - - /** - * Returns the implementation class of the system component - */ - Class<?> getImplementationClass(); - - /** - * Sets the implementation class of the system component - */ - void setImplementationClass(Class<?> value); - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/assembly/SystemModule.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/assembly/SystemModule.java deleted file mode 100644 index a43aca67a2..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/assembly/SystemModule.java +++ /dev/null @@ -1,34 +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.core.system.assembly; - -/** - * - */ -import org.apache.tuscany.model.assembly.Module; - -public interface SystemModule extends Module { - - /** - * Returns the implementation class of the system component - */ - Class<?> getImplementationClass(); - - /** - * Sets the implementation class of the system component - */ - void setImplementationClass(Class<?> value); - -} - diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/assembly/impl/SystemAssemblyFactoryImpl.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/assembly/impl/SystemAssemblyFactoryImpl.java deleted file mode 100644 index c0d97c9a35..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/assembly/impl/SystemAssemblyFactoryImpl.java +++ /dev/null @@ -1,84 +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.core.system.assembly.impl; - -import org.apache.tuscany.core.system.assembly.SystemAssemblyFactory; -import org.apache.tuscany.core.system.assembly.SystemBinding; -import org.apache.tuscany.core.system.assembly.SystemImplementation; -import org.apache.tuscany.core.system.assembly.SystemModule; -import org.apache.tuscany.model.assembly.Component; -import org.apache.tuscany.model.assembly.ComponentType; -import org.apache.tuscany.model.assembly.EntryPoint; -import org.apache.tuscany.model.assembly.Scope; -import org.apache.tuscany.model.assembly.Service; -import org.apache.tuscany.model.assembly.impl.AssemblyFactoryImpl; -import org.apache.tuscany.model.types.java.JavaServiceContract; - -/** - * The default implementation of the system assembly factory - * - * @version $Rev$ $Date$ - */ -public class SystemAssemblyFactoryImpl extends AssemblyFactoryImpl implements SystemAssemblyFactory { - - public SystemAssemblyFactoryImpl() { - } - - public SystemImplementation createSystemImplementation() { - return new SystemImplementationImpl(); - } - - public SystemBinding createSystemBinding() { - return new SystemBindingImpl(); - } - - public <T> Component createSystemComponent(String name, Class<T> service, Class<? extends T> impl, Scope scope) { - JavaServiceContract jsc = createJavaServiceContract(); - jsc.setInterface(service); - jsc.setScope(scope); - Service s = createService(); - s.setServiceContract(jsc); - - ComponentType componentType = createComponentType(); - componentType.getServices().add(s); - - SystemImplementation sysImpl = createSystemImplementation(); - sysImpl.setImplementationClass(impl); - sysImpl.setComponentType(componentType); - - Component sc = createSimpleComponent(); - sc.setName(name); - sc.setImplementation(sysImpl); - return sc; - } - - public EntryPoint createSystemEntryPoint(String entryPointName, Class<?> serviceContract, String targetName) { - // create the system binding - SystemBinding systemBinding = createSystemBinding(); - - // define the EP's service contract - JavaServiceContract javaServiceContract = createJavaServiceContract(); - javaServiceContract.setInterface(serviceContract); - - return createEntryPoint(entryPointName, javaServiceContract, systemBinding, targetName); - } - - public SystemModule createSystemModule() { - return new SystemModuleImpl(); - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/assembly/impl/SystemBindingImpl.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/assembly/impl/SystemBindingImpl.java deleted file mode 100644 index a9996065e2..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/assembly/impl/SystemBindingImpl.java +++ /dev/null @@ -1,41 +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.core.system.assembly.impl; - -import org.apache.tuscany.core.system.assembly.SystemBinding; -import org.apache.tuscany.model.assembly.impl.BindingImpl; - -/** - * The default implementation of the system binding assembly artifact - * - * @version $Rev$ $Date$ - */ -public class SystemBindingImpl extends BindingImpl implements SystemBinding { - - protected SystemBindingImpl() { - } - - private String name; - - public String getTargetName() { - return name; - } - - public void setTargetName(String name) { - this.name = name; - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/assembly/impl/SystemImplementationImpl.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/assembly/impl/SystemImplementationImpl.java deleted file mode 100644 index cca3aef1bb..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/assembly/impl/SystemImplementationImpl.java +++ /dev/null @@ -1,45 +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.core.system.assembly.impl; - -import org.apache.tuscany.core.system.assembly.SystemImplementation; -import org.apache.tuscany.model.assembly.AssemblyContext; -import org.apache.tuscany.model.assembly.impl.AtomicImplementationImpl; - -/** - * The default implementation of the system implementation assembly artifact - * - * @version $Rev$ $Date$ - */ -public class SystemImplementationImpl extends AtomicImplementationImpl implements SystemImplementation { - - private Class<?> implementationClass; - - private AssemblyContext modelContext; - - protected SystemImplementationImpl() { - } - - public Class<?> getImplementationClass() { - return implementationClass; - } - - public void setImplementationClass(Class<?> value) { - checkNotFrozen(); - implementationClass = value; - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/assembly/impl/SystemModuleImpl.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/assembly/impl/SystemModuleImpl.java deleted file mode 100644 index 98198cba85..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/assembly/impl/SystemModuleImpl.java +++ /dev/null @@ -1,174 +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.core.system.assembly.impl; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.apache.tuscany.core.system.assembly.SystemModule; -import org.apache.tuscany.core.system.context.SystemCompositeContextImpl; -import org.apache.tuscany.model.assembly.AssemblyContext; -import org.apache.tuscany.model.assembly.AssemblyFactory; -import org.apache.tuscany.model.assembly.AssemblyVisitor; -import org.apache.tuscany.model.assembly.Component; -import org.apache.tuscany.model.assembly.ComponentType; -import org.apache.tuscany.model.assembly.ConfiguredProperty; -import org.apache.tuscany.model.assembly.ConfiguredReference; -import org.apache.tuscany.model.assembly.ConfiguredService; -import org.apache.tuscany.model.assembly.EntryPoint; -import org.apache.tuscany.model.assembly.ExternalService; -import org.apache.tuscany.model.assembly.Implementation; -import org.apache.tuscany.model.assembly.ModuleFragment; -import org.apache.tuscany.model.assembly.Multiplicity; -import org.apache.tuscany.model.assembly.OverrideOption; -import org.apache.tuscany.model.assembly.Reference; -import org.apache.tuscany.model.assembly.Service; -import org.apache.tuscany.model.assembly.ServiceContract; -import org.apache.tuscany.model.assembly.ServiceURI; -import org.apache.tuscany.model.assembly.Wire; -import org.apache.tuscany.model.assembly.impl.CompositeImpl; - -/** - * An implementation of Module. - */ -public class SystemModuleImpl extends CompositeImpl implements SystemModule { - - private List<ModuleFragment> moduleFragments = new ArrayList<ModuleFragment>(); - private Map<String, ModuleFragment> moduleFragmentsMap; - private ComponentType componentType; - private Object contextFactory; - - /** - * Constructor - */ - protected SystemModuleImpl() { - } - - /** - * @see org.apache.tuscany.model.assembly.Implementation#getComponentType() - */ - public ComponentType getComponentType() { - return componentType; - } - - /** - * @see org.apache.tuscany.model.assembly.Implementation#setComponentType(org.apache.tuscany.model.assembly.ComponentType) - */ - public void setComponentType(ComponentType componentType) { - checkNotFrozen(); - this.componentType = componentType; - } - - /** - * @see org.apache.tuscany.model.assembly.Module#getModuleFragments() - */ - public List<ModuleFragment> getModuleFragments() { - return moduleFragments; - } - - /** - * @see org.apache.tuscany.model.assembly.Module#getModuleFragment(java.lang.String) - */ - public ModuleFragment getModuleFragment(String name) { - checkInitialized(); - return moduleFragmentsMap.get(name); - } - - /** - * @see org.apache.tuscany.model.assembly.AssemblyObject#initialize(org.apache.tuscany.model.assembly.AssemblyContext) - */ - public void initialize(AssemblyContext modelContext) { - if (isInitialized()) - return; - - // Initialize module fragments - for (ModuleFragment moduleFragment : moduleFragments) { - - // Add all WSDL imports, components, entry points and external services from the module fragments - getWSDLImports().addAll(moduleFragment.getWSDLImports()); - getComponents().addAll(moduleFragment.getComponents()); - getEntryPoints().addAll(moduleFragment.getEntryPoints()); - getExternalServices().addAll(moduleFragment.getExternalServices()); - - // Add all the wires from the module fragments - getWires().addAll(moduleFragment.getWires()); - - moduleFragment.initialize(modelContext); - } - - // Initialize the composite - super.initialize(modelContext); - } - - /** - * @see org.apache.tuscany.model.assembly.AssemblyObject#freeze() - */ - public void freeze() { - if (isFrozen()) - return; - super.freeze(); - - // Freeze component type and module fragments - if (componentType != null) - componentType.freeze(); - moduleFragments = Collections.unmodifiableList(moduleFragments); - freeze(moduleFragments); - } - - /** - * @see org.apache.tuscany.model.assembly.ContextFactoryHolder#getContextFactory() - */ - public Object getContextFactory() { - return contextFactory; - } - - /** - * @see org.apache.tuscany.model.assembly.ContextFactoryHolder#setContextFactory(java.lang.Object) - */ - public void setContextFactory(Object configuration) { - checkNotFrozen(); - this.contextFactory = configuration; - } - - /** - * @see org.apache.tuscany.model.assembly.impl.CompositeImpl#accept(org.apache.tuscany.model.assembly.AssemblyVisitor) - */ - public boolean accept(AssemblyVisitor visitor) { - if (!super.accept(visitor)) - return false; - - if (componentType != null) { - if (!componentType.accept(visitor)) - return false; - } - - return accept(moduleFragments, visitor); - - } - - public Class<?> getImplementationClass() { - return SystemCompositeContextImpl.class; // FIXME hack - } - - public void setImplementationClass(Class<?> clazz) { - // do nothing - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/builder/SystemContextFactoryBuilder.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/builder/SystemContextFactoryBuilder.java deleted file mode 100644 index 835324c392..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/builder/SystemContextFactoryBuilder.java +++ /dev/null @@ -1,343 +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.core.system.builder; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - -import org.apache.tuscany.common.monitor.MonitorFactory; -import org.apache.tuscany.core.builder.BuilderConfigException; -import org.apache.tuscany.core.builder.BuilderException; -import org.apache.tuscany.core.builder.ContextFactoryBuilder; -import org.apache.tuscany.core.builder.ContextResolver; -import org.apache.tuscany.core.builder.NoAccessorException; -import org.apache.tuscany.core.builder.ObjectFactory; -import org.apache.tuscany.core.builder.UnknownTypeException; -import org.apache.tuscany.core.builder.impl.ArrayMultiplicityObjectFactory; -import org.apache.tuscany.core.builder.impl.ListMultiplicityObjectFactory; -import org.apache.tuscany.core.config.JavaIntrospectionHelper; -import org.apache.tuscany.core.context.impl.CompositeContextImpl; -import org.apache.tuscany.core.extension.config.InjectorExtensibilityElement; -import org.apache.tuscany.core.extension.config.extensibility.ComponentNameExtensibilityElement; -import org.apache.tuscany.core.extension.config.extensibility.ContextExtensibilityElement; -import org.apache.tuscany.core.extension.config.extensibility.DestroyInvokerExtensibilityElement; -import org.apache.tuscany.core.extension.config.extensibility.InitInvokerExtensibilityElement; -import org.apache.tuscany.core.injection.EventInvoker; -import org.apache.tuscany.core.injection.FactoryInitException; -import org.apache.tuscany.core.injection.FieldInjector; -import org.apache.tuscany.core.injection.Injector; -import org.apache.tuscany.core.injection.MethodInjector; -import org.apache.tuscany.core.injection.NonProxiedTargetFactory; -import org.apache.tuscany.core.injection.SingletonObjectFactory; -import org.apache.tuscany.core.system.assembly.SystemImplementation; -import org.apache.tuscany.core.system.assembly.SystemModule; -import org.apache.tuscany.core.system.config.SystemContextFactory; -import org.apache.tuscany.core.system.config.SystemInjectorExtensibilityElement; -import org.apache.tuscany.core.system.config.extensibility.MonitorExtensibilityElement; -import org.apache.tuscany.core.system.context.SystemCompositeContextImpl; -import org.apache.tuscany.model.assembly.AssemblyObject; -import org.apache.tuscany.model.assembly.Component; -import org.apache.tuscany.model.assembly.Composite; -import org.apache.tuscany.model.assembly.ConfiguredProperty; -import org.apache.tuscany.model.assembly.ConfiguredReference; -import org.apache.tuscany.model.assembly.ConfiguredService; -import org.apache.tuscany.model.assembly.Implementation; -import org.apache.tuscany.model.assembly.Module; -import org.apache.tuscany.model.assembly.Multiplicity; -import org.apache.tuscany.model.assembly.Scope; -import org.apache.tuscany.model.assembly.Service; - -/** - * Decorates components whose implementation type is a {@link org.apache.tuscany.core.system.assembly.SystemImplementation} - * with the appropriate runtime configuration. This builder handles both system composite components as well - * as system leaf or "simple" components. Consequently, both simple and composite component types may be - * injected and autowired. - * <p/> - * Note that system component references are not proxied. - * - * @version $Rev$ $Date$ - */ -public class SystemContextFactoryBuilder implements ContextFactoryBuilder { - - private final MonitorFactory monitorFactory; - - public SystemContextFactoryBuilder(MonitorFactory monitorFactory) { - this.monitorFactory = monitorFactory; - } - - @SuppressWarnings("unchecked") - public void build(AssemblyObject modelObject) throws BuilderException { - if (!(modelObject instanceof Component)) { - return; - } - Component component = (Component) modelObject; - - Class implClass; - Scope scope; - // Get the component implementation - Implementation componentImplementation = component.getImplementation(); - if (componentImplementation instanceof SystemImplementation - && component.getContextFactory() == null) { - - // The component is a system component, implemented by a Java class - SystemImplementation implementation = (SystemImplementation) componentImplementation; - if (componentImplementation.getComponentType().getServices() == null - || componentImplementation.getComponentType().getServices().size() < 1) { - BuilderConfigException e = new BuilderConfigException("No service configured on component type"); - e.setIdentifier(component.getName()); - throw e; - } - implClass = implementation.getImplementationClass(); - Scope previous = null; - scope = Scope.MODULE; - List<Service> services = component.getImplementation().getComponentType().getServices(); - for (Service service : services) { - // calculate and validate the scope of the component; ensure that all service scopes are the same unless - // a scope is stateless - Scope current = service.getServiceContract().getScope(); - if (previous != null && current != null && current != previous - && (current != Scope.INSTANCE && previous != Scope.INSTANCE)) { - BuilderException e = new BuilderConfigException("Incompatible scopes specified for services on component"); - e.setIdentifier(component.getName()); - throw e; - } - if (current != null && current != Scope.MODULE) { - scope = current; - } - } - - } else if (componentImplementation instanceof Composite) { - implClass = ((Composite) componentImplementation).getImplementationClass(); - if (implClass == null) { - // FIXME this is a hack - if (((Module) componentImplementation).getName().startsWith("org.apache.tuscany.core.system")) - { - // The component is a system module component, fix the implementation class to our implementation - // of system module component context - implClass = SystemCompositeContextImpl.class; - } else if (componentImplementation instanceof SystemModule) { - implClass = SystemCompositeContextImpl.class; - } else { - // The component is an app module component, fix the implementation class to our implementation - // of app module component context - //FIXME this should be extensible, i.e. the model should specify the impl class of the module - implClass = CompositeContextImpl.class; - } - //END hack - } - scope = Scope.AGGREGATE; - } else { - return; - } - Set<Field> fields; - Set<Method> methods; - SystemContextFactory contextFactory; - try { - fields = JavaIntrospectionHelper.getAllFields(implClass); - methods = JavaIntrospectionHelper.getAllUniqueMethods(implClass); - String name = component.getName(); - if (componentImplementation instanceof Module) { - Module module = (Module) componentImplementation; - contextFactory = new SystemContextFactory(name, module, JavaIntrospectionHelper.getDefaultConstructor(implClass), scope); - - } else { - contextFactory = new SystemContextFactory(name, JavaIntrospectionHelper.getDefaultConstructor(implClass), scope); - } - - //ContextObjectFactory contextObjectFactory = new ContextObjectFactory(contextFactory); - - List<Injector> injectors = new ArrayList<Injector>(); - - // handle properties - List<ConfiguredProperty> configuredProperties = component.getConfiguredProperties(); - if (configuredProperties != null) { - for (ConfiguredProperty property : configuredProperties) { - Injector injector = createPropertyInjector(property, fields, methods); - injectors.add(injector); - } - } - - // FIXME do not inject references on an application module yet - if (implClass != CompositeContextImpl.class) { - // handle references - List<ConfiguredReference> configuredReferences = component.getConfiguredReferences(); - if (configuredReferences != null) { - for (ConfiguredReference reference : configuredReferences) { - Injector injector = createReferenceInjector(reference, fields, methods, contextFactory); - injectors.add(injector); - } - } - } - List<Object> elements = componentImplementation.getComponentType().getExtensibilityElements(); - for (Object element : elements) { - if (element instanceof InitInvokerExtensibilityElement) { - InitInvokerExtensibilityElement invokerElement = (InitInvokerExtensibilityElement) element; - EventInvoker<Object> initInvoker = invokerElement.getEventInvoker(); - boolean eagerInit = invokerElement.isEager(); - contextFactory.setEagerInit(eagerInit); - contextFactory.setInitInvoker(initInvoker); - } else if (element instanceof DestroyInvokerExtensibilityElement) { - DestroyInvokerExtensibilityElement invokerElement = (DestroyInvokerExtensibilityElement) element; - EventInvoker<Object> destroyInvoker = invokerElement.getEventInvoker(); - contextFactory.setDestroyInvoker(destroyInvoker); - } else if (element instanceof ComponentNameExtensibilityElement) { - ComponentNameExtensibilityElement nameElement = (ComponentNameExtensibilityElement) element; - injectors.add(nameElement.getEventInvoker(name)); - } else if (element instanceof ContextExtensibilityElement) { - ContextExtensibilityElement contextElement = (ContextExtensibilityElement) element; - injectors.add(contextElement.getInjector(contextFactory)); - } else if (element instanceof InjectorExtensibilityElement) { - InjectorExtensibilityElement injectorElement = (InjectorExtensibilityElement) element; - injectors.add(injectorElement.getInjector(contextFactory)); - } else if (element instanceof SystemInjectorExtensibilityElement) { - SystemInjectorExtensibilityElement injectorElement = (SystemInjectorExtensibilityElement) element; - injectors.add(injectorElement.getInjector(contextFactory)); - } else if (element instanceof MonitorExtensibilityElement) { - MonitorExtensibilityElement monitorElement = (MonitorExtensibilityElement) element; - injectors.add(monitorElement.getInjector(monitorFactory)); - } - } - contextFactory.setSetters(injectors); - // decorate the logical model - component.setContextFactory(contextFactory); - } catch (BuilderConfigException e) { - e.addContextName(component.getName()); - throw e; - } catch (NoSuchMethodException e) { - BuilderConfigException ce = new BuilderConfigException("Class does not have a no-arg constructor", e); - ce.setIdentifier(implClass.getName()); - throw ce; - } catch (FactoryInitException e) { - BuilderConfigException ce = new BuilderConfigException("Error building component", e); - ce.addContextName(component.getName()); - throw ce; - } - } - - /** - * Creates an <code>Injector</code> for component properties - */ - private Injector createPropertyInjector(ConfiguredProperty property, Set<Field> fields, Set<Method> methods) - throws NoAccessorException { - Object value = property.getValue(); - String propName = property.getProperty().getName(); - // @FIXME is this how to get property type of object - Class type = value.getClass(); - - // There is no efficient way to do this - Method method = null; - Field field = JavaIntrospectionHelper.findClosestMatchingField(propName, type, fields); - if (field == null) { - method = JavaIntrospectionHelper.findClosestMatchingMethod(propName, new Class[]{type}, methods); - if (method == null) { - throw new NoAccessorException(propName); - } - } - Injector injector; - // FIXME support types other than String - if (JavaIntrospectionHelper.isImmutable(type)) { - if (field != null) { - injector = new FieldInjector(field, new SingletonObjectFactory<Object>(value)); - } else { - injector = new MethodInjector(method, new SingletonObjectFactory<Object>(value)); - } - } else { - if (field != null) { - throw new UnknownTypeException(field.getName()); - } else { - throw new UnknownTypeException(method.getName()); - } - } - return injector; - - } - - /** - * Creates object factories that resolve target(s) of a reference and an <code>Injector</code> responsible - * for injecting them into the reference - */ - private Injector createReferenceInjector(ConfiguredReference reference, Set<Field> fields, Set<Method> methods, - ContextResolver resolver) { - - List<ObjectFactory> objectFactories = new ArrayList<ObjectFactory>(); - String refName = reference.getPort().getName(); - Class refClass = reference.getPort().getServiceContract().getInterface(); - for (ConfiguredService configuredService : reference.getTargetConfiguredServices()) { - objectFactories.add(new NonProxiedTargetFactory(configuredService, resolver)); - } - boolean multiplicity = reference.getPort().getMultiplicity() == Multiplicity.ONE_N - || reference.getPort().getMultiplicity() == Multiplicity.ZERO_N; - return createInjector(refName, refClass, multiplicity, objectFactories, fields, methods); - - } - - /** - * Creates an <code>Injector</code> for an object factories associated with a reference. - */ - private Injector createInjector(String refName, Class refClass, boolean multiplicity, List<ObjectFactory> objectFactories, - Set<Field> fields, Set<Method> methods) throws NoAccessorException, BuilderConfigException { - Field field; - Method method = null; - if (multiplicity) { - // since this is a multiplicity, we cannot match on business interface type, so scan through the fields, - // matching on name and List or Array - field = JavaIntrospectionHelper.findMultiplicityFieldByName(refName, fields); - if (field == null) { - // No fields found. Again, since this is a multiplicity, we cannot match on interface type, so - // scan through the fields, matching on name and List or Array - method = JavaIntrospectionHelper.findMultiplicityMethodByName(refName, methods); - if (method == null) { - throw new NoAccessorException(refName); - } - } - Injector injector; - if (field != null) { - // for multiplicities, we need to inject the target or targets using an object factory - // which first delegates to create the proxies and then returns them in the appropriate List or array - // type - if (field.getType().isArray()) { - injector = new FieldInjector(field, new ArrayMultiplicityObjectFactory(refClass, objectFactories)); - } else { - injector = new FieldInjector(field, new ListMultiplicityObjectFactory(objectFactories)); - } - } else { - if (method.getParameterTypes()[0].isArray()) { - injector = new MethodInjector(method, new ArrayMultiplicityObjectFactory(refClass, objectFactories)); - } else { - injector = new MethodInjector(method, new ListMultiplicityObjectFactory(objectFactories)); - } - } - return injector; - } else { - field = JavaIntrospectionHelper.findClosestMatchingField(refName, refClass, fields); - if (field == null) { - method = JavaIntrospectionHelper.findClosestMatchingMethod(refName, new Class[]{refClass}, methods); - if (method == null) { - throw new NoAccessorException(refName); - } - } - Injector injector; - if (field != null) { - injector = new FieldInjector(field, objectFactories.get(0)); - } else { - injector = new MethodInjector(method, objectFactories.get(0)); - } - return injector; - } - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/builder/SystemEntryPointBuilder.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/builder/SystemEntryPointBuilder.java deleted file mode 100644 index c366da53d6..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/builder/SystemEntryPointBuilder.java +++ /dev/null @@ -1,67 +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.core.system.builder; - -import org.apache.tuscany.core.builder.BuilderException; -import org.apache.tuscany.core.builder.BuilderInitException; -import org.apache.tuscany.core.builder.ContextFactoryBuilder; -import org.apache.tuscany.core.injection.FactoryInitException; -import org.apache.tuscany.core.system.assembly.SystemBinding; -import org.apache.tuscany.core.system.config.SystemEntryPointContextFactory; -import org.apache.tuscany.model.assembly.AssemblyObject; -import org.apache.tuscany.model.assembly.ConfiguredService; -import org.apache.tuscany.model.assembly.EntryPoint; - -/** - * Decorates the logical model with entry point context configuration builders - * - * @version $Rev: 385747 $ $Date: 2006-03-13 22:12:53 -0800 (Mon, 13 Mar 2006) $ - */ -public class SystemEntryPointBuilder implements ContextFactoryBuilder { - - public SystemEntryPointBuilder() { - } - - public void build(AssemblyObject modelObject) throws BuilderException { - if (!(modelObject instanceof EntryPoint)) { - return; - } - EntryPoint entryPoint = (EntryPoint) modelObject; - if (!(entryPoint.getBindings().get(0) instanceof SystemBinding) - || entryPoint.getContextFactory() != null) { - return; - } - try { - String targetName; - ConfiguredService targetService = entryPoint.getConfiguredReference().getTargetConfiguredServices().get(0); - Class serviceInterface = entryPoint.getConfiguredReference().getPort().getServiceContract().getInterface(); - if (targetService.getPart() == null) { - // FIXME not correct - if (targetService.getPort() == null) { - BuilderInitException e = new BuilderInitException("No target service specified on "); - e.setIdentifier(entryPoint.getName()); - } - targetName = targetService.getPort().getName(); - } else { - targetName = targetService.getPart().getName(); - } - SystemEntryPointContextFactory contextFactory = new SystemEntryPointContextFactory(entryPoint.getName(), - targetName, serviceInterface); - entryPoint.setContextFactory(contextFactory); - } catch (FactoryInitException e) { - e.addContextName(entryPoint.getName()); - throw e; - } - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/builder/SystemExternalServiceBuilder.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/builder/SystemExternalServiceBuilder.java deleted file mode 100644 index a568e9aa2f..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/builder/SystemExternalServiceBuilder.java +++ /dev/null @@ -1,67 +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.core.system.builder; - -import org.apache.tuscany.core.builder.BuilderConfigException; -import org.apache.tuscany.core.builder.BuilderException; -import org.apache.tuscany.core.builder.ContextFactoryBuilder; -import org.apache.tuscany.core.injection.InterCompositeReferenceFactory; -import org.apache.tuscany.core.system.assembly.SystemBinding; -import org.apache.tuscany.core.system.config.SystemExternalServiceContextFactory; -import org.apache.tuscany.core.system.injection.AutowireObjectFactory; -import org.apache.tuscany.model.assembly.AssemblyObject; -import org.apache.tuscany.model.assembly.ExternalService; - -/** - * Creates runtime configurations for system type external services - * - * @version $Rev$ $Date$ - */ -public class SystemExternalServiceBuilder implements ContextFactoryBuilder { - - public SystemExternalServiceBuilder() { - } - - public void build(AssemblyObject modelObject) throws BuilderException { - if (!(modelObject instanceof ExternalService)) { - return; - } - ExternalService externalService = (ExternalService) modelObject; - if (externalService.getConfiguredService() != null - && externalService.getContextFactory() != null) { - return; - } else if (externalService.getBindings() == null || externalService.getBindings().size() < 1 - || !(externalService.getBindings().get(0) instanceof SystemBinding)) { - return; - } - SystemBinding binding = (SystemBinding)externalService.getBindings().get(0); - if (binding.getTargetName() != null) { - SystemExternalServiceContextFactory contextFactory = new SystemExternalServiceContextFactory(externalService - .getName(), new InterCompositeReferenceFactory(binding.getTargetName())); - externalService.setContextFactory(contextFactory); - } else if (externalService.getConfiguredService().getPort().getServiceContract().getInterface() != null) { - // autowire - Class<Object> claz = externalService.getConfiguredService().getPort().getServiceContract().getInterface(); - if (claz == null) { - BuilderException e = new BuilderConfigException("Interface type not specified"); - e.setIdentifier(externalService.getName()); - e.addContextName(externalService.getName()); - throw e; - } - SystemExternalServiceContextFactory config = new SystemExternalServiceContextFactory(externalService - .getName(), new AutowireObjectFactory<Object>(claz)); - externalService.setContextFactory(config); - } - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/SystemContextFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/SystemContextFactory.java deleted file mode 100644 index 2e4a2916ce..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/SystemContextFactory.java +++ /dev/null @@ -1,208 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.system.config; - -import org.apache.tuscany.common.TuscanyRuntimeException; -import org.apache.tuscany.core.builder.ContextCreationException; -import org.apache.tuscany.core.builder.ContextFactory; -import org.apache.tuscany.core.builder.ContextResolver; -import org.apache.tuscany.core.config.ConfigurationException; -import org.apache.tuscany.core.context.CompositeContext; -import org.apache.tuscany.core.context.Context; -import org.apache.tuscany.core.injection.EventInvoker; -import org.apache.tuscany.core.injection.Injector; -import org.apache.tuscany.core.injection.PojoObjectFactory; -import org.apache.tuscany.core.wire.SourceWireFactory; -import org.apache.tuscany.core.wire.TargetWireFactory; -import org.apache.tuscany.core.system.context.SystemAtomicContext; -import org.apache.tuscany.model.assembly.Module; -import org.apache.tuscany.model.assembly.Scope; - -import java.lang.reflect.Constructor; -import java.util.List; -import java.util.Map; - -/** - * A <code>ContextFactory</code> that handles system component implementation types, which may be either simple, leaf - * types or an composites. - * <p> - * For composite types, this factory delegates to an {@link org.apache.tuscany.core.builder.ObjectFactory} to create an - * instance of the composite implementation and perform injection of configuration and references. Once an composite - * instance is created, the factory will register the composite's children. This process may be done recursively in a - * lazy fashion, descending down an composite hierarchy as a child composite is instantiated. - * - * @version $Rev$ $Date$ - */ -public class SystemContextFactory implements ContextFactory<Context>, ContextResolver { - - // the component name as configured in the hosting module - private String name; - - // if this factory produces composites, the module will be the logical model associated with its children - private Module module; - - private CompositeContext parentContext; - - // the implementation type constructor - private Constructor ctr; - - // injectors for properties, references and other metadata values such as @Context - private List<Injector> setters; - - // an invoker for a method decorated with @Init - private EventInvoker init; - - // whether the component should be eagerly initialized when its scope starts - private boolean eagerInit; - - // an invoker for a method decorated with @Destroy - private EventInvoker destroy; - - // the scope of the implementation instance - private Scope scope; - - // if the component implementation scope is stateless - private boolean stateless; - - // if the component implementation is an composite context - private boolean isComposite; - - /** - * Creates the runtime configuration - * - * @param name the SCDL name of the component the context refers to - * @param ctr the implementation type constructor - * @param scope the scope of the component implementation type - */ - public SystemContextFactory(String name, Constructor ctr, Scope scope) { - this(name, null, ctr, scope); - } - - /** - * Creates the runtime configuration - * - * @param name the SCDL name of the component the context refers to - * @param module if this factory produces aggregagtes, the logical model associated with its children; otherwise - * null - * @param ctr the implementation type constructor - * @param scope the scope of the component implementation type - */ - public SystemContextFactory(String name, Module module, Constructor ctr, Scope scope) { - assert (name != null) : "Name was null"; - assert (ctr != null) : "Constructor was null"; - this.name = name; - this.module = module; - this.ctr = ctr; - this.isComposite = CompositeContext.class.isAssignableFrom(ctr.getDeclaringClass()); - this.scope = scope; - if (isComposite) { - scope = Scope.AGGREGATE; - } else { - stateless = (scope == Scope.INSTANCE); - } - } - - public String getName() { - return name; - } - - public void addProperty(String propertyName, Object value) { - - } - - public Scope getScope() { - return scope; - } - - public Context createContext() throws ContextCreationException { - if (isComposite) { - try { - // composite context types are themselves an instance context - PojoObjectFactory<CompositeContext> objectFactory = new PojoObjectFactory<CompositeContext>(ctr, null, setters); - CompositeContext ctx = objectFactory.getInstance(); - ctx.setName(name); - // the composite has been created, now register its children - if (module != null) { - try { - ctx.registerModelObject(module); - } catch (ConfigurationException e) { - ContextCreationException cce = new ContextCreationException("Error creating context", e); - cce.setIdentifier(getName()); - throw cce; - } - - } - return ctx; - } catch (TuscanyRuntimeException e) { - e.addContextName(name); - throw e; - } - } else { - PojoObjectFactory objectFactory = new PojoObjectFactory(ctr, null, setters); - return new SystemAtomicContext(name, objectFactory, eagerInit, init, destroy, stateless); - } - } - - public void addTargetWireFactory(String serviceName, TargetWireFactory factory) { - throw new UnsupportedOperationException(); - } - - public TargetWireFactory getTargetWireFactory(String serviceName) { - return null; - } - - public Map<String, TargetWireFactory> getTargetWireFactories() { - return null; - } - - public void addSourceWireFactory(String referenceName, SourceWireFactory factory) { - throw new UnsupportedOperationException(); - } - - public void addSourceWireFactories(String referenceName, Class referenceInterface, List<SourceWireFactory> factory, boolean multiplicity) { - - } - - public List<SourceWireFactory> getSourceWireFactories() { - return null; - } - - public void setSetters(List<Injector> setters) { - this.setters = setters; - } - - public void setEagerInit(boolean val) { - eagerInit = val; - } - - public void setInitInvoker(EventInvoker invoker) { - init = invoker; - } - - public void setDestroyInvoker(EventInvoker invoker) { - destroy = invoker; - } - - public void prepare(CompositeContext parent) { - parentContext = parent; - } - - public CompositeContext getCurrentContext() { - return parentContext; - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/SystemEntryPointContextFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/SystemEntryPointContextFactory.java deleted file mode 100644 index c9cfeccd6b..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/SystemEntryPointContextFactory.java +++ /dev/null @@ -1,99 +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.core.system.config; - -import org.apache.tuscany.core.builder.ContextCreationException; -import org.apache.tuscany.core.builder.ContextFactory; -import org.apache.tuscany.core.builder.ContextResolver; -import org.apache.tuscany.core.context.CompositeContext; -import org.apache.tuscany.core.context.EntryPointContext; -import org.apache.tuscany.core.wire.TargetWireFactory; -import org.apache.tuscany.core.wire.SourceWireFactory; -import org.apache.tuscany.core.system.context.SystemEntryPointContext; -import org.apache.tuscany.model.assembly.Scope; - -import java.util.List; -import java.util.Map; - -/** - * Creates {@link SystemEntryPointContext} instances based on an entry point configuration in an assembly model - * - * @version $Rev$ $Date$ - */ -public class SystemEntryPointContextFactory implements ContextFactory<EntryPointContext>, ContextResolver { - - // the name of the entry point - private String name; - - private CompositeContext parentContext; - - private String targetName; - - private Class serviceInterface; - - public SystemEntryPointContextFactory(String name, String targetName, Class serviceInterface) { - this.name = name; - this.targetName = targetName; - this.serviceInterface = serviceInterface; - } - - public EntryPointContext createContext() throws ContextCreationException { - return new SystemEntryPointContext(name, targetName, serviceInterface, this); - } - - public Scope getScope() { - return Scope.MODULE; - } - - public String getName() { - return name; - } - - - public void addTargetWireFactory(String serviceName, TargetWireFactory pFactory) { - throw new UnsupportedOperationException(); - } - - public TargetWireFactory getTargetWireFactory(String serviceName) { - return null; - } - - public Map<String, TargetWireFactory> getTargetWireFactories() { - return null; - } - - public void addSourceWireFactory(String referenceName, SourceWireFactory pFactory) { - throw new UnsupportedOperationException(); - } - - public void addSourceWireFactories(String referenceName, Class referenceInterface, List<SourceWireFactory> factory, boolean multiplicity) { - throw new UnsupportedOperationException(); - } - public void addProperty(String propertyName, Object value) { - - } - - public List<SourceWireFactory> getSourceWireFactories() { - return null; - } - - public void prepare(CompositeContext parent) { - this.parentContext = parent; - } - - public CompositeContext getCurrentContext() { - return parentContext; - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/SystemExtensibilityElement.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/SystemExtensibilityElement.java deleted file mode 100644 index 14655c2393..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/SystemExtensibilityElement.java +++ /dev/null @@ -1,23 +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.core.system.config; - -/** - * Base marker for system metadata extensions - * - * @version $$Rev$$ $$Date$$ - */ -public interface SystemExtensibilityElement { - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/SystemExternalServiceContextFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/SystemExternalServiceContextFactory.java deleted file mode 100644 index d62afa4425..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/SystemExternalServiceContextFactory.java +++ /dev/null @@ -1,110 +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.core.system.config; - -import org.apache.tuscany.core.builder.ContextCreationException; -import org.apache.tuscany.core.builder.ContextFactory; -import org.apache.tuscany.core.builder.ContextResolver; -import org.apache.tuscany.core.builder.ObjectFactory; -import org.apache.tuscany.core.context.CompositeContext; -import org.apache.tuscany.core.context.ExternalServiceContext; -import org.apache.tuscany.core.injection.InterCompositeReferenceFactory; -import org.apache.tuscany.core.system.context.SystemExternalServiceContext; -import org.apache.tuscany.core.system.injection.AutowireObjectFactory; -import org.apache.tuscany.core.wire.SourceWireFactory; -import org.apache.tuscany.core.wire.TargetWireFactory; -import org.apache.tuscany.model.assembly.Scope; - -import java.util.List; -import java.util.Map; - -/** - * Creates system type external service contexts - * - * @version $Rev$ $Date$ - * @see org.apache.tuscany.core.context.ExternalServiceContext - * @see org.apache.tuscany.core.system.context.SystemExternalServiceContext - */ -public class SystemExternalServiceContextFactory implements ContextFactory<ExternalServiceContext>, ContextResolver { - - // the name of the external service - private String name; - - // the factory for returning a reference to the implementation instance of the component represented by the external - // service - private ObjectFactory factory; - - private CompositeContext parentContext; - - public SystemExternalServiceContextFactory(String name, ObjectFactory factory) { - assert (name != null) : "Name was null"; - assert (factory != null) : "Object factory was null"; - this.name = name; - this.factory = factory; - } - - public Scope getScope() { - return Scope.MODULE; - } - - public String getName() { - return name; - } - - public void addProperty(String propertyName, Object value) { - throw new UnsupportedOperationException(); - } - - public ExternalServiceContext createContext() throws ContextCreationException { - return new SystemExternalServiceContext(name, factory); - } - - public void addTargetWireFactory(String serviceName, TargetWireFactory pFactory) { - throw new UnsupportedOperationException(); - } - - public TargetWireFactory getTargetWireFactory(String serviceName) { - return null; - } - - public Map<String, TargetWireFactory> getTargetWireFactories() { - return null; - } - - public void addSourceWireFactory(String referenceName, SourceWireFactory pFactory) { - throw new UnsupportedOperationException(); - } - - public void addSourceWireFactories(String referenceName, Class referenceInterface, List<SourceWireFactory> factory, boolean multiplicity) { - - } - - public List<SourceWireFactory> getSourceWireFactories() { - return null; - } - - public void prepare(CompositeContext parent) { - parentContext = parent; - if (factory instanceof InterCompositeReferenceFactory) { - ((InterCompositeReferenceFactory) factory).setContextResolver(this); - } else if (factory instanceof AutowireObjectFactory) { - ((AutowireObjectFactory) factory).setContextResolver(this); - } - } - - public CompositeContext getCurrentContext() { - return parentContext; - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/SystemInjectorExtensibilityElement.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/SystemInjectorExtensibilityElement.java deleted file mode 100644 index 7fca219399..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/SystemInjectorExtensibilityElement.java +++ /dev/null @@ -1,34 +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.core.system.config; - -import org.apache.tuscany.core.builder.ContextResolver; -import org.apache.tuscany.core.injection.Injector; - -/** - * An extensiblity element which provides {@link org.apache.tuscany.core.injection.Injector}s based on - * component type metadata specific to system services - * - * @version $$Rev$$ $$Date$$ - */ -public interface SystemInjectorExtensibilityElement { - /** - * Creates an injector - * - * @param resolver that returns the current composite context - */ - public Injector<?> getInjector(ContextResolver resolver); - -} - diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/SystemObjectContextFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/SystemObjectContextFactory.java deleted file mode 100644 index d4a21dd427..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/SystemObjectContextFactory.java +++ /dev/null @@ -1,98 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.system.config; - -import org.apache.tuscany.core.builder.ContextCreationException; -import org.apache.tuscany.core.builder.ContextFactory; -import org.apache.tuscany.core.builder.ObjectFactory; -import org.apache.tuscany.core.context.CompositeContext; -import org.apache.tuscany.core.context.Context; -import org.apache.tuscany.core.injection.SingletonObjectFactory; -import org.apache.tuscany.core.wire.WireFactory; -import org.apache.tuscany.core.wire.SourceWireFactory; -import org.apache.tuscany.core.wire.TargetWireFactory; -import org.apache.tuscany.core.system.context.SystemAtomicContext; -import org.apache.tuscany.model.assembly.Scope; - -import java.util.List; -import java.util.Map; - -/** - * A ContextFactory that contains the configuration needed to convert a simple - * Java Object into a component. The object is assumed to be fully initialized and - * will always be added with MODULE scope. - * - * @version $Rev$ $Date$ - */ -public class SystemObjectContextFactory implements ContextFactory { - private final String name; - private final ObjectFactory<?> objectFactory; - - /** - * Construct a ContextFactory for the supplied Java Object. - * - * @param name the name to be assigned to the resulting component - * @param instance the Java Object that provides the implementation - */ - public SystemObjectContextFactory(String name, Object instance) { - this.name = name; - objectFactory = new SingletonObjectFactory<Object>(instance); - } - - public Context createContext() throws ContextCreationException { - return new SystemAtomicContext(name, objectFactory, false, null, null, false); - } - - public Scope getScope() { - return Scope.MODULE; - } - - public String getName() { - return name; - } - - public void addProperty(String propertyName, Object value) { - - } - - public void addTargetWireFactory(String serviceName, TargetWireFactory factory) { - throw new UnsupportedOperationException(); - } - - public TargetWireFactory getTargetWireFactory(String serviceName) { - throw new UnsupportedOperationException(); - } - - public Map getTargetWireFactories() { - throw new UnsupportedOperationException(); - } - - public void addSourceWireFactory(String referenceName, SourceWireFactory factory) { - throw new UnsupportedOperationException(); - } - - public void addSourceWireFactories(String referenceName, Class referenceInterface, List factory, boolean multiplicity) { - - } - - public List<WireFactory> getSourceWireFactories() { - throw new UnsupportedOperationException(); - } - - public void prepare(CompositeContext parent) { - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/extensibility/AutowireExtensibilityElement.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/extensibility/AutowireExtensibilityElement.java deleted file mode 100644 index 42d3151c78..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/extensibility/AutowireExtensibilityElement.java +++ /dev/null @@ -1,53 +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.core.system.config.extensibility; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -import org.apache.tuscany.core.builder.ContextResolver; -import org.apache.tuscany.core.injection.FieldInjector; -import org.apache.tuscany.core.injection.Injector; -import org.apache.tuscany.core.injection.MethodInjector; -import org.apache.tuscany.core.system.config.SystemInjectorExtensibilityElement; -import org.apache.tuscany.core.system.injection.AutowireObjectFactory; - -/** - * A metadata extensbility element for autowires; creates injectors which return the target of an autowire - * - * @version $$Rev$$ $$Date$$ - */ -public class AutowireExtensibilityElement implements SystemInjectorExtensibilityElement { - - private Method method; - private Field field; - - public AutowireExtensibilityElement(Method m) { - assert(m == null || m.getParameterTypes().length == 1): "Illegal number of parameters"; - method = m; - } - - public AutowireExtensibilityElement(Field f) { - field = f; - } - - @SuppressWarnings("unchecked") - public Injector<?> getInjector(ContextResolver resolver) { - if (method != null) { - return new MethodInjector(method, new AutowireObjectFactory(method.getParameterTypes()[0], resolver)); - } else { - return new FieldInjector(field, new AutowireObjectFactory(field.getType(), resolver)); - } - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/extensibility/MonitorExtensibilityElement.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/extensibility/MonitorExtensibilityElement.java deleted file mode 100644 index 61c89d991b..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/extensibility/MonitorExtensibilityElement.java +++ /dev/null @@ -1,58 +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.core.system.config.extensibility; - -import java.lang.reflect.Method; -import java.lang.reflect.Field; - -import org.apache.tuscany.core.system.config.SystemExtensibilityElement; -import org.apache.tuscany.core.injection.Injector; -import org.apache.tuscany.core.injection.MethodInjector; -import org.apache.tuscany.core.injection.ContextObjectFactory; -import org.apache.tuscany.core.injection.FieldInjector; -import org.apache.tuscany.core.injection.SingletonObjectFactory; -import org.apache.tuscany.core.builder.ContextResolver; -import org.apache.tuscany.common.monitor.MonitorFactory; - -/** - * @version $$Rev$$ $$Date$$ - */ -public class MonitorExtensibilityElement implements SystemExtensibilityElement { - - private Method method; - private Field field; - - public MonitorExtensibilityElement(Method m) { - assert(m.getParameterTypes().length == 1): "Illegal number of parameters"; - method = m; - } - - public MonitorExtensibilityElement(Field f) { - field = f; - } - - public Injector<?> getInjector(MonitorFactory factory) { - if (method != null) { - Object monitor = factory.getMonitor(method.getParameterTypes()[0]); - return new MethodInjector(method, new SingletonObjectFactory<Object>(monitor)); - } else { - Object monitor = factory.getMonitor(field.getType()); - return new FieldInjector(field, new SingletonObjectFactory<Object>(monitor)); - } - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/extensibility/ParentContextExtensibilityElement.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/extensibility/ParentContextExtensibilityElement.java deleted file mode 100644 index b95b87c8de..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/extensibility/ParentContextExtensibilityElement.java +++ /dev/null @@ -1,54 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.system.config.extensibility; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -import org.apache.tuscany.core.builder.ContextResolver; -import org.apache.tuscany.core.injection.ContextObjectFactory; -import org.apache.tuscany.core.injection.FieldInjector; -import org.apache.tuscany.core.injection.Injector; -import org.apache.tuscany.core.injection.MethodInjector; -import org.apache.tuscany.core.system.config.SystemInjectorExtensibilityElement; - -/** - * @version $$Rev$$ $$Date$$ - */ -public class ParentContextExtensibilityElement implements SystemInjectorExtensibilityElement { - - private Method method; - private Field field; - - public ParentContextExtensibilityElement(Method m) { - assert(m.getParameterTypes().length == 1): "Illegal number of parameters"; - method = m; - } - - public ParentContextExtensibilityElement(Field f) { - field = f; - } - - public Injector<?> getInjector(ContextResolver resolver) { - if (method != null) { - return new MethodInjector(method, new ContextObjectFactory(resolver)); - } else { - return new FieldInjector(field, new ContextObjectFactory(resolver)); - } - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/processor/AutowireProcessor.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/processor/AutowireProcessor.java deleted file mode 100644 index 1885a5eaaa..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/processor/AutowireProcessor.java +++ /dev/null @@ -1,90 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.system.config.processor; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.config.InvalidSetterException; -import org.apache.tuscany.core.config.processor.ImplementationProcessorSupport; -import org.apache.tuscany.core.system.annotation.Autowire; -import org.apache.tuscany.core.system.config.extensibility.AutowireExtensibilityElement; -import org.apache.tuscany.core.context.SystemCompositeContext; -import org.apache.tuscany.core.context.ConfigurationContext; -import org.apache.tuscany.core.context.AutowireContext; -import org.apache.tuscany.core.runtime.RuntimeContext; -import org.apache.tuscany.core.builder.BuilderConfigException; -import org.apache.tuscany.model.assembly.ComponentType; -import org.apache.tuscany.common.monitor.MonitorFactory; - -/** - * Processes {@link Autowire} annotations - * - * @version $$Rev$$ $$Date$$ - */ -public class AutowireProcessor extends ImplementationProcessorSupport { - - @Override - public void visitMethod(Method method, ComponentType type) throws ConfigurationLoadException { - Autowire annotation = method.getAnnotation(Autowire.class); - if (annotation != null) { - if (!Modifier.isPublic(method.getModifiers())) { - InvalidSetterException e = new InvalidSetterException("Autowire setter method is not public"); - e.setIdentifier(method.toString()); - throw e; - } - if (method.getParameterTypes().length != 1){ - InvalidSetterException e = new InvalidSetterException("Autowire setter method must have one parameter"); - e.setIdentifier(method.toString()); - throw e; - } - checkAutowireType(method.getParameterTypes()[0],method.getDeclaringClass()); - type.getExtensibilityElements().add(new AutowireExtensibilityElement(method)); - } - } - - @Override - public void visitField(Field field, ComponentType type) throws ConfigurationLoadException { - checkAutowireType(field.getType(),field.getDeclaringClass()); - int modifiers = field.getModifiers(); - Autowire annotation = field.getAnnotation(Autowire.class); - if (annotation != null) { - if (!Modifier.isPublic(modifiers) && !Modifier.isProtected(modifiers)) { - InvalidSetterException e = new InvalidSetterException("Autowire field is not public or protected"); - e.setIdentifier(field.getName()); - throw e; - } - type.getExtensibilityElements().add(new AutowireExtensibilityElement(field)); - } - } - - - - private void checkAutowireType(Class paramClass, Class declaringClass) throws BuilderConfigException{ - if (SystemCompositeContext.class.isAssignableFrom(declaringClass) - && !(paramClass.equals(ConfigurationContext.class) - || paramClass.equals(MonitorFactory.class) - || paramClass.equals(RuntimeContext.class) || paramClass.equals( - AutowireContext.class))) { - BuilderConfigException e = new BuilderConfigException("Illegal autowire type for system context"); - e.setIdentifier(paramClass.getName()); - throw e; - } - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/processor/MonitorProcessor.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/processor/MonitorProcessor.java deleted file mode 100644 index 9d7f535cc8..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/processor/MonitorProcessor.java +++ /dev/null @@ -1,69 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.system.config.processor; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.config.InvalidSetterException; -import org.apache.tuscany.core.config.processor.ImplementationProcessorSupport; -import org.apache.tuscany.core.system.annotation.Monitor; -import org.apache.tuscany.core.system.config.extensibility.MonitorExtensibilityElement; -import org.apache.tuscany.model.assembly.ComponentType; - -/** - * Processes {@link org.apache.tuscany.core.system.annotation.Autowire} annotations - * - * @version $$Rev$$ $$Date$$ - */ -public class MonitorProcessor extends ImplementationProcessorSupport { - - @Override - public void visitMethod(Method method, ComponentType type) throws ConfigurationLoadException { - Monitor annotation = method.getAnnotation(Monitor.class); - if (annotation != null) { - if (!Modifier.isPublic(method.getModifiers())) { - InvalidSetterException e = new InvalidSetterException("Monitor setter method is not public"); - e.setIdentifier(method.toString()); - throw e; - } - if (method.getParameterTypes().length != 1) { - InvalidSetterException e = new InvalidSetterException("Monitor setter method must have one parameter"); - e.setIdentifier(method.toString()); - throw e; - } - type.getExtensibilityElements().add(new MonitorExtensibilityElement(method)); - } - } - - @Override - public void visitField(Field field, ComponentType type) throws ConfigurationLoadException { - int modifiers = field.getModifiers(); - Monitor annotation = field.getAnnotation(Monitor.class); - if (annotation != null) { - if (!Modifier.isPublic(modifiers) && !Modifier.isProtected(modifiers)) { - InvalidSetterException e = new InvalidSetterException("Monitor field is not public or protected"); - e.setIdentifier(field.getName()); - throw e; - } - type.getExtensibilityElements().add(new MonitorExtensibilityElement(field)); - } - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/processor/ParentContextProcessor.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/processor/ParentContextProcessor.java deleted file mode 100644 index 1ddc68e3e8..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/config/processor/ParentContextProcessor.java +++ /dev/null @@ -1,72 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.system.config.processor; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; - -import org.apache.tuscany.core.config.ConfigurationLoadException; -import org.apache.tuscany.core.config.InvalidSetterException; -import org.apache.tuscany.core.config.processor.ImplementationProcessorSupport; -import org.apache.tuscany.core.context.CompositeContext; -import org.apache.tuscany.core.system.annotation.ParentContext; -import org.apache.tuscany.core.system.config.extensibility.ParentContextExtensibilityElement; -import org.apache.tuscany.model.assembly.ComponentType; - -/** - * Processes {@link org.apache.tuscany.core.system.annotation.Autowire} annotations - * - * @version $$Rev$$ $$Date$$ - */ -public class ParentContextProcessor extends ImplementationProcessorSupport { - - @Override - public void visitMethod(Method method, ComponentType type) throws ConfigurationLoadException { - ParentContext annotation = method.getAnnotation(ParentContext.class); - if (annotation != null) { - if (!Modifier.isPublic(method.getModifiers())) { - InvalidSetterException e = new InvalidSetterException("ParentContext setter method is not public"); - e.setIdentifier(method.toString()); - throw e; - } - if (method.getParameterTypes().length != 1 - && !CompositeContext.class.isAssignableFrom(method.getParameterTypes()[0])) { - InvalidSetterException e = new InvalidSetterException("ParentContext setter method must have one parameter of type " + CompositeContext.class.getName()); - e.setIdentifier(method.toString()); - throw e; - } - type.getExtensibilityElements().add(new ParentContextExtensibilityElement(method)); - } - } - - @Override - public void visitField(Field field, ComponentType type) throws ConfigurationLoadException { - int modifiers = field.getModifiers(); - ParentContext annotation = field.getAnnotation(ParentContext.class); - if (annotation != null) { - if (!Modifier.isPublic(modifiers) && !Modifier.isProtected(modifiers)) { - InvalidSetterException e = new InvalidSetterException("ParentContext field is not public or protected"); - e.setIdentifier(field.getName()); - throw e; - } - type.getExtensibilityElements().add(new ParentContextExtensibilityElement(field)); - } - } - - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContext.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContext.java deleted file mode 100644 index 374555bfb6..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContext.java +++ /dev/null @@ -1,159 +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.core.system.context; - -import org.apache.tuscany.core.builder.ObjectFactory; -import org.apache.tuscany.core.injection.EventInvoker; -import org.apache.tuscany.core.injection.ObjectCallbackException; -import org.apache.tuscany.core.injection.ObjectCreationException; -import org.apache.tuscany.core.context.AtomicContext; -import org.apache.tuscany.core.context.impl.AbstractContext; -import org.apache.tuscany.core.context.TargetException; -import org.apache.tuscany.core.context.QualifiedName; -import org.apache.tuscany.core.context.ContextInitException; -import org.apache.tuscany.core.context.event.InstanceCreated; - -/** - * Manages system component implementation instances - * - * @version $Rev$ $Date$ - */ -public class SystemAtomicContext extends AbstractContext implements AtomicContext { - - private boolean eagerInit; - - private EventInvoker<Object> initInvoker; - - private EventInvoker<Object> destroyInvoker; - - private boolean stateless; - - // the cached target instance - private Object cachedTargetInstance; - - // responsible for creating a new implementation instance with injected references and properties - private ObjectFactory objectFactory; - - public SystemAtomicContext(String name, ObjectFactory objectFactory, boolean eagerInit, EventInvoker<Object> initInvoker, - EventInvoker<Object> destroyInvoker, boolean stateless) { - 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.stateless = stateless; - } - - public void setName(String name) { - super.setName(name); - } - - protected int type; - - public int getType() { - return type; - } - - public void setType(int type) { - this.type = type; - } - - public void init() throws TargetException{ - getInstance(null); - } - - public void destroy() throws TargetException { - if (cachedTargetInstance != null) { - if (destroyInvoker != null) { - try { - destroyInvoker.invokeEvent(cachedTargetInstance); - } catch (ObjectCallbackException e) { - throw new TargetException(e.getCause()); - } - } - } - lifecycleState = STARTED; - } - - public synchronized Object getInstance(QualifiedName qName) throws TargetException { - if (cachedTargetInstance != null) { - return cachedTargetInstance; // already cached, just return - } - - if (getLifecycleState() == ERROR || getLifecycleState() == CONFIG_ERROR) { - return null; - } - synchronized (this) { - try { - Object instance = objectFactory.getInstance(); - // handle @Init - if (initInvoker != null) { - initInvoker.invokeEvent(instance); - } - publish(new InstanceCreated(this)); - lifecycleState = RUNNING; - if (stateless) { - return instance; - } else { - // cache the actual instance - cachedTargetInstance = instance; - return cachedTargetInstance; - } - } catch (ObjectCreationException e) { - lifecycleState = ERROR; - TargetException te = new TargetException("Error creating component instance", e); - te.setIdentifier(getName()); - throw te; - } - } - - } - - public Object getTargetInstance() throws TargetException { - return getInstance(null); - } - - public boolean isEagerInit() { - return eagerInit; - } - - public boolean isDestroyable() { - return (destroyInvoker != null); - } - - public void start() throws ContextInitException { - if (getLifecycleState() != UNINITIALIZED && getLifecycleState() != STOPPED) { - throw new IllegalStateException("Component must be in UNINITIALIZED state [" + getLifecycleState() + "]"); - } - if (objectFactory == null) { - lifecycleState = ERROR; - ContextInitException e = new ContextInitException("Object factory not found "); - e.setIdentifier(getName()); - throw e; - } - lifecycleState = INITIALIZED; - } - - public void stop() { - lifecycleState = STOPPED; - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemCompositeContextImpl.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemCompositeContextImpl.java deleted file mode 100644 index 9ac0abe38a..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemCompositeContextImpl.java +++ /dev/null @@ -1,91 +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.core.system.context; - -import java.util.concurrent.ConcurrentHashMap; - -import org.apache.tuscany.core.config.ConfigurationException; -import org.apache.tuscany.core.context.AutowireContext; -import org.apache.tuscany.core.context.AutowireResolutionException; -import org.apache.tuscany.core.context.CompositeContext; -import org.apache.tuscany.core.context.ConfigurationContext; -import org.apache.tuscany.core.context.EventContext; -import org.apache.tuscany.core.context.ScopeContext; -import org.apache.tuscany.core.context.ScopeStrategy; -import org.apache.tuscany.core.context.SystemCompositeContext; -import org.apache.tuscany.core.context.impl.AbstractCompositeContext; -import org.apache.tuscany.core.context.impl.EventContextImpl; -import org.apache.tuscany.core.message.MessageFactory; -import org.apache.tuscany.core.message.impl.MessageFactoryImpl; -import org.apache.tuscany.core.system.config.SystemObjectContextFactory; -import org.apache.tuscany.core.wire.WireFactoryFactory; -import org.apache.tuscany.core.wire.jdk.JDKWireFactoryFactory; - - -/** - * Implements an composite context for system components. By default a system context uses the scopes specified by - * {@link org.apache.tuscany.core.system.context.SystemScopeStrategy}. In addition, it implements an autowire policy - * where entry points configured with a {@link org.apache.tuscany.core.system.assembly.SystemBinding} are matched - * according to their exposed interface. 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$ $Date$ - */ -public class SystemCompositeContextImpl extends AbstractCompositeContext implements SystemCompositeContext { - public SystemCompositeContextImpl() { - super(); - eventContext = new EventContextImpl(); - scopeStrategy = new SystemScopeStrategy(); - } - - public SystemCompositeContextImpl(String name, - CompositeContext parent, - AutowireContext autowire, - ScopeStrategy strategy, - EventContext ctx, - ConfigurationContext configCtx - ) { - super(name, parent, strategy, ctx, configCtx); - setAutowireContext(autowire); - scopeIndex = new ConcurrentHashMap<String, ScopeContext>(); - } - - public void registerJavaObject(String componentName, Class<?> service, Object instance) throws ConfigurationException { - SystemObjectContextFactory configuration = new SystemObjectContextFactory(componentName, instance); - registerConfiguration(configuration); - ScopeContext scope = scopeContexts.get(configuration.getScope()); - registerAutowireInternal(service, componentName, scope); - } - - // FIXME These should be removed and configured - private static final MessageFactory messageFactory = new MessageFactoryImpl(); - - private static final WireFactoryFactory WIRE_FACTORY_FACTORY = new JDKWireFactoryFactory(); - - public <T> T resolveInstance(Class<T> instanceInterface) throws AutowireResolutionException { - if (CompositeContext.class.equals(instanceInterface)) { - return instanceInterface.cast(this); - } else if (MessageFactory.class.equals(instanceInterface)) { - return instanceInterface.cast(messageFactory); - } else if (WireFactoryFactory.class.equals(instanceInterface)) { - return instanceInterface.cast(WIRE_FACTORY_FACTORY); - } else { - return super.resolveInstance(instanceInterface); - } - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemEntryPointContext.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemEntryPointContext.java deleted file mode 100644 index 107e676c47..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemEntryPointContext.java +++ /dev/null @@ -1,82 +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.core.system.context; - -import org.apache.tuscany.core.builder.ContextResolver; -import org.apache.tuscany.core.context.impl.AbstractContext; -import org.apache.tuscany.core.context.Context; -import org.apache.tuscany.core.context.CoreRuntimeException; -import org.apache.tuscany.core.context.EntryPointContext; -import org.apache.tuscany.core.context.QualifiedName; -import org.apache.tuscany.core.context.TargetException; - -/** - * Manages an entry point into a system module. System entry points cache a direct (i.e. non-proxied) reference to a - * component instance. - * - * @version $Rev$ $Date$ - */ -public class SystemEntryPointContext extends AbstractContext implements EntryPointContext { - - // a reference to the component's implementation instance exposed by the entry point - private Object cachedInstance; - - private ContextResolver resolver; - - private QualifiedName targetName; - - private Class serviceInterface; - - public SystemEntryPointContext(String name, String targetName, Class serviceInterface, ContextResolver resolver) { - super(name); - assert (resolver != null) : "Context resolver was null"; - assert (targetName != null) : "Target name was null"; - assert (serviceInterface != null) : "Service interface is null"; - this.serviceInterface = serviceInterface; - this.resolver = resolver; - this.targetName = new QualifiedName(targetName); - } - - public Object getInstance(QualifiedName qName) throws TargetException { - try { - if (cachedInstance == null) { - Context ctx = resolver.getCurrentContext().getContext(targetName.getPartName()); - if (ctx == null){ - return null; - } - cachedInstance = ctx.getInstance(targetName); - } - return cachedInstance; - } catch (TargetException e) { - e.addContextName(getName()); - throw e; - } - } - - public void start() throws CoreRuntimeException { - lifecycleState = RUNNING; - } - - public void stop() throws CoreRuntimeException { - lifecycleState = STOPPED; - } - - public Object getHandler() throws TargetException { - return getInstance(null); - } - - public Class getServiceInterface() { - return serviceInterface; - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemExternalServiceContext.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemExternalServiceContext.java deleted file mode 100644 index b85bd2722b..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemExternalServiceContext.java +++ /dev/null @@ -1,67 +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.core.system.context; - -import org.apache.tuscany.core.builder.ObjectFactory; -import org.apache.tuscany.core.context.impl.AbstractContext; -import org.apache.tuscany.core.context.ExternalServiceContext; -import org.apache.tuscany.core.context.QualifiedName; -import org.apache.tuscany.core.context.TargetException; - -/** - * An implementation of an external service for system wiring. As system components are not proxied and the system - * binding is by-reference, the implementation caches a reference to its configured target. - * - * @version $Rev$ $Date$ - */ -public class SystemExternalServiceContext extends AbstractContext implements ExternalServiceContext { - - // a factory for retrieving the target of the external service wire - private ObjectFactory factory; - - // the cached target - private Object cachedInstance; - - public SystemExternalServiceContext(String name, ObjectFactory factory) { - super(name); - assert (factory != null) : "Object factory was null"; - this.factory = factory; - } - - public Object getInstance(QualifiedName qName) throws TargetException { - try { - if (cachedInstance == null) { - cachedInstance = factory.getInstance(); - } - return cachedInstance; - } catch (TargetException e) { - e.addContextName(getName()); - throw e; - } - - } - - public void start() { - lifecycleState = RUNNING; - } - - public void stop() { - lifecycleState = STOPPED; - } - - public Object getHandler() throws TargetException { - return this; - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemScopeStrategy.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemScopeStrategy.java deleted file mode 100644 index 76b9f2856d..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemScopeStrategy.java +++ /dev/null @@ -1,56 +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.core.system.context; - -import org.apache.tuscany.core.context.EventContext; -import org.apache.tuscany.core.context.ScopeContext; -import org.apache.tuscany.core.context.scope.AbstractScopeStrategy; -import org.apache.tuscany.core.context.scope.CompositeScopeContext; -import org.apache.tuscany.core.context.scope.ModuleScopeContext; -import org.apache.tuscany.core.context.scope.StatelessScopeContext; -import org.apache.tuscany.model.assembly.Scope; - -import java.util.HashMap; -import java.util.Map; - -/** - * Implements a {@link org.apache.tuscany.core.context.ScopeStrategy} for a system composite context with the following scopes: - * <ul> - * <li>{@link org.apache.tuscany.model.assembly.Scope#AGGREGATE}</li> - * <li>{@link org.apache.tuscany.model.assembly.Scope#MODULE}</li> - * <li>{@link org.apache.tuscany.model.assembly.Scope#INSTANCE}</li> - * </ul> - * - * @version $Rev$ $Date$ - */ -public class SystemScopeStrategy extends AbstractScopeStrategy { - - public SystemScopeStrategy() { - } - - public Map<Scope, ScopeContext> getScopeContexts(EventContext eventContext) { - ScopeContext aggregrateScope = new CompositeScopeContext(eventContext); - ScopeContext moduleScoper = new ModuleScopeContext(eventContext); - ScopeContext statelessScope = new StatelessScopeContext(eventContext); - Map<Scope, ScopeContext> scopes = new HashMap<Scope, ScopeContext>(); - scopes.put(Scope.AGGREGATE, aggregrateScope); - scopes.put(Scope.MODULE, moduleScoper); - scopes.put(Scope.INSTANCE, statelessScope); - return scopes; - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/injection/AutowireObjectFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/injection/AutowireObjectFactory.java deleted file mode 100644 index 6c1d291673..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/system/injection/AutowireObjectFactory.java +++ /dev/null @@ -1,72 +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.core.system.injection; - -import org.apache.tuscany.core.builder.ContextResolver; -import org.apache.tuscany.core.builder.ObjectFactory; -import org.apache.tuscany.core.context.CompositeContext; -import org.apache.tuscany.core.context.AutowireContext; -import org.apache.tuscany.core.injection.FactoryInitException; -import org.apache.tuscany.core.injection.ObjectCreationException; - -/** - * Returns an instance by resolving against an AutowireContext. - * - * @version $Rev: 385139 $ $Date: 2006-03-11 11:03:11 -0800 (Sat, 11 Mar 2006) $ - */ -public class AutowireObjectFactory<T> implements ObjectFactory<T> { - - private ContextResolver resolver; - - private Class<T> autowireType; - - /** - * - * @throws FactoryInitException - */ - public AutowireObjectFactory(Class<T> autowireType,ContextResolver resolver) { - assert (autowireType != null) : "Target interface was null"; - this.resolver = resolver; - this.autowireType = autowireType; - } - - /** - * Creates a new factory that resolves against the cuurent context using the given implementation type - * - * @throws FactoryInitException - */ - public AutowireObjectFactory(Class<T> implementationType) { - this(implementationType, null); - } - - public T getInstance() throws ObjectCreationException { - CompositeContext parent = resolver.getCurrentContext(); - if (parent == null) { - return null;// FIXME semantic here means required is not followed - } - if (!(parent instanceof AutowireContext)) { - ObjectCreationException e = new ObjectCreationException("Parent does not implement " - + AutowireContext.class.getName()); - e.setIdentifier(parent.getName()); - throw e; - } - AutowireContext ctx = (AutowireContext) parent; - return ctx.resolveInstance(autowireType); - } - - public void setContextResolver(ContextResolver resolver) { - this.resolver = resolver; - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/webapp/ContextBinder.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/webapp/ContextBinder.java deleted file mode 100644 index 70b40e7269..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/webapp/ContextBinder.java +++ /dev/null @@ -1,39 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.webapp; - -import org.osoa.sca.ModuleContext; -import org.osoa.sca.SCA; - -/** - * @version $Rev$ $Date$ - */ -class ContextBinder extends SCA { - static final ContextBinder BINDER = new ContextBinder(); - - public void setContext(ModuleContext context) { - setModuleContext(context); - } - - public void start() { - throw new AssertionError(); - } - - public void stop() { - throw new AssertionError(); - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/webapp/LazyHTTPSessionId.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/webapp/LazyHTTPSessionId.java deleted file mode 100644 index c9e69eaa82..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/webapp/LazyHTTPSessionId.java +++ /dev/null @@ -1,56 +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.core.webapp; - -import org.apache.tuscany.core.context.ScopeIdentifier; - -import javax.servlet.http.HttpServletRequest; - -/** - * Implements a <code>ScopeIdentifier</code> for a Servlet-based transport. - * Wraps an <code>HttpServletRequest</code> so that the session id associated - * with the current request may be lazily retrieved by the module context - i.e. - * if a session context or session-scoped component is not accessed, no session - * is created. - * - * @version $Rev$ $Date$ - */ -public class LazyHTTPSessionId implements ScopeIdentifier { - - private HttpServletRequest request; - - //---------------------------------- - // Constructors - //---------------------------------- - - public LazyHTTPSessionId(HttpServletRequest request) { - this.request = request; - } - - //---------------------------------- - // Methods - //---------------------------------- - - /** - * Returns the session identifier - * - * @see org.apache.tuscany.core.context.ScopeIdentifier#getIdentifier() - */ - public Object getIdentifier() { - return request.getSession(true); - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/webapp/ServletHost.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/webapp/ServletHost.java deleted file mode 100644 index 85a4a180c5..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/webapp/ServletHost.java +++ /dev/null @@ -1,58 +0,0 @@ -/** - * - * Copyright 2006 The Apache Software Foundation - * - * 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.core.webapp; - -import javax.servlet.Servlet; - -/** - * Service interface implemented by host environments that allow Servlets - * to be registered. - * <p/> - * This interface allows an SCA system component to register a servlet to handle - * inbound requests. - * - * @version $Rev$ $Date$ - */ -public interface ServletHost { - /** - * Register a mapping for an instance of a Servlet. - * This requests that the servlet container direct all requests to the - * designated mapping to the supplied Servlet instance. - * - * @param mapping the uri-mapping for the Servlet - * @param servlet the Servlet that should be invoked - */ - void registerMapping(String mapping, Servlet servlet); - - /** - * Unregister a servlet mapping. - * This directs the servlet contain not to direct any more requests to - * a previously registered Servlet. - * - * @param mapping the uri-mapping for the Servlet - */ - void unregisterMapping(String mapping); - - /** - * Get the servlet instance registered for the mapping. - * - * @param mapping the uri-mapping for the Servlet - * @return the Servelt for the mapping or null if there is no Servlet registered for the mapping - */ - @Deprecated - Servlet getMapping(String mapping); -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/webapp/TuscanyRequestFilter.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/webapp/TuscanyRequestFilter.java deleted file mode 100644 index 6637448204..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/webapp/TuscanyRequestFilter.java +++ /dev/null @@ -1,96 +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.core.webapp; - -import org.apache.tuscany.core.context.CompositeContext; -import org.apache.tuscany.core.context.event.HttpSessionBound; -import org.apache.tuscany.core.context.event.RequestStart; -import org.apache.tuscany.core.context.event.RequestEnd; -import org.osoa.sca.CurrentModuleContext; -import org.osoa.sca.ModuleContext; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.Filter; -import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.FilterConfig; -import javax.servlet.ServletResponse; -import javax.servlet.FilterChain; -import javax.servlet.ServletRequest; -import java.io.IOException; - -/** - * Notifies the {@link org.apache.tuscany.core.context.CompositeContext} of web request start and end events as well as setting up the - * current session context. The latter is done using lazy Servlet-based session retrieval. The filter fires a session - * start event, passing a <tt>LazyServletSessionId</tt> as the session id. The <tt>LazyServletSessionId</tt> is a - * wrapper for the servlet request which may be called by the <tt>ModuleContext</tt> to retrieve the session id - * lazily. - * - * @version $Rev: 379957 $ $Date: 2006-02-22 14:58:24 -0800 (Wed, 22 Feb 2006) $ - */ -public class TuscanyRequestFilter implements Filter { - private CompositeContext moduleContext; - - public TuscanyRequestFilter() { - } - - public void init(FilterConfig filterConfig) throws ServletException { - ServletContext servletContext = filterConfig.getServletContext(); - moduleContext = (CompositeContext) servletContext.getAttribute(TuscanyServletListener.MODULE_COMPONENT_NAME); - } - - public void destroy() { - } - - public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws ServletException, IOException { - ModuleContext oldContext = CurrentModuleContext.getContext(); - try { - // Set the current module context - ContextBinder.BINDER.setContext((ModuleContext) moduleContext); - - // Handle a request - if (request instanceof HttpServletRequest) { - if (((HttpServletRequest) request).getSession(false) != null) { - - // A session is already active - moduleContext.publish(new HttpSessionBound(this, ((HttpServletRequest) request).getSession(true))); - } else { - // Create a lazy wrapper since a session is not yet active - moduleContext.publish(new HttpSessionBound(this, new LazyHTTPSessionId((HttpServletRequest) request))); - } - } else { - moduleContext.publish(new HttpSessionBound(this, request)); - } - // Start processing the request - moduleContext.publish(new RequestStart(this, request)); - // Dispatch to the next filter - filterChain.doFilter(request, response); - } catch (Exception e) { - throw new ServletException(e); - - } finally { - try { - // End processing the request - moduleContext.publish(new RequestEnd(this, request)); - } catch (Exception e) { - throw new ServletException(e); - } - ContextBinder.BINDER.setContext(oldContext); - } - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/webapp/TuscanyServletListener.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/webapp/TuscanyServletListener.java deleted file mode 100644 index 8c9c215d64..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/webapp/TuscanyServletListener.java +++ /dev/null @@ -1,129 +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.core.webapp; - -import org.apache.tuscany.common.monitor.MonitorFactory; -import org.apache.tuscany.common.monitor.impl.NullMonitorFactory; -import org.apache.tuscany.core.builder.ContextFactoryBuilderRegistry; -import org.apache.tuscany.core.builder.impl.DefaultWireBuilder; -import org.apache.tuscany.core.client.BootstrapHelper; -import org.apache.tuscany.core.config.ConfigurationException; -import org.apache.tuscany.core.config.ModuleComponentConfigurationLoader; -import org.apache.tuscany.core.context.CompositeContext; -import org.apache.tuscany.core.context.SystemCompositeContext; -import org.apache.tuscany.core.context.event.ModuleStop; -import org.apache.tuscany.core.context.event.ModuleStart; -import org.apache.tuscany.core.context.event.HttpSessionEnd; -import org.apache.tuscany.core.runtime.RuntimeContext; -import org.apache.tuscany.core.runtime.RuntimeContextImpl; -import org.apache.tuscany.model.assembly.AssemblyContext; -import org.apache.tuscany.model.assembly.ModuleComponent; -import org.osoa.sca.CurrentModuleContext; -import org.osoa.sca.ModuleContext; - -import javax.servlet.ServletContext; -import javax.servlet.ServletContextEvent; -import javax.servlet.ServletContextListener; -import javax.servlet.http.HttpSessionEvent; -import javax.servlet.http.HttpSessionListener; - -/** - * ServletContextListener that can be added to a standard web application to boot - * a Tuscany runtime inside that application. All implementation classes should - * be located in the web application itself. - * - * @version $Rev: 380792 $ $Date: 2006-02-24 11:25:11 -0800 (Fri, 24 Feb 2006) $ - */ -public class TuscanyServletListener implements ServletContextListener, HttpSessionListener { - public static final String SCA_COMPONENT_NAME = "org.apache.tuscany.core.webapp.ModuleComponentName"; - public static final String MODULE_COMPONENT_NAME = "org.apache.tuscany.core.webapp.ModuleComponentContext"; - public static final String TUSCANY_RUNTIME_NAME = RuntimeContext.class.getName(); - - private RuntimeContext runtime; - private CompositeContext moduleContext; - - private static final String SYSTEM_MODULE_COMPONENT = "org.apache.tuscany.core.system"; - - public void contextInitialized(ServletContextEvent servletContextEvent) { - ServletContext servletContext = servletContextEvent.getServletContext(); - String name = servletContext.getInitParameter(SCA_COMPONENT_NAME); - String uri = name; // todo get from context path - MonitorFactory monitorFactory = new NullMonitorFactory(); // todo have one that writes to the servlet log - - try { - bootRuntime(name, uri, monitorFactory); - } catch (ConfigurationException e) { - throw new RuntimeException(e.getMessage(), e); - } - - servletContext.setAttribute(TUSCANY_RUNTIME_NAME, runtime); - servletContext.setAttribute(MODULE_COMPONENT_NAME, moduleContext); - } - - public void contextDestroyed(ServletContextEvent servletContextEvent) { - moduleContext.publish(new ModuleStop(this)); - moduleContext.stop(); - SystemCompositeContext systemContext = runtime.getSystemContext(); - systemContext.publish(new ModuleStop(this)); - systemContext.stop(); - runtime.stop(); - servletContextEvent.getServletContext().removeAttribute(MODULE_COMPONENT_NAME); - servletContextEvent.getServletContext().removeAttribute(TUSCANY_RUNTIME_NAME); - } - - public void sessionCreated(HttpSessionEvent event) { - // do nothing since sessions are lazily created in {@link TuscanyRequestFilter} - } - - public void sessionDestroyed(HttpSessionEvent event) { - // todo do we actually need to bind the module context to the thread to fire this event? - ModuleContext oldContext = CurrentModuleContext.getContext(); - try { - ContextBinder.BINDER.setContext((ModuleContext) moduleContext); - moduleContext.publish(new HttpSessionEnd(this, event.getSession())); - } finally{ - ContextBinder.BINDER.setContext(oldContext); - } - } - - private void bootRuntime(String name, String uri, MonitorFactory monitorFactory) throws ConfigurationException { - - // Create an assembly model context - ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); - AssemblyContext modelContext = BootstrapHelper.getModelContext(classLoader); - - // Create a runtime context and start it - ContextFactoryBuilderRegistry builderRegistry = BootstrapHelper.bootstrapContextFactoryBuilders(monitorFactory); - runtime = new RuntimeContextImpl(monitorFactory, builderRegistry, new DefaultWireBuilder()); - runtime.start(); - - // Load and start the system configuration - SystemCompositeContext systemContext = runtime.getSystemContext(); - BootstrapHelper.bootstrapStaxLoader(systemContext, modelContext); - ModuleComponentConfigurationLoader loader = BootstrapHelper.getConfigurationLoader(systemContext, modelContext); - ModuleComponent systemModuleComponent = loader.loadSystemModuleComponent(SYSTEM_MODULE_COMPONENT, SYSTEM_MODULE_COMPONENT); - CompositeContext context = BootstrapHelper.registerModule(systemContext, systemModuleComponent); - context.publish(new ModuleStart(this)); - - // Load the SCDL configuration of the application module - CompositeContext rootContext = runtime.getRootContext(); - ModuleComponent moduleComponent = loader.loadModuleComponent(name, uri); - moduleContext = BootstrapHelper.registerModule(rootContext, moduleComponent); - - moduleContext.publish(new ModuleStart(this)); - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/Interceptor.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/Interceptor.java deleted file mode 100644 index 1e87e45616..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/Interceptor.java +++ /dev/null @@ -1,42 +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.core.wire; - -import org.apache.tuscany.core.message.Message; - -/** - * Synchronous, around-style mediation associated with a client- or target- side wire. - * - * @version $Rev$ $Date$ - */ -public interface Interceptor { - - /** - * Process a synchronous wire. - * - * @param msg the request Message for the wire - * @return the response Message from the wire - */ - Message invoke(Message msg); - - /** - * Sets the next interceptor. - * - * @param next - */ - void setNext(Interceptor next); -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/InvocationConfiguration.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/InvocationConfiguration.java deleted file mode 100644 index 94e8d91ba5..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/InvocationConfiguration.java +++ /dev/null @@ -1,181 +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.core.wire; - -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.List; - -/** - * Contains a source- or target-side invocation pipeline for a service operation. The runtime framework creates invocation chains - * on a per-operation, per-service basis. Further, invocation chains are further distinguished by being part of the source or - * target sides of a wire. Chains are "bridged" together by the runtime by a set of {@link - * org.apache.tuscany.core.builder.WireBuilder}s with the source-side holding references to the target. - * <p/> - * <code>InvocationChain</code>s are managed by {@link WireConfiguration}s, which are used by {@link - * org.apache.tuscany.core.wire.WireFactory}s to buildSource wires and proxies. - * <p/> - * Invocation configurations must contain at least one interceptor and may have 0 to N handlers. Handlers process a wire request - * or response in a one-way fashion. A typical wire sequence where interceptors and handlers are configured for both the source - * and target-side will proceed as follows: - * <pre> - * <ol> - * <li>The first source interceptor will be called with a message, which will in - * turn invoke the next interceptor in the chain <li>The last source interceptor, which must be of type {@link - * org.apache.tuscany.core.wire.impl.RequestResponseInterceptor} if there are handlers present, will be invoked. The RR - * interceptor will in turn pass the message to a {@link MessageChannel} which will invoke all source-side request handlers. - * <li>The RR interceptor will then invoke the target-side request <code>MessageChannel</code>. - * <li>The last source-side handler, an instance of {@link org.apache.tuscany.core.wire.impl.MessageDispatcher}, will invoke the - * first source-side interceptor, which in turn will pass the message down the target-side interceptor chain. - * <li>If the target is a component instance the last target-side interceptor, an instance of - * {@link org.apache.tuscany.core.wire.impl.InvokerInterceptor} will retrieve the {@link TargetInvoker} from the message and - * call it to invoke the operation on a target instance. <tt>TargetInvoker</tt>s are help by - * the source proxy to enable optimizations such as caching of target instances. <li> The response is returned up the wire - * stack - * until it reaches the source-side <tt>RequestResponseInterceptor</tt>, which invokes the target and source-side response - * channels respectively. - * <li>The response is then passed back up the rest of the wire stack. </ol> - * </pre> - * <p/> - * The source-to-target bridge may be constructed in any of the following ways: - * <pre> - * <ul> - * <li>Source handler-to-target handler - * <li>Source handler-to-target interceptor - * <li>Source interceptor-to-target handler - * <li>Source interceptor-to-target interceptor - * </ul> - * </pre> - * <p/> - * In some scenarios, a service proxy may only contain target-side invocaton chains, for example, when a service is resolved - * through a locate operation by a non-component client. In this case, there will be no source-side wire chains and the target - * invoker will be held by the target-side and passed down the pipeline. - * - * @version $Rev$ $Date$ - * @see org.apache.tuscany.core.builder.WireBuilder - * @see WireFactory - * @see TargetInvoker - * @see org.apache.tuscany.core.wire.impl.MessageDispatcher - */ -public abstract class InvocationConfiguration { - - // the operation on the target that will utlimately be invoked - protected Method operation; - - // responsible for invoking a target instance - protected TargetInvoker targetInvoker; - - protected Interceptor interceptorChainHead; - - protected Interceptor interceptorChainTail; - - protected List<MessageHandler> requestHandlers; - - protected List<MessageHandler> responseHandlers; - - public InvocationConfiguration(Method operation) { - assert (operation != null) : "No operation type specified"; - this.operation = operation; - } - - /** - * Returns the target operation for this invocation chain - */ - public Method getMethod() { - return operation; - } - - /** - * Adds an request handler to the invocation chain - */ - public void addRequestHandler(MessageHandler handler) { - if (requestHandlers == null) { - requestHandlers = new ArrayList<MessageHandler>(); - } - requestHandlers.add(handler); - } - - /** - * Adds an response handler to the invocation chain - */ - public void addResponseHandler(MessageHandler handler) { - if (responseHandlers == null) { - responseHandlers = new ArrayList<MessageHandler>(); - } - responseHandlers.add(handler); - } - - /** - * Returns the request handler chain - */ - public List<MessageHandler> getRequestHandlers() { - return requestHandlers; - } - - /** - * Returns the response handler chain - */ - public List<MessageHandler> getResponseHandlers() { - return responseHandlers; - } - - /** - * Sets the target invoker to pass down the chain - */ - public void setTargetInvoker(TargetInvoker invoker) { - this.targetInvoker = invoker; - } - - /** - * Returns the target invoker that is passed down the chain - */ - public TargetInvoker getTargetInvoker() { - return targetInvoker; - } - - /** - * Adds an interceptor to the chain - */ - public void addInterceptor(Interceptor interceptor) { - if (interceptorChainHead == null) { - interceptorChainHead = interceptor; - } else { - interceptorChainTail.setNext(interceptor); - } - interceptorChainTail = interceptor; - } - - /** - * Returns the last interceptor in the chain - */ - public Interceptor getTailInterceptor() { - return interceptorChainTail; - } - - /** - * Returns the first interceptor in the chain - */ - public Interceptor getHeadInterceptor() { - return interceptorChainHead; - } - - /** - * Signals to the chain that its configuration is complete. Implementations may use this callback to prepare there invocation - * chains. - */ - public abstract void build(); -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/InvocationRuntimeException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/InvocationRuntimeException.java deleted file mode 100644 index 5e3dbaa204..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/InvocationRuntimeException.java +++ /dev/null @@ -1,44 +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.core.wire; - -import org.osoa.sca.ServiceRuntimeException; - -/** - * Denotes a runtime exception thrown during an invocation over a wire - * - * @version $Rev$ $Date$ - */ -public class InvocationRuntimeException extends ServiceRuntimeException { - - public InvocationRuntimeException() { - super(); - } - - public InvocationRuntimeException(String message) { - super(message); - } - - public InvocationRuntimeException(String message, Throwable cause) { - super(message, cause); - } - - public InvocationRuntimeException(Throwable cause) { - super(cause); - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/MessageChannel.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/MessageChannel.java deleted file mode 100644 index 07a7594849..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/MessageChannel.java +++ /dev/null @@ -1,33 +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.core.wire; - -import org.apache.tuscany.core.message.Message; - -/** - * Represents a one-way pipeline through which messages are sent during an invocation over a wire - * - * @see org.apache.tuscany.core.message.Message - */ -public interface MessageChannel { - - /** - * Sends a message - */ - void send(Message message); - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/MessageHandler.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/MessageHandler.java deleted file mode 100644 index 19442f3663..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/MessageHandler.java +++ /dev/null @@ -1,34 +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.core.wire; - -import org.apache.tuscany.core.message.Message; - - -/** - * Performs a uni-directional mediation on a message - * - * @see org.apache.tuscany.core.message.Message - */ -public interface MessageHandler { - - /** - * Process a message. - */ - boolean processMessage(Message message); - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/MethodHashMap.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/MethodHashMap.java deleted file mode 100644 index c0e40e0644..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/MethodHashMap.java +++ /dev/null @@ -1,55 +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.core.wire; - -import org.apache.tuscany.core.config.JavaIntrospectionHelper; - -import java.lang.reflect.Method; -import java.util.HashMap; - -/** - * A <code>Map</code> implementation that performs a lookup on a collection of methods by method name. This implementation is used - * to map methods on one interface to compatible methods on another interface, for example, when flowing an invocation from a - * proxy injected on a source reference to a target service instance. - * - * @version $Rev$ $Date$ - */ -public class MethodHashMap<T extends InvocationConfiguration> extends HashMap<Method, T> { - - public MethodHashMap() { - super(); - } - - public MethodHashMap(int size) { - super(size); - } - - /** - * @see java.util.HashMap#get(java.lang.Object) - */ - public T get(Object key) { - if (key instanceof Method) { - Method m = (Method) key; - //FIXME find a more efficient way to find a matching method - Method closestMethod = JavaIntrospectionHelper.findClosestMatchingMethod(m.getName(), m.getParameterTypes(), super.keySet()); - return super.get(closestMethod); - } else { - throw new IllegalArgumentException("Key must be a method"); - } - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/ProxyCreationException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/ProxyCreationException.java deleted file mode 100644 index 2caa613b8f..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/ProxyCreationException.java +++ /dev/null @@ -1,43 +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.core.wire; - -/** - * Denotes an error creating a proxy representing for a wire - * - * @version $Rev: 394379 $ $Date: 2006-04-15 15:01:36 -0700 (Sat, 15 Apr 2006) $ - */ -public class ProxyCreationException extends WireException { - - public ProxyCreationException() { - super(); - } - - public ProxyCreationException(String message, Throwable cause) { - super(message, cause); - } - - public ProxyCreationException(String message) { - super(message); - } - - public ProxyCreationException(Throwable cause) { - super(cause); - } - -} - diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/SourceInvocationConfiguration.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/SourceInvocationConfiguration.java deleted file mode 100644 index 80e1450a0d..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/SourceInvocationConfiguration.java +++ /dev/null @@ -1,131 +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.core.wire; - -import org.apache.tuscany.core.wire.impl.MessageChannelImpl; -import org.apache.tuscany.core.wire.impl.MessageDispatcher; -import org.apache.tuscany.core.wire.impl.RequestResponseInterceptor; - -import java.lang.reflect.Method; - -/** - * Contains a source-side invocation pipeline for a service operation. - * - * @version $Rev: 394379 $ $Date: 2006-04-15 15:01:36 -0700 (Sat, 15 Apr 2006) $ - */ -public class SourceInvocationConfiguration extends InvocationConfiguration { - - // the pointer to the bridged target head interceptor or null if the target has no interceptors - private Interceptor targetInterceptorChainHead; - - // the pointer to bridged target request channel, or null if the target has an interceptor - private MessageChannel targetRequestChannel; - - // the pointer to bridged target response channel, or null if the target has an interceptor - private MessageChannel targetResponseChannel; - - /** - * Creates an new wire configuration for the given service reference operation - * - * @param operation the method on the interface representing specified by the reference, where the method corresponds to the - * service operation - */ - public SourceInvocationConfiguration(Method operation) { - super(operation); - } - - /** - * Sets the head interceptor of the target-side configuration for the wire. Used when the runtime bridges source and target - * chains. - * - * @param interceptor - */ - public void setTargetInterceptor(Interceptor interceptor) { - targetInterceptorChainHead = interceptor; - } - - /** - * Returns the head target-side interceptor. This will be the head interceptor of the "bridged" target configuration. - */ - public Interceptor getTargetInterceptor() { - return targetInterceptorChainHead; - } - - /** - * Sets the target-side request channel. Used when the runtime bridges source and target chains. - */ - public void setTargetRequestChannel(MessageChannel channel) { - targetRequestChannel = channel; - } - - /** - * Sets the target-side response channel. Used when the runtime bridges source and target chains. - */ - public void setTargetResponseChannel(MessageChannel channel) { - targetResponseChannel = channel; - } - - /** - * Prepares the configuration by linking interceptors and handlers - */ - @Override - public void build() { - - if (requestHandlers != null && targetInterceptorChainHead != null) { - // on target-side, connect existing handlers and interceptors - MessageHandler messageDispatcher = new MessageDispatcher(targetInterceptorChainHead); - requestHandlers.add(messageDispatcher); - } - - if (requestHandlers != null) { - MessageChannel requestChannel = new MessageChannelImpl(requestHandlers); - MessageChannel responseChannel = new MessageChannelImpl(responseHandlers); - Interceptor channelInterceptor = new RequestResponseInterceptor(requestChannel, targetRequestChannel, - responseChannel, targetResponseChannel); - - if (interceptorChainHead != null) { - interceptorChainTail.setNext(channelInterceptor); - } else { - interceptorChainHead = channelInterceptor; - } - - } else { - // no request handlers - if (interceptorChainHead != null) { - if (targetInterceptorChainHead != null) { - // Connect source interceptor chain directly to target interceptor chain - interceptorChainTail.setNext(targetInterceptorChainHead); - // interceptorChainTail = targetInterceptorChainHead; - } else { - // Connect source interceptor chain to the target request channel - Interceptor channelInterceptor = new RequestResponseInterceptor(null, targetRequestChannel, null, - targetResponseChannel); - interceptorChainTail.setNext(channelInterceptor); - } - } else { - // no source interceptor chain or source handlers, conntect to target interceptor chain or channel - if (targetInterceptorChainHead != null) { - interceptorChainHead = targetInterceptorChainHead; - interceptorChainTail = targetInterceptorChainHead; - } else { - Interceptor channelInterceptor = new RequestResponseInterceptor(null, targetRequestChannel, null, - targetResponseChannel); - interceptorChainHead = channelInterceptor; - interceptorChainTail = channelInterceptor; - } - } - } - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/SourceWireFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/SourceWireFactory.java deleted file mode 100644 index c460c71bd5..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/SourceWireFactory.java +++ /dev/null @@ -1,34 +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.core.wire; - -/** - * Implementations are responsible for managing the source side of a wire. - * - * @version $$Rev$$ $$Date$$ - */ -public interface SourceWireFactory<T> extends WireFactory<T>{ - - /** - * Returns the configuration information used to create the source-side of a wire, including invocation chains - */ - public WireSourceConfiguration getConfiguration(); - - /** - * Sets the configuration information used to create the source-side of a wire, including invocation chains - */ - public void setConfiguration(WireSourceConfiguration config); - - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/TargetInvocationConfiguration.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/TargetInvocationConfiguration.java deleted file mode 100644 index fc7810763d..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/TargetInvocationConfiguration.java +++ /dev/null @@ -1,49 +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.core.wire; - -import org.apache.tuscany.core.wire.impl.MessageDispatcher; - -import java.lang.reflect.Method; - -/** - * Contains a target-side invocation pipeline for a service operation. - * - * @version $Rev: 394379 $ $Date: 2006-04-15 15:01:36 -0700 (Sat, 15 Apr 2006) $ - */ -public class TargetInvocationConfiguration extends InvocationConfiguration { - - /** - * Creates an new target-side pipeline for the given operation - * - * @param operation the method on the interface representing target service, where the method corresponds to the service - * operation - */ - public TargetInvocationConfiguration(Method operation) { - super(operation); - } - - /** - * Prepares the configuration by linking interceptors and handlers - */ - @Override - public void build() { - if (requestHandlers != null && interceptorChainHead != null) { - // on target-side, connect existing handlers and interceptors - MessageHandler messageDispatcher = new MessageDispatcher(interceptorChainHead); - requestHandlers.add(messageDispatcher); - } - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/TargetInvoker.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/TargetInvoker.java deleted file mode 100644 index 387da1bca3..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/TargetInvoker.java +++ /dev/null @@ -1,47 +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.core.wire; - -import java.lang.reflect.InvocationTargetException; - -/** - * Implementations are responsible for resolving a target and performing the actual invocation on it, for example, a - * service component implementation instance or an external service client. - * - * @version $Rev$ $Date$ - */ -public interface TargetInvoker extends Interceptor, Cloneable{ - - /** - * Responsible for invoking an operation on a target with the given payload - * - * @param payload the parameters of the target operation or null - * @throws InvocationTargetException if the target operation itself throws an exception. The root cause will be set - * to that exception - */ - public Object invokeTarget(Object payload) throws InvocationTargetException; - - /** - * Determines whether the proxy can be cached on the client/source side - */ - public boolean isCacheable(); - - /** - * Implementations must support deep cloning - */ - public Object clone() throws CloneNotSupportedException; -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/TargetWireFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/TargetWireFactory.java deleted file mode 100644 index f46754b975..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/TargetWireFactory.java +++ /dev/null @@ -1,33 +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.core.wire; - -/** - * Implementations are responsible for managing the target side of a wire - * - * @version $$Rev$$ $$Date$$ - */ -public interface TargetWireFactory<T> extends WireFactory<T> { - - /** - * Returns the configuration information used to create the target-side of a wire, including invocation chains - */ - public WireTargetConfiguration getConfiguration(); - - /** - * Sets the configuration information used to create the target-side of a wire, including invocation chains - */ - public void setConfiguration(WireTargetConfiguration config); - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/WireConfiguration.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/WireConfiguration.java deleted file mode 100644 index 78ab6ee3c7..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/WireConfiguration.java +++ /dev/null @@ -1,92 +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.core.wire; - -import org.apache.tuscany.core.context.QualifiedName; -import org.apache.tuscany.core.message.MessageFactory; - -import java.lang.reflect.Method; -import java.util.Map; - -/** - * Contains configuration for a wire, including its invocation chains. Invocation chains are accessed from the collection of - * {@link InvocationConfiguration}s keyed by operation on the service specified by the source reference or target service. - * <code>WireConfiguration</code> subtypes distinguish between source and target sides of a wire and hence return corresponding - * <code>InvocationChain</code> subtypes. Operations are represented using JDK reflection, i.e. as a <code>Method</code> - * corresponding to the Java interface representing the service. - * <p/> - * Wire configurations are created from an assembly model by the runtime during the buildSource phase. - * - * @version $Rev$ $Date$ - */ -public abstract class WireConfiguration<T extends InvocationConfiguration> { - - protected Map<Method, T> configurations; - - protected ClassLoader proxyClassLoader; - - protected MessageFactory messageFactory; - - protected QualifiedName targetName; - - /** - * Creates the configuration - * - * @param targetName the qualified name of the target service specified by the wire - * @param proxyClassLoader the classloader to use when creating a proxy - * @param messageFactory the factory used to create wire messages - */ - public WireConfiguration(QualifiedName targetName, ClassLoader proxyClassLoader, MessageFactory messageFactory) { - this.targetName = targetName; - this.messageFactory = messageFactory; - if (proxyClassLoader == null) { - this.proxyClassLoader = Thread.currentThread().getContextClassLoader(); - } else { - this.proxyClassLoader = proxyClassLoader; - } - } - - /** - * Returns the qualified name of the target service specified by the wire - */ - public QualifiedName getTargetName() { - return targetName; - } - - /** - * Returns the classloader used for creating proxies - */ - public ClassLoader getProxyClassLoader() { - return proxyClassLoader; - } - - /** - * Returns the factory used to create invocation messages - */ - public MessageFactory getMessageFactory() { - return messageFactory; - } - - /** - * Returns the invocation configuration for each operation on a service specified by a reference or a target service. - */ - public Map<Method, T> getInvocationConfigurations() { - return configurations; - } - - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/WireException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/WireException.java deleted file mode 100644 index 0bada0bbfc..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/WireException.java +++ /dev/null @@ -1,43 +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.core.wire; - -import org.apache.tuscany.common.TuscanyException; - -/** - * Denotes a top-level exception dealing with a wire - */ -public abstract class WireException extends TuscanyException { - - public WireException() { - super(); - } - - public WireException(String message) { - super(message); - } - - public WireException(String message, Throwable cause) { - super(message, cause); - } - - public WireException(Throwable cause) { - super(cause); - } - -} - diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/WireFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/WireFactory.java deleted file mode 100644 index 55cab31adf..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/WireFactory.java +++ /dev/null @@ -1,76 +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.core.wire; - -/** - * Implementations are responsible for managing source or target sides of a wire, including creation of service proxies. - * Source-side wires are injected on references and may contain policy interceptors and/or handlers specified by them. Target-side - * wires may contain policy interceptors and/or handlers specified by the service the wire is targeted to or one of its - * operations. Source- and target-side <code>WireFactory</code>s are held in the {@link org.apache.tuscany.core.builder.ContextFactory} - * associated with the source reference or target service. - * <p/> - * When an assembly is built by the runtime, source-side and target-side wires are "bridged" on the source side (i.e. a reference - * to the target-side is stored in the source-side). This bridging process is done by a series of {@link - * org.apache.tuscany.core.builder.WireBuilder}s configured in the runtime. When a new component implementation instance is - * created, it will be injected with a proxy for each reference containing the bridged source- and target-side wires. - * <p/> - * Unmanaged code, i.e. clients that are not components, that perform a locate operation are handled differently. In this case, a - * target-side proxy will be returned by the locate operation created by the <code>WireFactory</code> associated with the target - * service. This target-side proxy will only contain the target-side wire and its handlers/interceptors.Ê - * <p/> - * Wires are structured by operation; that is, they contain an invocation chain per operation on a service. Note that the service - * specified by a reference may differ in type from the target service specified by the wire. In this case, a mediation may be - * performed by the runtime. Hence, source-to-target bridging is done on a per operation basis. Source- and target-side Invocation - * chains are accessible through the subtypes of <code>WireFactory</code>. - * - * @version $Rev$ $Date$ - */ -public interface WireFactory<T> { - - /** - * Prepares the factory. This will typically be called at buildSource time, after bridging source- and target-side invocation chains. - * - * @throws WireFactoryInitException if an error is encountered during initialization - */ - public void initialize() throws WireFactoryInitException; - - /** - * Returns a proxy for a service specified by a reference or target - */ - public T createProxy() throws ProxyCreationException; - - /** - * Sets the primary interface type generated proxies implement - */ - public void setBusinessInterface(Class interfaze); - - /** - * Returns the primary interface type implemented by generated proxies - */ - public Class getBusinessInterface(); - - /** - * Adds an interface type generated proxies implement - */ - public void addInterface(Class claz); - - /** - * Returns an array of all interfaces implemented by generated proxies - */ - public Class[] getImplementatedInterfaces(); - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/WireFactoryFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/WireFactoryFactory.java deleted file mode 100644 index f055ecd427..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/WireFactoryFactory.java +++ /dev/null @@ -1,47 +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.core.wire; - -import java.lang.reflect.InvocationHandler; - -/** - * Implementations provide a runtime system service that creates {@link WireFactory}s - * - * @version $Rev$ $Date$ - */ -public interface WireFactoryFactory { - - /** - * Creates a target-side wire factory - */ - public TargetWireFactory createTargetWireFactory(); - - /** - * Creates a source-side wire factory - */ - public SourceWireFactory createSourceWireFactory(); - - /** - * Determines whether the given object is a proxy - */ - public boolean isProxy(Object object); - - /** - * Returns an wire handler fronting the wire chains used by the proxy. Note that should SCA define a - * DII, this could return such an interface. - * - * @throws IllegalArgumentException if the class is not a proxy - */ - public InvocationHandler getHandler(Object proxy) throws IllegalArgumentException; -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/WireFactoryInitException.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/WireFactoryInitException.java deleted file mode 100644 index caf535ee00..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/WireFactoryInitException.java +++ /dev/null @@ -1,43 +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.core.wire; - -/** - * Denotes an error initializing a wire factory - * - * @version $Rev$ $Date$ - */ -public class WireFactoryInitException extends WireException { - - public WireFactoryInitException() { - super(); - } - - public WireFactoryInitException(String message) { - super(message); - } - - public WireFactoryInitException(String message, Throwable cause) { - super(message, cause); - } - - public WireFactoryInitException(Throwable cause) { - super(cause); - } - -} - diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/WireSourceConfiguration.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/WireSourceConfiguration.java deleted file mode 100644 index d9408b2fb0..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/WireSourceConfiguration.java +++ /dev/null @@ -1,68 +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.core.wire; - -import org.apache.tuscany.core.context.QualifiedName; -import org.apache.tuscany.core.message.MessageFactory; - -import java.lang.reflect.Method; -import java.util.Map; - -/** - * Contains configuration for the source side of a wire - * - * @version $Rev: 394379 $ $Date: 2006-04-15 15:01:36 -0700 (Sat, 15 Apr 2006) $ - */ -public class WireSourceConfiguration extends WireConfiguration<SourceInvocationConfiguration> { - - private String referenceName; - - /** - * Creates the source side of a wire - * - * @param referenceName the name of the reference the wire is associated with - * @param targetName the qualified name of the target service specified by the wire - * @param invocationConfigs a collection of service operation-to-invocation chain mappings - * @param proxyClassLoader the classloader to use when creating a proxy - * @param messageFactory the factory used to create wire messages - */ - public WireSourceConfiguration(String referenceName, QualifiedName targetName, - Map<Method, SourceInvocationConfiguration> invocationConfigs, ClassLoader proxyClassLoader, MessageFactory messageFactory) { - super(targetName, proxyClassLoader, messageFactory); - this.referenceName = referenceName; - this.configurations = invocationConfigs; - } - - /** - * Creates the source side of a wire where the reference is "anonymous", i.e. on an entry point - * - * @param targetName the qualified name of the target service specified by the wire - * @param invocationConfigs a collection of service operation-to-invocation chain mappings - * @param proxyClassLoader the classloader to use when creating a proxy - * @param messageFactory the factory used to create wire messages - */ - public WireSourceConfiguration(QualifiedName targetName, - Map<Method, SourceInvocationConfiguration> invocationConfigs, ClassLoader proxyClassLoader, MessageFactory messageFactory) { - this(null, targetName, invocationConfigs, proxyClassLoader, messageFactory); - } - - - /** - * Returns the name of the source reference - */ - public String getReferenceName() { - return referenceName; - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/WireTargetConfiguration.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/WireTargetConfiguration.java deleted file mode 100644 index ce6ebade0c..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/WireTargetConfiguration.java +++ /dev/null @@ -1,48 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.wire; - -import org.apache.tuscany.core.message.MessageFactory; -import org.apache.tuscany.core.context.QualifiedName; - -import java.lang.reflect.Method; -import java.util.Map; - -/** - * Contains configuration for the target side of a wire - * - * @version $$Rev$$ $$Date$$ - */ -public class WireTargetConfiguration extends WireConfiguration<TargetInvocationConfiguration> { - - /** - * Creates the source side of a wire - * - * @param targetName the qualified name of the target service specified by the wire - * @param invocationConfigs a collection of target service operation-to-invocation chain mappings - * @param proxyClassLoader the classloader to use when creating a proxy - * @param messageFactory the factory used to create wire messages - */ - public WireTargetConfiguration(QualifiedName targetName, Map<Method, TargetInvocationConfiguration> invocationConfigs, - ClassLoader proxyClassLoader, MessageFactory messageFactory) { - super(targetName, proxyClassLoader, messageFactory); - assert (invocationConfigs != null) : "No wire configuration map specified"; - configurations = invocationConfigs; - - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/impl/InvokerInterceptor.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/impl/InvokerInterceptor.java deleted file mode 100644 index 9c114c013e..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/impl/InvokerInterceptor.java +++ /dev/null @@ -1,46 +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.core.wire.impl; - -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; - -/** - * Serves as a tail interceptor on a target wire chain. This implementation dispatches to the target invoker - * passed inside the wire message. Target invokers are passed from the source in order to allow for caching of - * target instances. - * - * @see org.apache.tuscany.core.wire.TargetInvoker - * @version $Rev$ $Date$ - */ -public class InvokerInterceptor implements Interceptor { - - public InvokerInterceptor() { - } - - public Message invoke(Message msg) throws InvocationRuntimeException { - TargetInvoker invoker = msg.getTargetInvoker(); - if (invoker == null) { - throw new InvocationRuntimeException("No target invoker specified on message"); - } - return invoker.invoke(msg); - } - - public void setNext(Interceptor next) { - throw new IllegalStateException("This interceptor must be the last one in an target interceptor chain"); - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/impl/MessageChannelImpl.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/impl/MessageChannelImpl.java deleted file mode 100644 index 8b9d484313..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/impl/MessageChannelImpl.java +++ /dev/null @@ -1,68 +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.core.wire.impl; - -import org.apache.tuscany.core.wire.MessageChannel; -import org.apache.tuscany.core.wire.MessageHandler; -import org.apache.tuscany.core.message.Message; - -import java.util.List; - -/** - * A channel comprising an ordered collection of message handlers. - * - *@see org.apache.tuscany.core.message.Message - * @version $Rev$ $Date$ - */ -public class MessageChannelImpl implements MessageChannel { - - private final List<MessageHandler> pipeline; - - //---------------------------------- - // Constructors - //---------------------------------- - - /** - * Construct a new channel comprising the supplied list of handlers. - * - * @param pipeline the Handlers in the channel - */ - public MessageChannelImpl(List<MessageHandler> pipeline) { - this.pipeline = pipeline; - } - - //---------------------------------- - // Methods - //---------------------------------- - - /** - * Send a message down the channel. The message will be processed by all handlers - * in order until one returns false to indicate processing is complete or all - * handlers have been called. - * - * @param msg a Message to send down the channel - */ - public void send(Message msg) { - if (pipeline!=null) { - for (MessageHandler handler : pipeline) { - if (!handler.processMessage(msg)) { - break; - } - } - } - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/impl/MessageDispatcher.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/impl/MessageDispatcher.java deleted file mode 100644 index ada01b7f91..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/impl/MessageDispatcher.java +++ /dev/null @@ -1,46 +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.core.wire.impl; - -import org.apache.tuscany.core.wire.Interceptor; -import org.apache.tuscany.core.wire.MessageHandler; -import org.apache.tuscany.core.message.Message; - -/** - * A message handler that dispatches the message through an interceptor stack and the uses the response channel to - * return the wire result. - * - * @version $Rev$ $Date$ - */ -public class MessageDispatcher implements MessageHandler { - private final Interceptor head; - - /** - * Construct a handler that dispatches messages to an Interceptor stack. - * - * @param head the interceptor at the head of the stack - */ - public MessageDispatcher(Interceptor head) { - this.head = head; - } - - public boolean processMessage(Message msg) { - Message resp = head.invoke(msg); - msg.getCallbackChannel().send(resp); - return false; - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/impl/NullWireFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/impl/NullWireFactory.java deleted file mode 100644 index e46ed26184..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/impl/NullWireFactory.java +++ /dev/null @@ -1,71 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.wire.impl; - -import org.apache.tuscany.core.context.CompositeContext; -import org.apache.tuscany.core.wire.WireConfiguration; -import org.apache.tuscany.core.wire.ProxyCreationException; -import org.apache.tuscany.core.wire.WireFactory; -import org.apache.tuscany.core.wire.WireFactoryInitException; - -/** - * Returns an actual implementation instance as opposed to a proxy. Used in cases where proxying may be optimized away. - * - * @version $Rev: 379957 $ $Date: 2006-02-22 14:58:24 -0800 (Wed, 22 Feb 2006) $ - */ -public class NullWireFactory implements WireFactory { - - private CompositeContext parentContext; - - private String targetName; - - private Class businessInterface; - - public NullWireFactory(String componentName, CompositeContext parentContext) { - assert (parentContext != null) : "Parent context was null"; - this.targetName = componentName; - this.parentContext = parentContext; - } - - public void initialize(Class businessInterface, WireConfiguration config) throws WireFactoryInitException { - this.businessInterface = businessInterface; - } - - public Object createProxy() throws ProxyCreationException { - return parentContext.getContext(targetName); - } - - public void initialize() throws WireFactoryInitException { - } - - public void setBusinessInterface(Class interfaze) { - businessInterface = interfaze; - } - - public Class getBusinessInterface() { - return businessInterface; - } - - public void addInterface(Class claz) { - throw new UnsupportedOperationException(); - } - - public Class[] getImplementatedInterfaces() { - throw new UnsupportedOperationException(); - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/impl/OneWayInterceptor.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/impl/OneWayInterceptor.java deleted file mode 100644 index 4e3bb460aa..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/impl/OneWayInterceptor.java +++ /dev/null @@ -1,48 +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.core.wire.impl; - -import org.apache.tuscany.core.wire.Interceptor; -import org.apache.tuscany.core.wire.MessageChannel; -import org.apache.tuscany.core.message.Message; - -/** - * An interceptor that sends the wire Message down its request channel and does not expect a response. - * - * @version $Rev$ $Date$ - */ -public class OneWayInterceptor implements Interceptor { - private MessageChannel requestChannel; - - /** - * Construct an interceptor that sends messages down the supplied channel. - * - * @param requestChannel the channel to send messages down - */ - public OneWayInterceptor(MessageChannel requestChannel) { - this.requestChannel = requestChannel; - } - - public Message invoke(Message message) { - requestChannel.send(message); - return null; - } - - public void setNext(Interceptor next) { - throw new IllegalStateException("This interceptor must be the last one in an interceptor chain"); - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/impl/RequestResponseInterceptor.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/impl/RequestResponseInterceptor.java deleted file mode 100644 index ae1c69fc12..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/impl/RequestResponseInterceptor.java +++ /dev/null @@ -1,73 +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.core.wire.impl; - -import org.apache.tuscany.core.wire.Interceptor; -import org.apache.tuscany.core.wire.MessageChannel; -import org.apache.tuscany.core.message.Message; - -/** - * An interceptor that first sends a message down its request channel then extracts the response from the - * message and sends it down the response channel before returning it up the interceptor stack. - * - * @version $Rev$ $Date$ - */ -public class RequestResponseInterceptor implements Interceptor { - - private MessageChannel sourceRequestChannel; - - private MessageChannel sourceResponseChannel; - - private MessageChannel targetRequestChannel; - - private MessageChannel targetResponseChannel; - - /** - * Construct an interceptor that sends messages down the supplied channels. - * - * @param targetRequestChannel the channel to send request messages down - * @param targetResponseChannel the channel to sent response messages down - */ - public RequestResponseInterceptor(MessageChannel sourceRequestChannel, MessageChannel targetRequestChannel, - MessageChannel sourceResponseChannel, MessageChannel targetResponseChannel) { - this.sourceRequestChannel = sourceRequestChannel; - this.sourceResponseChannel = sourceResponseChannel; - this.targetRequestChannel = targetRequestChannel; - this.targetResponseChannel = targetResponseChannel; - } - - public Message invoke(Message requestMessage) { - if (sourceRequestChannel != null) { - sourceRequestChannel.send(requestMessage); - } - if (targetRequestChannel != null) { - targetRequestChannel.send(requestMessage); - } - Message responseMessage = requestMessage.getRelatedCallbackMessage(); - if (targetResponseChannel != null) { - targetResponseChannel.send(responseMessage); - } - if (sourceResponseChannel != null) { - sourceResponseChannel.send(responseMessage); - } - return responseMessage; - } - - public void setNext(Interceptor next) { - throw new IllegalStateException("This interceptor must be the last one in an interceptor chain"); - } -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/jdk/JDKInvocationHandler.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/jdk/JDKInvocationHandler.java deleted file mode 100644 index 2cef096a5e..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/jdk/JDKInvocationHandler.java +++ /dev/null @@ -1,137 +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.core.wire.jdk; - -import org.apache.tuscany.core.context.TargetException; -import org.apache.tuscany.core.wire.Interceptor; -import org.apache.tuscany.core.wire.InvocationConfiguration; -import org.apache.tuscany.core.wire.TargetInvoker; -import org.apache.tuscany.core.message.Message; -import org.apache.tuscany.core.message.MessageFactory; - -import java.lang.reflect.InvocationHandler; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.HashMap; -import java.util.Map; - -/** - * Receives a request from a JDK proxy and dispatches it to a target invoker or source interceptor stack - * - * @version $Rev$ $Date$ - */ -public class JDKInvocationHandler implements InvocationHandler { - - private MessageFactory messageFactory; - - /* - * an association of an operation to configuration holder. The holder contains the master wire configuration - * and a locale clone of the master TargetInvoker. TargetInvokers will be cloned by the handler and placed in the - * holder if they are cacheable. This allows optimizations such as avoiding target resolution when a source refers - * to a target of greater scope since the target reference can be maintained by the invoker. When a target invoker - * is not cacheable, the master associated with the wire configuration will be used. - */ - private Map<Method, ConfigHolder> configuration; - - public JDKInvocationHandler(MessageFactory messageFactory, Map<Method, ? extends InvocationConfiguration> configuration) { - assert (messageFactory != null) : "Message factory was null"; - assert (configuration != null) : "Configuration not specified"; - this.configuration = new HashMap<Method, ConfigHolder>(configuration.size()); - for (Map.Entry<Method, ? extends InvocationConfiguration> entry : configuration.entrySet()) { - this.configuration.put(entry.getKey(), new ConfigHolder(entry.getValue())); - } - this.messageFactory = messageFactory; - } - - /** - * Dispatches a client request made on a proxy - */ - public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { - Interceptor headInterceptor = null; - ConfigHolder holder = configuration.get(method); - if (holder == null) { - TargetException e = new TargetException("Operation not configured"); - e.setIdentifier(method.getName()); - throw e; - } - InvocationConfiguration config = holder.config; - if (config != null) { - headInterceptor = config.getHeadInterceptor(); - } - - TargetInvoker invoker; - - if (holder.cachedInvoker == null) { - assert config != null; - if(config.getTargetInvoker() == null){ - TargetException e= new TargetException("No target invoker configured for operation"); - e.setIdentifier(config.getMethod().getName()); - throw e; - } - if (config.getTargetInvoker().isCacheable()) { - // clone and store the invoker locally - holder.cachedInvoker = (TargetInvoker) config.getTargetInvoker().clone(); - invoker = holder.cachedInvoker; - } else { - invoker = config.getTargetInvoker(); - } - } else { - assert config != null; - invoker = config.getTargetInvoker(); - } - if (headInterceptor == null) { - try { - // short-circuit the dispatch and invoke the target directly - if (config.getTargetInvoker() == null) { - throw new AssertionError("No target invoker [" + method.getName() + "]"); - } - return config.getTargetInvoker().invokeTarget(args); - } catch (InvocationTargetException e) { - // the cause was thrown by the target so throw it - throw e.getCause(); - } - } else { - Message msg = messageFactory.createMessage(); - msg.setTargetInvoker(invoker); - msg.setBody(args); - // dispatch the wire down the chain and get the response - Message resp = headInterceptor.invoke(msg); - - Object body = resp.getBody(); - if (body instanceof Throwable) { - throw (Throwable) body; - } - return body; - } - } - - /** - * A holder used to associate an wire configuration with a local copy of a target invoker that was previously - * cloned from the configuration master - */ - private class ConfigHolder { - - public ConfigHolder(InvocationConfiguration config) { - this.config = config; - } - - InvocationConfiguration config; - - TargetInvoker cachedInvoker; - } - -}
\ No newline at end of file diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/jdk/JDKSourceWireFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/jdk/JDKSourceWireFactory.java deleted file mode 100644 index dbaab87fce..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/jdk/JDKSourceWireFactory.java +++ /dev/null @@ -1,92 +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.core.wire.jdk; - -import org.apache.tuscany.core.wire.MethodHashMap; -import org.apache.tuscany.core.wire.WireFactoryInitException; -import org.apache.tuscany.core.wire.SourceInvocationConfiguration; -import org.apache.tuscany.core.wire.SourceWireFactory; -import org.apache.tuscany.core.wire.WireSourceConfiguration; - -import java.lang.reflect.InvocationHandler; -import java.lang.reflect.Method; -import java.lang.reflect.Proxy; -import java.util.Map; - -/** - * Creates proxies that are injected on references using JDK dynamic proxy facilities and front a wire. The proxies implement the - * business interface associated with the service required by reference. - * - * @version $Rev: 394431 $ $Date: 2006-04-15 21:27:44 -0700 (Sat, 15 Apr 2006) $ - */ -public class JDKSourceWireFactory implements SourceWireFactory { - - private static final int UNINITIALIZED = 0; - - private static final int INITIALIZED = 1; - - private int state = UNINITIALIZED; - - private Class[] businessInterfaceArray; - - private Map<Method, SourceInvocationConfiguration> methodToInvocationConfig; - - private WireSourceConfiguration configuration; - - public void initialize() throws WireFactoryInitException { - 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()); - } - state = INITIALIZED; - } - - public Object createProxy() { - if (state != INITIALIZED) { - throw new IllegalStateException("Proxy factory not INITIALIZED [" + state + "]"); - } - InvocationHandler handler = new JDKInvocationHandler(configuration.getMessageFactory(), methodToInvocationConfig); - return Proxy.newProxyInstance(configuration.getProxyClassLoader(), businessInterfaceArray, handler); - } - - public WireSourceConfiguration getConfiguration() { - return configuration; - } - - public void setConfiguration(WireSourceConfiguration config) { - configuration = config; - } - - public void setBusinessInterface(Class interfaze) { - businessInterfaceArray = new Class[]{interfaze}; - } - - public Class getBusinessInterface() { - return businessInterfaceArray[0]; - } - - public void addInterface(Class claz) { - throw new UnsupportedOperationException("Additional proxy interfaces not yet supported"); - } - - public Class[] getImplementatedInterfaces() { - return businessInterfaceArray; - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/jdk/JDKTargetWireFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/jdk/JDKTargetWireFactory.java deleted file mode 100644 index 76f3b0389c..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/jdk/JDKTargetWireFactory.java +++ /dev/null @@ -1,95 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation - * - * 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.core.wire.jdk; - -import org.apache.tuscany.core.wire.MethodHashMap; -import org.apache.tuscany.core.wire.WireFactoryInitException; -import org.apache.tuscany.core.wire.TargetInvocationConfiguration; -import org.apache.tuscany.core.wire.TargetWireFactory; -import org.apache.tuscany.core.wire.WireTargetConfiguration; - -import java.lang.reflect.InvocationHandler; -import java.lang.reflect.Method; -import java.lang.reflect.Proxy; -import java.util.Map; - -/** - * Creates proxies that are returned to non-SCA clients using JDK dynamic proxy facilities and front a wire. The proxies implement - * the business interface associated with the target service of the wire and are typically returned by a locate operation. - * - * @version $Rev: 394431 $ $Date: 2006-04-15 21:27:44 -0700 (Sat, 15 Apr 2006) $ - */ -public class JDKTargetWireFactory implements TargetWireFactory { - - private static final int UNINITIALIZED = 0; - - private static final int INITIALIZED = 1; - - private int state = UNINITIALIZED; - - private Class[] businessInterfaceArray; - - private Map<Method, TargetInvocationConfiguration> methodToInvocationConfig; - - private WireTargetConfiguration configuration; - - public void initialize() throws WireFactoryInitException { - if (state != UNINITIALIZED) { - throw new IllegalStateException("Proxy factory in wrong state [" + state + "]"); - } - Map<Method, TargetInvocationConfiguration> invocationConfigs = configuration.getInvocationConfigurations(); - methodToInvocationConfig = new MethodHashMap<TargetInvocationConfiguration>(invocationConfigs.size()); - for (Map.Entry<Method, TargetInvocationConfiguration> entry : invocationConfigs.entrySet()) { - Method method = entry.getKey(); - methodToInvocationConfig.put(method, entry.getValue()); - } - state = INITIALIZED; - } - - public Object createProxy() { - if (state != INITIALIZED) { - throw new IllegalStateException("Proxy factory not INITIALIZED [" + state + "]"); - } - InvocationHandler handler = new JDKInvocationHandler(configuration.getMessageFactory(), methodToInvocationConfig); - return Proxy.newProxyInstance(configuration.getProxyClassLoader(), businessInterfaceArray, handler); - } - - public WireTargetConfiguration getConfiguration() { - return configuration; - } - - public void setConfiguration(WireTargetConfiguration config) { - configuration = config; - } - - public void setBusinessInterface(Class interfaze) { - businessInterfaceArray = new Class[]{interfaze}; - } - - public Class getBusinessInterface() { - return businessInterfaceArray[0]; - } - - public void addInterface(Class claz) { - throw new UnsupportedOperationException("Additional proxy interfaces not yet supported"); - } - - public Class[] getImplementatedInterfaces() { - return businessInterfaceArray; - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/jdk/JDKWireFactoryFactory.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/jdk/JDKWireFactoryFactory.java deleted file mode 100644 index 3eaffb9ba8..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/jdk/JDKWireFactoryFactory.java +++ /dev/null @@ -1,66 +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.core.wire.jdk; - -import org.apache.tuscany.core.wire.SourceWireFactory; -import org.apache.tuscany.core.wire.TargetWireFactory; -import org.apache.tuscany.core.wire.WireFactoryFactory; -import org.osoa.sca.annotations.Init; -import org.osoa.sca.annotations.Scope; -import org.osoa.sca.annotations.Service; - -import java.lang.reflect.InvocationHandler; -import java.lang.reflect.Proxy; - -/** - * A system service that creates JDK dynamic proxy-based {@link org.apache.tuscany.core.wire.WireFactory}s - * - * @version $Rev$ $Date$ - */ -@Scope("MODULE") -@Service(interfaces = {WireFactoryFactory.class}) -public class JDKWireFactoryFactory implements WireFactoryFactory { - - public JDKWireFactoryFactory() { - } - - @Init(eager = true) - public void init() { - } - - public TargetWireFactory createTargetWireFactory() { - return new JDKTargetWireFactory(); - } - - public SourceWireFactory createSourceWireFactory() { - return new JDKSourceWireFactory(); - } - - public boolean isProxy(Object object) { - if (object == null) { - return false; - } else { - return Proxy.isProxyClass(object.getClass()); - } - } - - public InvocationHandler getHandler(Object proxy) { - if (proxy == null) { - return null; - } else { - return Proxy.getInvocationHandler(proxy); - } - } - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/service/DefaultWireFactoryService.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/service/DefaultWireFactoryService.java deleted file mode 100644 index 3c61081caf..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/service/DefaultWireFactoryService.java +++ /dev/null @@ -1,157 +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.core.wire.service; - -import org.apache.tuscany.core.config.JavaIntrospectionHelper; -import org.apache.tuscany.core.context.QualifiedName; -import org.apache.tuscany.core.message.MessageFactory; -import org.apache.tuscany.core.system.annotation.Autowire; -import org.apache.tuscany.core.wire.MethodHashMap; -import org.apache.tuscany.core.wire.WireFactoryFactory; -import org.apache.tuscany.core.wire.SourceInvocationConfiguration; -import org.apache.tuscany.core.wire.SourceWireFactory; -import org.apache.tuscany.core.wire.TargetInvocationConfiguration; -import org.apache.tuscany.core.wire.TargetWireFactory; -import org.apache.tuscany.core.wire.WireSourceConfiguration; -import org.apache.tuscany.core.wire.WireTargetConfiguration; -import org.apache.tuscany.core.wire.impl.InvokerInterceptor; -import org.apache.tuscany.core.builder.system.PolicyBuilderRegistry; -import org.apache.tuscany.core.builder.BuilderConfigException; -import org.apache.tuscany.model.assembly.ConfiguredService; -import org.apache.tuscany.model.assembly.ConfiguredReference; -import org.apache.tuscany.model.assembly.EntryPoint; -import org.osoa.sca.annotations.Init; -import org.osoa.sca.annotations.Scope; -import org.osoa.sca.annotations.Service; - -import java.lang.reflect.Method; -import java.util.HashMap; -import java.util.Map; -import java.util.Set; -import java.util.List; -import java.util.ArrayList; - -/** - * The default implementation of a <code>WireFactoryFactory</code> - * - * @version $$Rev$$ $$Date$$ - */ -@Scope("MODULE") -@Service(interfaces = {org.apache.tuscany.core.wire.service.WireFactoryService.class}) -public class DefaultWireFactoryService implements org.apache.tuscany.core.wire.service.WireFactoryService { - - private MessageFactory messageFactory; - private WireFactoryFactory wireFactoryFactory; - private PolicyBuilderRegistry policyRegistry; - - - public DefaultWireFactoryService() { - - } - - public DefaultWireFactoryService(MessageFactory messageFactory, WireFactoryFactory wireFactoryFactory, PolicyBuilderRegistry registry) { - this.messageFactory = messageFactory; - this.wireFactoryFactory = wireFactoryFactory; - this.policyRegistry = registry; - } - - @Autowire - public void setMessageFactory(MessageFactory messageFactory) { - this.messageFactory = messageFactory; - } - - @Autowire - public void setWireFactoryService(WireFactoryFactory wireFactoryFactory) { - this.wireFactoryFactory = wireFactoryFactory; - } - - @Autowire - public void setPolicyRegistry(PolicyBuilderRegistry policyRegistry) { - this.policyRegistry = policyRegistry; - } - - @Init(eager = true) - public void init() { - } - - public List<SourceWireFactory> createSourceFactory(ConfiguredReference configuredReference) throws BuilderConfigException{ - String referenceName = configuredReference.getPort().getName(); - Class interfaze; - // FIXME hack for NPE when entry points with no set service contract on their configuredReference - if (configuredReference.getPort().getServiceContract() != null){ - interfaze = configuredReference.getPort().getServiceContract().getInterface(); - }else if(configuredReference.getPart() instanceof EntryPoint){ - interfaze = ((EntryPoint)configuredReference.getPart()).getConfiguredService().getPort().getServiceContract().getInterface(); - }else{ - BuilderConfigException bce = new BuilderConfigException("No interface found on configured reference"); - bce.setIdentifier(configuredReference.getName()); - throw bce; - } - List<SourceWireFactory> wireFactories = new ArrayList<SourceWireFactory>(); - List<WireSourceConfiguration> wireConfigurations = new ArrayList<WireSourceConfiguration>(); - for (ConfiguredService configuredService : configuredReference.getTargetConfiguredServices()) { - String targetCompName = configuredService.getPart().getName(); - String targetSerivceName = configuredService.getPort().getName(); - QualifiedName targetName = new QualifiedName(targetCompName + QualifiedName.NAME_SEPARATOR + targetSerivceName); - SourceWireFactory wireFactory = wireFactoryFactory.createSourceWireFactory(); - Map<Method, SourceInvocationConfiguration> iConfigMap = new HashMap<Method, SourceInvocationConfiguration>(); - Set<Method> javaMethods = JavaIntrospectionHelper.getAllUniqueMethods(interfaze); - for (Method method : javaMethods) { - SourceInvocationConfiguration iConfig = new SourceInvocationConfiguration(method); - iConfigMap.put(method, iConfig); - } - WireSourceConfiguration wireConfiguration = new WireSourceConfiguration(referenceName, targetName, iConfigMap, interfaze.getClassLoader(), - messageFactory); - wireConfigurations.add(wireConfiguration); - wireFactory.setBusinessInterface(interfaze); - wireFactory.setConfiguration(wireConfiguration); - wireFactories.add(wireFactory); - } - if (policyRegistry != null) { - // invoke policy builders - policyRegistry.buildSource(configuredReference, wireConfigurations); - } - return wireFactories; - - } - - public TargetWireFactory createTargetFactory(ConfiguredService configuredService) { - org.apache.tuscany.model.assembly.Service service = configuredService.getPort(); - Class interfaze = service.getServiceContract().getInterface(); - QualifiedName targetName = new QualifiedName(configuredService.getPart().getName() + QualifiedName.NAME_SEPARATOR - + service.getName()); - - Map<Method, TargetInvocationConfiguration> iConfigMap = new MethodHashMap<TargetInvocationConfiguration>(); - TargetWireFactory wireFactory = wireFactoryFactory.createTargetWireFactory(); - Set<Method> javaMethods = JavaIntrospectionHelper.getAllUniqueMethods(interfaze); - for (Method method : javaMethods) { - TargetInvocationConfiguration iConfig = new TargetInvocationConfiguration(method); - iConfigMap.put(method, iConfig); - } - WireTargetConfiguration wireConfiguration = new WireTargetConfiguration(targetName, iConfigMap, interfaze.getClassLoader(), messageFactory); - wireFactory.setBusinessInterface(interfaze); - wireFactory.setConfiguration(wireConfiguration); - if (policyRegistry != null) { - // invoke policy builders - policyRegistry.buildTarget(configuredService, wireConfiguration); - } - // add tail interceptor - for (TargetInvocationConfiguration iConfig : wireFactory.getConfiguration().getInvocationConfigurations().values()) { - iConfig.addInterceptor(new InvokerInterceptor()); - } - return wireFactory; - } - - -} diff --git a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/service/WireFactoryService.java b/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/service/WireFactoryService.java deleted file mode 100644 index eb41baf69a..0000000000 --- a/branches/java-post-M1/sca/core/src/main/java/org/apache/tuscany/core/wire/service/WireFactoryService.java +++ /dev/null @@ -1,51 +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.core.wire.service; - -import org.apache.tuscany.core.builder.BuilderConfigException; -import org.apache.tuscany.core.wire.SourceWireFactory; -import org.apache.tuscany.core.wire.TargetWireFactory; -import org.apache.tuscany.model.assembly.ConfiguredReference; -import org.apache.tuscany.model.assembly.ConfiguredService; - -import java.util.List; - -/** - * Implementations provide a system service that creates {@link org.apache.tuscany.core.wire.SourceWireFactory}s - * and {@link org.apache.tuscany.core.wire.TargetWireFactory}s. This service is used by {@link - * org.apache.tuscany.core.builder.ContextFactoryBuilder}s to provide {@link org.apache.tuscany.core.builder.ContextFactory}s with - * {@link org.apache.tuscany.core.wire.WireFactory}s for their references and target services. This service is typically autowired - * to. - * - * @version $$Rev$$ $$Date$$ - */ -public interface WireFactoryService { - - /** - * Creates the source-side wire factory for a reference - * - * @param configuredReference the configured reference to create the wire factory for - * @throws BuilderConfigException - */ - public List<SourceWireFactory> createSourceFactory(ConfiguredReference configuredReference) throws BuilderConfigException; - - /** - * Creates a target-side wire factory for a service implementing a given interface - * - * @param configuredService the configured service to create the wire factory for - * @throws BuilderConfigException - */ - public TargetWireFactory createTargetFactory(ConfiguredService configuredService) throws BuilderConfigException; - -} |