summaryrefslogtreecommitdiffstats
path: root/tags/java/sca/1.5.1-RC4/modules/implementation-notification/src/test/java/org/apache/tuscany/sca/implementation/notification/NotificationComponentTestCase.java
diff options
context:
space:
mode:
Diffstat (limited to 'tags/java/sca/1.5.1-RC4/modules/implementation-notification/src/test/java/org/apache/tuscany/sca/implementation/notification/NotificationComponentTestCase.java')
-rw-r--r--tags/java/sca/1.5.1-RC4/modules/implementation-notification/src/test/java/org/apache/tuscany/sca/implementation/notification/NotificationComponentTestCase.java136
1 files changed, 136 insertions, 0 deletions
diff --git a/tags/java/sca/1.5.1-RC4/modules/implementation-notification/src/test/java/org/apache/tuscany/sca/implementation/notification/NotificationComponentTestCase.java b/tags/java/sca/1.5.1-RC4/modules/implementation-notification/src/test/java/org/apache/tuscany/sca/implementation/notification/NotificationComponentTestCase.java
new file mode 100644
index 0000000000..f9a20edccd
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC4/modules/implementation-notification/src/test/java/org/apache/tuscany/sca/implementation/notification/NotificationComponentTestCase.java
@@ -0,0 +1,136 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tuscany.sca.implementation.notification;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.assembly.ComponentReference;
+import org.apache.tuscany.sca.assembly.SCABinding;
+import org.apache.tuscany.sca.binding.sca.impl.SCABindingFactoryImpl;
+import org.apache.tuscany.sca.interfacedef.Operation;
+import org.apache.tuscany.sca.invocation.Interceptor;
+import org.apache.tuscany.sca.invocation.InvocationChain;
+import org.apache.tuscany.sca.invocation.Invoker;
+import org.apache.tuscany.sca.invocation.Message;
+import org.apache.tuscany.sca.runtime.EndpointReference;
+import org.apache.tuscany.sca.runtime.RuntimeComponent;
+import org.apache.tuscany.sca.runtime.RuntimeComponentReference;
+import org.apache.tuscany.sca.runtime.RuntimeWire;
+import org.easymock.EasyMock;
+
+/**
+ *
+ * @version $Rev$ $Date$
+ *
+ */
+public class NotificationComponentTestCase extends TestCase {
+
+ public void testLocalNotificationComponent() throws Exception {
+ try {
+ Operation operation = EasyMock.createNiceMock(Operation.class);
+ EasyMock.replay(operation);
+
+ InvocationChain sub1Chain = EasyMock.createNiceMock(InvocationChain.class);
+ EasyMock.expect(sub1Chain.getTargetOperation()).andReturn(operation);
+ EasyMock.expect(sub1Chain.getHeadInvoker()).andReturn(new MockInterceptor());
+ EasyMock.replay(sub1Chain);
+ List<InvocationChain> sub1Chains = new ArrayList<InvocationChain>();
+ sub1Chains.add(sub1Chain);
+ SCABinding b1 = new SCABindingFactoryImpl().createSCABinding();
+ EndpointReference epr1 = EasyMock.createNiceMock(EndpointReference.class);
+ EasyMock.expect(epr1.getURI()).andReturn("wire1Target");
+ EasyMock.expect(epr1.getBinding()).andReturn(b1);
+ EasyMock.replay(epr1);
+ RuntimeWire sub1Wire = EasyMock.createNiceMock(RuntimeWire.class);
+ EasyMock.expect(sub1Wire.getInvocationChains()).andReturn(sub1Chains);
+ EasyMock.expect(sub1Wire.getTarget()).andReturn(epr1).anyTimes();
+ EasyMock.replay(sub1Wire);
+ ArrayList<RuntimeWire> rtWires1 = new ArrayList<RuntimeWire>();
+ rtWires1.add(sub1Wire);
+ RuntimeComponentReference rtCompRef1 = EasyMock.createNiceMock(RuntimeComponentReference.class);
+ EasyMock.expect(rtCompRef1.getName()).andReturn("sub1Reference");
+ EasyMock.expect(rtCompRef1.getRuntimeWires()).andReturn(rtWires1);
+ EasyMock.replay(rtCompRef1);
+
+ InvocationChain sub2Chain = EasyMock.createNiceMock(InvocationChain.class);
+ EasyMock.expect(sub2Chain.getTargetOperation()).andReturn(operation);
+ EasyMock.expect(sub2Chain.getHeadInvoker()).andReturn(new MockInterceptor());
+ EasyMock.replay(sub2Chain);
+ List<InvocationChain> sub2Chains = new ArrayList<InvocationChain>();
+ sub2Chains.add(sub2Chain);
+ SCABinding b2 = new SCABindingFactoryImpl().createSCABinding();
+ EndpointReference epr2 = EasyMock.createNiceMock(EndpointReference.class);
+ EasyMock.expect(epr2.getURI()).andReturn("wire2Target");
+ EasyMock.expect(epr2.getBinding()).andReturn(b2);
+ EasyMock.replay(epr2);
+ RuntimeWire sub2Wire = EasyMock.createNiceMock(RuntimeWire.class);
+ EasyMock.expect(sub2Wire.getInvocationChains()).andReturn(sub2Chains);
+ EasyMock.expect(sub2Wire.getTarget()).andReturn(epr2).anyTimes();
+ EasyMock.replay(sub2Wire);
+ ArrayList<RuntimeWire> rtWires2 = new ArrayList<RuntimeWire>();
+ rtWires2.add(sub2Wire);
+ RuntimeComponentReference rtCompRef2 = EasyMock.createNiceMock(RuntimeComponentReference.class);
+ EasyMock.expect(rtCompRef2.getName()).andReturn("sub2Reference");
+ EasyMock.expect(rtCompRef2.getRuntimeWires()).andReturn(rtWires2);
+ EasyMock.replay(rtCompRef2);
+
+ ArrayList<ComponentReference> references = new ArrayList<ComponentReference>();
+ references.add(rtCompRef1);
+ references.add(rtCompRef2);
+ RuntimeComponent component = EasyMock.createNiceMock(RuntimeComponent.class);
+ EasyMock.expect(component.getName()).andReturn("LocalNotificationComponentTest");
+ EasyMock.expect(component.getReferences()).andReturn(references);
+ EasyMock.replay(component);
+
+ Invoker localNotificationInvoker = new NotificationComponentInvoker(operation, component);
+
+ Message msg = EasyMock.createNiceMock(Message.class);
+ EasyMock.expect(msg.getBody()).andReturn("msg").times(3); // once per sub int + once in notif target invoker
+ EasyMock.replay(msg);
+ localNotificationInvoker.invoke(msg);
+ EasyMock.verify(msg);
+ } catch(Throwable e) {
+ e.printStackTrace();
+ }
+ }
+
+ class MockInterceptor implements Interceptor {
+
+ public Message invoke(Message msg) {
+ Assert.assertEquals("msg", msg.getBody());
+ return msg;
+ }
+
+ public void setNext(Invoker next) {
+ throw new AssertionError();
+ }
+
+ public Interceptor getNext() {
+ throw new AssertionError();
+ }
+
+ public boolean isOptimizable() {
+ throw new AssertionError();
+ }
+ }
+}