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());
     }


Reply via email to