You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by jm...@apache.org on 2007/01/05 13:00:32 UTC
svn commit: r493001 - in /incubator/tuscany/java/sca/kernel/core/src:
main/java/org/apache/tuscany/core/component/scope/
test/java/org/apache/tuscany/core/component/scope/
Author: jmarino
Date: Fri Jan 5 04:00:31 2007
New Revision: 493001
URL: http://svn.apache.org/viewvc?view=rev&rev=493001
Log:
remove eager initialization for session scope components per SCA spec changes
Modified:
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/HttpSessionScopeContainer.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/HttpSessionScopeInitDestroyErrorTestCase.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/HttpSessionScopeInstanceLifecycleTestCase.java
Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/HttpSessionScopeContainer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/HttpSessionScopeContainer.java?view=diff&rev=493001&r1=493000&r2=493001
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/HttpSessionScopeContainer.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/HttpSessionScopeContainer.java Fri Jan 5 04:00:31 2007
@@ -24,7 +24,6 @@
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
-import org.apache.tuscany.spi.ObjectCreationException;
import org.apache.tuscany.spi.component.AtomicComponent;
import org.apache.tuscany.spi.component.ScopeContainerMonitor;
import org.apache.tuscany.spi.component.TargetDestructionException;
@@ -34,7 +33,6 @@
import org.apache.tuscany.spi.model.Scope;
import org.apache.tuscany.core.component.event.HttpSessionEnd;
-import org.apache.tuscany.core.component.event.HttpSessionStart;
/**
* A scope context which manages atomic component instances keyed on HTTP session
@@ -57,21 +55,7 @@
public void onEvent(Event event) {
checkInit();
- if (event instanceof HttpSessionStart) {
- Object key = ((HttpSessionStart) event).getId();
- workContext.setIdentifier(Scope.SESSION, key);
- for (Map.Entry<AtomicComponent, Map<Object, InstanceWrapper>> entry : contexts.entrySet()) {
- if (entry.getKey().isEagerInit()) {
- try {
- getInstance(entry.getKey(), key, true);
- } catch (ObjectCreationException e) {
- monitor.eagerInitializationError(e);
- } catch (TargetResolutionException e) {
- monitor.eagerInitializationError(e);
- }
- }
- }
- } else if (event instanceof HttpSessionEnd) {
+ if (event instanceof HttpSessionEnd) {
Object key = ((HttpSessionEnd) event).getId();
shutdownInstances(key);
workContext.clearIdentifier(key);
@@ -96,11 +80,10 @@
public void register(AtomicComponent component) {
contexts.put(component, new ConcurrentHashMap<Object, InstanceWrapper>());
component.addListener(this);
-
}
- protected InstanceWrapper getInstanceWrapper(AtomicComponent component, boolean create) throws
- TargetResolutionException {
+ protected InstanceWrapper getInstanceWrapper(AtomicComponent component, boolean create)
+ throws TargetResolutionException {
Object key = workContext.getIdentifier(Scope.SESSION);
assert key != null : "HTTP session key not bound in work context";
return getInstance(component, key, create);
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/HttpSessionScopeInitDestroyErrorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/HttpSessionScopeInitDestroyErrorTestCase.java?view=diff&rev=493001&r1=493000&r2=493001
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/HttpSessionScopeInitDestroyErrorTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/HttpSessionScopeInitDestroyErrorTestCase.java Fri Jan 5 04:00:31 2007
@@ -18,11 +18,12 @@
*/
package org.apache.tuscany.core.component.scope;
-import org.apache.tuscany.spi.ObjectCreationException;
import org.apache.tuscany.spi.component.AtomicComponent;
import org.apache.tuscany.spi.component.ScopeContainerMonitor;
import org.apache.tuscany.spi.component.TargetDestructionException;
+import org.apache.tuscany.spi.component.WorkContext;
import org.apache.tuscany.spi.event.RuntimeEventListener;
+import org.apache.tuscany.spi.model.Scope;
import junit.framework.TestCase;
import org.apache.tuscany.core.component.WorkContextImpl;
@@ -35,30 +36,13 @@
*/
public class HttpSessionScopeInitDestroyErrorTestCase extends TestCase {
- public void testInitializeErrorMonitor() throws Exception {
- ScopeContainerMonitor monitor;
- monitor = EasyMock.createMock(ScopeContainerMonitor.class);
- monitor.eagerInitializationError(EasyMock.isA(ObjectCreationException.class));
- EasyMock.replay(monitor);
- HttpSessionScopeContainer scope = new HttpSessionScopeContainer(new WorkContextImpl(), monitor);
- scope.start();
- AtomicComponent component = EasyMock.createMock(AtomicComponent.class);
- component.addListener(EasyMock.isA(RuntimeEventListener.class));
- EasyMock.expect(component.getName()).andReturn("foo").atLeastOnce();
- EasyMock.expect(component.createInstance()).andThrow(new ObjectCreationException(""));
- EasyMock.expect(component.isEagerInit()).andReturn(true);
- EasyMock.replay(component);
- scope.register(component);
- scope.onEvent(new HttpSessionStart(this, new Object()));
- EasyMock.verify(monitor);
- }
-
public void testDestroyErrorMonitor() throws Exception {
ScopeContainerMonitor monitor;
monitor = EasyMock.createMock(ScopeContainerMonitor.class);
monitor.destructionError(EasyMock.isA(TargetDestructionException.class));
EasyMock.replay(monitor);
- HttpSessionScopeContainer scope = new HttpSessionScopeContainer(new WorkContextImpl(), monitor);
+ WorkContext workContext = new WorkContextImpl();
+ HttpSessionScopeContainer scope = new HttpSessionScopeContainer(workContext, monitor);
scope.start();
AtomicComponent component = EasyMock.createMock(AtomicComponent.class);
component.addListener(EasyMock.isA(RuntimeEventListener.class));
@@ -72,6 +56,8 @@
scope.register(component);
Object id = new Object();
scope.onEvent(new HttpSessionStart(this, id));
+ workContext.setIdentifier(Scope.SESSION, id);
+ scope.getInstance(component);
scope.onEvent(new HttpSessionEnd(this, id));
EasyMock.verify(monitor);
}
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/HttpSessionScopeInstanceLifecycleTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/HttpSessionScopeInstanceLifecycleTestCase.java?view=diff&rev=493001&r1=493000&r2=493001
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/HttpSessionScopeInstanceLifecycleTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/HttpSessionScopeInstanceLifecycleTestCase.java Fri Jan 5 04:00:31 2007
@@ -47,7 +47,6 @@
Foo comp = new Foo();
AtomicComponent component = EasyMock.createMock(AtomicComponent.class);
EasyMock.expect(component.createInstance()).andReturn(comp);
- EasyMock.expect(component.isEagerInit()).andReturn(true).atLeastOnce();
component.addListener(EasyMock.isA(RuntimeEventListener.class));
component.init(EasyMock.eq(comp));
component.destroy(EasyMock.eq(comp));
@@ -69,11 +68,11 @@
HttpSessionScopeContainer scope = new HttpSessionScopeContainer(ctx, null);
scope.start();
- AtomicComponent oneComponent = createComponent(false);
+ AtomicComponent oneComponent = createComponent();
scope.register(oneComponent);
- AtomicComponent twoComponent = createComponent(false);
+ AtomicComponent twoComponent = createComponent();
scope.register(twoComponent);
- AtomicComponent threeComponent = createComponent(false);
+ AtomicComponent threeComponent = createComponent();
scope.register(threeComponent);
Object session = new Object();
@@ -102,37 +101,14 @@
EasyMock.verify(threeComponent);
}
- public void testEagerInitDestroyOrder() throws Exception {
- WorkContext ctx = new WorkContextImpl();
- HttpSessionScopeContainer scope = new HttpSessionScopeContainer(ctx, null);
- scope.start();
-
- AtomicComponent oneComponent = createComponent(true);
- scope.register(oneComponent);
- AtomicComponent twoComponent = createComponent(true);
- scope.register(twoComponent);
- AtomicComponent threeComponent = createComponent(true);
- scope.register(threeComponent);
-
- Object session = new Object();
- ctx.setIdentifier(Scope.SESSION, session);
- scope.onEvent(new HttpSessionStart(this, session));
- scope.onEvent(new HttpSessionEnd(this, session));
- scope.stop();
- EasyMock.verify(oneComponent);
- EasyMock.verify(twoComponent);
- EasyMock.verify(threeComponent);
- }
-
@SuppressWarnings("unchecked")
- private AtomicComponent createComponent(boolean init) throws TargetException {
+ private AtomicComponent createComponent() throws TargetException {
AtomicComponent component = EasyMock.createMock(AtomicComponent.class);
EasyMock.expect(component.createInstance()).andStubAnswer(new IAnswer() {
public Object answer() throws Throwable {
return new OrderedInitPojoImpl();
}
});
- EasyMock.expect(component.isEagerInit()).andReturn(init).atLeastOnce();
component.addListener(EasyMock.isA(RuntimeEventListener.class));
component.init(EasyMock.isA(OrderedInitPojoImpl.class));
EasyMock.expectLastCall().andAnswer(new IAnswer() {
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org