Tuscany webapps aren't working after this change as nothing is ever setting
the CONTEXT_ATTRIBUTE in the ServletContext so TuscanyFilter initializes the
context to null. Is this just an oversight or as CONTEXT_ATTRIBUTE is
deprecated is it not intended for this to work like this anymore?

  ...ant

On 1/17/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:

Author: jboynes
Date: Wed Jan 17 13:43:12 2007
New Revision: 497187

URL: http://svn.apache.org/viewvc?view=rev&rev=497187
Log:
simplify association of context with the thread
this transitions from the use of SCA to setContext

Removed:
    incubator/tuscany/java/spec/sca/src/main/java/org/osoa/sca/SCA.java
Modified:

    
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeContext.java

    
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/launcher/CompositeContextImpl.java

    
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/runtime/AbstractRuntime.java

    
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/NonBlockingBridgingInterceptor.java

    
incubator/tuscany/java/sca/kernel/host-api/src/main/java/org/apache/tuscany/host/runtime/TuscanyRuntime.java

    
incubator/tuscany/java/sca/plugins/plugin.itest/src/main/java/org/apache/tuscany/sca/plugin/itest/MavenEmbeddedRuntime.java

    
incubator/tuscany/java/sca/plugins/plugin.itest/src/main/java/org/apache/tuscany/sca/plugin/itest/TuscanyStartMojo.java

    
incubator/tuscany/java/sca/runtime/standalone/launcher/src/main/java/org/apache/tuscany/launcher/Main.java

    
incubator/tuscany/java/sca/runtime/webapp/webapp-api/src/main/java/org/apache/tuscany/runtime/webapp/Constants.java

    
incubator/tuscany/java/sca/runtime/webapp/webapp-api/src/main/java/org/apache/tuscany/runtime/webapp/TuscanyFilter.java

    
incubator/tuscany/java/sca/runtime/webapp/webapp-api/src/test/java/org/apache/tuscany/runtime/webapp/TuscanyFilterTestCase.java

    
incubator/tuscany/java/sca/runtime/webapp/webapp-host/src/main/java/org/apache/tuscany/runtime/webapp/WebappRuntimeImpl.java

    
incubator/tuscany/java/sca/services/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeBuilder.java

    
incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/SCATestCase.java

    
incubator/tuscany/java/spec/sca/src/main/java/org/osoa/sca/CurrentCompositeContext.java

Modified:
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeContext.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeContext.java?view=diff&rev=497187&r1=497186&r2=497187

==============================================================================
---
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeContext.java
(original)
+++
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeContext.java
Wed Jan 17 13:43:12 2007
@@ -19,7 +19,6 @@
package org.apache.tuscany.core.implementation.composite;

import org.osoa.sca.CompositeContext;
-import org.osoa.sca.SCA;
import org.osoa.sca.ServiceRuntimeException;

import org.apache.tuscany.spi.QualifiedName;
@@ -40,7 +39,7 @@
  *
  * @version $Rev$ $Date$
  */
-public abstract class AbstractCompositeContext extends SCA implements
CompositeContext {
+public abstract class AbstractCompositeContext implements
CompositeContext {
     protected final CompositeComponent composite;
     protected final WireService wireService;


Modified:
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/launcher/CompositeContextImpl.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/launcher/CompositeContextImpl.java?view=diff&rev=497187&r1=497186&r2=497187

==============================================================================
---
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/launcher/CompositeContextImpl.java
(original)
+++
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/launcher/CompositeContextImpl.java
Wed Jan 17 13:43:12 2007
@@ -38,14 +38,6 @@
         super(composite, wireService);
     }

-    public void start() {
-        setCompositeContext(this);
-    }
-
-    public void stop() {
-        setCompositeContext(null);
-    }
-
     public ServiceReference createServiceReferenceForSession(Object arg0)
{
         throw new UnsupportedOperationException();
     }

Modified:
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/runtime/AbstractRuntime.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/runtime/AbstractRuntime.java?view=diff&rev=497187&r1=497186&r2=497187

==============================================================================
---
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/runtime/AbstractRuntime.java
(original)
+++
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/runtime/AbstractRuntime.java
Wed Jan 17 13:43:12 2007
@@ -22,7 +22,6 @@
import javax.xml.stream.XMLInputFactory;

import org.osoa.sca.CompositeContext;
-import org.osoa.sca.SCA;

import org.apache.tuscany.core.bootstrap.Bootstrapper;
import org.apache.tuscany.core.bootstrap.DefaultBootstrapper;
@@ -305,7 +304,7 @@
         return (CompositeComponent) deployer.deploy(parent, definition);
     }

