You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by ant elder <an...@gmail.com> on 2007/01/19 10:29:30 UTC

Re: svn commit: r497187 - in /incubator/tuscany/java: sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/ sca/kernel/core/src/main/java/org/apache/tuscany/core/launcher/ sca/kernel/core/src/main/java/org/apache/tuscany/cor

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, jboynes@apache.org <jb...@apache.org> 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: tuscany-commits-unsubscribe@ws.apache.org
> For additional commands, e-mail: tuscany-commits-help@ws.apache.org
>
>

Re: svn commit: r497187 - in /incubator/tuscany/java: sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/ sca/kernel/core/src/main/java/org/apache/tuscany/core/launcher/ sca/kernel/core/src/main/java/org/apache/tuscany/cor

Posted by Jeremy Boynes <jb...@apache.org>.
On Jan 19, 2007, at 1:29 AM, ant elder wrote:

> 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?

It's an oversight which I'll fix.
CONTEXT_ATTRIBUTE is deprecated as it's a temporary hack until we can  
fix the issues with locating a context from unmanaged code.

--
Jeremy


---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-dev-help@ws.apache.org