From bdd0a41aed7edf21ec2a65cfa17a86af2ef8c48a Mon Sep 17 00:00:00 2001 From: dims Date: Tue, 17 Jun 2008 00:23:01 +0000 Subject: Move Tuscany from Incubator to top level. git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@668359 13f79535-47bb-0310-9956-ffa450edef68 --- .../core/builder/BuilderRegistryTestCase.java | 190 +++++++++++++++++++++ 1 file changed, 190 insertions(+) create mode 100644 sandbox/rfeng/minicore/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryTestCase.java (limited to 'sandbox/rfeng/minicore/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryTestCase.java') diff --git a/sandbox/rfeng/minicore/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryTestCase.java b/sandbox/rfeng/minicore/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryTestCase.java new file mode 100644 index 0000000000..34173154b8 --- /dev/null +++ b/sandbox/rfeng/minicore/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryTestCase.java @@ -0,0 +1,190 @@ +/* + * 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.core.builder; + +import java.net.URI; +import java.util.Map; + +import org.apache.tuscany.spi.builder.BindingBuilder; +import org.apache.tuscany.spi.builder.BuilderConfigException; +import org.apache.tuscany.spi.builder.BuilderRegistry; +import org.apache.tuscany.spi.builder.ComponentBuilder; +import org.apache.tuscany.spi.component.AtomicComponent; +import org.apache.tuscany.spi.component.Component; +import org.apache.tuscany.spi.component.Reference; +import org.apache.tuscany.spi.component.ReferenceBinding; +import org.apache.tuscany.spi.component.ScopeContainer; +import org.apache.tuscany.spi.component.ScopeRegistry; +import org.apache.tuscany.spi.component.Service; +import org.apache.tuscany.spi.component.ServiceBinding; +import org.apache.tuscany.spi.deployer.DeploymentContext; +import org.apache.tuscany.spi.model.BindingDefinition; +import org.apache.tuscany.spi.model.ComponentDefinition; +import org.apache.tuscany.spi.model.ComponentType; +import org.apache.tuscany.spi.model.CompositeComponentType; +import org.apache.tuscany.spi.model.CompositeImplementation; +import org.apache.tuscany.spi.model.Implementation; +import static org.apache.tuscany.spi.model.Multiplicity.ONE_ONE; +import org.apache.tuscany.spi.model.ReferenceDefinition; +import org.apache.tuscany.spi.model.Scope; +import org.apache.tuscany.spi.model.ServiceDefinition; + +import junit.framework.TestCase; +import org.easymock.EasyMock; + +/** + * @version $Rev$ $Date$ + */ +public class BuilderRegistryTestCase extends TestCase { + private DeploymentContext deploymentContext; + private ScopeContainer scopeContainer; + private Map components; + + //private BuilderRegistryImpl registry; + private Component parent; + + @SuppressWarnings({"unchecked"}) + public void testRegistration() throws Exception { + URI componentId = URI.create("sca://localhost/component"); + CompositeImplementation implementation = new CompositeImplementation(); + ComponentDefinition componentDefinition = + new ComponentDefinition(implementation); + componentDefinition.getImplementation().setComponentType(new CompositeComponentType()); + + Component component = EasyMock.createMock(Component.class); + component.setDefaultPropertyValues(componentDefinition.getPropertyValues()); + component.setScopeContainer(scopeContainer); + EasyMock.expect(component.getUri()).andReturn(componentId); + EasyMock.replay(component); + + EasyMock.expect(deploymentContext.getCompositeScope()).andReturn(scopeContainer); + EasyMock.expect(deploymentContext.getComponents()).andReturn(components); + EasyMock.replay(deploymentContext); + + EasyMock.expect(components.put(componentId, component)).andReturn(null); + EasyMock.replay(components); + + ComponentBuilder builder = EasyMock.createMock(ComponentBuilder.class); + EasyMock.expect(builder.build(componentDefinition, deploymentContext)).andReturn(component); + EasyMock.replay(builder); + + BuilderRegistry registry = new BuilderRegistryImpl(null); + registry.register(CompositeImplementation.class, builder); + + assertSame(component, registry.build(componentDefinition, deploymentContext)); + EasyMock.verify(builder); + } + + @SuppressWarnings({"unchecked"}) + public void testServiceBindingBuilderDispatch() throws Exception { + BuilderRegistry registry = new BuilderRegistryImpl(null); + ServiceBinding binding = EasyMock.createNiceMock(ServiceBinding.class); + EasyMock.replay(binding); + BindingBuilder builder = EasyMock.createMock(BindingBuilder.class); + EasyMock.expect(builder.build( + EasyMock.isA(ServiceDefinition.class), + EasyMock.isA(MockBindingDefinition.class), + EasyMock.isA(DeploymentContext.class))).andReturn(binding).times(2); + EasyMock.replay(builder); + registry.register(MockBindingDefinition.class, builder); + ServiceDefinition definition = new ServiceDefinition(URI.create("#foo"), null, false); + definition.addBinding(new MockBindingDefinition()); + definition.addBinding(new MockBindingDefinition()); + definition.setTarget(new URI("foo")); + Service service = registry.build(definition, deploymentContext); + assertEquals(2, service.getServiceBindings().size()); + } + + @SuppressWarnings({"unchecked"}) + public void testReferenceBindingBuilderDispatch() throws Exception { + BuilderRegistry registry = new BuilderRegistryImpl(null); + ReferenceBinding binding = EasyMock.createNiceMock(ReferenceBinding.class); + EasyMock.replay(binding); + BindingBuilder builder = EasyMock.createMock(BindingBuilder.class); + EasyMock.expect(builder.build( + EasyMock.isA(ReferenceDefinition.class), + EasyMock.isA(MockBindingDefinition.class), + EasyMock.isA(DeploymentContext.class))).andReturn(binding).times(2); + EasyMock.replay(builder); + registry.register(MockBindingDefinition.class, builder); + ReferenceDefinition definition = new ReferenceDefinition(URI.create("#foo"), null, ONE_ONE); + definition.addBinding(new MockBindingDefinition()); + definition.addBinding(new MockBindingDefinition()); + Reference reference = registry.build(definition, deploymentContext); + assertEquals(2, reference.getReferenceBindings().size()); + } + + @SuppressWarnings({"unchecked"}) + public void testNoConversationalContract() throws Exception { + ScopeRegistry scopeRegistry = EasyMock.createMock(ScopeRegistry.class); + ScopeContainer scopeContainer = EasyMock.createNiceMock(ScopeContainer.class); + EasyMock.expect(scopeRegistry.getScopeContainer(EasyMock.isA(Scope.class))).andReturn(scopeContainer); + EasyMock.replay(scopeRegistry); + BuilderRegistry registry = new BuilderRegistryImpl(scopeRegistry); + + AtomicComponent component = EasyMock.createNiceMock(AtomicComponent.class); + EasyMock.replay(component); + ComponentBuilder builder = EasyMock.createMock(ComponentBuilder.class); + EasyMock.expect(builder.build( + EasyMock.isA(ComponentDefinition.class), + EasyMock.isA(DeploymentContext.class))).andReturn(component); + EasyMock.replay(builder); + registry.register(FooImplementation.class, builder); + + FooImplementation impl = new FooImplementation(); + ComponentType componentType = new ComponentType(); + componentType.setImplementationScope(Scope.CONVERSATION); + impl.setComponentType(componentType); + URI uri = URI.create("foo"); + ComponentDefinition definition = new ComponentDefinition(uri, impl); + try { + registry.build(definition, deploymentContext); + fail("Should throw NoConversationalContractException"); + } catch (NoConversationalContractException e) { + // expected + } + } + + @SuppressWarnings({"unchecked"}) + protected void setUp() throws Exception { + super.setUp(); + deploymentContext = EasyMock.createMock(DeploymentContext.class); + parent = EasyMock.createNiceMock(Component.class); + scopeContainer = EasyMock.createMock(ScopeContainer.class); + components = EasyMock.createMock(Map.class); + } + + private class MockBuilder implements ComponentBuilder { + public Component build( + ComponentDefinition componentDefinition, + DeploymentContext deploymentContext) throws BuilderConfigException { + return null; + } + } + + private class MockBindingDefinition extends BindingDefinition { + + } + + private class FooImplementation extends Implementation { + + } + + +} -- cgit v1.2.3