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