-    public SCA getContext() {
+    public CompositeContext getContext() {
         throw new UnsupportedOperationException();
     }


Modified:
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/NonBlockingBridgingInterceptor.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/NonBlockingBridgingInterceptor.java?view=diff&rev=497187&r1=497186&r2=497187

==============================================================================
---
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/NonBlockingBridgingInterceptor.java
(original)
+++
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/NonBlockingBridgingInterceptor.java
Wed Jan 17 13:43:12 2007
@@ -22,7 +22,6 @@

import org.osoa.sca.CompositeContext;
import org.osoa.sca.CurrentCompositeContext;
-import org.osoa.sca.SCA;
import org.osoa.sca.ServiceRuntimeException;

import org.apache.tuscany.spi.component.WorkContext;
@@ -41,7 +40,6 @@
  */
public class NonBlockingBridgingInterceptor implements BridgingInterceptor
{

-    private static final ContextBinder BINDER = new ContextBinder();
     private static final Message RESPONSE = new ImmutableMessage();

     private WorkScheduler workScheduler;
@@ -73,16 +71,15 @@
                     if (conversationID != null) {
                         workContext.setIdentifier(Scope.CONVERSATION,
conversationID);
                     }
-                    CompositeContext oldContext =
CurrentCompositeContext.getContext();
+                    CompositeContext oldContext =
CurrentCompositeContext.setContext(currentContext);
                     try {
-                        BINDER.setContext(currentContext);
                         next.invoke(msg);
                     } catch (Exception e) {
                         // REVIEW uncomment when it is available
                         // monitor.executionError(e);
                         e.printStackTrace();
                     } finally {
-                        BINDER.setContext(oldContext);
+                        CurrentCompositeContext.setContext(oldContext);
                     }
                 }
             });
@@ -102,20 +99,6 @@

     public boolean isOptimizable() {
         return false;
-    }
-
-    private static class ContextBinder extends SCA {
-        public void setContext(CompositeContext context) {
-            setCompositeContext(context);
-        }
-
-        public void start() {
-            throw new AssertionError();
-        }
-
-        public void stop() {
-            throw new AssertionError();
-        }
     }

     /**

Modified:
incubator/tuscany/java/sca/kernel/host-api/src/main/java/org/apache/tuscany/host/runtime/TuscanyRuntime.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/host-api/src/main/java/org/apache/tuscany/host/runtime/TuscanyRuntime.java?view=diff&rev=497187&r1=497186&r2=497187

==============================================================================
---
incubator/tuscany/java/sca/kernel/host-api/src/main/java/org/apache/tuscany/host/runtime/TuscanyRuntime.java
(original)
+++
incubator/tuscany/java/sca/kernel/host-api/src/main/java/org/apache/tuscany/host/runtime/TuscanyRuntime.java
Wed Jan 17 13:43:12 2007
@@ -21,7 +21,6 @@
import java.net.URL;

import org.osoa.sca.CompositeContext;
-import org.osoa.sca.SCA;

import org.apache.tuscany.host.MonitorFactory;
import org.apache.tuscany.host.RuntimeInfo;
@@ -120,7 +119,7 @@
      * Returns the current SCA context
      */
     @Deprecated
