You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by sv...@apache.org on 2007/04/19 20:00:07 UTC
svn commit: r530503 - in /incubator/tuscany/java/sca/modules/core/src:
main/java/org/apache/tuscany/core/builder/
main/java/org/apache/tuscany/core/component/
main/java/org/apache/tuscany/core/deployer/
main/java/org/apache/tuscany/core/implementation/...
Author: svkrish
Date: Thu Apr 19 11:00:06 2007
New Revision: 530503
URL: http://svn.apache.org/viewvc?view=rev&rev=530503
Log:
Changes resulting from fixing https://issues.apache.org/jira/browse/TUSCANY-1215
Modified:
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/CompositeComponentImpl.java
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeBuilder.java
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBuilder.java
incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryTestCase.java
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=530503&r1=530502&r2=530503
==============================================================================
--- 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 Thu Apr 19 11:00:06 2007
@@ -20,6 +20,7 @@
import java.net.URI;
import java.util.HashMap;
+import java.util.Hashtable;
import java.util.Map;
import org.apache.tuscany.assembly.Binding;
@@ -111,13 +112,19 @@
throw new NoRegisteredBuilderException("No builder registered for implementation", name);
}
Component component = componentBuilder.build(componentDef, context);
- componentManager.add(component, componentDef);
assert component != null;
- Map<String, Property> properties = new HashMap<String, Property>();
- for (Property p : componentDef.getProperties()) {
- properties.put(p.getName(), p);
+
+ //if there are builders that have not handled properties, then ensure
+ //it is copied into the component atleast at this point
+ if (componentDef.getProperties().size() != component.getProperties().size()) {
+ Map<String, Property> compProperties = new Hashtable<String, Property>();
+ for (Property aProperty : componentDef.getProperties()) {
+ compProperties.put(aProperty.getName(), aProperty);
+ }
+ component.setProperties(compProperties);
}
- component.setDefaultPropertyValues(properties);
+
+ componentManager.add(component, componentDef);
// FIXME: How to deal scopes?
// Scope scope = componentDef.getImplementation().getScope();
Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/component/CompositeComponentImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/component/CompositeComponentImpl.java?view=diff&rev=530503&r1=530502&r2=530503
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/component/CompositeComponentImpl.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/component/CompositeComponentImpl.java Thu Apr 19 11:00:06 2007
@@ -69,7 +69,7 @@
}
public void configureProperty(String propertyName) {
- throw new UnsupportedOperationException();
+ //throw new UnsupportedOperationException();
}
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=530503&r1=530502&r2=530503
==============================================================================
--- 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 Thu Apr 19 11:00:06 2007
@@ -18,6 +18,7 @@
*/
package org.apache.tuscany.core.deployer;
+import java.io.IOException;
import java.net.URI;
import java.util.ArrayList;
import java.util.Collection;
@@ -26,6 +27,7 @@
import javax.xml.namespace.QName;
import javax.xml.stream.XMLInputFactory;
+import org.apache.tuscany.assembly.AssemblyFactory;
import org.apache.tuscany.assembly.ComponentProperty;
import org.apache.tuscany.assembly.ComponentReference;
import org.apache.tuscany.assembly.ComponentService;
@@ -33,8 +35,11 @@
import org.apache.tuscany.assembly.CompositeReference;
import org.apache.tuscany.assembly.CompositeService;
import org.apache.tuscany.assembly.Multiplicity;
+import org.apache.tuscany.assembly.Property;
import org.apache.tuscany.assembly.SCABinding;
import org.apache.tuscany.assembly.impl.DefaultAssemblyFactory;
+import org.apache.tuscany.assembly.util.InvalidValueException;
+import org.apache.tuscany.assembly.util.PropertyUtil;
import org.apache.tuscany.core.builder.ComponentNotFoundException;
import org.apache.tuscany.core.builder.IncompatibleInterfacesException;
import org.apache.tuscany.core.builder.WireCreationException;
@@ -50,6 +55,7 @@
import org.apache.tuscany.interfacedef.impl.DefaultInterfaceContractMapper;
import org.apache.tuscany.spi.Scope;
import org.apache.tuscany.spi.builder.Builder;
+import org.apache.tuscany.spi.builder.BuilderConfigException;
import org.apache.tuscany.spi.builder.BuilderException;
import org.apache.tuscany.spi.builder.BuilderInstantiationException;
import org.apache.tuscany.spi.builder.BuilderRegistry;
@@ -118,6 +124,24 @@
public void setScopeRegistry(ScopeRegistry scopeRegistry) {
this.scopeRegistry = scopeRegistry;
}
+
+ private org.apache.tuscany.assembly.Component createDefaultComponentForDeployedComposite(Composite composite) {
+ AssemblyFactory assemblyFactory = new DefaultAssemblyFactory();
+ org.apache.tuscany.assembly.Component componentDef = assemblyFactory.createComponent();
+ componentDef.setName(composite.getName().getLocalPart());
+ componentDef.setImplementation(composite);
+ ComponentProperty componentProperty = null;
+ for (Property property : composite.getProperties()) {
+ componentProperty = assemblyFactory.createComponentProperty();
+ componentProperty.setName(property.getName());
+ componentProperty.setMany(property.isMany());
+ componentProperty.setXSDElement(property.getXSDElement());
+ componentProperty.setXSDType(property.getXSDType());
+ componentProperty.setProperty(property);
+ componentDef.getProperties().add(componentProperty);
+ }
+ return componentDef;
+ }
public Collection<Component> deploy(Composite composite) throws BuilderException, ResolutionException {
@SuppressWarnings("unchecked")
@@ -128,17 +152,15 @@
DeploymentContext deploymentContext = new RootDeploymentContext(null, groupId, componentId, xmlFactory,
scopeContainer);
- // Create a default component implemented by the given composite
- org.apache.tuscany.assembly.Component componentDef = new DefaultAssemblyFactory().createComponent();
- componentDef.setName(composite.getName().getLocalPart());
- componentDef.setImplementation(composite);
-
+
+ org.apache.tuscany.assembly.Component componentDef =
+ createDefaultComponentForDeployedComposite(composite);
+
// Adjust the composite graph and wire the references with SCA bindings
processSCABinding(composite);
- // Build runtime artifacts using the builders
builder.build(componentDef, deploymentContext);
-
+
// Register all components with the component manager
Collection<Component> components = deploymentContext.getComponents().values();
for (Component toRegister : components) {
@@ -156,7 +178,6 @@
Object model = componentManager.getModelObject(Object.class, scaObject);
if (model instanceof org.apache.tuscany.assembly.Component) {
connect((Component)scaObject, (org.apache.tuscany.assembly.Component)model);
- configureProperties((Component)scaObject, (org.apache.tuscany.assembly.Component)model);
} else if (model instanceof CompositeService) {
try {
connect((Service)scaObject, (CompositeService)model);
@@ -209,20 +230,7 @@
}
}
}
-
- public void configureProperties(Component source, org.apache.tuscany.assembly.Component definition)
- throws BuilderException {
- if (source == null) {
- throw new ComponentNotFoundException("Source not found", URI.create(definition.getName()));
- }
-
- for (ComponentProperty property : definition.getProperties()) {
- if (property.getValue() != null) {
- source.configureProperty(property.getName());
- }
- }
- }
-
+
public void connect(Component source, org.apache.tuscany.assembly.Component definition) throws WiringException {
if (definition.getImplementation() instanceof Composite) {
Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeBuilder.java?view=diff&rev=530503&r1=530502&r2=530503
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeBuilder.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeBuilder.java Thu Apr 19 11:00:06 2007
@@ -22,6 +22,8 @@
import org.apache.tuscany.assembly.CompositeReference;
import org.apache.tuscany.assembly.CompositeService;
import org.apache.tuscany.assembly.Implementation;
+import org.apache.tuscany.assembly.util.PropertyUtil;
+import org.apache.tuscany.spi.builder.BuilderConfigException;
import org.apache.tuscany.spi.builder.BuilderException;
import org.apache.tuscany.spi.builder.BuilderInstantiationException;
import org.apache.tuscany.spi.component.Component;
@@ -40,7 +42,15 @@
public Component build(Component component, Composite componentType, DeploymentContext deploymentContext)
throws BuilderException {
+
for (org.apache.tuscany.assembly.Component definition : componentType.getComponents()) {
+ //update component defn. properties that might be using $source with the
+ //composites configured property values
+ try {
+ PropertyUtil.sourceComponentProperties(component.getProperties(), definition);
+ } catch (Exception e) {
+ throw new BuilderConfigException(e);
+ }
builderRegistry.build(definition, deploymentContext);
}
for (org.apache.tuscany.assembly.Service definition : componentType.getServices()) {
@@ -65,5 +75,4 @@
}
return component;
}
-
}
Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBuilder.java?view=diff&rev=530503&r1=530502&r2=530503
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBuilder.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBuilder.java Thu Apr 19 11:00:06 2007
@@ -20,6 +20,7 @@
import java.net.URI;
+import org.apache.tuscany.assembly.ComponentProperty;
import org.apache.tuscany.assembly.Composite;
import org.apache.tuscany.core.component.CompositeComponentImpl;
import org.apache.tuscany.core.deployer.ChildDeploymentContext;
@@ -43,7 +44,12 @@
URI name = URI.create(context.getComponentId() + definition.getName());
Component component = new CompositeComponentImpl(name);
-
+
+ //configure the composite component with properties
+ for (ComponentProperty compProp : definition.getProperties()) {
+ component.getProperties().put(compProp.getName(), compProp);
+ }
+
return build(component, composite, childContext);
}
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=530503&r1=530502&r2=530503
==============================================================================
--- 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 Thu Apr 19 11:00:06 2007
@@ -86,8 +86,9 @@
for (Property p : componentDefinition.getProperties()) {
properties.put(p.getName(), p);
}
- component.setDefaultPropertyValues(properties);
+ component.setProperties(properties);
component.setScopeContainer(scopeContainer);
+ EasyMock.expect(component.getProperties()).andReturn(properties).anyTimes();
EasyMock.expect(component.getUri()).andReturn(componentId);
EasyMock.replay(component);
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org