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 2006/11/26 10:41:21 UTC
svn commit: r479319 - in /incubator/tuscany/java/sca/kernel/core/src:
main/java/org/apache/tuscany/core/builder/
test/java/org/apache/tuscany/core/component/scope/
test/java/org/apache/tuscany/core/implementation/system/component/
test/java/org/apache/...
Author: jmarino
Date: Sun Nov 26 01:41:20 2006
New Revision: 479319
URL: http://svn.apache.org/viewvc?view=rev&rev=479319
Log:
more testcase cleanup; use EasyMock objects for scope testcases
Added:
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/MockFactory.java (contents, props changed)
- copied, changed from r479273, incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/mock/factories/MockFactory.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/MockComponentFactory.java (contents, props changed)
- copied, changed from r479273, incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/mock/factories/MockComponentFactory.java
Removed:
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/mock/factories/
Modified:
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicHttpSessionScopeTestCase.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicStatelessScopeTestCase.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ConversationalScopeInstanceLifecycleTestCase.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/DependencyLifecycleTestCase.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/HttpSessionScopeInstanceLifecycleTestCase.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ModuleScopeInstanceLifecycleTestCase.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/RequestScopeInstanceLifecycleTestCase.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemAtomicComponentTestCase.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/SystemBuilderWireTestCase.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/mock/MockFactory.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/wire/DifferentInterfaceWireTestCase.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/mock/component/OrderedInitPojoImpl.java
Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java?view=diff&rev=479319&r1=479318&r2=479319
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java Sun Nov 26 01:41:20 2006
@@ -27,7 +27,6 @@
import org.apache.tuscany.spi.annotation.Autowire;
import org.apache.tuscany.spi.builder.BuilderConfigException;
import org.apache.tuscany.spi.builder.Connector;
-import org.apache.tuscany.spi.wire.WirePostProcessorRegistry;
import org.apache.tuscany.spi.component.AtomicComponent;
import org.apache.tuscany.spi.component.Component;
import org.apache.tuscany.spi.component.ComponentRuntimeException;
@@ -47,6 +46,7 @@
import org.apache.tuscany.spi.wire.OutboundInvocationChain;
import org.apache.tuscany.spi.wire.OutboundWire;
import org.apache.tuscany.spi.wire.TargetInvoker;
+import org.apache.tuscany.spi.wire.WirePostProcessorRegistry;
import org.apache.tuscany.spi.wire.WireService;
import org.apache.tuscany.core.implementation.composite.CompositeReference;
@@ -204,7 +204,7 @@
* @param targetWire the target wire to connect to
* @param optimizable true if the wire connection can be optimized
*/
- void connect(OutboundWire sourceWire, InboundWire targetWire, boolean optimizable) {
+ public void connect(OutboundWire sourceWire, InboundWire targetWire, boolean optimizable) {
SCAObject source = sourceWire.getContainer();
SCAObject target = targetWire.getContainer();
ServiceContract contract = sourceWire.getServiceContract();
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicHttpSessionScopeTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicHttpSessionScopeTestCase.java?view=diff&rev=479319&r1=479318&r2=479319
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicHttpSessionScopeTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicHttpSessionScopeTestCase.java Sun Nov 26 01:41:20 2006
@@ -38,7 +38,6 @@
* @version $$Rev$$ $$Date$$
*/
public class BasicHttpSessionScopeTestCase extends TestCase {
-
private EventInvoker<Object> initInvoker;
private EventInvoker<Object> destroyInvoker;
private PojoObjectFactory<?> factory;
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicStatelessScopeTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicStatelessScopeTestCase.java?view=diff&rev=479319&r1=479318&r2=479319
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicStatelessScopeTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicStatelessScopeTestCase.java Sun Nov 26 01:41:20 2006
@@ -18,6 +18,7 @@
*/
package org.apache.tuscany.core.component.scope;
+import org.apache.tuscany.spi.component.ScopeContainer;
import org.apache.tuscany.spi.component.SystemAtomicComponent;
import org.apache.tuscany.spi.component.TargetNotFoundException;
import org.apache.tuscany.spi.component.WorkContext;
@@ -25,9 +26,12 @@
import junit.framework.Assert;
import junit.framework.TestCase;
import org.apache.tuscany.core.component.WorkContextImpl;
+import org.apache.tuscany.core.implementation.PojoConfiguration;
+import org.apache.tuscany.core.implementation.system.component.SystemAtomicComponentImpl;
+import org.apache.tuscany.core.injection.PojoObjectFactory;
+import org.apache.tuscany.core.mock.component.RequestScopeInitDestroyComponent;
import org.apache.tuscany.core.mock.component.StatelessComponent;
import org.apache.tuscany.core.mock.component.StatelessComponentImpl;
-import org.apache.tuscany.core.mock.factories.MockFactory;
/**
* Unit tests for the module scope container
@@ -35,6 +39,7 @@
* @version $Rev$ $Date$
*/
public class BasicStatelessScopeTestCase extends TestCase {
+ private PojoObjectFactory<StatelessComponentImpl> factory;
/**
* Verfies instance identity is properly maintained
@@ -43,15 +48,13 @@
WorkContext ctx = new WorkContextImpl();
StatelessScopeContainer scope = new StatelessScopeContainer(ctx);
scope.start();
- SystemAtomicComponent context1 =
- MockFactory.createAtomicComponent("comp1", scope, StatelessComponentImpl.class);
- scope.register(context1);
- SystemAtomicComponent context2 =
- MockFactory.createAtomicComponent("comp2", scope, StatelessComponentImpl.class);
- scope.register(context2);
- StatelessComponentImpl comp1 = (StatelessComponentImpl) scope.getInstance(context1);
+ SystemAtomicComponent component1 = createComponent(scope);
+ scope.register(component1);
+ SystemAtomicComponent component2 = createComponent(scope);
+ scope.register(component2);
+ StatelessComponentImpl comp1 = (StatelessComponentImpl) scope.getInstance(component1);
Assert.assertNotNull(comp1);
- StatelessComponentImpl comp2 = (StatelessComponentImpl) scope.getInstance(context2);
+ StatelessComponentImpl comp2 = (StatelessComponentImpl) scope.getInstance(component2);
Assert.assertNotNull(comp2);
Assert.assertNotSame(comp1, comp2);
scope.stop();
@@ -61,12 +64,11 @@
WorkContext ctx = new WorkContextImpl();
StatelessScopeContainer scope = new StatelessScopeContainer(ctx);
scope.start();
- SystemAtomicComponent context1 =
- MockFactory.createAtomicComponent("comp1", scope, StatelessComponentImpl.class);
- scope.register(context1);
+ SystemAtomicComponent component1 = createComponent(scope);
+ scope.register(component1);
try {
// always throws an exception, which is the semantic for stateless implementations
- scope.getAssociatedInstance(context1);
+ scope.getAssociatedInstance(component1);
fail();
} catch (TargetNotFoundException e) {
// expected
@@ -79,15 +81,13 @@
StatelessScopeContainer scope = new StatelessScopeContainer(ctx);
scope.start();
- SystemAtomicComponent context1 =
- MockFactory.createAtomicComponent("comp1", scope, StatelessComponentImpl.class);
- scope.register(context1);
- StatelessComponent comp1 = (StatelessComponentImpl) scope.getInstance(context1);
+ SystemAtomicComponent component1 = createComponent(scope);
+ scope.register(component1);
+ StatelessComponent comp1 = (StatelessComponentImpl) scope.getInstance(component1);
Assert.assertNotNull(comp1);
- SystemAtomicComponent context2 =
- MockFactory.createAtomicComponent("comp2", scope, StatelessComponentImpl.class);
- scope.register(context2);
- StatelessComponentImpl comp2 = (StatelessComponentImpl) scope.getInstance(context2);
+ SystemAtomicComponent component2 = createComponent(scope);
+ scope.register(component2);
+ StatelessComponentImpl comp2 = (StatelessComponentImpl) scope.getInstance(component2);
Assert.assertNotNull(comp2);
scope.stop();
}
@@ -103,5 +103,21 @@
scope.stop();
}
+ protected void setUp() throws Exception {
+ super.setUp();
+ factory =
+ new PojoObjectFactory<StatelessComponentImpl>(StatelessComponentImpl.class.getConstructor((Class[]) null));
+ }
+
+ private SystemAtomicComponent createComponent(ScopeContainer scopeContainer) {
+ PojoConfiguration configuration = new PojoConfiguration();
+ configuration.setScopeContainer(scopeContainer);
+ configuration.addServiceInterface(RequestScopeInitDestroyComponent.class);
+ configuration.setInstanceFactory(factory);
+ configuration.setName("foo");
+ SystemAtomicComponentImpl component = new SystemAtomicComponentImpl(configuration);
+ scopeContainer.register(component);
+ return component;
+ }
}
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ConversationalScopeInstanceLifecycleTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ConversationalScopeInstanceLifecycleTestCase.java?view=diff&rev=479319&r1=479318&r2=479319
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ConversationalScopeInstanceLifecycleTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ConversationalScopeInstanceLifecycleTestCase.java Sun Nov 26 01:41:20 2006
@@ -18,25 +18,26 @@
*/
package org.apache.tuscany.core.component.scope;
-import org.apache.tuscany.core.component.WorkContextImpl;
-import org.apache.tuscany.core.component.event.ConversationEnd;
-import org.apache.tuscany.core.component.event.ConversationStart;
-import org.apache.tuscany.core.mock.component.ConversationalScopeDestroyOnlyComponent;
-import org.apache.tuscany.core.mock.component.ConversationalScopeInitDestroyComponent;
-import org.apache.tuscany.core.mock.component.ConversationalScopeInitOnlyComponent;
-import org.apache.tuscany.core.mock.component.OrderedEagerInitPojo;
-import org.apache.tuscany.core.mock.component.OrderedInitPojo;
-import org.apache.tuscany.core.mock.component.OrderedInitPojoImpl;
-import org.apache.tuscany.core.mock.factories.MockFactory;
import org.apache.tuscany.spi.component.SystemAtomicComponent;
import org.apache.tuscany.spi.component.WorkContext;
+import org.apache.tuscany.spi.event.RuntimeEventListener;
import org.apache.tuscany.spi.model.Scope;
-import junit.framework.Assert;
import junit.framework.TestCase;
+import org.apache.tuscany.core.component.WorkContextImpl;
+import org.apache.tuscany.core.component.event.ConversationEnd;
+import org.apache.tuscany.core.component.event.ConversationStart;
+import org.apache.tuscany.core.mock.component.OrderedInitPojo;
+import org.apache.tuscany.core.mock.component.OrderedInitPojoImpl;
+import org.easymock.EasyMock;
+import org.easymock.IAnswer;
/**
* Lifecycle unit tests for the conversational scope container
+ * <p/>
+ * TODO [JFM] these tests should be removed since conversational components will not have init/destroy semantics. We may
+ * want to have init() supported but not destroy() since passivated instances will nned to be deserialized upon
+ * expiration
*
* @version $Rev: 451895 $ $Date: 2006-10-02 02:58:18 -0400 (Mon, 02 Oct 2006) $
*/
@@ -47,47 +48,23 @@
ConversationalScopeContainer scope = new ConversationalScopeContainer(ctx);
scope.start();
- SystemAtomicComponent initDestroyContext = MockFactory.createAtomicComponent("InitDestroy",
- scope,
- ConversationalScopeInitDestroyComponent.class);
- initDestroyContext.start();
-
- SystemAtomicComponent initOnlyContext = MockFactory.createAtomicComponent("InitOnly",
- scope,
- ConversationalScopeInitOnlyComponent.class);
- initOnlyContext.start();
-
- SystemAtomicComponent destroyOnlyContext = MockFactory.createAtomicComponent("DestroyOnly",
- scope,
- ConversationalScopeDestroyOnlyComponent.class);
- destroyOnlyContext.start();
-
- Object conversation = new Object();
- ctx.setIdentifier(Scope.CONVERSATION, conversation);
- scope.onEvent(new ConversationStart(this, conversation));
- ConversationalScopeInitDestroyComponent initDestroy =
- (ConversationalScopeInitDestroyComponent) scope.getInstance(initDestroyContext);
- Assert.assertNotNull(initDestroy);
-
- ConversationalScopeInitOnlyComponent initOnly =
- (ConversationalScopeInitOnlyComponent) scope.getInstance(initOnlyContext);
- Assert.assertNotNull(initOnly);
-
- ConversationalScopeDestroyOnlyComponent destroyOnly =
- (ConversationalScopeDestroyOnlyComponent) scope.getInstance(destroyOnlyContext);
- Assert.assertNotNull(destroyOnly);
-
- Assert.assertTrue(initDestroy.isInitialized());
- Assert.assertTrue(initOnly.isInitialized());
- Assert.assertFalse(initDestroy.isDestroyed());
- Assert.assertFalse(destroyOnly.isDestroyed());
-
- // expire module
- scope.onEvent(new ConversationEnd(this, conversation));
-
- Assert.assertTrue(initDestroy.isDestroyed());
- Assert.assertTrue(destroyOnly.isDestroyed());
-
+ Foo comp = new Foo();
+ SystemAtomicComponent component = EasyMock.createMock(SystemAtomicComponent.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));
+ EasyMock.replay(component);
+ scope.register(component);
+ Object session = new Object();
+ ctx.setIdentifier(Scope.CONVERSATION, session);
+ scope.onEvent(new ConversationStart(this, session));
+ assertNotNull(scope.getInstance(component));
+ // expire
+ scope.onEvent(new ConversationEnd(this, session));
+ scope.stop();
+ EasyMock.verify(component);
scope.stop();
}
@@ -96,38 +73,37 @@
ConversationalScopeContainer scope = new ConversationalScopeContainer(ctx);
scope.start();
- SystemAtomicComponent oneCtx =
- MockFactory.createAtomicComponent("one", scope, OrderedInitPojoImpl.class);
- scope.register(oneCtx);
- SystemAtomicComponent twoCtx =
- MockFactory.createAtomicComponent("two", scope, OrderedInitPojoImpl.class);
- scope.register(twoCtx);
- SystemAtomicComponent threeCtx =
- MockFactory.createAtomicComponent("three", scope, OrderedInitPojoImpl.class);
- scope.register(threeCtx);
-
- Object conversation = new Object();
- ctx.setIdentifier(Scope.CONVERSATION, conversation);
- scope.onEvent(new ConversationStart(this, conversation));
- OrderedInitPojo one = (OrderedInitPojo) scope.getInstance(oneCtx);
- Assert.assertNotNull(one);
- Assert.assertEquals(1, one.getNumberInstantiated());
- Assert.assertEquals(1, one.getInitOrder());
-
- OrderedInitPojo two = (OrderedInitPojo) scope.getInstance(twoCtx);
- Assert.assertNotNull(two);
- Assert.assertEquals(2, two.getNumberInstantiated());
- Assert.assertEquals(2, two.getInitOrder());
-
- OrderedInitPojo three = (OrderedInitPojo) scope.getInstance(threeCtx);
- Assert.assertNotNull(three);
- Assert.assertEquals(3, three.getNumberInstantiated());
- Assert.assertEquals(3, three.getInitOrder());
-
- // expire module
- scope.onEvent(new ConversationEnd(this, conversation));
- Assert.assertEquals(0, one.getNumberInstantiated());
+ SystemAtomicComponent oneComponent = createComponent(false);
+ scope.register(oneComponent);
+ SystemAtomicComponent twoComponent = createComponent(false);
+ scope.register(twoComponent);
+ SystemAtomicComponent threeComponent = createComponent(false);
+ scope.register(threeComponent);
+
+ Object session = new Object();
+ ctx.setIdentifier(Scope.CONVERSATION, session);
+ scope.onEvent(new ConversationStart(this, session));
+ OrderedInitPojo one = (OrderedInitPojo) scope.getInstance(oneComponent);
+ assertNotNull(one);
+ assertEquals(1, one.getNumberInstantiated());
+ assertEquals(1, one.getInitOrder());
+
+ OrderedInitPojo two = (OrderedInitPojo) scope.getInstance(twoComponent);
+ assertNotNull(two);
+ assertEquals(2, two.getNumberInstantiated());
+ assertEquals(2, two.getInitOrder());
+
+ OrderedInitPojo three = (OrderedInitPojo) scope.getInstance(threeComponent);
+ assertNotNull(three);
+ assertEquals(3, three.getNumberInstantiated());
+ assertEquals(3, three.getInitOrder());
+
+ scope.onEvent(new ConversationEnd(this, session));
+ assertEquals(0, one.getNumberInstantiated());
scope.stop();
+ EasyMock.verify(oneComponent);
+ EasyMock.verify(twoComponent);
+ EasyMock.verify(threeComponent);
}
public void testEagerInitDestroyOrder() throws Exception {
@@ -135,31 +111,55 @@
ConversationalScopeContainer scope = new ConversationalScopeContainer(ctx);
scope.start();
- SystemAtomicComponent oneCtx =
- MockFactory.createAtomicComponent("one", scope, OrderedEagerInitPojo.class);
- scope.register(oneCtx);
- SystemAtomicComponent twoCtx =
- MockFactory.createAtomicComponent("two", scope, OrderedEagerInitPojo.class);
- scope.register(twoCtx);
- SystemAtomicComponent threeCtx =
- MockFactory.createAtomicComponent("three", scope, OrderedEagerInitPojo.class);
- scope.register(threeCtx);
-
- Object conversation = new Object();
- ctx.setIdentifier(Scope.CONVERSATION, conversation);
- scope.onEvent(new ConversationStart(this, conversation));
- OrderedEagerInitPojo one = (OrderedEagerInitPojo) scope.getInstance(oneCtx);
- Assert.assertNotNull(one);
-
- OrderedEagerInitPojo two = (OrderedEagerInitPojo) scope.getInstance(twoCtx);
- Assert.assertNotNull(two);
-
- OrderedEagerInitPojo three = (OrderedEagerInitPojo) scope.getInstance(threeCtx);
- Assert.assertNotNull(three);
-
- // expire module
- scope.onEvent(new ConversationEnd(this, conversation));
- Assert.assertEquals(0, one.getNumberInstantiated());
+ SystemAtomicComponent oneComponent = createComponent(true);
+ scope.register(oneComponent);
+ SystemAtomicComponent twoComponent = createComponent(true);
+ scope.register(twoComponent);
+ SystemAtomicComponent threeComponent = createComponent(true);
+ scope.register(threeComponent);
+
+ Object session = new Object();
+ ctx.setIdentifier(Scope.CONVERSATION, session);
+ scope.onEvent(new ConversationStart(this, session));
+ scope.onEvent(new ConversationEnd(this, session));
scope.stop();
+ EasyMock.verify(oneComponent);
+ EasyMock.verify(twoComponent);
+ EasyMock.verify(threeComponent);
+ }
+
+ @SuppressWarnings("unchecked")
+ private SystemAtomicComponent createComponent(boolean init) {
+ SystemAtomicComponent component = EasyMock.createMock(SystemAtomicComponent.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() {
+ public Object answer() throws Throwable {
+ OrderedInitPojoImpl pojo = (OrderedInitPojoImpl) EasyMock.getCurrentArguments()[0];
+ pojo.init();
+ return null;
+ }
+ });
+ component.destroy(EasyMock.isA(OrderedInitPojoImpl.class));
+ EasyMock.expectLastCall().andAnswer(new IAnswer() {
+ public Object answer() throws Throwable {
+ OrderedInitPojoImpl pojo = (OrderedInitPojoImpl) EasyMock.getCurrentArguments()[0];
+ pojo.destroy();
+ return null;
+ }
+ });
+ EasyMock.replay(component);
+ return component;
}
+
+ private class Foo {
+
+ }
+
}
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/DependencyLifecycleTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/DependencyLifecycleTestCase.java?view=diff&rev=479319&r1=479318&r2=479319
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/DependencyLifecycleTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/DependencyLifecycleTestCase.java Sun Nov 26 01:41:20 2006
@@ -35,7 +35,6 @@
import org.apache.tuscany.core.mock.component.OrderedDependentPojoImpl;
import org.apache.tuscany.core.mock.component.OrderedInitPojo;
import org.apache.tuscany.core.mock.component.OrderedInitPojoImpl;
-import org.apache.tuscany.core.mock.factories.MockFactory;
/**
* Tests dependencies are initalized and destroyed in the proper order (i.e. LIFO)
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=479319&r1=479318&r2=479319
==============================================================================
--- 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 Sun Nov 26 01:41:20 2006
@@ -20,19 +20,17 @@
import org.apache.tuscany.spi.component.SystemAtomicComponent;
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;
import org.apache.tuscany.core.component.event.HttpSessionEnd;
import org.apache.tuscany.core.component.event.HttpSessionStart;
-import org.apache.tuscany.core.mock.component.OrderedEagerInitPojo;
import org.apache.tuscany.core.mock.component.OrderedInitPojo;
import org.apache.tuscany.core.mock.component.OrderedInitPojoImpl;
-import org.apache.tuscany.core.mock.component.RequestScopeDestroyOnlyComponent;
-import org.apache.tuscany.core.mock.component.RequestScopeInitDestroyComponent;
-import org.apache.tuscany.core.mock.component.RequestScopeInitOnlyComponent;
-import org.apache.tuscany.core.mock.factories.MockFactory;
+import org.easymock.EasyMock;
+import org.easymock.IAnswer;
/**
* Lifecycle unit tests for the module scope container
@@ -45,48 +43,23 @@
WorkContext ctx = new WorkContextImpl();
HttpSessionScopeContainer scope = new HttpSessionScopeContainer(ctx);
scope.start();
-
- SystemAtomicComponent initDestroyComponent = MockFactory.createAtomicComponent("InitDestroy",
- scope,
- RequestScopeInitDestroyComponent.class);
- initDestroyComponent.start();
-
- SystemAtomicComponent initOnlyComponent = MockFactory.createAtomicComponent("InitOnly",
- scope,
- RequestScopeInitOnlyComponent.class);
- initOnlyComponent.start();
-
- SystemAtomicComponent destroyOnlyComponent = MockFactory.createAtomicComponent("DestroyOnly",
- scope,
- RequestScopeDestroyOnlyComponent.class);
- destroyOnlyComponent.start();
-
+ Foo comp = new Foo();
+ SystemAtomicComponent component = EasyMock.createMock(SystemAtomicComponent.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));
+ EasyMock.replay(component);
+ scope.register(component);
Object session = new Object();
ctx.setIdentifier(Scope.SESSION, session);
scope.onEvent(new HttpSessionStart(this, session));
- RequestScopeInitDestroyComponent initDestroy =
- (RequestScopeInitDestroyComponent) scope.getInstance(initDestroyComponent);
- assertNotNull(initDestroy);
-
- RequestScopeInitOnlyComponent initOnly =
- (RequestScopeInitOnlyComponent) scope.getInstance(initOnlyComponent);
- assertNotNull(initOnly);
-
- RequestScopeDestroyOnlyComponent destroyOnly =
- (RequestScopeDestroyOnlyComponent) scope.getInstance(destroyOnlyComponent);
- assertNotNull(destroyOnly);
-
- assertTrue(initDestroy.isInitialized());
- assertTrue(initOnly.isInitialized());
- assertFalse(initDestroy.isDestroyed());
- assertFalse(destroyOnly.isDestroyed());
-
- // expire module
+ assertNotNull(scope.getInstance(component));
+ // expire
scope.onEvent(new HttpSessionEnd(this, session));
-
- assertTrue(initDestroy.isDestroyed());
- assertTrue(destroyOnly.isDestroyed());
-
+ scope.stop();
+ EasyMock.verify(component);
scope.stop();
}
@@ -95,14 +68,11 @@
HttpSessionScopeContainer scope = new HttpSessionScopeContainer(ctx);
scope.start();
- SystemAtomicComponent oneComponent =
- MockFactory.createAtomicComponent("one", scope, OrderedInitPojoImpl.class);
+ SystemAtomicComponent oneComponent = createComponent(false);
scope.register(oneComponent);
- SystemAtomicComponent twoComponent =
- MockFactory.createAtomicComponent("two", scope, OrderedInitPojoImpl.class);
+ SystemAtomicComponent twoComponent = createComponent(false);
scope.register(twoComponent);
- SystemAtomicComponent threeComponent =
- MockFactory.createAtomicComponent("three", scope, OrderedInitPojoImpl.class);
+ SystemAtomicComponent threeComponent = createComponent(false);
scope.register(threeComponent);
Object session = new Object();
@@ -123,10 +93,12 @@
assertEquals(3, three.getNumberInstantiated());
assertEquals(3, three.getInitOrder());
- // expire module
scope.onEvent(new HttpSessionEnd(this, session));
assertEquals(0, one.getNumberInstantiated());
scope.stop();
+ EasyMock.verify(oneComponent);
+ EasyMock.verify(twoComponent);
+ EasyMock.verify(threeComponent);
}
public void testEagerInitDestroyOrder() throws Exception {
@@ -134,32 +106,54 @@
HttpSessionScopeContainer scope = new HttpSessionScopeContainer(ctx);
scope.start();
- SystemAtomicComponent oneComponent =
- MockFactory.createAtomicComponent("one", scope, OrderedEagerInitPojo.class);
+ SystemAtomicComponent oneComponent = createComponent(true);
scope.register(oneComponent);
- SystemAtomicComponent twoComponent =
- MockFactory.createAtomicComponent("two", scope, OrderedEagerInitPojo.class);
+ SystemAtomicComponent twoComponent = createComponent(true);
scope.register(twoComponent);
- SystemAtomicComponent threeComponent =
- MockFactory.createAtomicComponent("three", scope, OrderedEagerInitPojo.class);
+ SystemAtomicComponent threeComponent = createComponent(true);
scope.register(threeComponent);
Object session = new Object();
ctx.setIdentifier(Scope.SESSION, session);
scope.onEvent(new HttpSessionStart(this, session));
- OrderedEagerInitPojo one = (OrderedEagerInitPojo) scope.getInstance(oneComponent);
- assertNotNull(one);
-
- OrderedEagerInitPojo two = (OrderedEagerInitPojo) scope.getInstance(twoComponent);
- assertNotNull(two);
-
- OrderedEagerInitPojo three = (OrderedEagerInitPojo) scope.getInstance(threeComponent);
- assertNotNull(three);
-
- // expire module
scope.onEvent(new HttpSessionEnd(this, session));
- assertEquals(0, one.getNumberInstantiated());
scope.stop();
+ EasyMock.verify(oneComponent);
+ EasyMock.verify(twoComponent);
+ EasyMock.verify(threeComponent);
}
+ @SuppressWarnings("unchecked")
+ private SystemAtomicComponent createComponent(boolean init) {
+ SystemAtomicComponent component = EasyMock.createMock(SystemAtomicComponent.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() {
+ public Object answer() throws Throwable {
+ OrderedInitPojoImpl pojo = (OrderedInitPojoImpl) EasyMock.getCurrentArguments()[0];
+ pojo.init();
+ return null;
+ }
+ });
+ component.destroy(EasyMock.isA(OrderedInitPojoImpl.class));
+ EasyMock.expectLastCall().andAnswer(new IAnswer() {
+ public Object answer() throws Throwable {
+ OrderedInitPojoImpl pojo = (OrderedInitPojoImpl) EasyMock.getCurrentArguments()[0];
+ pojo.destroy();
+ return null;
+ }
+ });
+ EasyMock.replay(component);
+ return component;
+ }
+
+ private class Foo {
+
+ }
}
Copied: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/MockFactory.java (from r479273, incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/mock/factories/MockFactory.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/MockFactory.java?view=diff&rev=479319&p1=incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/mock/factories/MockFactory.java&r1=479273&p2=incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/MockFactory.java&r2=479319
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/mock/factories/MockFactory.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/MockFactory.java Sun Nov 26 01:41:20 2006
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.tuscany.core.mock.factories;
+package org.apache.tuscany.core.component.scope;
import java.lang.reflect.Method;
import java.util.ArrayList;
@@ -31,15 +31,8 @@
import org.apache.tuscany.spi.component.AtomicComponent;
import org.apache.tuscany.spi.component.ScopeContainer;
import org.apache.tuscany.spi.component.SystemAtomicComponent;
-import org.apache.tuscany.spi.idl.InvalidServiceContractException;
-import org.apache.tuscany.spi.idl.java.JavaInterfaceProcessorRegistry;
-import org.apache.tuscany.spi.idl.java.JavaServiceContract;
-import org.apache.tuscany.spi.model.Operation;
-import org.apache.tuscany.spi.model.ServiceContract;
-import org.apache.tuscany.spi.wire.InboundInvocationChain;
import org.apache.tuscany.spi.wire.InboundWire;
-import org.apache.tuscany.core.idl.java.JavaInterfaceProcessorRegistryImpl;
import org.apache.tuscany.core.implementation.PojoConfiguration;
import org.apache.tuscany.core.implementation.system.component.SystemAtomicComponentImpl;
import org.apache.tuscany.core.implementation.system.wire.SystemInboundWireImpl;
@@ -47,9 +40,6 @@
import org.apache.tuscany.core.implementation.system.wire.SystemOutboundWireImpl;
import org.apache.tuscany.core.injection.MethodEventInvoker;
import org.apache.tuscany.core.injection.PojoObjectFactory;
-import org.apache.tuscany.core.wire.InboundInvocationChainImpl;
-import org.apache.tuscany.core.wire.InboundWireImpl;
-import org.apache.tuscany.core.wire.InvokerInterceptor;
/**
* @version $$Rev$$ $$Date$$
@@ -59,37 +49,17 @@
private MockFactory() {
}
- public static Map<String, AtomicComponent> createWiredComponents(String source,
- Class<?> sourceClass,
- ScopeContainer sourceScopeContainer,
- String target,
- Class<?> targetClass,
- ScopeContainer targetScopeContainer)
- throws NoSuchMethodException {
- List<Class<?>> sourceClasses = new ArrayList<Class<?>>();
- sourceClasses.add(sourceClass);
- return createWiredComponents(source, sourceClasses, sourceClass, sourceScopeContainer, target, targetClass,
- targetScopeContainer);
- }
-
- /**
- * Creates source and target {@link AtomicComponent}s whose instances are wired together. The wiring algorithm
- * searches for the first method on the source with a single parameter type matching an interface implemented by the
- * target.
- *
- * @throws NoSuchMethodException
- */
@SuppressWarnings("unchecked")
public static Map<String, AtomicComponent> createWiredComponents(String source,
- List<Class<?>> sourceInterfaces,
Class<?> sourceClass,
ScopeContainer sourceScopeContainer,
String target,
Class<?> targetClass,
ScopeContainer targetScopeContainer)
throws NoSuchMethodException {
-
- Map<String, AtomicComponent> contexts = new HashMap<String, AtomicComponent>();
+ List<Class<?>> sourceInterfaces = new ArrayList<Class<?>>();
+ sourceInterfaces.add(sourceClass);
+ Map<String, AtomicComponent> components = new HashMap<String, AtomicComponent>();
SystemAtomicComponent targetComponent = createAtomicComponent(target, targetScopeContainer, targetClass);
PojoConfiguration sourceConfig = new PojoConfiguration();
sourceConfig.getServiceInterfaces().addAll(sourceInterfaces);
@@ -124,16 +94,15 @@
sourceConfig.addReferenceSite(setter.getName(), setter);
sourceConfig.setName(source);
- SystemAtomicComponent sourceCtx = new SystemAtomicComponentImpl(sourceConfig);
+ SystemAtomicComponent sourceComponent = new SystemAtomicComponentImpl(sourceConfig);
QualifiedName targetName = new QualifiedName(target);
SystemOutboundWire wire = new SystemOutboundWireImpl(setter.getName(), targetName, targetClass);
InboundWire inboundWire = new SystemInboundWireImpl(targetName.getPortName(), targetClass, targetComponent);
wire.setTargetWire(inboundWire);
-
- sourceCtx.addOutboundWire(wire);
- contexts.put(source, sourceCtx);
- contexts.put(target, targetComponent);
- return contexts;
+ sourceComponent.addOutboundWire(wire);
+ components.put(source, sourceComponent);
+ components.put(target, targetComponent);
+ return components;
}
@SuppressWarnings("unchecked")
@@ -156,31 +125,6 @@
}
configuration.setName(name);
return new SystemAtomicComponentImpl(configuration);
- }
-
- public static <T> InboundWire createTargetWireFactory(String serviceName, Class<T> interfaze)
- throws InvalidServiceContractException {
- InboundWire wire = new InboundWireImpl();
- wire.setServiceName(serviceName);
- JavaServiceContract contract = new JavaServiceContract(interfaze);
- wire.setServiceContract(contract);
- wire.addInvocationChains(createInboundChains(interfaze));
- return wire;
- }
-
- public static Map<Operation<?>, InboundInvocationChain> createInboundChains(Class<?> interfaze)
- throws InvalidServiceContractException {
- JavaInterfaceProcessorRegistry registry = new JavaInterfaceProcessorRegistryImpl();
- Map<Operation<?>, InboundInvocationChain> invocations = new HashMap<Operation<?>, InboundInvocationChain>();
- ServiceContract<?> contract = registry.introspect(interfaze);
-
- for (Operation<?> operation : contract.getOperations().values()) {
- InboundInvocationChain chain = new InboundInvocationChainImpl(operation);
- // add tail interceptor
- chain.addInterceptor(new InvokerInterceptor());
- invocations.put(operation, chain);
- }
- return invocations;
}
}
Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/MockFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/MockFactory.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ModuleScopeInstanceLifecycleTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ModuleScopeInstanceLifecycleTestCase.java?view=diff&rev=479319&r1=479318&r2=479319
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ModuleScopeInstanceLifecycleTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ModuleScopeInstanceLifecycleTestCase.java Sun Nov 26 01:41:20 2006
@@ -26,13 +26,10 @@
import org.apache.tuscany.core.component.WorkContextImpl;
import org.apache.tuscany.core.component.event.CompositeStart;
import org.apache.tuscany.core.component.event.CompositeStop;
-import org.apache.tuscany.core.mock.component.ModuleScopeDestroyOnlyComponent;
-import org.apache.tuscany.core.mock.component.ModuleScopeInitDestroyComponent;
-import org.apache.tuscany.core.mock.component.ModuleScopeInitOnlyComponent;
-import org.apache.tuscany.core.mock.component.OrderedEagerInitPojo;
import org.apache.tuscany.core.mock.component.OrderedInitPojo;
import org.apache.tuscany.core.mock.component.OrderedInitPojoImpl;
-import org.apache.tuscany.core.mock.factories.MockFactory;
+import org.easymock.EasyMock;
+import org.easymock.IAnswer;
/**
* Lifecycle unit tests for the module scope container
@@ -41,68 +38,66 @@
*/
public class ModuleScopeInstanceLifecycleTestCase extends TestCase {
+ /**
+ * Verify init and stop by scope container on an atomic component
+ *
+ * @throws Exception
+ */
public void testInitDestroy() throws Exception {
WorkContext ctx = new WorkContextImpl();
ModuleScopeContainer scope = new ModuleScopeContainer(ctx);
scope.start();
-
- SystemAtomicComponent initDestroyComponent = MockFactory.createAtomicComponent("InitDestroy",
- scope,
- ModuleScopeInitDestroyComponent.class);
- initDestroyComponent.start();
-
- SystemAtomicComponent initOnlyComponent = MockFactory.createAtomicComponent("InitOnly",
- scope,
- ModuleScopeInitOnlyComponent.class);
- initOnlyComponent.start();
-
- SystemAtomicComponent destroyOnlyComponent = MockFactory.createAtomicComponent("DestroyOnly",
- scope,
- ModuleScopeDestroyOnlyComponent.class);
- destroyOnlyComponent.start();
-
+ Foo comp = new Foo();
+ SystemAtomicComponent component = EasyMock.createMock(SystemAtomicComponent.class);
+ EasyMock.expect(component.createInstance()).andReturn(comp);
+ EasyMock.expect(component.getInitLevel()).andReturn(1).atLeastOnce();
+ component.init(EasyMock.eq(comp));
+ component.destroy(EasyMock.eq(comp));
+ EasyMock.replay(component);
+ scope.register(component);
scope.onEvent(new CompositeStart(this, null));
- ModuleScopeInitDestroyComponent initDestroy =
- (ModuleScopeInitDestroyComponent) scope.getInstance(initDestroyComponent);
- assertNotNull(initDestroy);
-
- ModuleScopeInitOnlyComponent initOnly = (ModuleScopeInitOnlyComponent) scope.getInstance(initOnlyComponent);
- assertNotNull(initOnly);
-
- ModuleScopeDestroyOnlyComponent destroyOnly =
- (ModuleScopeDestroyOnlyComponent) scope.getInstance(destroyOnlyComponent);
- assertNotNull(destroyOnly);
-
- assertTrue(initDestroy.isInitialized());
- assertTrue(initOnly.isInitialized());
- assertFalse(initDestroy.isDestroyed());
- assertFalse(destroyOnly.isDestroyed());
-
+ assertNotNull(scope.getInstance(component));
// expire module
scope.onEvent(new CompositeStop(this, null));
+ scope.stop();
+ EasyMock.verify(component);
+ }
- assertTrue(initDestroy.isDestroyed());
- assertTrue(destroyOnly.isDestroyed());
-
+ /**
+ * Verify init and stop by scope container on an atomic component when set to eager initialize
+ *
+ * @throws Exception
+ */
+ public void testEagerInitDestroy() throws Exception {
+ WorkContext ctx = new WorkContextImpl();
+ ModuleScopeContainer scope = new ModuleScopeContainer(ctx);
+ scope.start();
+ Foo comp = new Foo();
+ SystemAtomicComponent initDestroyComponent = EasyMock.createMock(SystemAtomicComponent.class);
+ EasyMock.expect(initDestroyComponent.createInstance()).andReturn(comp);
+ EasyMock.expect(initDestroyComponent.getInitLevel()).andReturn(1).atLeastOnce();
+ initDestroyComponent.init(EasyMock.eq(comp));
+ initDestroyComponent.destroy(EasyMock.eq(comp));
+ EasyMock.replay(initDestroyComponent);
+ scope.register(initDestroyComponent);
+ scope.onEvent(new CompositeStart(this, null));
+ // expire module
+ scope.onEvent(new CompositeStop(this, null));
scope.stop();
+ EasyMock.verify(initDestroyComponent);
}
+
public void testDestroyOrder() throws Exception {
WorkContext ctx = new WorkContextImpl();
ModuleScopeContainer scope = new ModuleScopeContainer(ctx);
scope.start();
- SystemAtomicComponent oneComponent = MockFactory.createAtomicComponent("one",
- scope,
- OrderedInitPojoImpl.class);
+ SystemAtomicComponent oneComponent = createComponent(0);
scope.register(oneComponent);
- SystemAtomicComponent twoComponent = MockFactory.createAtomicComponent("two",
- scope,
- OrderedInitPojoImpl.class);
+ SystemAtomicComponent twoComponent = createComponent(0);
scope.register(twoComponent);
- SystemAtomicComponent threeComponent = MockFactory.createAtomicComponent("three",
- scope,
- OrderedInitPojoImpl.class);
+ SystemAtomicComponent threeComponent = createComponent(0);
scope.register(threeComponent);
scope.onEvent(new CompositeStart(this, null));
@@ -125,6 +120,9 @@
scope.onEvent(new CompositeStop(this, null));
assertEquals(0, one.getNumberInstantiated());
scope.stop();
+ EasyMock.verify(oneComponent);
+ EasyMock.verify(twoComponent);
+ EasyMock.verify(threeComponent);
}
public void testEagerInitDestroyOrder() throws Exception {
@@ -132,33 +130,62 @@
ModuleScopeContainer scope = new ModuleScopeContainer(ctx);
scope.start();
- SystemAtomicComponent oneComponent = MockFactory.createAtomicComponent("one",
- scope,
- OrderedEagerInitPojo.class);
+ SystemAtomicComponent oneComponent = createComponent(1);
scope.register(oneComponent);
- SystemAtomicComponent twoComponent = MockFactory.createAtomicComponent("two",
- scope,
- OrderedEagerInitPojo.class);
+ SystemAtomicComponent twoComponent = createComponent(1);
scope.register(twoComponent);
- SystemAtomicComponent threeComponent = MockFactory.createAtomicComponent("three",
- scope,
- OrderedEagerInitPojo.class);
+ SystemAtomicComponent threeComponent = createComponent(1);
scope.register(threeComponent);
scope.onEvent(new CompositeStart(this, null));
- OrderedEagerInitPojo one = (OrderedEagerInitPojo) scope.getInstance(oneComponent);
+ OrderedInitPojo one = (OrderedInitPojo) scope.getInstance(oneComponent);
assertNotNull(one);
- OrderedEagerInitPojo two = (OrderedEagerInitPojo) scope.getInstance(twoComponent);
+ OrderedInitPojo two = (OrderedInitPojo) scope.getInstance(twoComponent);
assertNotNull(two);
- OrderedEagerInitPojo three = (OrderedEagerInitPojo) scope.getInstance(threeComponent);
+ OrderedInitPojo three = (OrderedInitPojo) scope.getInstance(threeComponent);
assertNotNull(three);
// expire module
scope.onEvent(new CompositeStop(this, null));
assertEquals(0, one.getNumberInstantiated());
scope.stop();
+ EasyMock.verify(oneComponent);
+ EasyMock.verify(twoComponent);
+ EasyMock.verify(threeComponent);
+ }
+
+ @SuppressWarnings("unchecked")
+ private SystemAtomicComponent createComponent(int init) {
+ SystemAtomicComponent component = EasyMock.createMock(SystemAtomicComponent.class);
+ EasyMock.expect(component.createInstance()).andStubAnswer(new IAnswer() {
+ public Object answer() throws Throwable {
+ return new OrderedInitPojoImpl();
+ }
+ });
+ EasyMock.expect(component.getInitLevel()).andReturn(init).atLeastOnce();
+ component.init(EasyMock.isA(OrderedInitPojoImpl.class));
+ EasyMock.expectLastCall().andAnswer(new IAnswer() {
+ public Object answer() throws Throwable {
+ OrderedInitPojoImpl pojo = (OrderedInitPojoImpl) EasyMock.getCurrentArguments()[0];
+ pojo.init();
+ return null;
+ }
+ });
+ component.destroy(EasyMock.isA(OrderedInitPojoImpl.class));
+ EasyMock.expectLastCall().andAnswer(new IAnswer() {
+ public Object answer() throws Throwable {
+ OrderedInitPojoImpl pojo = (OrderedInitPojoImpl) EasyMock.getCurrentArguments()[0];
+ pojo.destroy();
+ return null;
+ }
+ });
+ EasyMock.replay(component);
+ return component;
}
+ private class Foo {
+
+ }
}
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/RequestScopeInstanceLifecycleTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/RequestScopeInstanceLifecycleTestCase.java?view=diff&rev=479319&r1=479318&r2=479319
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/RequestScopeInstanceLifecycleTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/RequestScopeInstanceLifecycleTestCase.java Sun Nov 26 01:41:20 2006
@@ -18,20 +18,17 @@
*/
package org.apache.tuscany.core.component.scope;
-import org.apache.tuscany.spi.component.WorkContext;
import org.apache.tuscany.spi.component.SystemAtomicComponent;
+import org.apache.tuscany.spi.component.WorkContext;
import junit.framework.TestCase;
import org.apache.tuscany.core.component.WorkContextImpl;
import org.apache.tuscany.core.component.event.RequestEnd;
import org.apache.tuscany.core.component.event.RequestStart;
-import org.apache.tuscany.core.mock.component.OrderedEagerInitPojo;
import org.apache.tuscany.core.mock.component.OrderedInitPojo;
import org.apache.tuscany.core.mock.component.OrderedInitPojoImpl;
-import org.apache.tuscany.core.mock.component.RequestScopeDestroyOnlyComponent;
-import org.apache.tuscany.core.mock.component.RequestScopeInitDestroyComponent;
-import org.apache.tuscany.core.mock.component.RequestScopeInitOnlyComponent;
-import org.apache.tuscany.core.mock.factories.MockFactory;
+import org.easymock.EasyMock;
+import org.easymock.IAnswer;
/**
* Lifecycle unit tests for the module scope container
@@ -44,42 +41,20 @@
WorkContext ctx = new WorkContextImpl();
RequestScopeContainer scope = new RequestScopeContainer(ctx);
scope.start();
-
- SystemAtomicComponent initDestroyComponent = MockFactory
- .createAtomicComponent("InitDestroy", scope, RequestScopeInitDestroyComponent.class);
- initDestroyComponent.start();
-
- SystemAtomicComponent initOnlyComponent =
- MockFactory.createAtomicComponent("InitOnly", scope, RequestScopeInitOnlyComponent.class);
- initOnlyComponent.start();
-
- SystemAtomicComponent destroyOnlyComponent = MockFactory
- .createAtomicComponent("DestroyOnly", scope, RequestScopeDestroyOnlyComponent.class);
- destroyOnlyComponent.start();
-
+ Foo comp = new Foo();
+ SystemAtomicComponent component = EasyMock.createMock(SystemAtomicComponent.class);
+ EasyMock.expect(component.createInstance()).andReturn(comp);
+ EasyMock.expect(component.isEagerInit()).andReturn(false).atLeastOnce();
+ component.init(EasyMock.eq(comp));
+ component.destroy(EasyMock.eq(comp));
+ EasyMock.replay(component);
+ scope.register(component);
scope.onEvent(new RequestStart(this));
- RequestScopeInitDestroyComponent initDestroy =
- (RequestScopeInitDestroyComponent) scope.getInstance(initDestroyComponent);
- assertNotNull(initDestroy);
-
- RequestScopeInitOnlyComponent initOnly = (RequestScopeInitOnlyComponent) scope.getInstance(initOnlyComponent);
- assertNotNull(initOnly);
-
- RequestScopeDestroyOnlyComponent destroyOnly =
- (RequestScopeDestroyOnlyComponent) scope.getInstance(destroyOnlyComponent);
- assertNotNull(destroyOnly);
-
- assertTrue(initDestroy.isInitialized());
- assertTrue(initOnly.isInitialized());
- assertFalse(initDestroy.isDestroyed());
- assertFalse(destroyOnly.isDestroyed());
-
- // expire module
+ assertNotNull(scope.getInstance(component));
+ // expire
scope.onEvent(new RequestEnd(this));
-
- assertTrue(initDestroy.isDestroyed());
- assertTrue(destroyOnly.isDestroyed());
-
+ scope.stop();
+ EasyMock.verify(component);
scope.stop();
}
@@ -88,36 +63,35 @@
RequestScopeContainer scope = new RequestScopeContainer(ctx);
scope.start();
- SystemAtomicComponent oneCtx =
- MockFactory.createAtomicComponent("one", scope, OrderedInitPojoImpl.class);
- scope.register(oneCtx);
- SystemAtomicComponent twoCtx =
- MockFactory.createAtomicComponent("two", scope, OrderedInitPojoImpl.class);
- scope.register(twoCtx);
- SystemAtomicComponent threeCtx =
- MockFactory.createAtomicComponent("three", scope, OrderedInitPojoImpl.class);
- scope.register(threeCtx);
+ SystemAtomicComponent oneComponent = createComponent(false);
+ scope.register(oneComponent);
+ SystemAtomicComponent twoComponent = createComponent(false);
+ scope.register(twoComponent);
+ SystemAtomicComponent threeComponent = createComponent(false);
+ scope.register(threeComponent);
scope.onEvent(new RequestStart(this));
- OrderedInitPojo one = (OrderedInitPojo) scope.getInstance(oneCtx);
+ OrderedInitPojo one = (OrderedInitPojo) scope.getInstance(oneComponent);
assertNotNull(one);
assertEquals(1, one.getNumberInstantiated());
assertEquals(1, one.getInitOrder());
- OrderedInitPojo two = (OrderedInitPojo) scope.getInstance(twoCtx);
+ OrderedInitPojo two = (OrderedInitPojo) scope.getInstance(twoComponent);
assertNotNull(two);
assertEquals(2, two.getNumberInstantiated());
assertEquals(2, two.getInitOrder());
- OrderedInitPojo three = (OrderedInitPojo) scope.getInstance(threeCtx);
+ OrderedInitPojo three = (OrderedInitPojo) scope.getInstance(threeComponent);
assertNotNull(three);
assertEquals(3, three.getNumberInstantiated());
assertEquals(3, three.getInitOrder());
- // expire module
scope.onEvent(new RequestEnd(this));
assertEquals(0, one.getNumberInstantiated());
scope.stop();
+ EasyMock.verify(oneComponent);
+ EasyMock.verify(twoComponent);
+ EasyMock.verify(threeComponent);
}
public void testEagerInitDestroyOrder() throws Exception {
@@ -125,30 +99,52 @@
RequestScopeContainer scope = new RequestScopeContainer(ctx);
scope.start();
- SystemAtomicComponent oneComponent =
- MockFactory.createAtomicComponent("one", scope, OrderedEagerInitPojo.class);
+ SystemAtomicComponent oneComponent = createComponent(true);
scope.register(oneComponent);
- SystemAtomicComponent twoComponent =
- MockFactory.createAtomicComponent("two", scope, OrderedEagerInitPojo.class);
+ SystemAtomicComponent twoComponent = createComponent(true);
scope.register(twoComponent);
- SystemAtomicComponent threeComponent =
- MockFactory.createAtomicComponent("three", scope, OrderedEagerInitPojo.class);
+ SystemAtomicComponent threeComponent = createComponent(true);
scope.register(threeComponent);
scope.onEvent(new RequestStart(this));
- OrderedEagerInitPojo one = (OrderedEagerInitPojo) scope.getInstance(oneComponent);
- assertNotNull(one);
+ scope.onEvent(new RequestEnd(this));
+ scope.stop();
+ EasyMock.verify(oneComponent);
+ EasyMock.verify(twoComponent);
+ EasyMock.verify(threeComponent);
+ }
- OrderedEagerInitPojo two = (OrderedEagerInitPojo) scope.getInstance(twoComponent);
- assertNotNull(two);
+ @SuppressWarnings("unchecked")
+ private SystemAtomicComponent createComponent(boolean init) {
+ SystemAtomicComponent component = EasyMock.createMock(SystemAtomicComponent.class);
+ EasyMock.expect(component.createInstance()).andStubAnswer(new IAnswer() {
+ public Object answer() throws Throwable {
+ return new OrderedInitPojoImpl();
+ }
+ });
+ EasyMock.expect(component.isEagerInit()).andReturn(init).atLeastOnce();
+ component.init(EasyMock.isA(OrderedInitPojoImpl.class));
+ EasyMock.expectLastCall().andAnswer(new IAnswer() {
+ public Object answer() throws Throwable {
+ OrderedInitPojoImpl pojo = (OrderedInitPojoImpl) EasyMock.getCurrentArguments()[0];
+ pojo.init();
+ return null;
+ }
+ });
+ component.destroy(EasyMock.isA(OrderedInitPojoImpl.class));
+ EasyMock.expectLastCall().andAnswer(new IAnswer() {
+ public Object answer() throws Throwable {
+ OrderedInitPojoImpl pojo = (OrderedInitPojoImpl) EasyMock.getCurrentArguments()[0];
+ pojo.destroy();
+ return null;
+ }
+ });
+ EasyMock.replay(component);
+ return component;
+ }
- OrderedEagerInitPojo three = (OrderedEagerInitPojo) scope.getInstance(threeComponent);
- assertNotNull(three);
+ private class Foo {
- // expire module
- scope.onEvent(new RequestEnd(this));
- assertEquals(0, one.getNumberInstantiated());
- scope.stop();
}
}
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemAtomicComponentTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemAtomicComponentTestCase.java?view=diff&rev=479319&r1=479318&r2=479319
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemAtomicComponentTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemAtomicComponentTestCase.java Sun Nov 26 01:41:20 2006
@@ -35,6 +35,7 @@
public class SystemAtomicComponentTestCase extends TestCase {
private EventInvoker<Object> initInvoker;
+ private EventInvoker<Object> destroyInvoker;
public void testDefaultCreationAndInit() throws Exception {
PojoObjectFactory<Foo> factory = new PojoObjectFactory<Foo>(Foo.class.getConstructor((Class[]) null));
@@ -49,6 +50,19 @@
assertTrue(foo.initialized);
}
+ public void testDestroy() throws Exception {
+ PojoObjectFactory<Foo> factory = new PojoObjectFactory<Foo>(Foo.class.getConstructor((Class[]) null));
+ PojoConfiguration configuration = new PojoConfiguration();
+ configuration.addServiceInterface(Foo.class);
+ configuration.setInstanceFactory(factory);
+ configuration.setDestroyInvoker(destroyInvoker);
+ configuration.setName("foo");
+ SystemAtomicComponentImpl component = new SystemAtomicComponentImpl(configuration);
+ Foo foo = (Foo) component.createInstance();
+ component.destroy(foo);
+ assertTrue(foo.destroyed);
+ }
+
public void testReferenceAndPropertyConstructor() throws Exception {
PojoObjectFactory<Bar> factory = new PojoObjectFactory<Bar>(Bar.class.getConstructor(String.class, Foo.class));
PojoConfiguration configuration = new PojoConfiguration();
@@ -75,6 +89,7 @@
protected void setUp() throws Exception {
super.setUp();
initInvoker = new MethodEventInvoker<Object>(Foo.class.getMethod("init"));
+ destroyInvoker = new MethodEventInvoker<Object>(Foo.class.getMethod("destroy"));
}
protected void tearDown() throws Exception {
@@ -82,11 +97,15 @@
}
public static class Foo {
-
private boolean initialized;
+ private boolean destroyed;
public void init() {
initialized = true;
+ }
+
+ public void destroy() {
+ destroyed = true;
}
}
Copied: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/MockComponentFactory.java (from r479273, incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/mock/factories/MockComponentFactory.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/MockComponentFactory.java?view=diff&rev=479319&p1=incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/mock/factories/MockComponentFactory.java&r1=479273&p2=incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/MockComponentFactory.java&r2=479319
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/mock/factories/MockComponentFactory.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/MockComponentFactory.java Sun Nov 26 01:41:20 2006
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.tuscany.core.mock.factories;
+package org.apache.tuscany.core.integration.implementation.system.builder;
import java.net.URI;
import java.net.URISyntaxException;
Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/MockComponentFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/MockComponentFactory.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/SystemBuilderWireTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/SystemBuilderWireTestCase.java?view=diff&rev=479319&r1=479318&r2=479319
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/SystemBuilderWireTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/SystemBuilderWireTestCase.java Sun Nov 26 01:41:20 2006
@@ -44,7 +44,6 @@
import org.apache.tuscany.core.implementation.system.model.SystemImplementation;
import org.apache.tuscany.core.mock.component.Source;
import org.apache.tuscany.core.mock.component.Target;
-import org.apache.tuscany.core.mock.factories.MockComponentFactory;
/**
* Validates that system builders and the default connector create properly wired contexts
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/mock/MockFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/mock/MockFactory.java?view=diff&rev=479319&r1=479318&r2=479319
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/mock/MockFactory.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/mock/MockFactory.java Sun Nov 26 01:41:20 2006
@@ -19,34 +19,30 @@
package org.apache.tuscany.core.integration.mock;
import java.lang.reflect.Member;
-import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.apache.tuscany.spi.builder.BuilderConfigException;
+import org.apache.tuscany.spi.QualifiedName;
import org.apache.tuscany.spi.component.AtomicComponent;
import org.apache.tuscany.spi.component.ScopeContainer;
import org.apache.tuscany.spi.idl.InvalidServiceContractException;
-import org.apache.tuscany.spi.idl.java.JavaIDLUtils;
import org.apache.tuscany.spi.idl.java.JavaInterfaceProcessorRegistry;
import org.apache.tuscany.spi.model.Operation;
-import org.apache.tuscany.spi.model.Scope;
import org.apache.tuscany.spi.model.ServiceContract;
import org.apache.tuscany.spi.wire.InboundInvocationChain;
import org.apache.tuscany.spi.wire.InboundWire;
import org.apache.tuscany.spi.wire.Interceptor;
import org.apache.tuscany.spi.wire.OutboundInvocationChain;
import org.apache.tuscany.spi.wire.OutboundWire;
-import org.apache.tuscany.spi.wire.TargetInvoker;
import org.apache.tuscany.spi.wire.WireService;
+import org.apache.tuscany.core.builder.ConnectorImpl;
import org.apache.tuscany.core.component.WorkContextImpl;
import org.apache.tuscany.core.idl.java.JavaInterfaceProcessorRegistryImpl;
import org.apache.tuscany.core.implementation.PojoConfiguration;
import org.apache.tuscany.core.implementation.java.JavaAtomicComponent;
-import org.apache.tuscany.core.implementation.java.JavaTargetInvoker;
import org.apache.tuscany.core.injection.PojoObjectFactory;
import org.apache.tuscany.core.wire.InboundInvocationChainImpl;
import org.apache.tuscany.core.wire.InboundWireImpl;
@@ -54,10 +50,6 @@
import org.apache.tuscany.core.wire.OutboundInvocationChainImpl;
import org.apache.tuscany.core.wire.OutboundWireImpl;
import org.apache.tuscany.core.wire.jdk.JDKWireService;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expectLastCall;
-import static org.easymock.EasyMock.isA;
-import static org.easymock.EasyMock.replay;
/**
* @version $$Rev$$ $$Date$$
@@ -66,52 +58,13 @@
private static final WireService WIRE_SERVICE = new JDKWireService(new WorkContextImpl(), null);
private static final JavaInterfaceProcessorRegistry REGISTRY = new JavaInterfaceProcessorRegistryImpl();
+ private static final ConnectorImpl CONNECTOR = new ConnectorImpl();
private MockFactory() {
}
/**
- * Creates a JavaAtomicComponent which returns the given instance
- */
- @SuppressWarnings("unchecked")
- public static <T> JavaAtomicComponent createJavaComponent(T instance) {
- ScopeContainer scope = createMock(ScopeContainer.class);
- scope.getScope();
- expectLastCall().andReturn(Scope.MODULE);
- scope.getInstance(isA(JavaAtomicComponent.class));
- expectLastCall().andReturn(instance).anyTimes();
- replay(scope);
- PojoConfiguration configuration = new PojoConfiguration();
- configuration.setScopeContainer(scope);
- try {
- configuration.setInstanceFactory(new PojoObjectFactory(DummyImpl.class.getConstructor()));
- } catch (NoSuchMethodException e) {
- throw new AssertionError(e);
- }
- configuration.addServiceInterface(DummyImpl.class);
- configuration.setWireService(WIRE_SERVICE);
- configuration.setWorkContext(new WorkContextImpl());
- configuration.setName(instance.getClass().getName());
-
- return new JavaAtomicComponent(configuration);
- }
-
- @SuppressWarnings("unchecked")
- public static <T> JavaAtomicComponent createJavaComponent(String name, ScopeContainer scope, Class<T> clazz)
- throws NoSuchMethodException {
- PojoConfiguration configuration = new PojoConfiguration();
- configuration.setScopeContainer(scope);
- configuration.setInstanceFactory(new PojoObjectFactory(clazz.getConstructor()));
- configuration.addServiceInterface(clazz);
- configuration.setWireService(WIRE_SERVICE);
- configuration.setWorkContext(new WorkContextImpl());
- configuration.setName(name);
- return new JavaAtomicComponent(configuration);
-
- }
-
- /**
- * Wires two contexts together where the reference interface is the same as target service
+ * Wires two components together where the reference interface is the same as target service
*
* @param sourceName
* @param sourceClass
@@ -132,25 +85,9 @@
Class<?> targetService,
Class<?> targetClass,
ScopeContainer targetScope) throws Exception {
- return createWiredComponents(sourceName, sourceClass, targetService, sourceScope, members, targetName,
- targetService, targetClass, targetScope);
-
- }
-
- /**
- * Wires two contexts together where the reference interface may be different from the target service
- */
- public static Map<String, AtomicComponent> createWiredComponents(String sourceName, Class<?> sourceClass,
- Class<?> sourceReferenceClass,
- ScopeContainer sourceScope,
- Map<String, Member> members,
- String targetName,
- Class<?> targetService,
- Class<?> targetClass,
- ScopeContainer targetScope) throws Exception {
return createWiredComponents(sourceName,
sourceClass,
- sourceReferenceClass,
+ targetService,
sourceScope,
null,
members,
@@ -159,6 +96,7 @@
targetClass,
targetScope,
null);
+
}
@SuppressWarnings("unchecked")
@@ -173,12 +111,12 @@
Interceptor targetHeadInterceptor)
throws Exception {
- JavaAtomicComponent targetContext =
+ JavaAtomicComponent targetComponent =
createJavaComponent(targetName, targetScope, targetClass);
String serviceName = targetService.getName().substring(targetService.getName().lastIndexOf('.') + 1);
- InboundWire inboundWire = createServiceWire(serviceName, targetService, targetHeadInterceptor);
- targetContext.addInboundWire(inboundWire);
-
+ InboundWire inboundWire = createInboundWire(serviceName, targetService, targetHeadInterceptor);
+ targetComponent.addInboundWire(inboundWire);
+ inboundWire.setContainer(targetComponent);
PojoConfiguration configuration = new PojoConfiguration();
configuration.setScopeContainer(sourceScope);
configuration.setInstanceFactory(new PojoObjectFactory(sourceClass.getConstructor()));
@@ -189,15 +127,17 @@
}
configuration.setWorkContext(new WorkContextImpl());
configuration.setName(sourceName);
- JavaAtomicComponent sourceContext = new JavaAtomicComponent(configuration);
- OutboundWire outboundWire = createReferenceWire(targetName, sourceReferenceClass, sourceHeadInterceptor);
- sourceContext.addOutboundWire(outboundWire);
- targetScope.register(targetContext);
- sourceScope.register(sourceContext);
- connect(outboundWire, inboundWire, targetContext, false);
+ JavaAtomicComponent sourceComponent = new JavaAtomicComponent(configuration);
+ OutboundWire outboundWire = createOutboundWire(targetName, sourceReferenceClass, sourceHeadInterceptor);
+ sourceComponent.addOutboundWire(outboundWire);
+ outboundWire.setContainer(sourceComponent);
+ outboundWire.setTargetName(new QualifiedName(targetName + "/" + serviceName));
+ targetScope.register(targetComponent);
+ sourceScope.register(sourceComponent);
+ CONNECTOR.connect(outboundWire, inboundWire, false);
Map<String, AtomicComponent> contexts = new HashMap<String, AtomicComponent>();
- contexts.put(sourceName, sourceContext);
- contexts.put(targetName, targetContext);
+ contexts.put(sourceName, sourceComponent);
+ contexts.put(targetName, targetComponent);
return contexts;
}
@@ -225,12 +165,12 @@
Class<?> targetClass,
Map<String, Member> members,
ScopeContainer targetScope) throws Exception {
- JavaAtomicComponent targetContext =
+ JavaAtomicComponent targetComponent =
createJavaComponent(targetName, targetScope, targetClass);
String serviceName = targetService.getName().substring(targetService.getName().lastIndexOf('.') + 1);
- InboundWire inboundWire = createServiceWire(serviceName, targetService, null);
- targetContext.addInboundWire(inboundWire);
-
+ InboundWire inboundWire = createInboundWire(serviceName, targetService, null);
+ targetComponent.addInboundWire(inboundWire);
+ inboundWire.setContainer(targetComponent);
PojoConfiguration configuration = new PojoConfiguration();
configuration.setScopeContainer(sourceScope);
configuration.setInstanceFactory(new PojoObjectFactory(sourceClass.getConstructor()));
@@ -242,38 +182,51 @@
configuration.setWorkContext(new WorkContextImpl());
configuration.setName(sourceName);
- JavaAtomicComponent sourceContext = new JavaAtomicComponent(configuration);
- OutboundWire outboundWire = createReferenceWire(targetName, sourceReferenceClass, null);
+ JavaAtomicComponent sourceComponent = new JavaAtomicComponent(configuration);
+ OutboundWire outboundWire = createOutboundWire(targetName, sourceReferenceClass, null);
+ outboundWire.setContainer(sourceComponent);
+ outboundWire.setTargetName(new QualifiedName(targetName + "/" + serviceName));
List<OutboundWire> factories = new ArrayList<OutboundWire>();
factories.add(outboundWire);
- sourceContext.addOutboundWires(sourceReferenceClass, factories);
- targetScope.register(targetContext);
- sourceScope.register(sourceContext);
- connect(outboundWire, inboundWire, targetContext, false);
- Map<String, AtomicComponent> contexts = new HashMap<String, AtomicComponent>();
- contexts.put(sourceName, sourceContext);
- contexts.put(targetName, targetContext);
- return contexts;
+ sourceComponent.addOutboundWires(sourceReferenceClass, factories);
+ targetScope.register(targetComponent);
+ sourceScope.register(sourceComponent);
+ CONNECTOR.connect(outboundWire, inboundWire, false);
+ Map<String, AtomicComponent> components = new HashMap<String, AtomicComponent>();
+ components.put(sourceName, sourceComponent);
+ components.put(targetName, targetComponent);
+ return components;
}
public static <T> InboundWire createTargetWire(String serviceName, Class<T> interfaze)
throws InvalidServiceContractException {
- return createServiceWire(serviceName, interfaze, null);
+ return createInboundWire(serviceName, interfaze, null);
}
+ @SuppressWarnings("unchecked")
+ private static <T> JavaAtomicComponent createJavaComponent(String name, ScopeContainer scope, Class<T> clazz)
+ throws NoSuchMethodException {
+ PojoConfiguration configuration = new PojoConfiguration();
+ configuration.setScopeContainer(scope);
+ configuration.setInstanceFactory(new PojoObjectFactory(clazz.getConstructor()));
+ configuration.addServiceInterface(clazz);
+ configuration.setWireService(WIRE_SERVICE);
+ configuration.setWorkContext(new WorkContextImpl());
+ configuration.setName(name);
+ return new JavaAtomicComponent(configuration);
+ }
- public static <T> InboundWire createServiceWire(String serviceName, Class<T> interfaze, Interceptor interceptor)
+ private static <T> InboundWire createInboundWire(String serviceName, Class<T> interfaze, Interceptor interceptor)
throws InvalidServiceContractException {
InboundWire wire = new InboundWireImpl();
ServiceContract<?> contract = REGISTRY.introspect(interfaze);
wire.setServiceContract(contract);
wire.setServiceName(serviceName);
- wire.addInvocationChains(
- createInboundChains(interfaze, interceptor));
+ wire.addInvocationChains(createInboundChains(interfaze, interceptor));
return wire;
}
- public static <T> OutboundWire createReferenceWire(String refName, Class<T> interfaze, Interceptor interceptor)
+ private static <T> OutboundWire createOutboundWire(String refName, Class<T> interfaze, Interceptor interceptor)
throws InvalidServiceContractException {
OutboundWire wire = new OutboundWireImpl();
@@ -285,71 +238,6 @@
return wire;
}
- public static <T> OutboundWire createReferenceWire(String refName, Class<T> interfaze)
- throws InvalidServiceContractException {
- OutboundWire wire = new OutboundWireImpl();
- wire.setReferenceName(refName);
- wire.addInvocationChains(createOutboundChains(interfaze));
- ServiceContract<?> contract = REGISTRY.introspect(interfaze);
- wire.setServiceContract(contract);
- return wire;
- }
-
-
- /**
- * @param outboundWire
- * @param inboundWire
- * @param targetContext
- * @param cacheable
- * @throws Exception
- */
- public static void connect(OutboundWire outboundWire,
- InboundWire inboundWire,
- JavaAtomicComponent targetContext,
- boolean cacheable) throws Exception {
- if (inboundWire != null) {
- // if null, the target side has no interceptors or handlers
- Map<Operation<?>, InboundInvocationChain> targetInvocationConfigs = inboundWire.getInvocationChains();
- for (OutboundInvocationChain outboundInvocationConfig : outboundWire.getInvocationChains().values()) {
- // match wire chains
- InboundInvocationChain inboundInvocationConfig =
- targetInvocationConfigs.get(outboundInvocationConfig.getOperation());
- if (inboundInvocationConfig == null) {
- BuilderConfigException e =
- new BuilderConfigException("Incompatible source and target interface types for reference");
- e.setIdentifier(outboundWire.getReferenceName());
- throw e;
- }
- if (inboundInvocationConfig.getHeadInterceptor() == null) {
- BuilderConfigException e =
- new BuilderConfigException("No target handler or interceptor for operation");
- e.setIdentifier(inboundInvocationConfig.getOperation().getName());
- throw e;
- }
- if (!(outboundInvocationConfig.getTailInterceptor() instanceof InvokerInterceptor
- && inboundInvocationConfig.getHeadInterceptor() instanceof InvokerInterceptor)) {
- // check that we do not have the case where the only interceptors are invokers since we just
- // need one
- outboundInvocationConfig.setTargetInterceptor(inboundInvocationConfig.getHeadInterceptor());
- }
- }
-
- for (OutboundInvocationChain chain : outboundWire.getInvocationChains().values()) {
- //FIXME should use target method, not outboundInvocationConfig.getMethod()
- Method[] methods = outboundWire.getServiceContract().getInterfaceClass().getMethods();
- Method m = JavaIDLUtils.findMethod(chain.getOperation(), methods);
- TargetInvoker invoker = new JavaTargetInvoker(m, targetContext, null, new WorkContextImpl(), null);
- invoker.setCacheable(cacheable);
- chain.setTargetInvoker(invoker);
- }
- }
- }
-
- private static Map<Operation<?>, OutboundInvocationChain> createOutboundChains(Class<?> interfaze)
- throws InvalidServiceContractException {
- return createOutboundChains(interfaze, null);
- }
-
private static Map<Operation<?>, OutboundInvocationChain> createOutboundChains(Class<?> interfaze,
Interceptor interceptor)
throws InvalidServiceContractException {
@@ -381,11 +269,6 @@
invocations.put(method, chain);
}
return invocations;
- }
-
- private static class DummyImpl {
- public DummyImpl() {
- }
}
}
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/wire/DifferentInterfaceWireTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/wire/DifferentInterfaceWireTestCase.java?view=diff&rev=479319&r1=479318&r2=479319
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/wire/DifferentInterfaceWireTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/wire/DifferentInterfaceWireTestCase.java Sun Nov 26 01:41:20 2006
@@ -58,11 +58,13 @@
SourceImpl.class,
Target.class,
scope,
+ null,
members,
"target",
OtherTarget.class,
OtherTargetImpl.class,
- scope);
+ scope,
+ null);
AtomicComponent sourceComponent = contexts.get("source");
Source source = (Source) sourceComponent.getServiceInstance();
Target target = source.getTarget();
@@ -78,10 +80,16 @@
members.put("target", m);
ScopeContainer scope = createMock();
scope.start();
- Map<String, AtomicComponent> contexts =
- MockFactory.createWiredMultiplicity("source", SourceImpl.class, Target.class, scope,
- "target", OtherTarget.class, OtherTargetImpl.class, members, scope);
- AtomicComponent sourceComponent = contexts.get("source");
+ Map<String, AtomicComponent> components = MockFactory.createWiredMultiplicity("source",
+ SourceImpl.class,
+ Target.class,
+ scope,
+ "target",
+ OtherTarget.class,
+ OtherTargetImpl.class,
+ members,
+ scope);
+ AtomicComponent sourceComponent = components.get("source");
Source source = (Source) sourceComponent.getServiceInstance();
List<Target> targets = source.getTargets();
assertEquals(1, targets.size());
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/mock/component/OrderedInitPojoImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/mock/component/OrderedInitPojoImpl.java?view=diff&rev=479319&r1=479318&r2=479319
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/mock/component/OrderedInitPojoImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/mock/component/OrderedInitPojoImpl.java Sun Nov 26 01:41:20 2006
@@ -29,6 +29,9 @@
private static int numberInstantied;
private int initOrder;
+ public OrderedInitPojoImpl() {
+ }
+
@Init
public void init() {
synchronized (LOCK) {
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org