You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2007/04/13 22:12:14 UTC
svn commit: r528640 - in /incubator/tuscany/java/sca/modules:
contribution/src/main/java/org/apache/tuscany/services/spi/contribution/
core-spi/src/main/java/org/apache/tuscany/spi/component/
core/src/main/java/org/apache/tuscany/core/binding/local/ co...
Author: rfeng
Date: Fri Apr 13 13:12:12 2007
New Revision: 528640
URL: http://svn.apache.org/viewvc?view=rev&rev=528640
Log:
More fix to the DeployerImpl to handle recursive composites
Added:
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/ContributionPostProcessor.java (with props)
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/ContributionPostProcessorRegistry.java (with props)
Modified:
incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/spi/component/ComponentManager.java
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingBuilder.java
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingDefinition.java
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/component/ComponentManagerImpl.java
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java
incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/core/binding/local/LocalBindingBuilderTestCase.java
incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryNoBindingsTestCase.java
incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryTestCase.java
incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/context/PojoAtomicComponent.java
Added: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/ContributionPostProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/ContributionPostProcessor.java?view=auto&rev=528640
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/ContributionPostProcessor.java (added)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/ContributionPostProcessor.java Fri Apr 13 13:12:12 2007
@@ -0,0 +1,31 @@
+/*
+ * 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.services.spi.contribution;
+
+import org.apache.tuscany.contribution.Contribution;
+
+/**
+ * A processor invoked after the contribution is loaded
+ *
+ * @version $Rev$ $Date$
+ */
+public interface ContributionPostProcessor {
+ void visit(Contribution contribution);
+}
Propchange: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/ContributionPostProcessor.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/ContributionPostProcessor.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/ContributionPostProcessorRegistry.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/ContributionPostProcessorRegistry.java?view=auto&rev=528640
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/ContributionPostProcessorRegistry.java (added)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/ContributionPostProcessorRegistry.java Fri Apr 13 13:12:12 2007
@@ -0,0 +1,38 @@
+/*
+ * 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.services.spi.contribution;
+
+/**
+ * The registry to host all the contribution post processors
+ *
+ * @version $Rev$ $Date$
+ */
+public interface ContributionPostProcessorRegistry {
+ /**
+ * Add a ContributionPostProcessor
+ * @param processor
+ */
+ void register(ContributionPostProcessor processor);
+ /**
+ * Remove a ContributionPostProcessor
+ * @param processor
+ */
+ void unregister(ContributionPostProcessor processor);
+}
Propchange: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/ContributionPostProcessorRegistry.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/ContributionPostProcessorRegistry.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/spi/component/ComponentManager.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/spi/component/ComponentManager.java?view=diff&rev=528640&r1=528639&r2=528640
==============================================================================
--- incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/spi/component/ComponentManager.java (original)
+++ incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/spi/component/ComponentManager.java Fri Apr 13 13:12:12 2007
@@ -20,6 +20,7 @@
import java.net.URI;
import java.util.List;
+import java.util.Map;
import org.apache.tuscany.assembly.ComponentService;
import org.apache.tuscany.assembly.Contract;
@@ -81,5 +82,11 @@
* @return the component or null if not found
*/
Component getComponent(URI uri);
+
+ List<SCAObject> getSCAObjects();
+ List<Object> getModelObjects();
+ void add(SCAObject object, Object model);
+ <T extends SCAObject> T getSCAObject(Class<T> objectType, Object model);
+ <T> T getModelObject(Class<T> modelType, SCAObject object);
}
Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingBuilder.java?view=diff&rev=528640&r1=528639&r2=528640
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingBuilder.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingBuilder.java Fri Apr 13 13:12:12 2007
@@ -44,14 +44,14 @@
public ServiceBinding build(CompositeService serviceDefinition,
LocalBindingDefinition bindingDefinition,
DeploymentContext context) throws BuilderException {
- return new LocalServiceBinding(URI.create("#" + serviceDefinition.getName()));
+ return new LocalServiceBinding(URI.create(context.getComponentId() + "#" + serviceDefinition.getName()));
}
@Override
public ReferenceBinding build(CompositeReference referenceDefinition,
LocalBindingDefinition bindingDefinition,
DeploymentContext context) throws BuilderException {
- return new LocalReferenceBinding(URI.create("#" + referenceDefinition.getName()), URI.create(bindingDefinition
- .getURI()));
+ return new LocalReferenceBinding(URI.create(context.getComponentId() + "#" + referenceDefinition.getName()),
+ URI.create(bindingDefinition.getURI()));
}
}
Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingDefinition.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingDefinition.java?view=diff&rev=528640&r1=528639&r2=528640
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingDefinition.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingDefinition.java Fri Apr 13 13:12:12 2007
@@ -32,7 +32,6 @@
public LocalBindingDefinition() {
super();
- setURI("default");
}
public LocalBindingDefinition(URI targetUri) {
Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java?view=diff&rev=528640&r1=528639&r2=528640
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java Fri Apr 13 13:12:12 2007
@@ -144,7 +144,7 @@
* @return a new Builder
*/
private BuilderRegistry createBuilder(ScopeRegistry scopeRegistry) {
- BuilderRegistryImpl builderRegistry = new BuilderRegistryImpl(scopeRegistry);
+ BuilderRegistryImpl builderRegistry = new BuilderRegistryImpl(componentManager, scopeRegistry);
CompositeBuilder compositeBuilder = new CompositeBuilder();
compositeBuilder.setBuilderRegistry(builderRegistry);
compositeBuilder.setScopeRegistry(scopeRegistry);
Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java?view=diff&rev=528640&r1=528639&r2=528640
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java Fri Apr 13 13:12:12 2007
@@ -23,11 +23,13 @@
import java.util.Map;
import org.apache.tuscany.assembly.Binding;
+import org.apache.tuscany.assembly.ComponentReference;
import org.apache.tuscany.assembly.ComponentType;
import org.apache.tuscany.assembly.CompositeReference;
import org.apache.tuscany.assembly.CompositeService;
import org.apache.tuscany.assembly.Implementation;
import org.apache.tuscany.assembly.Property;
+import org.apache.tuscany.assembly.SCABinding;
import org.apache.tuscany.assembly.Service;
import org.apache.tuscany.core.binding.local.LocalBindingDefinition;
import org.apache.tuscany.core.implementation.composite.ReferenceImpl;
@@ -59,14 +61,13 @@
public class BuilderRegistryImpl implements BuilderRegistry {
private ScopeRegistry scopeRegistry;
private ComponentManager componentManager;
- private Map<SCAObject, Object> models = new HashMap<SCAObject, Object>();
private final Map<Class<? extends Implementation>, ComponentBuilder> componentBuilders = new HashMap<Class<? extends Implementation>, ComponentBuilder>();
private final Map<Class<? extends Binding>, BindingBuilder<? extends Binding>> bindingBuilders = new HashMap<Class<? extends Binding>, BindingBuilder<? extends Binding>>();
- public BuilderRegistryImpl(@org.osoa.sca.annotations.Reference
- ScopeRegistry scopeRegistry) {
+ public BuilderRegistryImpl(ComponentManager componentManager, ScopeRegistry scopeRegistry) {
this.scopeRegistry = scopeRegistry;
+ this.componentManager = componentManager;
}
public <I extends Implementation> void register(Class<I> implClass, ComponentBuilder builder) {
@@ -111,7 +112,7 @@
throw new NoRegisteredBuilderException("No builder registered for implementation", name);
}
Component component = componentBuilder.build(componentDef, context);
- models.put(component, componentDef);
+ componentManager.add(component, componentDef);
assert component != null;
Map<String, Property> properties = new HashMap<String, Property>();
for (Property p : componentDef.getProperties()) {
@@ -159,14 +160,20 @@
@SuppressWarnings( {"unchecked"})
public org.apache.tuscany.spi.component.Service build(CompositeService serviceDefinition, DeploymentContext context)
throws BuilderException {
- URI uri = URI.create("#" + serviceDefinition.getName());
+ if (serviceDefinition.getPromotedService() == null) {
+ return null;
+ }
+ URI uri = URI.create(context.getComponentId() + "#" + serviceDefinition.getName());
if (serviceDefinition.getBindings().isEmpty()) {
// if no bindings are configured, default to the local binding.
// this should be changed to allow runtime selection
if (serviceDefinition.getBindings().isEmpty()) {
// TODO JFM implement capability for the runtime to choose a
// binding
- serviceDefinition.getBindings().add(new LocalBindingDefinition());
+ org.apache.tuscany.assembly.Component component = serviceDefinition.getPromotedService()
+ .getBinding(SCABinding.class).getComponent();
+ URI targetURI = URI.create(context.getComponentId() + component.getName());
+ serviceDefinition.getBindings().add(new LocalBindingDefinition(targetURI));
}
}
// FIXME:
@@ -182,20 +189,27 @@
ServiceBinding binding = bindingBuilder.build(serviceDefinition, definition, context);
service.addServiceBinding(binding);
}
- models.put(service, serviceDefinition);
+ componentManager.add(service, serviceDefinition);
return service;
}
@SuppressWarnings("unchecked")
public Reference build(CompositeReference referenceDefinition, DeploymentContext context) throws BuilderException {
- URI uri = URI.create("#" + referenceDefinition.getName());
+ if (referenceDefinition.getPromotedReferences().isEmpty()) {
+ return null;
+ }
+ URI uri = URI.create(context.getComponentId() + "#" + referenceDefinition.getName());
if (referenceDefinition.getBindings().isEmpty()) {
// if no bindings are configured, default to the local binding.
// this should be changed to allow runtime selection
if (referenceDefinition.getBindings().isEmpty()) {
// TODO JFM implement capability for the runtime to choose a
// binding
- referenceDefinition.getBindings().add(new LocalBindingDefinition());
+ ComponentReference componentReference = referenceDefinition.getPromotedReferences().get(0);
+ org.apache.tuscany.assembly.Component component = componentReference.getBinding(SCABinding.class)
+ .getComponent();
+ URI targetURI = URI.create(context.getComponentId() + component.getName());
+ referenceDefinition.getBindings().add(new LocalBindingDefinition(targetURI));
}
}
@@ -208,15 +222,8 @@
reference.addReferenceBinding(binding);
}
- models.put(reference, referenceDefinition);
+ componentManager.add(reference, referenceDefinition);
return reference;
- }
-
- /**
- * @return the models
- */
- public Map<SCAObject, Object> getModels() {
- return models;
}
}
Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/component/ComponentManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/component/ComponentManagerImpl.java?view=diff&rev=528640&r1=528639&r2=528640
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/component/ComponentManagerImpl.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/component/ComponentManagerImpl.java Fri Apr 13 13:12:12 2007
@@ -19,6 +19,7 @@
package org.apache.tuscany.core.component;
import java.net.URI;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -29,6 +30,7 @@
import org.apache.tuscany.spi.component.ComponentManager;
import org.apache.tuscany.spi.component.DuplicateNameException;
import org.apache.tuscany.spi.component.RegistrationException;
+import org.apache.tuscany.spi.component.SCAObject;
import org.apache.tuscany.spi.event.Event;
import org.apache.tuscany.spi.services.management.TuscanyManagementService;
@@ -40,6 +42,10 @@
public class ComponentManagerImpl implements ComponentManager {
private TuscanyManagementService managementService;
private Map<URI, Component> components;
+
+ private List<SCAObject> scaObjects = new ArrayList<SCAObject>();
+ private List<Object> modelObjects = new ArrayList<Object>();
+
public ComponentManagerImpl() {
components = new ConcurrentHashMap<URI, Component>();
@@ -87,5 +93,36 @@
public void onEvent(Event event) {
throw new UnsupportedOperationException();
+ }
+
+ public void add(SCAObject object, Object model) {
+ scaObjects.add(object);
+ modelObjects.add(model);
+ }
+
+ public <T> T getModelObject(Class<T> modelType, SCAObject object) {
+ for(int i=0; i<scaObjects.size(); i++) {
+ if(scaObjects.get(i) == object) {
+ return modelType.cast(modelObjects.get(i));
+ }
+ }
+ return null;
+ }
+
+ public List<Object> getModelObjects() {
+ return modelObjects;
+ }
+
+ public <T extends SCAObject> T getSCAObject(Class<T> objectType, Object model) {
+ for(int i=0; i<modelObjects.size(); i++) {
+ if(modelObjects.get(i) == model) {
+ return objectType.cast(scaObjects.get(i));
+ }
+ }
+ return null;
+ }
+
+ public List<SCAObject> getSCAObjects() {
+ return scaObjects;
}
}
Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java?view=diff&rev=528640&r1=528639&r2=528640
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java Fri Apr 13 13:12:12 2007
@@ -125,35 +125,39 @@
// build runtime artifacts
build(componentDef, deploymentContext);
-
- Map<SCAObject, Object> models = ((BuilderRegistryImpl)builder).getModels();
- for (Map.Entry<SCAObject, Object> entry : models.entrySet()) {
- Object model = entry.getValue();
+
+ Collection<Component> components = deploymentContext.getComponents().values();
+ for (Component toRegister : components) {
+ try {
+ componentManager.register(toRegister);
+ } catch (RegistrationException e) {
+ throw new BuilderInstantiationException("Error registering component", e);
+ }
+ }
+
+ List<SCAObject> scaObjects = componentManager.getSCAObjects();
+ List<Object> modelObjects = componentManager.getModelObjects();
+ for (int i = 0; i < scaObjects.size(); i++) {
+ Object model = modelObjects.get(i);
+ SCAObject scaObject = scaObjects.get(i);
if (model instanceof org.apache.tuscany.assembly.Component) {
- connect(models, (Component)entry.getKey(), (org.apache.tuscany.assembly.Component)model);
+ connect((Component)scaObject, (org.apache.tuscany.assembly.Component)model);
} else if (model instanceof CompositeReference) {
try {
- connect(models, (Reference)entry.getKey(), (CompositeReference)model);
+ connect((Reference)scaObject, (CompositeReference)model);
} catch (IncompatibleInterfaceContractException e) {
throw new IllegalStateException(e);
}
} else if (model instanceof CompositeService) {
try {
- connect(models, (Service)entry.getKey(), (CompositeService)model);
+ connect((Service)scaObject, (CompositeService)model);
} catch (IncompatibleInterfaceContractException e) {
throw new IllegalStateException(e);
}
}
}
- Collection<Component> components = deploymentContext.getComponents().values();
- for (Component toRegister : components) {
- try {
- componentManager.register(toRegister);
- } catch (RegistrationException e) {
- throw new BuilderInstantiationException("Error registering component", e);
- }
- }
+
return components;
}
@@ -179,9 +183,7 @@
return null;
}
- public void connect(Map<SCAObject, Object> models,
- Component source,
- org.apache.tuscany.assembly.Component definition) throws WiringException {
+ public void connect(Component source, org.apache.tuscany.assembly.Component definition) throws WiringException {
if (definition.getImplementation() instanceof Composite) {
// FIXME: Should we connect recusively?
@@ -198,7 +200,7 @@
// TODO: Assume a component reference can only be promoted by at
// most one composite reference
CompositeReference compositeReference = promoted.get(0);
- Reference target = (Reference)getSCAObject(models, compositeReference);
+ Reference target = componentManager.getSCAObject(Reference.class, compositeReference);
// FIXME: Assume we only have one binding
ReferenceBinding binding = target.getReferenceBindings().get(0);
URI targetUri = binding.getTargetUri();
@@ -216,7 +218,7 @@
}
binding.setWire(wire);
try {
- attachInvokers(targetUri.getFragment(), wire, binding, binding);
+ attachInvokers(targetUri.getFragment(), wire, source, binding);
} catch (TargetInvokerCreationException e) {
throw new WireCreationException("Error creating invoker", sourceUri, targetUri, e);
}
@@ -226,7 +228,7 @@
for (ComponentService service : services) {
org.apache.tuscany.assembly.Component targetCompoent = service.getBinding(SCABinding.class)
.getComponent();
- Component target = (Component)getSCAObject(models, targetCompoent);
+ Component target = componentManager.getSCAObject(Component.class, targetCompoent);
URI targetUri = URI.create(target.getUri() + "#" + service.getName());
if (target == null && (refDefinition.getMultiplicity() == Multiplicity.ZERO_ONE || refDefinition
.getMultiplicity() == Multiplicity.ZERO_N)) {
@@ -272,18 +274,12 @@
}
}
- protected void connect(Map<SCAObject, Object> models, Service service, CompositeService definition)
- throws WiringException, IncompatibleInterfaceContractException {
+ protected void connect(Service service, CompositeService definition) throws WiringException,
+ IncompatibleInterfaceContractException {
SCABinding scaBinding = definition.getPromotedService().getBinding(SCABinding.class);
org.apache.tuscany.assembly.Component targetComponent = scaBinding.getComponent();
- Component target = null;
- for (Map.Entry<SCAObject, Object> entry : models.entrySet()) {
- if (entry.getValue() == targetComponent) {
- target = (Component)entry.getKey();
- break;
- }
- }
+ Component target = componentManager.getSCAObject(Component.class, targetComponent);
if (target == null) {
throw new ComponentNotFoundException("Target not found", URI.create(targetComponent.getName()));
}
@@ -305,16 +301,17 @@
}
}
- protected void connect(Map<SCAObject, Object> models,
- org.apache.tuscany.spi.component.Reference reference,
- CompositeReference definition) throws WiringException,
- IncompatibleInterfaceContractException {
+ protected void connect(org.apache.tuscany.spi.component.Reference reference, CompositeReference definition)
+ throws WiringException, IncompatibleInterfaceContractException {
URI sourceUri = reference.getUri();
for (ReferenceBinding binding : reference.getReferenceBindings()) {
// create wire
if (Wire.LOCAL_BINDING.equals(binding.getBindingType())) {
URI targetUri = binding.getTargetUri();
InterfaceContract contract = binding.getBindingInterfaceContract();
+ if (contract == null) {
+ contract = definition.getInterfaceContract();
+ }
QName type = binding.getBindingType();
Wire wire = createWire(sourceUri, targetUri, definition.getInterfaceContract(), contract, type);
binding.setWire(wire);
Modified: incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/core/binding/local/LocalBindingBuilderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/core/binding/local/LocalBindingBuilderTestCase.java?view=diff&rev=528640&r1=528639&r2=528640
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/core/binding/local/LocalBindingBuilderTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/core/binding/local/LocalBindingBuilderTestCase.java Fri Apr 13 13:12:12 2007
@@ -18,11 +18,15 @@
*/
package org.apache.tuscany.core.binding.local;
+import java.net.URI;
+
import junit.framework.TestCase;
import org.apache.tuscany.assembly.CompositeService;
import org.apache.tuscany.assembly.impl.CompositeServiceImpl;
+import org.apache.tuscany.core.deployer.RootDeploymentContext;
import org.apache.tuscany.spi.component.ServiceBinding;
+import org.apache.tuscany.spi.deployer.DeploymentContext;
/**
* @version $Rev$ $Date$
@@ -33,7 +37,9 @@
LocalBindingBuilder builder = new LocalBindingBuilder();
CompositeService def = new CompositeServiceImpl();
def.setName("foo");
- ServiceBinding binding = builder.build(def, null, null);
+ DeploymentContext context = new RootDeploymentContext(null, URI.create("default"), URI.create("/default/"),
+ null, null);
+ ServiceBinding binding = builder.build(def, null, context);
assertEquals(LocalServiceBinding.class, binding.getClass());
}
}
Modified: incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryNoBindingsTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryNoBindingsTestCase.java?view=diff&rev=528640&r1=528639&r2=528640
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryNoBindingsTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryNoBindingsTestCase.java Fri Apr 13 13:12:12 2007
@@ -18,19 +18,27 @@
*/
package org.apache.tuscany.core.builder;
+import java.net.URI;
+
import junit.framework.TestCase;
+import org.apache.tuscany.assembly.ComponentReference;
import org.apache.tuscany.assembly.ComponentService;
import org.apache.tuscany.assembly.CompositeReference;
import org.apache.tuscany.assembly.CompositeService;
import org.apache.tuscany.assembly.Multiplicity;
+import org.apache.tuscany.assembly.SCABinding;
+import org.apache.tuscany.assembly.impl.ComponentImpl;
+import org.apache.tuscany.assembly.impl.ComponentReferenceImpl;
import org.apache.tuscany.assembly.impl.ComponentServiceImpl;
import org.apache.tuscany.assembly.impl.CompositeReferenceImpl;
import org.apache.tuscany.assembly.impl.CompositeServiceImpl;
+import org.apache.tuscany.assembly.impl.SCABindingImpl;
import org.apache.tuscany.core.binding.local.LocalBindingBuilder;
import org.apache.tuscany.core.binding.local.LocalBindingDefinition;
import org.apache.tuscany.core.binding.local.LocalReferenceBinding;
import org.apache.tuscany.core.binding.local.LocalServiceBinding;
+import org.apache.tuscany.core.component.ComponentManagerImpl;
import org.apache.tuscany.spi.builder.BuilderRegistry;
import org.apache.tuscany.spi.component.Component;
import org.apache.tuscany.spi.component.Reference;
@@ -56,6 +64,9 @@
ComponentService componentService = new ComponentServiceImpl();
componentService.setName("foo");
definition.setPromotedService(componentService);
+ SCABinding binding2 = new SCABindingImpl();
+ binding2.setComponent(new ComponentImpl());
+ componentService.getBindings().add(binding2);
EasyMock.replay(deploymentContext);
EasyMock.replay(parent);
@@ -71,6 +82,12 @@
ReferenceBinding binding = EasyMock.createNiceMock(ReferenceBinding.class);
EasyMock.replay(binding);
CompositeReference definition = new CompositeReferenceImpl();
+ ComponentReference componentReference = new ComponentReferenceImpl();
+ componentReference.setName("foo");
+ definition.getPromotedReferences().add(componentReference);
+ SCABinding binding2 = new SCABindingImpl();
+ binding2.setComponent(new ComponentImpl());
+ componentReference.getBindings().add(binding2);
definition.setName("foo");
definition.setMultiplicity(Multiplicity.ONE_ONE);
EasyMock.replay(deploymentContext);
@@ -87,8 +104,9 @@
protected void setUp() throws Exception {
super.setUp();
deploymentContext = EasyMock.createMock(DeploymentContext.class);
+ EasyMock.expect(deploymentContext.getComponentId()).andReturn(URI.create("/default/")).anyTimes();
parent = EasyMock.createNiceMock(Component.class);
- registry = new BuilderRegistryImpl(null);
+ registry = new BuilderRegistryImpl(new ComponentManagerImpl(), null);
registry.register(LocalBindingDefinition.class, new LocalBindingBuilder());
}
Modified: incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryTestCase.java?view=diff&rev=528640&r1=528639&r2=528640
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryTestCase.java Fri Apr 13 13:12:12 2007
@@ -24,6 +24,7 @@
import junit.framework.TestCase;
+import org.apache.tuscany.assembly.ComponentReference;
import org.apache.tuscany.assembly.ComponentService;
import org.apache.tuscany.assembly.Composite;
import org.apache.tuscany.assembly.CompositeReference;
@@ -31,13 +32,17 @@
import org.apache.tuscany.assembly.Implementation;
import org.apache.tuscany.assembly.Multiplicity;
import org.apache.tuscany.assembly.Property;
+import org.apache.tuscany.assembly.SCABinding;
import org.apache.tuscany.assembly.impl.BindingImpl;
import org.apache.tuscany.assembly.impl.ComponentImpl;
+import org.apache.tuscany.assembly.impl.ComponentReferenceImpl;
import org.apache.tuscany.assembly.impl.ComponentServiceImpl;
import org.apache.tuscany.assembly.impl.ComponentTypeImpl;
import org.apache.tuscany.assembly.impl.CompositeImpl;
import org.apache.tuscany.assembly.impl.CompositeReferenceImpl;
import org.apache.tuscany.assembly.impl.CompositeServiceImpl;
+import org.apache.tuscany.assembly.impl.SCABindingImpl;
+import org.apache.tuscany.core.component.ComponentManagerImpl;
import org.apache.tuscany.core.component.scope.ScopeRegistryImpl;
import org.apache.tuscany.core.component.scope.StatelessScopeContainer;
import org.apache.tuscany.spi.Scope;
@@ -99,7 +104,7 @@
ScopeRegistry scopeRegistry = new ScopeRegistryImpl();
scopeRegistry.register(scopeContainer);
- BuilderRegistry registry = new BuilderRegistryImpl(scopeRegistry);
+ BuilderRegistry registry = new BuilderRegistryImpl(new ComponentManagerImpl(), scopeRegistry);
registry.register(Composite.class, builder);
assertSame(component, registry.build(componentDefinition, deploymentContext));
@@ -108,7 +113,7 @@
@SuppressWarnings({"unchecked"})
public void testServiceBindingBuilderDispatch() throws Exception {
- BuilderRegistry registry = new BuilderRegistryImpl(null);
+ BuilderRegistry registry = new BuilderRegistryImpl(new ComponentManagerImpl(), null);
ServiceBinding binding = EasyMock.createNiceMock(ServiceBinding.class);
EasyMock.replay(binding);
BindingBuilder<MockBindingDefinition> builder = EasyMock.createMock(BindingBuilder.class);
@@ -124,6 +129,9 @@
definition.getBindings().add(new MockBindingDefinition());
ComponentService target = new ComponentServiceImpl();
target.setName("foo");
+ SCABinding binding2 = new SCABindingImpl();
+ binding2.setComponent(new ComponentImpl());
+ target.getBindings().add(binding2);
definition.setPromotedService(target);
Service service = registry.build(definition, deploymentContext);
assertEquals(2, service.getServiceBindings().size());
@@ -131,7 +139,7 @@
@SuppressWarnings({"unchecked"})
public void testReferenceBindingBuilderDispatch() throws Exception {
- BuilderRegistry registry = new BuilderRegistryImpl(null);
+ BuilderRegistry registry = new BuilderRegistryImpl(new ComponentManagerImpl(), null);
ReferenceBinding binding = EasyMock.createNiceMock(ReferenceBinding.class);
EasyMock.replay(binding);
BindingBuilder<MockBindingDefinition> builder = EasyMock.createMock(BindingBuilder.class);
@@ -146,6 +154,14 @@
definition.setMultiplicity(Multiplicity.ONE_ONE);
definition.getBindings().add(new MockBindingDefinition());
definition.getBindings().add(new MockBindingDefinition());
+
+ ComponentReference componentReference = new ComponentReferenceImpl();
+ componentReference.setName("foo");
+ definition.getPromotedReferences().add(componentReference);
+ SCABinding binding2 = new SCABindingImpl();
+ binding2.setComponent(new ComponentImpl());
+ componentReference.getBindings().add(binding2);
+
Reference reference = registry.build(definition, deploymentContext);
assertEquals(2, reference.getReferenceBindings().size());
}
Modified: incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/context/PojoAtomicComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/context/PojoAtomicComponent.java?view=diff&rev=528640&r1=528639&r2=528640
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/context/PojoAtomicComponent.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/context/PojoAtomicComponent.java Fri Apr 13 13:12:12 2007
@@ -219,8 +219,13 @@
}
configuration.setObjectFactories(element, factories);
} else {
- ObjectFactory<?> factory = createWireFactory(element.getType(), wireList.get(0));
- configuration.setObjectFactory(element, factory);
+ if (wireList == null && ref.getMultiplicity() == Multiplicity.ONE_ONE) {
+ throw new IllegalStateException("Required reference is missing: " + ref.getName());
+ }
+ if (wireList != null && !wireList.isEmpty()) {
+ ObjectFactory<?> factory = createWireFactory(element.getType(), wireList.get(0));
+ configuration.setObjectFactory(element, factory);
+ }
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org