-    SCA getContext();
+    CompositeContext getContext();

     /**
      * Returns the name of the component associated with the application
SCDL.

Modified:
incubator/tuscany/java/sca/plugins/plugin.itest/src/main/java/org/apache/tuscany/sca/plugin/itest/MavenEmbeddedRuntime.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/plugins/plugin.itest/src/main/java/org/apache/tuscany/sca/plugin/itest/MavenEmbeddedRuntime.java?view=diff&rev=497187&r1=497186&r2=497187

==============================================================================
---
incubator/tuscany/java/sca/plugins/plugin.itest/src/main/java/org/apache/tuscany/sca/plugin/itest/MavenEmbeddedRuntime.java
(original)
+++
incubator/tuscany/java/sca/plugins/plugin.itest/src/main/java/org/apache/tuscany/sca/plugin/itest/MavenEmbeddedRuntime.java
Wed Jan 17 13:43:12 2007
@@ -23,7 +23,7 @@
import java.util.HashMap;
import java.util.Map;

-import org.osoa.sca.SCA;
+import org.osoa.sca.CompositeContext;

import
org.apache.tuscany.core.implementation.system.model.SystemCompositeImplementation
;
import org.apache.tuscany.core.launcher.CompositeContextImpl;
@@ -116,7 +116,6 @@
             new
ComponentDefinition<SystemCompositeImplementation>(extensionName,
implementation);

         Component component = deployer.deploy(composite, definition);
-
         component.start();
     }

@@ -129,7 +128,7 @@
         super.destroy();
     }

-    public SCA getContext() {
+    public CompositeContext getContext() {
         return context;
     }


Modified:
incubator/tuscany/java/sca/plugins/plugin.itest/src/main/java/org/apache/tuscany/sca/plugin/itest/TuscanyStartMojo.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/plugins/plugin.itest/src/main/java/org/apache/tuscany/sca/plugin/itest/TuscanyStartMojo.java?view=diff&rev=497187&r1=497186&r2=497187

==============================================================================
---
incubator/tuscany/java/sca/plugins/plugin.itest/src/main/java/org/apache/tuscany/sca/plugin/itest/TuscanyStartMojo.java
(original)
+++
incubator/tuscany/java/sca/plugins/plugin.itest/src/main/java/org/apache/tuscany/sca/plugin/itest/TuscanyStartMojo.java
Wed Jan 17 13:43:12 2007
@@ -43,7 +43,8 @@
import org.apache.maven.plugin.MojoFailureException;
import org.apache.tuscany.host.runtime.InitializationException;

-import org.osoa.sca.SCA;
+import org.osoa.sca.CompositeContext;
+import org.osoa.sca.CurrentCompositeContext;

/**
  * @version $Rev$ $Date$
@@ -296,8 +297,8 @@
         } catch (InitializationException e) {
             throw new MojoExecutionException("Error initializing", e);
         }
-        SCA context = runtime.getContext();
-        context.start();
+        CompositeContext context = runtime.getContext();
+        CurrentCompositeContext.setContext(context);

         foo.set(applicationClassLoader);
     }

Modified:
incubator/tuscany/java/sca/runtime/standalone/launcher/src/main/java/org/apache/tuscany/launcher/Main.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/runtime/standalone/launcher/src/main/java/org/apache/tuscany/launcher/Main.java?view=diff&rev=497187&r1=497186&r2=497187

==============================================================================
---
incubator/tuscany/java/sca/runtime/standalone/launcher/src/main/java/org/apache/tuscany/launcher/Main.java
(original)
+++
incubator/tuscany/java/sca/runtime/standalone/launcher/src/main/java/org/apache/tuscany/launcher/Main.java
Wed Jan 17 13:43:12 2007
@@ -30,7 +30,7 @@
import java.util.jar.Manifest;

import org.osoa.sca.CompositeContext;
-import org.osoa.sca.SCA;
+import org.osoa.sca.CurrentCompositeContext;

import org.apache.tuscany.host.runtime.TuscanyRuntime;
import org.apache.tuscany.runtime.standalone.DirectoryHelper;
@@ -68,27 +68,15 @@

             URL applicationScdl =
getApplicationScdl(applicationClassLoader);

-            final CompositeContext context = runtime.deployApplication
("application",
-
applicationScdl,
-
applicationClassLoader);
-
-            // FIXME JNB we should replace this with
CurrentCompositeContext.setContext(...)
-            SCA sca = new SCA() {
-
-                public void start() {
-                    setCompositeContext(context);
-                }
-
-                public void stop() {
-                    setCompositeContext(null);
-                }
-            };
+            CompositeContext context = runtime.deployApplication
("application",
+
applicationScdl,
+
applicationClassLoader);

-            sca.start();
+            CompositeContext old = CurrentCompositeContext.setContext
(context);
             try {
                 runApplication(applicationJar, applicationClassLoader,
appArgs);
             } finally {
-                sca.stop();
+                CurrentCompositeContext.setContext(old);
             }
         } finally {
             runtime.destroy();
@@ -111,6 +99,7 @@
         boolean online = !Boolean.parseBoolean(props.getProperty("offline",
"false"));

         return new StandaloneRuntimeInfoImpl(null, profile, installDir,
profileDir, null, online, props);
+
     }

     static TuscanyRuntime createRuntime(StandaloneRuntimeInfo
runtimeInfo) throws Exception {

Modified:
incubator/tuscany/java/sca/runtime/webapp/webapp-api/src/main/java/org/apache/tuscany/runtime/webapp/Constants.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/runtime/webapp/webapp-api/src/main/java/org/apache/tuscany/runtime/webapp/Constants.java?view=diff&rev=497187&r1=497186&r2=497187

==============================================================================
---
incubator/tuscany/java/sca/runtime/webapp/webapp-api/src/main/java/org/apache/tuscany/runtime/webapp/Constants.java
(original)
+++
incubator/tuscany/java/sca/runtime/webapp/webapp-api/src/main/java/org/apache/tuscany/runtime/webapp/Constants.java
Wed Jan 17 13:43:12 2007
@@ -58,6 +58,12 @@
     static final String RUNTIME_ATTRIBUTE = "tuscany.runtime";

     /**
+     * Context attribute for storing the CompositeContext that should be
bound to the thread.`
+     */
+    @Deprecated
+    static final String CONTEXT_ATTRIBUTE = "tuscany.context";
+
+    /**
      * Servlet context-param name for the path to the composite to set as
the webb app composite
      */
     static final String CURRENT_COMPOSITE_PATH_PARAM = "
