Author: jmarino
Date: Wed May 3 23:33:15 2006
New Revision: 399569
URL: http://svn.apache.org/viewcvs?rev=399569&view=rev
Log:
more scope context refactors
Added:
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoInstanceContext.java
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/CompositeScopeContext.java
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeContext.java
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/FieldInjector.java
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/Injector.java
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/MethodInjector.java
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/PojoObjectFactory.java
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContext.java
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/spi/
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/spi/context/
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/spi/context/ScopeInitializationException.java
incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/
incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/context/
incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/context/scope/
incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/context/scope/MockScopeContext.java
incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/
incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/
incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/SystemAtomicContextTestCase.java
incubator/tuscany/sandbox/jboynes/sca/spi/src/test/java/org/apache/tuscany/core/
incubator/tuscany/sandbox/jboynes/sca/spi/src/test/java/org/apache/tuscany/core/mock/
incubator/tuscany/sandbox/jboynes/sca/spi/src/test/java/org/apache/tuscany/core/mock/beans/
Modified:
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/AbstractLifecycle.java
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoAtomicContext.java
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/AbstractScopeContext.java
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeContext.java
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/AtomicContext.java
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/InstanceContext.java
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/ScopeContext.java
Modified:
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/AbstractLifecycle.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/AbstractLifecycle.java?rev=399569&r1=399568&r2=399569&view=diff
==============================================================================
---
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/AbstractLifecycle.java
(original)
+++
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/AbstractLifecycle.java
Wed May 3 23:33:15 2006
@@ -56,6 +56,7 @@
}
public String toString() {
+ if (name != null){
switch (lifecycleState) {
case (Lifecycle.CONFIG_ERROR):
return new StringBuilder().append("[").append(name).append("]
in state [CONFIG_ERROR]").toString();
@@ -75,6 +76,28 @@
return new StringBuilder().append("[").append(name).append("]
in state [UNINITIALIZED]").toString();
default:
return new StringBuilder().append("[").append(name).append("]
in state [UNKNOWN]").toString();
+ }
+ }else{
+ switch (lifecycleState) {
+ case (Lifecycle.CONFIG_ERROR):
+ return new StringBuilder().append("state
[CONFIG_ERROR]").toString();
+ case (Lifecycle.ERROR):
+ return new StringBuilder().append("state [ERROR]").toString();
+ case (Lifecycle.INITIALIZING):
+ return new StringBuilder().append("state
[INITIALIZING]").toString();
+ case (Lifecycle.INITIALIZED):
+ return new StringBuilder().append("state
[INITIALIZED]").toString();
+ case (Lifecycle.RUNNING):
+ return new StringBuilder().append("state
[RUNNING]").toString();
+ case (Lifecycle.STOPPING):
+ return new StringBuilder().append("state
[STOPPING]").toString();
+ case (Lifecycle.STOPPED):
+ return new StringBuilder().append("state
[STOPPED]").toString();
+ case (Lifecycle.UNINITIALIZED):
+ return new StringBuilder().append("state
[UNINITIALIZED]").toString();
+ default:
+ return new StringBuilder().append("state
[UNKNOWN]").toString();
+ }
}
}
}
Modified:
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoAtomicContext.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoAtomicContext.java?rev=399569&r1=399568&r2=399569&view=diff
==============================================================================
---
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoAtomicContext.java
(original)
+++
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoAtomicContext.java
Wed May 3 23:33:15 2006
@@ -1,28 +1,21 @@
package org.apache.tuscany.core.context;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.tuscany.core.injection.EventInvoker;
+import org.apache.tuscany.common.ObjectCreationException;
+import org.apache.tuscany.common.ObjectFactory;
import org.apache.tuscany.core.context.event.InstanceCreated;
+import org.apache.tuscany.core.injection.EventInvoker;
import org.apache.tuscany.model.Scope;
-import org.apache.tuscany.spi.QualifiedName;
import org.apache.tuscany.spi.context.AtomicContext;
-import org.apache.tuscany.spi.context.CompositeContext;
import org.apache.tuscany.spi.context.InstanceContext;
import org.apache.tuscany.spi.context.ScopeContext;
import org.apache.tuscany.spi.context.TargetException;
-import org.apache.tuscany.spi.wire.SourceWireFactory;
-import org.apache.tuscany.spi.wire.TargetWireFactory;
-import org.apache.tuscany.common.ObjectFactory;
-import org.apache.tuscany.common.ObjectCreationException;
/**
* @version $$Rev$$ $$Date$$
*/
-public class PojoAtomicContext extends AbstractContext implements
AtomicContext {
+public abstract class PojoAtomicContext extends AbstractContext implements
AtomicContext {
- private ScopeContext scopeContext;
+ private ScopeContext<AtomicContext> scopeContext;
private boolean eagerInit;
@@ -31,9 +24,9 @@
private EventInvoker<Object> destroyInvoker;
- private ObjectFactory<InstanceContext> objectFactory;
+ private ObjectFactory<?> objectFactory;
- public PojoAtomicContext(String name, ScopeContext scopeContext,
ObjectFactory<InstanceContext> objectFactory, boolean eagerInit,
EventInvoker<Object> initInvoker,
+ public PojoAtomicContext(String name, ScopeContext<AtomicContext>
scopeContext, ObjectFactory<?> objectFactory, boolean eagerInit,
EventInvoker<Object> initInvoker,
EventInvoker<Object> destroyInvoker) {
super(name);
assert (scopeContext != null) : "Scope context was null";
@@ -80,45 +73,12 @@
}
- public void addTargetWireFactory(String serviceName, TargetWireFactory
factory) {
-
- }
-
- public TargetWireFactory getTargetWireFactory(String serviceName) {
- return null;
- }
-
- public Map<String, TargetWireFactory> getTargetWireFactories() {
- return null;
- }
-
- public void addSourceWireFactory(String referenceName, SourceWireFactory
factory) {
-
- }
-
- public void addSourceWireFactories(String referenceName, Class
referenceInterface, List<SourceWireFactory> factory, boolean multiplicity) {
-
- }
-
- public List<SourceWireFactory> getSourceWireFactories() {
- return null;
- }
-
- public void prepare(CompositeContext parent) {
-
- }
-
public InstanceContext createInstance() throws ObjectCreationException {
- InstanceContext ctx = objectFactory.getInstance();
- publish(new InstanceCreated(this,ctx));
+ InstanceContext ctx = new
PojoInstanceContext(objectFactory.getInstance());
+ ctx.start();
+ publish(new InstanceCreated(this, ctx));
return ctx;
}
-
-
- public Object getInstance(QualifiedName qName) throws TargetException {
- return scopeContext.getInstance(this);
- }
-
}
Added:
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoInstanceContext.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoInstanceContext.java?rev=399569&view=auto
==============================================================================
---
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoInstanceContext.java
(added)
+++
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoInstanceContext.java
Wed May 3 23:33:15 2006
@@ -0,0 +1,33 @@
+/**
+ *
+ * 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.spi.context.InstanceContext;
+import org.apache.tuscany.core.AbstractLifecycle;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class PojoInstanceContext extends AbstractLifecycle implements
InstanceContext {
+
+ private Object instance;
+
+ public PojoInstanceContext(Object instance){
+ this.instance = instance;
+ }
+
+ public Object getInstance() {
+ return instance;
+ }
+}
Modified:
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/AbstractScopeContext.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/AbstractScopeContext.java?rev=399569&r1=399568&r2=399569&view=diff
==============================================================================
---
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/AbstractScopeContext.java
(original)
+++
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/AbstractScopeContext.java
Wed May 3 23:33:15 2006
@@ -20,15 +20,15 @@
*
* @version $Rev: 399161 $ $Date: 2006-05-02 23:09:37 -0700 (Tue, 02 May 2006)
$
*/
-public abstract class AbstractScopeContext<S, T extends Context> extends
AbstractLifecycle implements ScopeContext<S, T> {
+public abstract class AbstractScopeContext<T extends Context> extends
AbstractLifecycle implements ScopeContext<T> {
// The event context the scope container is associated with
protected WorkContext workContext;
private Map<EventFilter, List<RuntimeEventListener>> listeners;
private static final EventFilter TRUE_FILTER = new TrueFilter();
-
- public AbstractScopeContext(WorkContext workContext) {
- assert (workContext != null) : "Event context was null";
+
+ public AbstractScopeContext(String name, WorkContext workContext) {
+ super(name);
this.workContext = workContext;
}
Added:
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/CompositeScopeContext.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/CompositeScopeContext.java?rev=399569&view=auto
==============================================================================
---
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/CompositeScopeContext.java
(added)
+++
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/CompositeScopeContext.java
Wed May 3 23:33:15 2006
@@ -0,0 +1,94 @@
+/**
+ *
+ * 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.AbstractLifecycle;
+import org.apache.tuscany.model.Scope;
+import org.apache.tuscany.spi.Lifecycle;
+import org.apache.tuscany.spi.context.CompositeContext;
+import org.apache.tuscany.spi.context.InstanceContext;
+import org.apache.tuscany.spi.context.ScopeContext;
+import org.apache.tuscany.spi.context.ScopeInitializationException;
+import org.apache.tuscany.spi.context.ScopeRuntimeException;
+import org.apache.tuscany.spi.context.TargetException;
+import org.apache.tuscany.spi.context.WorkContext;
+import org.apache.tuscany.spi.event.Event;
+
+/**
+ * Manages the lifecycle of composite component contexts, i.e. contexts which
contain child contexts
+ *
+ * @version $Rev: 399161 $ $Date: 2006-05-02 23:09:37 -0700 (Tue, 02 May 2006)
$
+ * @see org.apache.tuscany.spi.context.CompositeContext
+ */
+public class CompositeScopeContext extends AbstractLifecycle implements
ScopeContext<CompositeContext> {
+
+ // Composite component contexts in this scope keyed by parent
+ private Map<CompositeContext, List<CompositeContext>> contexts = new
ConcurrentHashMap<CompositeContext, List<CompositeContext>>();
+ private WorkContext workContext;
+
+ public CompositeScopeContext(WorkContext workContext) {
+ setName("Composite Scope");
+ assert(workContext != null): "Work context was null";
+ this.workContext = workContext;
+ }
+
+ public Scope getScope() {
+ return Scope.AGGREGATE;
+ }
+
+ public void start() throws ScopeInitializationException {
+ lifecycleState = Lifecycle.RUNNING;
+ }
+
+ public void stop() throws ScopeRuntimeException {
+ }
+
+ public void onEvent(Event event) {
+ }
+
+ public void register(CompositeContext context) {
+ checkInit();
+ CompositeContext module = workContext.getCurrentModule();
+ List<CompositeContext> ctxs = contexts.get(module);
+ if (ctxs == null) {
+ ctxs = new ArrayList<CompositeContext>();
+ }
+ synchronized (ctxs) {
+ ctxs.add(context);
+ }
+ contexts.put(module, ctxs);
+ }
+
+ public Object getInstance(CompositeContext context) throws TargetException
{
+ checkInit();
+ return context; // return the context since it is the instance
+ }
+
+ public InstanceContext getInstanceContext(CompositeContext context) throws
TargetException {
+ throw new UnsupportedOperationException();
+ }
+
+ private void checkInit() {
+ if (getLifecycleState() != Lifecycle.RUNNING) {
+ throw new IllegalStateException("Scope not running [" +
getLifecycleState() + "]");
+ }
+ }
+
+
+}
Modified:
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeContext.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeContext.java?rev=399569&r1=399568&r2=399569&view=diff
==============================================================================
---
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeContext.java
(original)
+++
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeContext.java
Wed May 3 23:33:15 2006
@@ -30,7 +30,7 @@
*
* @version $Rev: 399161 $ $Date: 2006-05-02 23:09:37 -0700 (Tue, 02 May 2006)
$
*/
-public class ModuleScopeContext extends AbstractScopeContext<CompositeContext,
AtomicContext> {
+public class ModuleScopeContext extends AbstractScopeContext<AtomicContext> {
private Map<Context, InstanceContext> instanceContexts;
@@ -41,8 +41,7 @@
private Map<CompositeContext, List<InstanceContext>> destroyQueues;
public ModuleScopeContext(WorkContext workContext) {
- super(workContext);
- setName("Module Scope");
+ super("Module Scope",workContext);
instanceContexts = new ConcurrentHashMap<Context, InstanceContext>();
registeredContexts = new ConcurrentHashMap<CompositeContext,
List<AtomicContext>>();
destroyQueues = new ConcurrentHashMap<CompositeContext,
List<InstanceContext>>();
@@ -54,11 +53,12 @@
public void onEvent(Event event) {
+ checkInit();
if (event instanceof ModuleStart) {
lifecycleState = RUNNING;
- initComponentContexts();
+ initComponentContexts(((ModuleStart)event).getContext());
} else if (event instanceof ModuleStop) {
- shutdownContexts();
+ shutdownContexts(((ModuleStop)event).getContext());
} else if (event instanceof InstanceCreated) {
checkInit();
// Queue the context to have its implementation instance released
if destroyable
@@ -77,17 +77,17 @@
if (lifecycleState != RUNNING) {
throw new IllegalStateException("Scope in wrong state [" +
lifecycleState + "]");
}
-// instanceContexts = null;
-// destroyQueue = null;
lifecycleState = STOPPED;
+ //TODO implement stop semantics
}
/**
* Notifies instanceContexts of a shutdown in reverse order to which they
were started
*/
- private void shutdownContexts() {
- List<InstanceContext> destroyQueue =
destroyQueues.remove(workContext.getCurrentModule());
+ private void shutdownContexts(CompositeContext ctx) {
+ checkInit();
+ List<InstanceContext> destroyQueue = destroyQueues.remove(ctx);
if (destroyQueue == null || destroyQueue.size() == 0) {
return;
}
@@ -103,8 +103,8 @@
}
}
- private void initComponentContexts() throws CoreRuntimeException {
- CompositeContext module = workContext.getCurrentModule();
+ private void initComponentContexts(CompositeContext module) throws
CoreRuntimeException {
+ checkInit();
assert(module != null): "Current module not set in work context";
List<AtomicContext> contexts = registeredContexts.get(module);
synchronized (contexts) {
@@ -141,14 +141,16 @@
// }
}
- public void register(CompositeContext key, AtomicContext context) {
- List<AtomicContext> atomicContexts = registeredContexts.get(key);
- List<InstanceContext> destroyQueue = destroyQueues.get(key);
+ public void register(AtomicContext context) {
+ checkInit();
+ CompositeContext module = workContext.getCurrentModule();
+ List<AtomicContext> atomicContexts = registeredContexts.get(module);
+ List<InstanceContext> destroyQueue = destroyQueues.get(module);
if (atomicContexts == null) {
- atomicContexts = registeredContexts.put(key, new
ArrayList<AtomicContext>());
+ atomicContexts = registeredContexts.put(module, new
ArrayList<AtomicContext>());
}
if (destroyQueue == null) {
- destroyQueues.put(key, new ArrayList<InstanceContext>());
+ destroyQueues.put(module, new ArrayList<InstanceContext>());
}
synchronized (atomicContexts) {
atomicContexts.add(context);
@@ -159,6 +161,7 @@
public Object getInstance(AtomicContext context) throws TargetException {
+ checkInit();
InstanceContext ctx = instanceContexts.get(context);
if (ctx != null) {
if (ctx.getLifecycleState() != RUNNING) {
@@ -174,6 +177,7 @@
}
public InstanceContext getInstanceContext(AtomicContext context) throws
TargetException {
+ checkInit();
return instanceContexts.get(context);
}
Added:
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeContext.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeContext.java?rev=399569&view=auto
==============================================================================
---
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeContext.java
(added)
+++
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeContext.java
Wed May 3 23:33:15 2006
@@ -0,0 +1,94 @@
+/**
+ *
+ * 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.Map;
+import java.util.List;
+import java.util.ArrayList;
+
+import org.apache.tuscany.model.Scope;
+import org.apache.tuscany.spi.context.AtomicContext;
+import org.apache.tuscany.spi.context.InstanceContext;
+import org.apache.tuscany.spi.context.TargetException;
+import org.apache.tuscany.spi.context.WorkContext;
+import org.apache.tuscany.spi.context.CompositeContext;
+import org.apache.tuscany.spi.event.Event;
+
+/**
+ * A container that manages stateless components.
+ *
+ * @version $Rev: 399161 $ $Date: 2006-05-02 23:09:37 -0700 (Tue, 02 May 2006)
$
+ */
+public class StatelessScopeContext extends AbstractScopeContext<AtomicContext>
{
+
+ private Map<CompositeContext, List<AtomicContext>> contexts;
+ private WorkContext workContext;
+
+ public StatelessScopeContext(WorkContext workContext) {
+ super("Stateless scope", workContext);
+ assert(workContext != null): "Work context was null";
+ this.workContext = workContext;
+ }
+
+ public Scope getScope() {
+ return Scope.INSTANCE;
+ }
+
+ 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;
+ //TODO stop all contexts
+ }
+
+ public void onEvent(Event event) {
+ List<AtomicContext> ctxs =
contexts.get(workContext.getCurrentModule());
+ if(ctxs != null){
+ for (AtomicContext atomicContext : ctxs) {
+ atomicContext.stop();
+ }
+ }
+ }
+
+ public void register(AtomicContext context) {
+ checkInit();
+ CompositeContext module = workContext.getCurrentModule();
+ List<AtomicContext> ctxs = contexts.get(module);
+ if (ctxs == null) {
+ ctxs = new ArrayList<AtomicContext>();
+ }
+ synchronized (ctxs) {
+ ctxs.add(context);
+ }
+ contexts.put(module, ctxs);
+ }
+
+ public Object getInstance(AtomicContext context) throws TargetException {
+ return context.createInstance();
+ }
+
+ public InstanceContext getInstanceContext(AtomicContext context) throws
TargetException {
+ throw new UnsupportedOperationException();
+ }
+
+}
Added:
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/FieldInjector.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/FieldInjector.java?rev=399569&view=auto
==============================================================================
---
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/FieldInjector.java
(added)
+++
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/FieldInjector.java
Wed May 3 23:33:15 2006
@@ -0,0 +1,38 @@
+package org.apache.tuscany.core.injection;
+
+import java.lang.reflect.Field;
+
+import org.apache.tuscany.common.ObjectFactory;
+import org.apache.tuscany.common.ObjectCreationException;
+
+/**
+ * Injects a value created by an [EMAIL PROTECTED]
org.apache.tuscany.common.ObjectFactory} on a given field
+ *
+ * @version $Rev: 399488 $ $Date: 2006-05-03 16:20:27 -0700 (Wed, 03 May 2006)
$
+ */
+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 +
"]");
+ }
+ }
+}
Added:
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/Injector.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/Injector.java?rev=399569&view=auto
==============================================================================
---
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/Injector.java
(added)
+++
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/Injector.java
Wed May 3 23:33:15 2006
@@ -0,0 +1,32 @@
+/**
+ *
+ * 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.ObjectCreationException;
+
+/**
+ * Implementations inject a pre-configured value on an instance
+ *
+ * @version $Rev: 399488 $ $Date: 2006-05-03 16:20:27 -0700 (Wed, 03 May 2006)
$
+ * @see MethodInjector
+ * @see FieldInjector
+ */
+public interface Injector<T> {
+
+ /**
+ * Inject a value on the given instance
+ */
+ void inject(T instance) throws ObjectCreationException;
+
+}
Added:
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/MethodInjector.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/MethodInjector.java?rev=399569&view=auto
==============================================================================
---
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/MethodInjector.java
(added)
+++
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/MethodInjector.java
Wed May 3 23:33:15 2006
@@ -0,0 +1,33 @@
+package org.apache.tuscany.core.injection;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.InvocationTargetException;
+
+import org.apache.tuscany.common.ObjectCreationException;
+import org.apache.tuscany.common.ObjectFactory;
+
+/**
+ * Injects a value created by an [EMAIL PROTECTED]
org.apache.tuscany.common.ObjectFactory} using a given method
+ * @version $Rev: 399488 $ $Date: 2006-05-03 16:20:27 -0700 (Wed, 03 May 2006)
$
+ */
+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;
+ }
+ }
+}
Added:
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/PojoObjectFactory.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/PojoObjectFactory.java?rev=399569&view=auto
==============================================================================
---
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/PojoObjectFactory.java
(added)
+++
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/PojoObjectFactory.java
Wed May 3 23:33:15 2006
@@ -0,0 +1,74 @@
+/**
+ *
+ * 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.util.List;
+import java.util.Collections;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+
+import org.apache.tuscany.common.ObjectFactory;
+import org.apache.tuscany.common.ObjectCreationException;
+
+/**
+ * Creates new instances of a Java class, calling a given set of injectors to
configure the instance
+ *
+ * @version $Rev: 399488 $ $Date: 2006-05-03 16:20:27 -0700 (Wed, 03 May 2006)
$
+ * @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);
+ }
+ }
+}
Added:
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContext.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContext.java?rev=399569&view=auto
==============================================================================
---
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContext.java
(added)
+++
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContext.java
Wed May 3 23:33:15 2006
@@ -0,0 +1,115 @@
+package org.apache.tuscany.core.system.context;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.tuscany.common.ObjectCreationException;
+import org.apache.tuscany.common.ObjectFactory;
+import org.apache.tuscany.core.context.PojoAtomicContext;
+import org.apache.tuscany.core.context.PojoInstanceContext;
+import org.apache.tuscany.core.context.event.InstanceCreated;
+import org.apache.tuscany.core.injection.EventInvoker;
+import org.apache.tuscany.model.Scope;
+import org.apache.tuscany.spi.QualifiedName;
+import org.apache.tuscany.spi.context.AtomicContext;
+import org.apache.tuscany.spi.context.InstanceContext;
+import org.apache.tuscany.spi.context.ScopeContext;
+import org.apache.tuscany.spi.context.TargetException;
+import org.apache.tuscany.spi.wire.SourceWireFactory;
+import org.apache.tuscany.spi.wire.TargetWireFactory;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class SystemAtomicContext extends PojoAtomicContext {
+
+ private ScopeContext<AtomicContext> scopeContext;
+
+ private ObjectFactory<?> objectFactory;
+ private boolean eagerInit;
+ private EventInvoker<Object> initInvoker;
+ private EventInvoker<Object> destroyInvoker;
+
+ public SystemAtomicContext(String name, ScopeContext<AtomicContext>
scopeContext, ObjectFactory<?> objectFactory, boolean eagerInit,
EventInvoker<Object> initInvoker,
+ EventInvoker<Object> destroyInvoker) {
+ super(name, scopeContext, objectFactory, eagerInit, initInvoker,
destroyInvoker);
+ assert (scopeContext != null) : "Scope context was null";
+ assert (objectFactory != null) : "Object factory was null";
+ if (eagerInit && initInvoker == null) {
+ throw new AssertionError("No intialization method found for eager
init implementation");
+ }
+ this.scopeContext = scopeContext;
+ this.objectFactory = objectFactory;
+ this.eagerInit = eagerInit;
+ this.initInvoker = initInvoker;
+ this.destroyInvoker = destroyInvoker;
+ }
+
+ public Scope getScope() {
+ return scopeContext.getScope();
+ }
+
+ public boolean isEagerInit() {
+ return eagerInit;
+ }
+
+ public void init(Object instance) throws TargetException {
+ if (initInvoker != null) {
+ initInvoker.invokeEvent(instance);
+ }
+ }
+
+ public void destroy(Object instance) throws TargetException {
+ if (destroyInvoker != null) {
+ destroyInvoker.invokeEvent(instance);
+ }
+ }
+
+ public boolean isDestroyable() {
+ return (destroyInvoker != null);
+ }
+
+ public Object getTargetInstance() throws TargetException {
+ return scopeContext.getInstance(this);
+ }
+
+ public InstanceContext createInstance() throws ObjectCreationException {
+ InstanceContext ctx = new
PojoInstanceContext(objectFactory.getInstance());
+ ctx.start();
+ publish(new InstanceCreated(this, ctx));
+ return ctx;
+ }
+
+ public void prepare() {
+ }
+
+ public Object getInstance(QualifiedName qName) throws TargetException {
+ return scopeContext.getInstance(this);
+ }
+
+ public void addTargetWireFactory(String serviceName, TargetWireFactory
factory) {
+ throw new UnsupportedOperationException();
+ }
+
+ public TargetWireFactory getTargetWireFactory(String serviceName) {
+ throw new UnsupportedOperationException();
+ }
+
+ public Map<String, TargetWireFactory> getTargetWireFactories() {
+ throw new UnsupportedOperationException();
+ }
+
+ public void addSourceWireFactory(String referenceName, SourceWireFactory
factory) {
+ throw new UnsupportedOperationException();
+ }
+
+ public void addSourceWireFactories(String referenceName, Class
referenceInterface, List<SourceWireFactory> factory, boolean multiplicity) {
+ throw new UnsupportedOperationException();
+ }
+
+ public List<SourceWireFactory> getSourceWireFactories() {
+ throw new UnsupportedOperationException();
+ }
+
+
+}
Added:
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/spi/context/ScopeInitializationException.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/spi/context/ScopeInitializationException.java?rev=399569&view=auto
==============================================================================
---
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/spi/context/ScopeInitializationException.java
(added)
+++
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/spi/context/ScopeInitializationException.java
Wed May 3 23:33:15 2006
@@ -0,0 +1,39 @@
+/**
+ *
+ * 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.spi.context;
+
+/**
+ * Denotes an initialization exception thrown by a scope container
+ *
+ * @version $Rev: 368822 $ $Date: 2006-01-13 10:54:38 -0800 (Fri, 13 Jan 2006)
$
+ */
+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);
+ }
+
+}
Added:
incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/context/scope/MockScopeContext.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/context/scope/MockScopeContext.java?rev=399569&view=auto
==============================================================================
---
incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/context/scope/MockScopeContext.java
(added)
+++
incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/context/scope/MockScopeContext.java
Wed May 3 23:33:15 2006
@@ -0,0 +1,59 @@
+package org.apache.tuscany.core.mock.context.scope;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.apache.tuscany.core.context.scope.AbstractScopeContext;
+import org.apache.tuscany.model.Scope;
+import org.apache.tuscany.spi.context.AtomicContext;
+import org.apache.tuscany.spi.context.Context;
+import org.apache.tuscany.spi.context.InstanceContext;
+import org.apache.tuscany.spi.context.TargetException;
+import org.apache.tuscany.spi.event.Event;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class MockScopeContext extends AbstractScopeContext<AtomicContext> {
+
+ private Map<Context, InstanceContext> instanceContexts;
+ private Scope scope;
+
+ public MockScopeContext() {
+ this(null);
+ }
+
+ public MockScopeContext(Scope scope) {
+ super("Module Scope", null);
+ instanceContexts = new ConcurrentHashMap<Context, InstanceContext>();
+ this.scope = scope;
+ }
+
+ public Scope getScope() {
+ return scope;
+ }
+
+ public Object getInstance(AtomicContext context) throws TargetException {
+ InstanceContext ctx = instanceContexts.get(context);
+ if (ctx == null) {
+ ctx = context.createInstance();
+ context.init(ctx.getInstance());
+ instanceContexts.put(context, ctx);
+ }
+ return ctx.getInstance();
+ }
+
+ public InstanceContext getInstanceContext(AtomicContext context) throws
TargetException {
+ return instanceContexts.get(context);
+ }
+
+ public void onEvent(Event event) {
+
+ }
+
+ public void register(AtomicContext context) {
+
+ }
+
+
+}
Added:
incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/SystemAtomicContextTestCase.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/SystemAtomicContextTestCase.java?rev=399569&view=auto
==============================================================================
---
incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/SystemAtomicContextTestCase.java
(added)
+++
incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/SystemAtomicContextTestCase.java
Wed May 3 23:33:15 2006
@@ -0,0 +1,44 @@
+package org.apache.tuscany.core.system.context;
+
+import junit.framework.TestCase;
+import org.apache.tuscany.common.ObjectFactory;
+import org.apache.tuscany.core.injection.EventInvoker;
+import org.apache.tuscany.core.injection.MethodEventInvoker;
+import org.apache.tuscany.core.injection.PojoObjectFactory;
+import org.apache.tuscany.core.mock.context.scope.MockScopeContext;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class SystemAtomicContextTestCase extends TestCase {
+
+ EventInvoker<Object> initInvoker;
+
+ public void testContextCreationAndInit() throws Exception {
+ ObjectFactory<Foo> factory = new
PojoObjectFactory<Foo>(Foo.class.getConstructor((Class[]) null), null, null);
+ SystemAtomicContext context = new SystemAtomicContext("foo", new
MockScopeContext(), factory, false, initInvoker, null);
+ Foo instance = (Foo) context.getInstance(null);
+ assertNotNull(instance);
+ assertTrue(instance.initialized);
+ }
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ initInvoker = new
MethodEventInvoker<Object>(Foo.class.getMethod("init"));
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ public static class Foo {
+
+ private boolean initialized;
+
+ public void init() {
+ initialized = true;
+ }
+
+ }
+
+}
Modified:
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/AtomicContext.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/AtomicContext.java?rev=399569&r1=399568&r2=399569&view=diff
==============================================================================
---
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/AtomicContext.java
(original)
+++
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/AtomicContext.java
Wed May 3 23:33:15 2006
@@ -126,9 +126,7 @@
/**
* 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);
+ public void prepare();
}
Modified:
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/InstanceContext.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/InstanceContext.java?rev=399569&r1=399568&r2=399569&view=diff
==============================================================================
---
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/InstanceContext.java
(original)
+++
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/InstanceContext.java
Wed May 3 23:33:15 2006
@@ -22,7 +22,7 @@
* @version $Rev$ $Date$
*/
public interface InstanceContext extends Lifecycle {
-
+
Object getInstance();
}
Modified:
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/ScopeContext.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/ScopeContext.java?rev=399569&r1=399568&r2=399569&view=diff
==============================================================================
---
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/ScopeContext.java
(original)
+++
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/ScopeContext.java
Wed May 3 23:33:15 2006
@@ -16,10 +16,9 @@
*/
package org.apache.tuscany.spi.context;
+import org.apache.tuscany.model.Scope;
import org.apache.tuscany.spi.Lifecycle;
import org.apache.tuscany.spi.event.RuntimeEventListener;
-import org.apache.tuscany.model.Scope;
-import sun.security.jca.GetInstance;
/**
@@ -28,11 +27,11 @@
* @version $Rev: 399161 $ $Date: 2006-05-02 23:09:37 -0700 (Tue, 02 May 2006)
$
* @see Context
*/
-public interface ScopeContext<S, T extends Context> extends Lifecycle,
RuntimeEventListener {
+public interface ScopeContext<T extends Context> extends Lifecycle,
RuntimeEventListener {
public Scope getScope();
- public void register(S key, T context);
+ public void register(T context);
/**
* Returns an instance associated with the current context
@@ -43,7 +42,6 @@
/**
- *
* @throws TargetException
*/
public InstanceContext getInstanceContext(T context) throws
TargetException;