summaryrefslogtreecommitdiffstats
path: root/sca-java-1.x/tags/java-stable-20060304/sca/container.js/src/test/java/org/apache/tuscany/container/js/integration/JSComponentContextTestCase.java
blob: cd29f59327d709fd509d38d2712f4f001704f38a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
/**
 * 
 * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
 * 
 * Licensed 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.container.js.integration;

import java.util.ArrayList;
import java.util.List;

import junit.framework.Assert;
import junit.framework.TestCase;

import org.apache.tuscany.container.js.assembly.mock.HelloWorldService;
import org.apache.tuscany.container.js.builder.JavaScriptComponentContextBuilder;
import org.apache.tuscany.container.js.builder.JavaScriptTargetWireBuilder;
import org.apache.tuscany.container.js.builder.MockInterceptorBuilder;
import org.apache.tuscany.container.js.invocation.mock.MockSyncInterceptor;
import org.apache.tuscany.container.js.mock.MockAssemblyFactory;
import org.apache.tuscany.container.js.mock.MockModuleFactory;
import org.apache.tuscany.core.builder.RuntimeConfigurationBuilder;
import org.apache.tuscany.core.builder.impl.DefaultWireBuilder;
import org.apache.tuscany.core.builder.impl.HierarchicalBuilder;
import org.apache.tuscany.core.context.AggregateContext;
import org.apache.tuscany.core.context.EventContext;
import org.apache.tuscany.core.context.impl.AggregateContextImpl;
import org.apache.tuscany.core.invocation.jdk.JDKProxyFactoryFactory;
import org.apache.tuscany.core.message.MessageFactory;
import org.apache.tuscany.core.message.impl.MessageFactoryImpl;
import org.apache.tuscany.core.runtime.RuntimeContext;
import org.apache.tuscany.core.runtime.RuntimeContextImpl;
import org.apache.tuscany.core.system.builder.SystemComponentContextBuilder;
import org.apache.tuscany.core.system.builder.SystemEntryPointBuilder;
import org.apache.tuscany.core.system.builder.SystemExternalServiceBuilder;
import org.apache.tuscany.model.assembly.Scope;

/**
 * Integration tests for JavaScript components and aggregate contexts
 * 
 * @version $Rev$ $Date$
 */
public class JSComponentContextTestCase extends TestCase {

    public void testBasicInvocation() throws Exception {
        MessageFactory msgFactory = new MessageFactoryImpl();

        List<RuntimeConfigurationBuilder> builders = new ArrayList();
        builders.add((new SystemComponentContextBuilder()));
        builders.add(new SystemEntryPointBuilder());
        builders.add(new SystemExternalServiceBuilder());

        JavaScriptComponentContextBuilder javaBuilder = new JavaScriptComponentContextBuilder();
        javaBuilder.setMessageFactory(msgFactory);
        javaBuilder.setProxyFactoryFactory(new JDKProxyFactoryFactory());

        MockSyncInterceptor mockInterceptor = new MockSyncInterceptor();
        MockInterceptorBuilder interceptorBuilder = new MockInterceptorBuilder(mockInterceptor, true);
        HierarchicalBuilder refBuilder = new HierarchicalBuilder();
        refBuilder.addBuilder(interceptorBuilder);
        javaBuilder.setReferenceBuilder(refBuilder);
        builders.add(javaBuilder);

        DefaultWireBuilder defaultWireBuilder = new DefaultWireBuilder();

        RuntimeContext runtime = new RuntimeContextImpl(null, null, builders, defaultWireBuilder);
        runtime.addBuilder(new JavaScriptTargetWireBuilder());
        runtime.start();
        runtime.getRootContext().registerModelObject(
                MockAssemblyFactory.createSystemComponent("test.module", AggregateContextImpl.class.getName(),
                        Scope.AGGREGATE));
        AggregateContext child = (AggregateContext) runtime.getRootContext().getContext("test.module");
        child.registerModelObject(MockModuleFactory.createModule());
        child.fireEvent(EventContext.MODULE_START, null);
        HelloWorldService source = (HelloWorldService) child.locateInstance("source/HelloWorldService");
        Assert.assertNotNull(source);
        Assert.assertEquals("Hello foo",source.hello("foo"));
        //Assert.assertEquals(1, mockInterceptor.getCount());
        child.fireEvent(EventContext.MODULE_STOP, null);
        runtime.stop();
    }

}