tuscany.currentCompositePath";

Modified:
incubator/tuscany/java/sca/runtime/webapp/webapp-api/src/main/java/org/apache/tuscany/runtime/webapp/TuscanyFilter.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/runtime/webapp/webapp-api/src/main/java/org/apache/tuscany/runtime/webapp/TuscanyFilter.java?view=diff&rev=497187&r1=497186&r2=497187

==============================================================================
---
incubator/tuscany/java/sca/runtime/webapp/webapp-api/src/main/java/org/apache/tuscany/runtime/webapp/TuscanyFilter.java
(original)
+++
incubator/tuscany/java/sca/runtime/webapp/webapp-api/src/main/java/org/apache/tuscany/runtime/webapp/TuscanyFilter.java
Wed Jan 17 13:43:12 2007
@@ -25,10 +25,13 @@
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
+import javax.servlet.ServletContext;

-import org.osoa.sca.SCA;
+import org.osoa.sca.CompositeContext;
+import org.osoa.sca.CurrentCompositeContext;

import static
org.apache.tuscany.runtime.webapp.Constants.RUNTIME_ATTRIBUTE;
+import static
org.apache.tuscany.runtime.webapp.Constants.CONTEXT_ATTRIBUTE;

/**
  * Maps an incoming request and the current composite context to the
composite component for the web application. This
@@ -38,30 +41,32 @@
  * @version $Rev$ $Date$
  */
public class TuscanyFilter implements Filter {
-    private SCA context;
+    private CompositeContext context;
     private WebappRuntime runtime;

     public void init(FilterConfig config) throws ServletException {
-        runtime = (WebappRuntime) config.getServletContext
().getAttribute(RUNTIME_ATTRIBUTE);
+        ServletContext servletContext = config.getServletContext();
+        runtime = (WebappRuntime) servletContext.getAttribute
(RUNTIME_ATTRIBUTE);
         if (runtime == null) {
             throw new ServletException("Tuscany is not configured for the
web application");
         }
-        context = runtime.getContext();
+        context = (CompositeContext) servletContext.getAttribute
(CONTEXT_ATTRIBUTE);
     }

     public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain filterChain)
         throws IOException, ServletException {
+        CompositeContext oldContext = CurrentCompositeContext.setContext
(context);
         try {
             runtime.startRequest();
-            context.start();
             filterChain.doFilter(req, resp);
         } finally {
-            context.stop();
+            CurrentCompositeContext.setContext(oldContext);
             runtime.stopRequest();
         }
     }

     public void destroy() {
-
+        context = null;
+        runtime = null;
     }
}

Modified:
incubator/tuscany/java/sca/runtime/webapp/webapp-api/src/test/java/org/apache/tuscany/runtime/webapp/TuscanyFilterTestCase.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/runtime/webapp/webapp-api/src/test/java/org/apache/tuscany/runtime/webapp/TuscanyFilterTestCase.java?view=diff&rev=497187&r1=497186&r2=497187

