Author: jmarino
Date: Wed Apr 12 21:29:05 2006
New Revision: 393708
URL: http://svn.apache.org/viewcvs?rev=393708&view=rev
Log:
context API refactors
Modified:
incubator/tuscany/java/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/context/JavaComponentContext.java
incubator/tuscany/java/sca/containers/container.js/src/main/java/org/apache/tuscany/container/js/context/JavaScriptComponentContext.java
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/AtomicContext.java
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/CompositeContext.java
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/Context.java
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/EventPublisher.java
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractCompositeContext.java
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractContext.java
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/AbstractScopeContext.java
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeContext.java
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/RequestScopeContext.java
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/SessionScopeContext.java
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContextImpl.java
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemComponentContext.java
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemCompositeContextImpl.java
incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/builder/SystemContextFactoryBuilderTestCase.java
Modified:
incubator/tuscany/java/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/context/JavaComponentContext.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/context/JavaComponentContext.java?rev=393708&r1=393707&r2=393708&view=diff
==============================================================================
---
incubator/tuscany/java/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/context/JavaComponentContext.java
(original)
+++
incubator/tuscany/java/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/context/JavaComponentContext.java
Wed Apr 12 21:29:05 2006
@@ -83,6 +83,21 @@
getInstance(null, false);
}
+ public void destroy() throws TargetException {
+ if (cachedTargetInstance != null) {
+ if (destroyInvoker != null) {
+ try {
+ destroyInvoker.invokeEvent(cachedTargetInstance);
+ } catch (ObjectCallbackException e) {
+ TargetException te = new TargetException(e.getCause());
+ te.setIdentifier(getName());
+ throw te;
+ }
+ }
+ }
+ lifecycleState = STARTED;
+ }
+
public synchronized Object getInstance(QualifiedName qName) throws
TargetException {
return getInstance(qName, true);
}
@@ -148,18 +163,6 @@
}
public void stop() {
- lifecycleState = STOPPING;
- if (cachedTargetInstance != null) {
- if (destroyInvoker != null) {
- try {
- destroyInvoker.invokeEvent(cachedTargetInstance);
- } catch (ObjectCallbackException e) {
- TargetException te = new TargetException(e.getCause());
- te.setIdentifier(getName());
- throw te;
- }
- }
- }
lifecycleState = STOPPED;
}
Modified:
incubator/tuscany/java/sca/containers/container.js/src/main/java/org/apache/tuscany/container/js/context/JavaScriptComponentContext.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/containers/container.js/src/main/java/org/apache/tuscany/container/js/context/JavaScriptComponentContext.java?rev=393708&r1=393707&r2=393708&view=diff
==============================================================================
---
incubator/tuscany/java/sca/containers/container.js/src/main/java/org/apache/tuscany/container/js/context/JavaScriptComponentContext.java
(original)
+++
incubator/tuscany/java/sca/containers/container.js/src/main/java/org/apache/tuscany/container/js/context/JavaScriptComponentContext.java
Wed Apr 12 21:29:05 2006
@@ -65,6 +65,10 @@
getInstance(null, false);
}
+ public void destroy() throws TargetException {
+
+ }
+
private synchronized Object getInstance(QualifiedName qName, boolean
notify) throws TargetException {
String portName = qName.getPortName();
ProxyFactory targetFactory;
Modified:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/AtomicContext.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/AtomicContext.java?rev=393708&r1=393707&r2=393708&view=diff
==============================================================================
---
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/AtomicContext.java
(original)
+++
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/AtomicContext.java
Wed Apr 12 21:29:05 2006
@@ -35,6 +35,12 @@
public void init() throws TargetException;
/**
+ * Notifies the context of a destroy event
+ * @throws TargetException
+ */
+ public void destroy() throws TargetException;
+
+ /**
* Returns whether a the context should be called back when its scope ends
*/
public boolean isDestroyable();
Modified:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/CompositeContext.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/CompositeContext.java?rev=393708&r1=393707&r2=393708&view=diff
==============================================================================
---
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/CompositeContext.java
(original)
+++
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/CompositeContext.java
Wed Apr 12 21:29:05 2006
@@ -20,15 +20,9 @@
public CompositeContext getParent();
/**
- * Propagates an event to registered listeners. All lifecycle events will
be propagated to children in the order
- * that they were registered. Listeners are expected to be well-behaved
and if an exception is thrown the
- * notification process will be aborted.
- *
- * @param pEventType the type of event. Basic types are defined in [EMAIL
PROTECTED] EventContext}
- * @param pMessage the message associated with the event or null
- * @throws EventException if an error occurs while sending the event
+ * Sets the parent context
*/
- //public void fireEvent(int pEventType, Object pMessage) throws
EventException;
+ public void setParent(CompositeContext parent);
/**
* Adds runtime artifacts represented by the set of model objects to the
composite context by merging them with
@@ -58,15 +52,6 @@
* Returns the child context associated with a given name
*/
public Context getContext(String name);
-
- /**
- * Intended for internal use by the runtime, returns an implementation
instance for the given context name, which
- * may be a compound component/service form. Unlike [EMAIL PROTECTED]
Context#getInstance(QualifiedName)}, which for composite contexts only returns
- * entry point proxies, this method will return any type of contained
implementation instance.
- *
- * @throws TargetException if there was an error returning the instance
- */
- //public Object locateInstance(QualifiedName name) throws TargetException;
/**
* Returns the composite managed by this composite context
Modified:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/Context.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/Context.java?rev=393708&r1=393707&r2=393708&view=diff
==============================================================================
---
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/Context.java
(original)
+++
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/Context.java
Wed Apr 12 21:29:05 2006
@@ -36,6 +36,9 @@
/* Instantiated and configured */
public static final int INITIALIZED = 2;
+ /* Started */
+ public static final int STARTED = 4;
+
/* Configured and initialized */
public static final int RUNNING = 4;
Modified:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/EventPublisher.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/EventPublisher.java?rev=393708&r1=393707&r2=393708&view=diff
==============================================================================
---
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/EventPublisher.java
(original)
+++
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/EventPublisher.java
Wed Apr 12 21:29:05 2006
@@ -15,8 +15,6 @@
import org.apache.tuscany.core.context.event.Event;
-import java.util.EventObject;
-
/**
* Publishes events in the runtime
*
Modified:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractCompositeContext.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractCompositeContext.java?rev=393708&r1=393707&r2=393708&view=diff
==============================================================================
---
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractCompositeContext.java
(original)
+++
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractCompositeContext.java
Wed Apr 12 21:29:05 2006
@@ -65,8 +65,6 @@
public static final int DEFAULT_WAIT = 1000 * 60;
- // The parent context, if one exists
- @ParentContext
protected CompositeContext parentContext;
// The parent configuration context, if one exists
@@ -227,6 +225,11 @@
public CompositeContext getParent() {
return parentContext;
+ }
+
+ @ParentContext
+ public void setParent(CompositeContext parent){
+ parentContext = parent;
}
public void registerModelObjects(List<? extends Extensible> models) throws
ConfigurationException {
Modified:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractContext.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractContext.java?rev=393708&r1=393707&r2=393708&view=diff
==============================================================================
---
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractContext.java
(original)
+++
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractContext.java
Wed Apr 12 21:29:05 2006
@@ -60,7 +60,6 @@
}
// Listeners for context events
- //protected List<RuntimeEventListener> listeners = new
CopyOnWriteArrayList<RuntimeEventListener>();
private Map<EventFilter, List<RuntimeEventListener>> listeners;
Modified:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/AbstractScopeContext.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/AbstractScopeContext.java?rev=393708&r1=393707&r2=393708&view=diff
==============================================================================
---
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/AbstractScopeContext.java
(original)
+++
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/AbstractScopeContext.java
Wed Apr 12 21:29:05 2006
@@ -22,6 +22,7 @@
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.AtomicContext;
import org.apache.tuscany.core.context.impl.AbstractContext;
import java.util.List;
@@ -88,6 +89,9 @@
synchronized (context) {
removeContextByKey(context.getName(), key);
try {
+ if (context instanceof AtomicContext){
+ ((AtomicContext)context).destroy();
+ }
context.stop();
} catch (TargetException e) {
// TODO send a monitoring event
Modified:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeContext.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeContext.java?rev=393708&r1=393707&r2=393708&view=diff
==============================================================================
---
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeContext.java
(original)
+++
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeContext.java
Wed Apr 12 21:29:05 2006
@@ -49,29 +49,6 @@
setName("Module Scope");
}
-// public void onEvent(int type, Object key) {
- // throw new UnsupportedOperationException();
-// switch(type){
-// case EventContext.MODULE_START:
-// lifecycleState = RUNNING;
-// initComponentContexts();
-// break;
-// case EventContext.MODULE_STOP:
-// notifyInstanceShutdown(key);
-// break;
-// case EventContext.CONTEXT_CREATED:
-// checkInit();
-// if (key instanceof AtomicContext) {
-// AtomicContext serviceContext = (AtomicContext) key;
-// // Queue the context to have its implementation instance
released if destroyable
-// if (serviceContext.isDestroyable()) {
-// destroyableContexts.add(serviceContext);
-// }
-// }
-// break;
-// }
-// }
-
public void onEvent(Event event) {
if (event instanceof ModuleStartEvent) {
lifecycleState = RUNNING;
@@ -181,13 +158,13 @@
// contain a forward reference to a component which has not been
instantiated
for (Context context : componentContexts.values()) {
if (context instanceof AtomicContext) {
- AtomicContext simpleCtx = (AtomicContext) context;
- if (simpleCtx.isEagerInit()) {
+ AtomicContext atomic = (AtomicContext) context;
+ if (atomic.isEagerInit()) {
// perform silent creation and manual shutdown
registration
- simpleCtx.init();
- if (simpleCtx.isDestroyable()) {
- destroyableContexts.add(simpleCtx);
- }
+ atomic.init();
+ //if (atomic.isDestroyable()) {
+ destroyableContexts.add(atomic);
+ //}
}
}
}
Modified:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/RequestScopeContext.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/RequestScopeContext.java?rev=393708&r1=393707&r2=393708&view=diff
==============================================================================
---
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/RequestScopeContext.java
(original)
+++
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/RequestScopeContext.java
Wed Apr 12 21:29:05 2006
@@ -51,32 +51,6 @@
setName("Request Scope");
}
-// public void onEvent(int type, Object key) {
-// throw new UnsupportedOperationException();
-// /* clean up current context for pooled threads */
-// switch(type){
-// case EventContext.REQUEST_END:
-// checkInit();
-// getEventContext().clearIdentifier(EventContext.SESSION);
-// notifyInstanceShutdown(Thread.currentThread());
-// destroyContext();
-// break;
-// case EventContext.CONTEXT_CREATED:
-// checkInit();
-// assert(key instanceof Context): "Context must be passed on
created event";
-// Context context = (Context)key;
-// if (context instanceof AtomicContext) {
-// AtomicContext simpleCtx = (AtomicContext)context;
-// // Queue the context to have its implementation instance
released if destroyable
-// if (simpleCtx.isDestroyable()) {
-// Queue<AtomicContext> collection =
destroyComponents.get(Thread.currentThread());
-// collection.add(simpleCtx);
-// }
-// }
-// break;
-// }
-// }
-
public void onEvent(Event event){
/* clean up current context for pooled threads */
if (event instanceof RequestEndEvent){
@@ -89,12 +63,12 @@
assert(event.getSource() instanceof Context): "Context must be
passed on created event";
Context context = (Context)event.getSource();
if (context instanceof AtomicContext) {
- AtomicContext simpleCtx = (AtomicContext)context;
+ AtomicContext atomic = (AtomicContext)context;
// Queue the context to have its implementation instance
released if destroyable
- if (simpleCtx.isDestroyable()) {
+ //if (atomic.isDestroyable()) {
Queue<AtomicContext> collection =
destroyComponents.get(Thread.currentThread());
- collection.add(simpleCtx);
- }
+ collection.add(atomic);
+ //}
}
}
}
@@ -116,10 +90,6 @@
destroyComponents = null;
lifecycleState = STOPPED;
}
-
- // ----------------------------------
- // Methods
- // ----------------------------------
public boolean isCacheable() {
return true;
Modified:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/SessionScopeContext.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/SessionScopeContext.java?rev=393708&r1=393707&r2=393708&view=diff
==============================================================================
---
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/SessionScopeContext.java
(original)
+++
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/SessionScopeContext.java
Wed Apr 12 21:29:05 2006
@@ -210,12 +210,12 @@
// contain a forward reference to a component which has not been
instantiated
for (Context context : sessionContext.values()) {
if (context instanceof AtomicContext) {
- AtomicContext simpleCtx = (AtomicContext) context;
- if (simpleCtx.isEagerInit()) {
+ AtomicContext atomic = (AtomicContext) context;
+ if (atomic.isEagerInit()) {
context.notify(); // Notify the instance
- if (simpleCtx.isDestroyable()) {
- shutdownQueue.add(simpleCtx);
- }
+ //if (atomic.isDestroyable()) {
+ shutdownQueue.add(atomic);
+ //}
}
}
}
Modified:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContextImpl.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContextImpl.java?rev=393708&r1=393707&r2=393708&view=diff
==============================================================================
---
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContextImpl.java
(original)
+++
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContextImpl.java
Wed Apr 12 21:29:05 2006
@@ -181,6 +181,10 @@
return null; // there is no parent
}
+ public void setParent(CompositeContext parent) {
+ throw new UnsupportedOperationException();
+ }
+
//TODO remove
public void fireEvent(int pEventType, Object pMessage) throws
EventException {
throw new UnsupportedOperationException();
Modified:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemComponentContext.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemComponentContext.java?rev=393708&r1=393707&r2=393708&view=diff
==============================================================================
---
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemComponentContext.java
(original)
+++
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemComponentContext.java
Wed Apr 12 21:29:05 2006
@@ -87,6 +87,19 @@
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, boolean
notify) throws TargetException {
if (cachedTargetInstance != null) {
return cachedTargetInstance; // already cached, just return
@@ -150,15 +163,6 @@
}
public void stop() {
- if (cachedTargetInstance != null) {
- if (destroyInvoker != null) {
- try {
- destroyInvoker.invokeEvent(cachedTargetInstance);
- } catch (ObjectCallbackException e) {
- throw new TargetException(e.getCause());
- }
- }
- }
lifecycleState = STOPPED;
}
Modified:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemCompositeContextImpl.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemCompositeContextImpl.java?rev=393708&r1=393707&r2=393708&view=diff
==============================================================================
---
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemCompositeContextImpl.java
(original)
+++
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemCompositeContextImpl.java
Wed Apr 12 21:29:05 2006
@@ -90,8 +90,6 @@
public static final int DEFAULT_WAIT = 1000 * 60;
- // The parent context, if one exists
- @ParentContext
protected CompositeContext parentContext;
// The parent configuration context, if one exists
@@ -261,6 +259,7 @@
return parentContext;
}
+ @ParentContext
public void setParent(CompositeContext context) {
parentContext = context;
}
Modified:
incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/builder/SystemContextFactoryBuilderTestCase.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/builder/SystemContextFactoryBuilderTestCase.java?rev=393708&r1=393707&r2=393708&view=diff
==============================================================================
---
incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/builder/SystemContextFactoryBuilderTestCase.java
(original)
+++
incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/builder/SystemContextFactoryBuilderTestCase.java
Wed Apr 12 21:29:05 2006
@@ -18,6 +18,7 @@
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.AtomicContext;
import org.apache.tuscany.core.context.impl.CompositeContextImpl;
import org.apache.tuscany.core.context.impl.EventContextImpl;
import org.apache.tuscany.core.context.scope.DefaultScopeStrategy;
@@ -99,10 +100,10 @@
component.getConfiguredProperties().add(cProp);
builder.build(component);
- ContextFactory contextFactory = (ContextFactory)
component.getContextFactory();
+ ContextFactory<AtomicContext> contextFactory =
(ContextFactory<AtomicContext>) component.getContextFactory();
Assert.assertNotNull(contextFactory);
contextFactory.prepare(createContext());
- Context ctx = contextFactory.createContext();
+ AtomicContext ctx = contextFactory.createContext();
ctx.start();
SystemComponentImpl instance = (SystemComponentImpl)
ctx.getInstance(null);
@@ -122,6 +123,7 @@
Assert.assertEquals("test", instance.getTestString());
Assert.assertTrue(instance.initialized());
+ ctx.destroy();
ctx.stop();
Assert.assertTrue(instance.destroyed());
}