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]