==============================================================================
---
incubator/tuscany/java/sca/runtime/webapp/webapp-api/src/test/java/org/apache/tuscany/runtime/webapp/TuscanyFilterTestCase.java
(original)
+++
incubator/tuscany/java/sca/runtime/webapp/webapp-api/src/test/java/org/apache/tuscany/runtime/webapp/TuscanyFilterTestCase.java
Wed Jan 17 13:43:12 2007
@@ -18,6 +18,7 @@
  */
package org.apache.tuscany.runtime.webapp;

+import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
@@ -25,94 +26,97 @@
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

-import org.osoa.sca.SCA;
-
import junit.framework.TestCase;
+import org.easymock.EasyMock;
+import org.osoa.sca.CompositeContext;
+
+import static
org.apache.tuscany.runtime.webapp.Constants.CONTEXT_ATTRIBUTE;
import static
org.apache.tuscany.runtime.webapp.Constants.RUNTIME_ATTRIBUTE;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.createNiceMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.isA;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
-import org.easymock.classextension.EasyMock;

/**
  * @version $Rev$ $Date$
  */
public class TuscanyFilterTestCase extends TestCase {
-
-    public void testStartStopFilter() throws Exception {
-        SCA sca = EasyMock.createNiceMock(SCA.class);
-        sca.start();
-        sca.stop();
-        EasyMock.replay(sca);
-        WebappRuntime runtime = createMock(WebappRuntime.class);
-        expect(runtime.getContext()).andReturn(sca);
-        runtime.startRequest();
-        runtime.stopRequest();
-        replay(runtime);
-        ServletContext context = createNiceMock(ServletContext.class);
-        EasyMock.expect(context.getAttribute
(RUNTIME_ATTRIBUTE)).andReturn(runtime);
-        replay(context);
-        TuscanyFilter filter = new TuscanyFilter();
-        FilterConfig config = createMock(FilterConfig.class);
-        expect(config.getServletContext()).andReturn(context);
-        replay(config);
-        filter.init(config);
-        ServletRequest req = createNiceMock(ServletRequest.class);
-        ServletResponse resp = createNiceMock(ServletResponse.class);
-        FilterChain chain = createNiceMock(FilterChain.class);
-        filter.doFilter(req, resp, chain);
-        verify(runtime);
-        EasyMock.verify(sca);
-    }
-
-    public void testExceptionCleanupFilter() throws Exception {
-        SCA sca = EasyMock.createNiceMock(SCA.class);
-        sca.start();
-        sca.stop();
-        EasyMock.replay(sca);
-        WebappRuntime runtime = createMock(WebappRuntime.class);
-        runtime.startRequest();
-        runtime.stopRequest();
-        expect(runtime.getContext()).andReturn(sca);
-        replay(runtime);
-        ServletContext context = createNiceMock(ServletContext.class);
-        EasyMock.expect(context.getAttribute
(RUNTIME_ATTRIBUTE)).andReturn(runtime);
-        replay(context);
-        TuscanyFilter filter = new TuscanyFilter();
-        FilterConfig config = createMock(FilterConfig.class);
-        expect(config.getServletContext()).andReturn(context);
-        replay(config);
-        filter.init(config);
-        ServletRequest req = createNiceMock(ServletRequest.class);
-        ServletResponse resp = createNiceMock(ServletResponse.class);
-        FilterChain chain = createNiceMock(FilterChain.class);
-        chain.doFilter(isA(ServletRequest.class), isA(
ServletResponse.class));
-        EasyMock.expectLastCall().andThrow(new TestException());
-        filter.doFilter(req, resp, chain);
-        verify(runtime);
-        EasyMock.verify(sca);
+    private TuscanyFilter filter;
+    private FilterConfig config;
+    private ServletContext servletContext;
+    private WebappRuntime runtime;
+    private CompositeContext context;
+    private ServletRequest request;
+    private ServletResponse response;
+    private FilterChain chain;
+
+    public void testFilterInit() {
+        EasyMock.expect(config.getServletContext
()).andReturn(servletContext);
+        EasyMock.expect(servletContext.getAttribute
(RUNTIME_ATTRIBUTE)).andReturn(runtime);
+        EasyMock.expect(servletContext.getAttribute
(CONTEXT_ATTRIBUTE)).andReturn(context);
+
+        EasyMock.replay(servletContext);
+        EasyMock.replay(config);
+        EasyMock.replay(runtime);
+        EasyMock.replay(context);
+        try {
+            filter.init(config);
+        } catch (ServletException e) {
+            fail(e.getMessage());
+        }
+        EasyMock.verify(servletContext);
+        EasyMock.verify(config);
+        EasyMock.verify(runtime);
+        EasyMock.verify(context);
     }

-    public void testRuntimeNotConfigured() throws Exception {
-        ServletContext context = createNiceMock(ServletContext.class);
-        TuscanyFilter filter = new TuscanyFilter();
-        FilterConfig config = createMock(FilterConfig.class);
-        expect(config.getServletContext()).andReturn(context);
-        replay(config);
+    public void testFilterInitWithNoRuntimeConfigured() {
+        EasyMock.expect(config.getServletContext
()).andReturn(servletContext);
+        EasyMock.expect(servletContext.getAttribute
(RUNTIME_ATTRIBUTE)).andReturn(null);
+
+        EasyMock.replay(servletContext);
+        EasyMock.replay(config);
+        EasyMock.replay(runtime);
+        EasyMock.replay(context);
         try {
             filter.init(config);
-            fail();
+            fail("Expected a ServletException");
         } catch (ServletException e) {
-            //expected
+            // OK
         }
+        EasyMock.verify(servletContext);
+        EasyMock.verify(config);
+        EasyMock.verify(runtime);
+        EasyMock.verify(context);
     }

-    private class TestException extends RuntimeException {
+    public void testContextIsAssociatedWithThread() throws
ServletException, IOException {
+        EasyMock.expect(config.getServletContext
()).andReturn(servletContext);
+        EasyMock.expect(servletContext.getAttribute
(RUNTIME_ATTRIBUTE)).andReturn(runtime);
+        EasyMock.expect(servletContext.getAttribute
(CONTEXT_ATTRIBUTE)).andReturn(context);
+        EasyMock.replay(servletContext);
+        EasyMock.replay(config);
+        filter.init(config);

+        chain.doFilter(EasyMock.same(request), EasyMock.same(response));
+        EasyMock.replay(chain);
+        runtime.startRequest();
+        runtime.stopRequest();
+        EasyMock.replay(runtime);
+        try {
+            filter.doFilter(request, response, chain);
+        } catch (IOException e) {
+            fail(e.getMessage());
+        }
+        EasyMock.verify(chain);
+        EasyMock.verify(runtime);
     }

-
+    protected void setUp() throws Exception {
+        super.setUp();
+        filter = new TuscanyFilter();
+        config = EasyMock.createMock(FilterConfig.class);
+        servletContext = EasyMock.createMock(ServletContext.class);
+        runtime = EasyMock.createMock(WebappRuntime.class);
+        context = EasyMock.createMock(CompositeContext.class);
+        request = EasyMock.createMock(ServletRequest.class);
+        response = EasyMock.createMock(ServletResponse.class);
+        chain = EasyMock.createMock(FilterChain.class);
+    }
}

Modified:
incubator/tuscany/java/sca/runtime/webapp/webapp-host/src/main/java/org/apache/tuscany/runtime/webapp/WebappRuntimeImpl.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/runtime/webapp/webapp-host/src/main/java/org/apache/tuscany/runtime/webapp/WebappRuntimeImpl.java?view=diff&rev=497187&r1=497186&r2=497187

==============================================================================
---
incubator/tuscany/java/sca/runtime/webapp/webapp-host/src/main/java/org/apache/tuscany/runtime/webapp/WebappRuntimeImpl.java
(original)
+++
incubator/tuscany/java/sca/runtime/webapp/webapp-host/src/main/java/org/apache/tuscany/runtime/webapp/WebappRuntimeImpl.java
Wed Jan 17 13:43:12 2007
@@ -19,12 +19,13 @@
package org.apache.tuscany.runtime.webapp;

import java.util.StringTokenizer;
-
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;

+import org.osoa.sca.CompositeContext;
+
import org.apache.tuscany.core.component.event.HttpRequestEnded;
import org.apache.tuscany.core.component.event.HttpRequestStart;
import org.apache.tuscany.core.component.event.HttpSessionEnd;
@@ -40,7 +41,6 @@
import org.apache.tuscany.spi.component.CompositeComponent;
import org.apache.tuscany.spi.component.SCAObject;
import org.apache.tuscany.spi.event.EventPublisher;
-import org.osoa.sca.SCA;

/**
  * Bootstrapper for the Tuscany runtime in a web application host. This
listener manages one runtime per servlet
@@ -101,10 +101,10 @@
             }
             getRuntime().getRootComponent().start();
             application = deployApplicationScdl(getDeployer(),
-                getRuntime().getRootComponent(),
-                getApplicationName(),
-                getApplicationScdl(),
-                getHostClassLoader());

+                                                
getRuntime().getRootComponent(),
+                                                getApplicationName(),
+                                                getApplicationScdl(),
+                                                getHostClassLoader());
             application.start();
             CompositeComponent current = application;
             String path = servletContext.getInitParameter(
Constants.CURRENT_COMPOSITE_PATH_PARAM);
@@ -132,7 +132,7 @@
         super.destroy();
     }

-    public SCA getContext() {
+    public CompositeContext getContext() {
         return context;
     }


Modified:
incubator/tuscany/java/sca/services/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeBuilder.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeBuilder.java?view=diff&rev=497187&r1=497186&r2=497187

==============================================================================
---
incubator/tuscany/java/sca/services/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeBuilder.java
(original)
+++
incubator/tuscany/java/sca/services/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeBuilder.java
Wed Jan 17 13:43:12 2007
@@ -24,7 +24,6 @@
import org.apache.tuscany.spi.component.Component;
import org.apache.tuscany.spi.component.ComponentRegistrationException;
import org.apache.tuscany.spi.component.CompositeComponent;
-import org.apache.tuscany.spi.component.ReferenceBinding;
import org.apache.tuscany.spi.component.Service;
import org.apache.tuscany.spi.component.ServiceBinding;
import org.apache.tuscany.spi.component.Reference;

Modified:
incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/SCATestCase.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/SCATestCase.java?view=diff&rev=497187&r1=497186&r2=497187

==============================================================================
---
incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/SCATestCase.java
(original)
+++
incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/SCATestCase.java
Wed Jan 17 13:43:12 2007
@@ -46,6 +46,8 @@
import org.apache.tuscany.host.MonitorFactory;
import org.apache.tuscany.host.runtime.InitializationException;

+import org.osoa.sca.CurrentCompositeContext;
+
/**
  * Base class for JUnit tests that want to run in an SCA client
environment.
  *
@@ -88,7 +90,7 @@
             component = launcher.bootApplication("application",
applicationSCDL);
             component.start();
             context = new CompositeContextImpl(component, wireService);
-            context.start();
+            CurrentCompositeContext.setContext(context);
         } catch (TuscanyException e) {
             DeploymentMonitor monitor = monitorFactory.getMonitor(
DeploymentMonitor.class);
             monitor.deploymentError(e);
@@ -173,7 +175,7 @@
     }

     protected void tearDown() throws Exception {
-        context.stop();
+        CurrentCompositeContext.setContext(null);
         component.stop();
         launcher.shutdownRuntime();
         super.tearDown();

Modified:
incubator/tuscany/java/spec/sca/src/main/java/org/osoa/sca/CurrentCompositeContext.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/spec/sca/src/main/java/org/osoa/sca/CurrentCompositeContext.java?view=diff&rev=497187&r1=497186&r2=497187

==============================================================================
---
incubator/tuscany/java/spec/sca/src/main/java/org/osoa/sca/CurrentCompositeContext.java
(original)
+++
incubator/tuscany/java/spec/sca/src/main/java/org/osoa/sca/CurrentCompositeContext.java
Wed Jan 17 13:43:12 2007
@@ -25,16 +25,26 @@
  */
public final class CurrentCompositeContext {
     private static final ThreadLocal<CompositeContext> CURRENT_COMPONENT
=
-            new InheritableThreadLocal<CompositeContext>();
+        new InheritableThreadLocal<CompositeContext>();

     /**
-     * Return the current composite context
+     * Returns the current composite context associated with this thread.
+     *
+     * @return the current composite context
      */
     public static CompositeContext getContext() {
         return CURRENT_COMPONENT.get();
     }

-    static void setContext(CompositeContext component) {
-        CURRENT_COMPONENT.set(component);
+    /**
+     * Sets the composite context that is associated with this thread.
+     *
+     * @param context the context to associated with this thread; may be
null
+     * @return the context previously associated with this thread; may be
null
+     */
+    public static CompositeContext setContext(CompositeContext context) {
+        CompositeContext current = CURRENT_COMPONENT.get();
+        CURRENT_COMPONENT.set(context);
+        return current;
     }
}



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Reply via email to