summaryrefslogtreecommitdiffstats
path: root/java/sca/modules/builder/src/main/java/org/apache/tuscany
diff options
context:
space:
mode:
authorrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-10-16 05:42:26 +0000
committerrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-10-16 05:42:26 +0000
commit4ae4002366ded3f4b19cd96f403d8b418fcf00a1 (patch)
tree9179891f11c9add734a777713cabf7e39a980908 /java/sca/modules/builder/src/main/java/org/apache/tuscany
parentd4cc9a0bdd43477858b8ac67b69a4cdd615ec741 (diff)
This is to change the Monitor to be request scoped for most of the cases:
Refactor the ArtifactProcessor/ModelResolver to take a ProcessorContext that holds context such as Monitor, Contribution for the contribution/artifact processing methods Refactor the Builder to take a BuilderContext that holds context such as Monitor, Definitions, Base binding mapping for the building methods Change the processor/resolver/builder implementation classes to not cache the Monitor git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@825773 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/sca/modules/builder/src/main/java/org/apache/tuscany')
-rw-r--r--java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/BindingURIBuilderImpl.java23
-rw-r--r--java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentBuilderImpl.java78
-rw-r--r--java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentReferenceBindingBuilderImpl.java13
-rw-r--r--java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentReferencePromotionBuilderImpl.java6
-rw-r--r--java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentServiceBindingBuilderImpl.java13
-rw-r--r--java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositeCloneBuilderImpl.java5
-rw-r--r--java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositeComponentTypeBuilderImpl.java37
-rw-r--r--java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositeIncludeBuilderImpl.java6
-rw-r--r--java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositePolicyBuilderImpl.java55
-rw-r--r--java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/EndpointBuilderImpl.java12
-rw-r--r--java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/EndpointReferenceBuilderImpl.java26
-rw-r--r--java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ModelBuilderImpl.java46
-rw-r--r--java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/PolicyAttachmentBuilderImpl.java10
-rw-r--r--java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/StructuralURIBuilderImpl.java120
14 files changed, 159 insertions, 291 deletions
diff --git a/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/BindingURIBuilderImpl.java b/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/BindingURIBuilderImpl.java
index bce2b9b2ea..205a3157de 100644
--- a/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/BindingURIBuilderImpl.java
+++ b/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/BindingURIBuilderImpl.java
@@ -32,9 +32,9 @@ import org.apache.tuscany.sca.assembly.ComponentService;
import org.apache.tuscany.sca.assembly.Composite;
import org.apache.tuscany.sca.assembly.Implementation;
import org.apache.tuscany.sca.assembly.Service;
+import org.apache.tuscany.sca.assembly.builder.BuilderContext;
import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
-import org.apache.tuscany.sca.assembly.builder.DeployedCompositeBuilder;
import org.apache.tuscany.sca.assembly.builder.Messages;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
import org.apache.tuscany.sca.definitions.Definitions;
@@ -45,7 +45,7 @@ import org.apache.tuscany.sca.monitor.Monitor;
*
* @version $Rev$ $Date$
*/
-public class BindingURIBuilderImpl implements CompositeBuilder, DeployedCompositeBuilder {
+public class BindingURIBuilderImpl implements CompositeBuilder {
public BindingURIBuilderImpl(ExtensionPointRegistry registry) {
}
@@ -55,27 +55,12 @@ public class BindingURIBuilderImpl implements CompositeBuilder, DeployedComposit
*
* @param composite the composite to be configured
*/
- public Composite build(Composite composite, Definitions definitions, Monitor monitor)
+ public Composite build(Composite composite, BuilderContext context)
throws CompositeBuilderException {
- configureBindingURIs(composite, null, definitions, null, monitor);
+ configureBindingURIs(composite, null, context.getDefinitions(), context.getBindingBaseURIs(), context.getMonitor());
return composite;
}
- /**
- * Fully resolve the binding URIs based on available information. This includes information
- * from the ".composite" files, from resources associated with the binding, e.g. WSDL files,
- * from any associated policies and from the default information for each binding type.
- *
- * @param composite the composite to be configured
- * @param defaultBindings list of default binding configurations
- */
- public Composite build(Composite composite,
- Definitions definitions,
- Map<QName, List<String>> defaultBindings,
- Monitor monitor) throws CompositeBuilderException {
- configureBindingURIs(composite, null, definitions, defaultBindings, monitor);
- return composite;
- }
/**
* Fully resolve the binding URIs based on available information. This includes information
diff --git a/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentBuilderImpl.java b/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentBuilderImpl.java
index 6b96f9b21e..1f727bb5c0 100644
--- a/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentBuilderImpl.java
+++ b/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentBuilderImpl.java
@@ -51,6 +51,7 @@ import org.apache.tuscany.sca.assembly.Reference;
import org.apache.tuscany.sca.assembly.SCABinding;
import org.apache.tuscany.sca.assembly.SCABindingFactory;
import org.apache.tuscany.sca.assembly.Service;
+import org.apache.tuscany.sca.assembly.builder.BuilderContext;
import org.apache.tuscany.sca.assembly.builder.BuilderExtensionPoint;
import org.apache.tuscany.sca.assembly.builder.ImplementationBuilder;
import org.apache.tuscany.sca.assembly.builder.Messages;
@@ -62,7 +63,6 @@ import org.apache.tuscany.sca.interfacedef.IncompatibleInterfaceContractExceptio
import org.apache.tuscany.sca.interfacedef.InterfaceContract;
import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
import org.apache.tuscany.sca.monitor.Monitor;
-import org.apache.tuscany.sca.monitor.MonitorFactory;
import org.apache.tuscany.sca.policy.ExtensionType;
import org.apache.tuscany.sca.policy.PolicySubject;
import org.w3c.dom.Document;
@@ -79,7 +79,6 @@ public class ComponentBuilderImpl {
protected static final QName BINDING_SCA_QNAME = new QName(SCA11_NS, BINDING_SCA);
private CompositeComponentTypeBuilderImpl componentTypeBuilder;
- private Monitor monitor;
private AssemblyFactory assemblyFactory;
private SCABindingFactory scaBindingFactory;
private DocumentBuilderFactory documentBuilderFactory;
@@ -89,8 +88,6 @@ public class ComponentBuilderImpl {
public ComponentBuilderImpl(ExtensionPointRegistry registry) {
UtilityExtensionPoint utilities = registry.getExtensionPoint(UtilityExtensionPoint.class);
- MonitorFactory monitorFactory = utilities.getUtility(MonitorFactory.class);
- monitor = monitorFactory.createMonitor();
FactoryExtensionPoint modelFactories = registry.getExtensionPoint(FactoryExtensionPoint.class);
assemblyFactory = modelFactories.getFactory(AssemblyFactory.class);
@@ -113,8 +110,9 @@ public class ComponentBuilderImpl {
* @Param parentComposite the composite that contains the component being configured. Required for property processing
* @param component the component to be configured
*/
- public void configureComponentFromComponentType(Component outerComponent, Composite parentComposite, Component component) {
+ public void configureComponentFromComponentType(Component outerComponent, Composite parentComposite, Component component, BuilderContext context) {
+ Monitor monitor = context.getMonitor();
monitor.pushContext("Component: " + component.getName().toString());
try {
@@ -132,7 +130,7 @@ public class ComponentBuilderImpl {
if (impl != null) {
ImplementationBuilder builder = builders.getImplementationBuilder(impl.getType());
if (builder != null) {
- builder.build(component, impl, monitor);
+ builder.build(component, impl, context);
}
}
@@ -141,17 +139,17 @@ public class ComponentBuilderImpl {
// composite level property values. Hence we have to calculate whether the component
// type property value should be overridden by this component's property value
// before we go ahead and calculate the component type
- configureProperties(outerComponent, parentComposite, component);
+ configureProperties(outerComponent, parentComposite, component, monitor);
// create the component type for this component
// taking any nested composites into account
- createComponentType(component);
+ createComponentType(component, context);
// configure services based on the calculated component type
- configureServices(component);
+ configureServices(component, monitor);
// configure services based on the calculated component type
- configureReferences(component);
+ configureReferences(component, monitor);
} finally {
monitor.popContext();
}
@@ -195,10 +193,10 @@ public class ComponentBuilderImpl {
*
* @param component
*/
- private void createComponentType(Component component) {
+ private void createComponentType(Component component, BuilderContext context) {
Implementation implementation = component.getImplementation();
if (implementation instanceof Composite) {
- componentTypeBuilder.createComponentType(component, (Composite)implementation);
+ componentTypeBuilder.createComponentType(component, (Composite)implementation, context);
}
}
@@ -208,15 +206,15 @@ public class ComponentBuilderImpl {
*
* @param component
*/
- private void configureServices(Component component) {
+ private void configureServices(Component component, Monitor monitor) {
// If the component type has services that are not described in this
// component then create services for this component
- addServicesFromComponentType(component);
+ addServicesFromComponentType(component, monitor);
// Connect this component's services to the
// services from its component type
- connectServicesToComponentType(component);
+ connectServicesToComponentType(component, monitor);
// look at each component service in turn and calculate its
// configuration based on OASIS rules
@@ -231,7 +229,7 @@ public class ComponentBuilderImpl {
}
// interface contracts
- calculateServiceInterfaceContract(component, componentService, componentTypeService);
+ calculateServiceInterfaceContract(component, componentService, componentTypeService, monitor);
// bindings
calculateBindings(componentService, componentTypeService);
@@ -256,15 +254,15 @@ public class ComponentBuilderImpl {
*
* @param component
*/
- private void configureReferences(Component component) {
+ private void configureReferences(Component component, Monitor monitor) {
// If the component type has references that are not described in this
// component then create references for this component
- addReferencesFromComponentType(component);
+ addReferencesFromComponentType(component, monitor);
// Connect this component's references to the
// references from its component type
- connectReferencesToComponentType(component);
+ connectReferencesToComponentType(component, monitor);
// look at each component reference in turn and calculate its
// configuration based on OASIS rules
@@ -278,10 +276,10 @@ public class ComponentBuilderImpl {
}
// reference multiplicity
- reconcileReferenceMultiplicity(component, componentReference, componentTypeReference);
+ reconcileReferenceMultiplicity(component, componentReference, componentTypeReference, monitor);
// interface contracts
- calculateReferenceInterfaceContract(component, componentReference, componentTypeReference);
+ calculateReferenceInterfaceContract(component, componentReference, componentTypeReference, monitor);
// bindings
calculateBindings(componentReference, componentTypeReference);
@@ -317,26 +315,26 @@ public class ComponentBuilderImpl {
*
* @param component
*/
- private void configureProperties(Component outerComponent, Composite parentComposite, Component component) {
+ private void configureProperties(Component outerComponent, Composite parentComposite, Component component, Monitor monitor) {
// If the component type has properties that are not described in this
// component then create properties for this component
- addPropertiesFromComponentType(component);
+ addPropertiesFromComponentType(component, monitor);
// Connect this component's properties to the
// properties from its component type
- connectPropertiesToComponentType(component);
+ connectPropertiesToComponentType(component, monitor);
// Reconcile component properties and their component type properties
for (ComponentProperty componentProperty : component.getProperties()) {
- reconcileComponentPropertyWithComponentType(component, componentProperty);
+ reconcileComponentPropertyWithComponentType(component, componentProperty, monitor);
// configure the property value based on the @source attribute
// At the moment this is done in the parent composite component
// type calculation
- processPropertySourceAttribute(outerComponent, parentComposite, component, componentProperty);
+ processPropertySourceAttribute(outerComponent, parentComposite, component, componentProperty, monitor);
// configure the property value based on the @file attribute
- processPropertyFileAttribute(component, componentProperty);
+ processPropertyFileAttribute(component, componentProperty, monitor);
// Check that a value is supplied
if (componentProperty.isMustSupply() && !isPropertyValueSet(componentProperty)) {
@@ -361,7 +359,7 @@ public class ComponentBuilderImpl {
}
}
- private void addServicesFromComponentType(Component component) {
+ private void addServicesFromComponentType(Component component, Monitor monitor) {
// Create a component service for each service
if (component.getImplementation() != null) {
@@ -391,7 +389,7 @@ public class ComponentBuilderImpl {
}
}
- private void addReferencesFromComponentType(Component component) {
+ private void addReferencesFromComponentType(Component component, Monitor monitor) {
// Create a component reference for each reference
if (component.getImplementation() != null) {
@@ -421,7 +419,7 @@ public class ComponentBuilderImpl {
}
}
- private void addPropertiesFromComponentType(Component component) {
+ private void addPropertiesFromComponentType(Component component, Monitor monitor) {
// Create component property for each property
if (component.getImplementation() != null) {
@@ -454,7 +452,7 @@ public class ComponentBuilderImpl {
}
}
- private void connectServicesToComponentType(Component component) {
+ private void connectServicesToComponentType(Component component, Monitor monitor) {
// Connect each component service to the corresponding component type service
for (ComponentService componentService : component.getServices()) {
@@ -492,7 +490,7 @@ public class ComponentBuilderImpl {
}
}
- private void connectReferencesToComponentType(Component component) {
+ private void connectReferencesToComponentType(Component component, Monitor monitor) {
// Connect each component reference to the corresponding component type reference
for (ComponentReference componentReference : component.getReferences()) {
@@ -530,7 +528,7 @@ public class ComponentBuilderImpl {
}
}
- private void connectPropertiesToComponentType(Component component) {
+ private void connectPropertiesToComponentType(Component component, Monitor monitor) {
// Connect each component property to the corresponding component type property
for (ComponentProperty componentProperty : component.getProperties()) {
// check for duplicate property names in component
@@ -560,7 +558,8 @@ public class ComponentBuilderImpl {
private void reconcileReferenceMultiplicity(Component component,
Reference componentReference,
- Reference componentTypeReference) {
+ Reference componentTypeReference,
+ Monitor monitor) {
if (componentReference.getMultiplicity() != null) {
if (!isValidMultiplicityOverride(componentTypeReference.getMultiplicity(), componentReference
.getMultiplicity())) {
@@ -576,7 +575,7 @@ public class ComponentBuilderImpl {
}
}
- private void reconcileComponentPropertyWithComponentType(Component component, ComponentProperty componentProperty) {
+ private void reconcileComponentPropertyWithComponentType(Component component, ComponentProperty componentProperty, Monitor monitor) {
Property componentTypeProperty = componentProperty.getProperty();
if (componentTypeProperty != null) {
@@ -676,7 +675,8 @@ public class ComponentBuilderImpl {
private void processPropertySourceAttribute(Component outerComponent,
Composite parentComposite,
Component component,
- ComponentProperty componentProperty) {
+ ComponentProperty componentProperty,
+ Monitor monitor) {
String source = componentProperty.getSource();
if (source != null) {
@@ -754,7 +754,7 @@ public class ComponentBuilderImpl {
* @param parentCompoent the composite that contains the component
* @param component
*/
- private void processPropertyFileAttribute(Component component, ComponentProperty componentProperty) {
+ private void processPropertyFileAttribute(Component component, ComponentProperty componentProperty, Monitor monitor) {
String file = componentProperty.getFile();
if (file != null) {
try {
@@ -1120,7 +1120,7 @@ public class ComponentBuilderImpl {
* @param topContract the top contract
* @param bottomContract the bottom contract
*/
- private void calculateServiceInterfaceContract(Component component, Service topContract, Service bottomContract) {
+ private void calculateServiceInterfaceContract(Component component, Service topContract, Service bottomContract, Monitor monitor) {
// Use the interface contract from the bottom level contract if
// none is specified on the top level contract
@@ -1160,7 +1160,7 @@ public class ComponentBuilderImpl {
* @param topContract the top contract
* @param bottomContract the bottom contract
*/
- private void calculateReferenceInterfaceContract(Component component, Reference topContract, Reference bottomContract) {
+ private void calculateReferenceInterfaceContract(Component component, Reference topContract, Reference bottomContract, Monitor monitor) {
// Use the interface contract from the bottom level contract if
// none is specified on the top level contract
diff --git a/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentReferenceBindingBuilderImpl.java b/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentReferenceBindingBuilderImpl.java
index 09d37cacb6..c48d868105 100644
--- a/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentReferenceBindingBuilderImpl.java
+++ b/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentReferenceBindingBuilderImpl.java
@@ -25,12 +25,11 @@ import org.apache.tuscany.sca.assembly.ComponentReference;
import org.apache.tuscany.sca.assembly.Composite;
import org.apache.tuscany.sca.assembly.Implementation;
import org.apache.tuscany.sca.assembly.builder.BindingBuilder;
+import org.apache.tuscany.sca.assembly.builder.BuilderContext;
import org.apache.tuscany.sca.assembly.builder.BuilderExtensionPoint;
import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
-import org.apache.tuscany.sca.definitions.Definitions;
-import org.apache.tuscany.sca.monitor.Monitor;
/**
* A composite builder that performs any additional building steps that
@@ -46,9 +45,9 @@ public class ComponentReferenceBindingBuilderImpl implements CompositeBuilder {
this.builders = registry.getExtensionPoint(BuilderExtensionPoint.class);
}
- public Composite build(Composite composite, Definitions definitions, Monitor monitor)
+ public Composite build(Composite composite, BuilderContext context)
throws CompositeBuilderException {
- buildReferenceBindings(composite, monitor);
+ buildReferenceBindings(composite, context);
return composite;
}
@@ -56,7 +55,7 @@ public class ComponentReferenceBindingBuilderImpl implements CompositeBuilder {
return "org.apache.tuscany.sca.assembly.builder.ComponentReferenceBindingBuilder";
}
- private void buildReferenceBindings(Composite composite, Monitor monitor) {
+ private void buildReferenceBindings(Composite composite, BuilderContext context) {
// find all the component reference bindings (starting at top level)
for (Component component : composite.getComponents()) {
@@ -64,7 +63,7 @@ public class ComponentReferenceBindingBuilderImpl implements CompositeBuilder {
for (Binding binding : componentReference.getBindings()) {
BindingBuilder builder = builders.getBindingBuilder(binding.getType());
if (builder != null) {
- builder.build(component, componentReference, binding, monitor);
+ builder.build(component, componentReference, binding, context);
}
}
}
@@ -74,7 +73,7 @@ public class ComponentReferenceBindingBuilderImpl implements CompositeBuilder {
for (Component component : composite.getComponents()) {
Implementation implementation = component.getImplementation();
if (implementation instanceof Composite) {
- buildReferenceBindings((Composite)implementation, monitor);
+ buildReferenceBindings((Composite)implementation, context);
}
}
}
diff --git a/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentReferencePromotionBuilderImpl.java b/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentReferencePromotionBuilderImpl.java
index 7e7a96b016..aaa9cbe82c 100644
--- a/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentReferencePromotionBuilderImpl.java
+++ b/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentReferencePromotionBuilderImpl.java
@@ -29,11 +29,11 @@ import org.apache.tuscany.sca.assembly.CompositeReference;
import org.apache.tuscany.sca.assembly.Implementation;
import org.apache.tuscany.sca.assembly.Reference;
import org.apache.tuscany.sca.assembly.SCABinding;
+import org.apache.tuscany.sca.assembly.builder.BuilderContext;
import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
import org.apache.tuscany.sca.core.FactoryExtensionPoint;
-import org.apache.tuscany.sca.definitions.Definitions;
import org.apache.tuscany.sca.monitor.Monitor;
/**
@@ -49,9 +49,9 @@ public class ComponentReferencePromotionBuilderImpl implements CompositeBuilder
this.assemblyFactory = factories.getFactory(AssemblyFactory.class);
}
- public Composite build(Composite composite, Definitions definitions, Monitor monitor)
+ public Composite build(Composite composite, BuilderContext context)
throws CompositeBuilderException {
- configureNestedCompositeReferences(composite, monitor);
+ configureNestedCompositeReferences(composite, context.getMonitor());
return composite;
}
diff --git a/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentServiceBindingBuilderImpl.java b/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentServiceBindingBuilderImpl.java
index 7fe0689c23..9a74023504 100644
--- a/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentServiceBindingBuilderImpl.java
+++ b/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentServiceBindingBuilderImpl.java
@@ -25,12 +25,11 @@ import org.apache.tuscany.sca.assembly.ComponentService;
import org.apache.tuscany.sca.assembly.Composite;
import org.apache.tuscany.sca.assembly.Implementation;
import org.apache.tuscany.sca.assembly.builder.BindingBuilder;
+import org.apache.tuscany.sca.assembly.builder.BuilderContext;
import org.apache.tuscany.sca.assembly.builder.BuilderExtensionPoint;
import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
-import org.apache.tuscany.sca.definitions.Definitions;
-import org.apache.tuscany.sca.monitor.Monitor;
/**
* A composite builder that performs any additional building steps that
@@ -49,19 +48,19 @@ public class ComponentServiceBindingBuilderImpl implements CompositeBuilder {
return "org.apache.tuscany.sca.assembly.builder.ComponentServiceBindingBuilder";
}
- public Composite build(Composite composite, Definitions definitions, Monitor monitor)
+ public Composite build(Composite composite, BuilderContext context)
throws CompositeBuilderException {
- buildServiceBindings(composite, monitor);
+ buildServiceBindings(composite, context);
return composite;
}
- private void buildServiceBindings(Composite composite, Monitor monitor) {
+ private void buildServiceBindings(Composite composite, BuilderContext context) {
// build bindings recursively
for (Component component : composite.getComponents()) {
Implementation implementation = component.getImplementation();
if (implementation instanceof Composite) {
- buildServiceBindings((Composite)implementation, monitor);
+ buildServiceBindings((Composite)implementation, context);
}
}
@@ -71,7 +70,7 @@ public class ComponentServiceBindingBuilderImpl implements CompositeBuilder {
for (Binding binding : componentService.getBindings()) {
BindingBuilder builder = builders.getBindingBuilder(binding.getType());
if (builder != null) {
- builder.build(component, componentService, binding, monitor);
+ builder.build(component, componentService, binding, context);
}
}
}
diff --git a/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositeCloneBuilderImpl.java b/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositeCloneBuilderImpl.java
index d59c85d5c6..148a3b5368 100644
--- a/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositeCloneBuilderImpl.java
+++ b/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositeCloneBuilderImpl.java
@@ -25,10 +25,9 @@ import java.util.List;
import org.apache.tuscany.sca.assembly.Component;
import org.apache.tuscany.sca.assembly.Composite;
import org.apache.tuscany.sca.assembly.Implementation;
+import org.apache.tuscany.sca.assembly.builder.BuilderContext;
import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
-import org.apache.tuscany.sca.definitions.Definitions;
-import org.apache.tuscany.sca.monitor.Monitor;
/**
* A composite builder that clones nested composites.
@@ -40,7 +39,7 @@ public class CompositeCloneBuilderImpl implements CompositeBuilder {
public CompositeCloneBuilderImpl() {
}
- public Composite build(Composite composite, Definitions definitions, Monitor monitor)
+ public Composite build(Composite composite, BuilderContext context)
throws CompositeBuilderException {
if (Composite.DOMAIN_COMPOSITE.equals(composite.getName())) {
diff --git a/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositeComponentTypeBuilderImpl.java b/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositeComponentTypeBuilderImpl.java
index 381eb87857..75fda5880a 100644
--- a/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositeComponentTypeBuilderImpl.java
+++ b/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositeComponentTypeBuilderImpl.java
@@ -39,6 +39,7 @@ import org.apache.tuscany.sca.assembly.Reference;
import org.apache.tuscany.sca.assembly.SCABinding;
import org.apache.tuscany.sca.assembly.SCABindingFactory;
import org.apache.tuscany.sca.assembly.Service;
+import org.apache.tuscany.sca.assembly.builder.BuilderContext;
import org.apache.tuscany.sca.assembly.builder.BuilderExtensionPoint;
import org.apache.tuscany.sca.assembly.builder.Messages;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
@@ -49,7 +50,6 @@ import org.apache.tuscany.sca.interfacedef.IncompatibleInterfaceContractExceptio
import org.apache.tuscany.sca.interfacedef.InterfaceContract;
import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
import org.apache.tuscany.sca.monitor.Monitor;
-import org.apache.tuscany.sca.monitor.MonitorFactory;
import org.apache.tuscany.sca.policy.ExtensionType;
import org.apache.tuscany.sca.policy.PolicySubject;
@@ -67,7 +67,6 @@ public class CompositeComponentTypeBuilderImpl {
protected static final QName BINDING_SCA_QNAME = new QName(SCA11_NS, BINDING_SCA);
private ComponentBuilderImpl componentBuilder;
- private Monitor monitor;
private AssemblyFactory assemblyFactory;
private SCABindingFactory scaBindingFactory;
private InterfaceContractMapper interfaceContractMapper;
@@ -75,8 +74,6 @@ public class CompositeComponentTypeBuilderImpl {
public CompositeComponentTypeBuilderImpl(ExtensionPointRegistry registry) {
UtilityExtensionPoint utilities = registry.getExtensionPoint(UtilityExtensionPoint.class);
- MonitorFactory monitorFactory = utilities.getUtility(MonitorFactory.class);
- monitor = monitorFactory.createMonitor();
FactoryExtensionPoint modelFactories = registry.getExtensionPoint(FactoryExtensionPoint.class);
assemblyFactory = modelFactories.getFactory(AssemblyFactory.class);
@@ -96,8 +93,9 @@ public class CompositeComponentTypeBuilderImpl {
* @param implementation
* @return component type
*/
- public void createComponentType(Component outerComponent, Composite composite) {
+ public void createComponentType(Component outerComponent, Composite composite, BuilderContext context) {
+ Monitor monitor = context.getMonitor();
monitor.pushContext("Composite: " + composite.getName().toString());
try {
@@ -125,7 +123,7 @@ public class CompositeComponentTypeBuilderImpl {
}
// configure the component from its component type
- componentBuilder.configureComponentFromComponentType(outerComponent, composite, component);
+ componentBuilder.configureComponentFromComponentType(outerComponent, composite, component, context);
}
// create the composite component type based on the promoted artifacts
@@ -139,10 +137,10 @@ public class CompositeComponentTypeBuilderImpl {
indexComponentsServicesAndReferences(composite, components, componentServices, componentReferences);
// services
- calculateServices(composite, components, componentServices);
+ calculateServices(composite, components, componentServices, monitor);
// references
- calculateReferences(composite, components, componentReferences);
+ calculateReferences(composite, components, componentReferences, monitor);
// properties
// Properties on the composite component are unaffected by properties
@@ -216,11 +214,12 @@ public class CompositeComponentTypeBuilderImpl {
*/
private void calculateServices(ComponentType componentType,
Map<String, Component> components,
- Map<String, ComponentService> componentServices) {
+ Map<String, ComponentService> componentServices,
+ Monitor monitor) {
// Connect this component type's services to the
// services from child components which it promotes
- connectPromotedServices(componentType, components, componentServices);
+ connectPromotedServices(componentType, components, componentServices, monitor);
// look at each component type service in turn and
// calculate its configuration based on OASIS rules
@@ -229,7 +228,7 @@ public class CompositeComponentTypeBuilderImpl {
ComponentService promotedComponentService = compositeService.getPromotedService();
// promote interface contracts
- calculatePromotedServiceInterfaceContract(compositeService, promotedComponentService);
+ calculatePromotedServiceInterfaceContract(compositeService, promotedComponentService, monitor);
// promote bindings
calculatePromotedBindings(compositeService, promotedComponentService);
@@ -251,11 +250,11 @@ public class CompositeComponentTypeBuilderImpl {
*/
private void calculateReferences(ComponentType componentType,
Map<String, Component> components,
- Map<String, ComponentReference> componentReferences) {
+ Map<String, ComponentReference> componentReferences, Monitor monitor) {
// Connect this component type's references to the
// references from child components which it promotes
- connectPromotedReferences(componentType, components, componentReferences);
+ connectPromotedReferences(componentType, components, componentReferences, monitor);
// look at each component type reference in turn and
// calculate its configuration based on OASIS rules
@@ -266,7 +265,7 @@ public class CompositeComponentTypeBuilderImpl {
for (ComponentReference promotedComponentReference : promotedReferences) {
// promote interface contracts
- calculatePromotedReferenceInterfaceContract(compositeReference, promotedComponentReference);
+ calculatePromotedReferenceInterfaceContract(compositeReference, promotedComponentReference, monitor);
// promote bindings
// Don't need to promote reference bindings as any lower level binding will
@@ -291,7 +290,8 @@ public class CompositeComponentTypeBuilderImpl {
*/
private void connectPromotedServices(ComponentType componentType,
Map<String, Component> components,
- Map<String, ComponentService> componentServices) {
+ Map<String, ComponentService> componentServices,
+ Monitor monitor) {
for (Service service : componentType.getServices()) {
// Connect composite (component type) services to the component services
@@ -345,7 +345,8 @@ public class CompositeComponentTypeBuilderImpl {
*/
private void connectPromotedReferences(ComponentType componentType,
Map<String, Component> components,
- Map<String, ComponentReference> componentReferences) {
+ Map<String, ComponentReference> componentReferences,
+ Monitor monitor) {
// Connect composite (component type) references to the component references that they promote
for (Reference reference : componentType.getReferences()) {
@@ -417,7 +418,7 @@ public class CompositeComponentTypeBuilderImpl {
* @param topContract the top contract
* @param bottomContract the bottom contract
*/
- private void calculatePromotedServiceInterfaceContract(Service topContract, Service bottomContract) {
+ private void calculatePromotedServiceInterfaceContract(Service topContract, Service bottomContract, Monitor monitor) {
// Use the interface contract from the bottom level contract if
// none is specified on the top level contract
InterfaceContract topInterfaceContract = topContract.getInterfaceContract();
@@ -455,7 +456,7 @@ public class CompositeComponentTypeBuilderImpl {
* @param topContract the top contract
* @param bottomContract the bottom contract
*/
- private void calculatePromotedReferenceInterfaceContract(Reference topContract, Reference bottomContract) {
+ private void calculatePromotedReferenceInterfaceContract(Reference topContract, Reference bottomContract, Monitor monitor) {
// Use the interface contract from the bottom level contract if
// none is specified on the top level contract
InterfaceContract topInterfaceContract = topContract.getInterfaceContract();
diff --git a/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositeIncludeBuilderImpl.java b/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositeIncludeBuilderImpl.java
index 8163b0bbe1..b4a897af54 100644
--- a/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositeIncludeBuilderImpl.java
+++ b/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositeIncludeBuilderImpl.java
@@ -24,10 +24,10 @@ import org.apache.tuscany.sca.assembly.Composite;
import org.apache.tuscany.sca.assembly.Implementation;
import org.apache.tuscany.sca.assembly.Reference;
import org.apache.tuscany.sca.assembly.Service;
+import org.apache.tuscany.sca.assembly.builder.BuilderContext;
import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
import org.apache.tuscany.sca.assembly.builder.Messages;
-import org.apache.tuscany.sca.definitions.Definitions;
import org.apache.tuscany.sca.monitor.Monitor;
/**
@@ -44,9 +44,9 @@ public class CompositeIncludeBuilderImpl implements CompositeBuilder {
return "org.apache.tuscany.sca.assembly.builder.CompositeIncludeBuilder";
}
- public Composite build(Composite composite, Definitions definitions, Monitor monitor)
+ public Composite build(Composite composite, BuilderContext context)
throws CompositeBuilderException {
- return processIncludes(composite, monitor);
+ return processIncludes(composite, context.getMonitor());
}
/**
diff --git a/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositePolicyBuilderImpl.java b/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositePolicyBuilderImpl.java
index d176db39d2..3db76a81e3 100644
--- a/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositePolicyBuilderImpl.java
+++ b/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositePolicyBuilderImpl.java
@@ -37,12 +37,12 @@ import org.apache.tuscany.sca.assembly.EndpointReference;
import org.apache.tuscany.sca.assembly.Implementation;
import org.apache.tuscany.sca.assembly.Reference;
import org.apache.tuscany.sca.assembly.Service;
+import org.apache.tuscany.sca.assembly.builder.BuilderContext;
import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
import org.apache.tuscany.sca.assembly.builder.PolicyBuilder;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
import org.apache.tuscany.sca.definitions.Definitions;
-import org.apache.tuscany.sca.monitor.Monitor;
import org.apache.tuscany.sca.policy.Intent;
import org.apache.tuscany.sca.policy.IntentMap;
import org.apache.tuscany.sca.policy.PolicyExpression;
@@ -66,10 +66,11 @@ public class CompositePolicyBuilderImpl extends BaseBuilderImpl implements Compo
return "org.apache.tuscany.sca.assembly.builder.CompositePolicyBuilder";
}
- public Composite build(Composite composite, Definitions definitions, Monitor monitor)
+ public Composite build(Composite composite, BuilderContext context)
throws CompositeBuilderException {
- computePolicies(composite, definitions, monitor);
- buildPolicies(composite, definitions, monitor);
+ Definitions definitions = context.getDefinitions();
+ computePolicies(composite, definitions, context);
+ buildPolicies(composite, definitions, context);
return composite;
}
@@ -97,14 +98,14 @@ public class CompositePolicyBuilderImpl extends BaseBuilderImpl implements Compo
* @param monitor
* @return
*/
- private boolean checkMutualExclusion(PolicySubject subject1, PolicySubject subject2, Monitor monitor) {
+ private boolean checkMutualExclusion(PolicySubject subject1, PolicySubject subject2, BuilderContext context) {
if (subject1 == subject2 || subject1 == null || subject2 == null) {
return false;
}
for (Intent i1 : subject1.getRequiredIntents()) {
for (Intent i2 : subject1.getRequiredIntents()) {
if (i1.getExcludedIntents().contains(i2) || i2.getExcludedIntents().contains(i1)) {
- error(monitor, "MutuallyExclusiveIntents", new Object[] {subject1, subject2}, i1, i2);
+ error(context.getMonitor(), "MutuallyExclusiveIntents", new Object[] {subject1, subject2}, i1, i2);
return true;
}
}
@@ -206,7 +207,7 @@ public class CompositePolicyBuilderImpl extends BaseBuilderImpl implements Compo
return null;
}
- private void resolveAndNormalize(PolicySubject subject, Definitions definitions, Monitor monitor) {
+ private void resolveAndNormalize(PolicySubject subject, Definitions definitions, BuilderContext context) {
Set<Intent> intents = new HashSet<Intent>();
if (definitions != null) {
@@ -215,7 +216,7 @@ public class CompositePolicyBuilderImpl extends BaseBuilderImpl implements Compo
if (resolved != null) {
intents.add(resolved);
} else {
- warning(monitor, "IntentNotFound", subject, i);
+ warning(context.getMonitor(), "IntentNotFound", subject, i);
// Intent cannot be resolved
}
}
@@ -267,7 +268,7 @@ public class CompositePolicyBuilderImpl extends BaseBuilderImpl implements Compo
policySets.add(definitions.getPolicySets().get(index));
} else {
// PolicySet cannot be resolved
- warning(monitor, "PolicySetNotFound", subject, policySet);
+ warning(context.getMonitor(), "PolicySetNotFound", subject, policySet);
}
}
}
@@ -296,30 +297,30 @@ public class CompositePolicyBuilderImpl extends BaseBuilderImpl implements Compo
}
- protected void computePolicies(Composite composite, Definitions definitions, Monitor monitor) {
+ protected void computePolicies(Composite composite, Definitions definitions, BuilderContext context) {
// compute policies recursively
for (Component component : composite.getComponents()) {
Implementation implementation = component.getImplementation();
if (implementation instanceof Composite) {
- computePolicies((Composite)implementation, definitions, monitor);
+ computePolicies((Composite)implementation, definitions, context);
}
}
for (Component component : composite.getComponents()) {
// Check component against implementation
- checkMutualExclusion(component, component.getImplementation(), monitor);
+ checkMutualExclusion(component, component.getImplementation(), context);
for (ComponentService componentService : component.getServices()) {
// Check component/service against componentType/service
- checkMutualExclusion(componentService, componentService.getService(), monitor);
+ checkMutualExclusion(componentService, componentService.getService(), context);
if (componentService.getInterfaceContract() != null && componentService.getService() != null) {
checkMutualExclusion(componentService.getInterfaceContract().getInterface(), componentService
- .getService().getInterfaceContract().getInterface(), monitor);
+ .getService().getInterfaceContract().getInterface(), context);
checkMutualExclusion(componentService.getInterfaceContract().getCallbackInterface(),
componentService.getService().getInterfaceContract().getCallbackInterface(),
- monitor);
+ context);
}
for (Endpoint ep : componentService.getEndpoints()) {
@@ -337,7 +338,7 @@ public class CompositePolicyBuilderImpl extends BaseBuilderImpl implements Compo
if (componentService.getService() != null) {
for (Binding binding : componentService.getService().getBindings()) {
if (isEqual(ep.getBinding().getName(), binding.getName()) && (binding instanceof PolicySubject)) {
- checkMutualExclusion((PolicySubject)ep.getBinding(), (PolicySubject)binding, monitor);
+ checkMutualExclusion((PolicySubject)ep.getBinding(), (PolicySubject)binding, context);
// Inherit from componentType.service.binding
inherit(ep, binding);
break;
@@ -353,21 +354,21 @@ public class CompositePolicyBuilderImpl extends BaseBuilderImpl implements Compo
// Remove the intents whose @contraints do not include the current element
// Replace unqualified intents if there is a qualified intent in the list
// Replace qualifiable intents with the default qualied intent
- resolveAndNormalize(ep, definitions, monitor);
+ resolveAndNormalize(ep, definitions, context);
}
}
for (ComponentReference componentReference : component.getReferences()) {
// Check component/reference against componentType/reference
- checkMutualExclusion(componentReference, componentReference.getReference(), monitor);
+ checkMutualExclusion(componentReference, componentReference.getReference(), context);
if (componentReference.getInterfaceContract() != null && componentReference.getReference() != null) {
checkMutualExclusion(componentReference.getInterfaceContract().getInterface(), componentReference
- .getReference().getInterfaceContract().getInterface(), monitor);
+ .getReference().getInterfaceContract().getInterface(), context);
checkMutualExclusion(componentReference.getInterfaceContract().getCallbackInterface(),
componentReference.getReference().getInterfaceContract()
.getCallbackInterface(),
- monitor);
+ context);
}
for (EndpointReference epr : componentReference.getEndpointReferences()) {
@@ -387,7 +388,7 @@ public class CompositePolicyBuilderImpl extends BaseBuilderImpl implements Compo
for (Binding binding : componentReference.getReference().getBindings()) {
if (epr.getBinding() != null && isEqual(epr.getBinding().getName(), binding.getName())
&& (binding instanceof PolicySubject)) {
- checkMutualExclusion((PolicySubject)epr.getBinding(), (PolicySubject)binding, monitor);
+ checkMutualExclusion((PolicySubject)epr.getBinding(), (PolicySubject)binding, context);
// Inherit from componentType.reference.binding
inherit(epr, binding);
break;
@@ -402,7 +403,7 @@ public class CompositePolicyBuilderImpl extends BaseBuilderImpl implements Compo
// Remove the intents whose @contraints do not include the current element
// Replace unqualified intents if there is a qualified intent in the list
// Replace qualifiable intents with the default qualied intent
- resolveAndNormalize(epr, definitions, monitor);
+ resolveAndNormalize(epr, definitions, context);
}
}
@@ -427,13 +428,13 @@ public class CompositePolicyBuilderImpl extends BaseBuilderImpl implements Compo
return names;
}
- protected void buildPolicies(Composite composite, Definitions definitions, Monitor monitor) {
+ protected void buildPolicies(Composite composite, Definitions definitions, BuilderContext context) {
// compute policies recursively
for (Component component : composite.getComponents()) {
Implementation implementation = component.getImplementation();
if (implementation instanceof Composite) {
- buildPolicies((Composite)implementation, definitions, monitor);
+ buildPolicies((Composite)implementation, definitions, context);
}
}
@@ -444,7 +445,7 @@ public class CompositePolicyBuilderImpl extends BaseBuilderImpl implements Compo
for (QName policyType : getPolicyNames(ep)) {
PolicyBuilder builder = builders.getPolicyBuilder(policyType);
if (builder != null) {
- builder.build(ep, definitions, monitor);
+ builder.build(ep, context);
}
}
}
@@ -455,7 +456,7 @@ public class CompositePolicyBuilderImpl extends BaseBuilderImpl implements Compo
for (QName policyType : getPolicyNames(epr)) {
PolicyBuilder builder = builders.getPolicyBuilder(policyType);
if (builder != null) {
- builder.build(epr, definitions, monitor);
+ builder.build(epr, context);
}
}
}
@@ -466,7 +467,7 @@ public class CompositePolicyBuilderImpl extends BaseBuilderImpl implements Compo
for (QName policyType : getPolicyNames(implementation)) {
PolicyBuilder builder = builders.getPolicyBuilder(policyType);
if (builder != null) {
- builder.build(component, implementation, definitions, monitor);
+ builder.build(component, implementation, context);
}
}
}
diff --git a/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/EndpointBuilderImpl.java b/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/EndpointBuilderImpl.java
index fa67818408..e122df35c3 100644
--- a/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/EndpointBuilderImpl.java
+++ b/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/EndpointBuilderImpl.java
@@ -26,16 +26,16 @@ import org.apache.tuscany.sca.assembly.ComponentService;
import org.apache.tuscany.sca.assembly.Composite;
import org.apache.tuscany.sca.assembly.Endpoint;
import org.apache.tuscany.sca.assembly.Implementation;
+import org.apache.tuscany.sca.assembly.builder.BuilderContext;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
import org.apache.tuscany.sca.core.FactoryExtensionPoint;
-import org.apache.tuscany.sca.definitions.Definitions;
-import org.apache.tuscany.sca.monitor.Monitor;
/**
* creates endpoint models for component services.
*/
-public class EndpointBuilderImpl {
+public class EndpointBuilderImpl implements CompositeBuilder {
private AssemblyFactory assemblyFactory;
public EndpointBuilderImpl(ExtensionPointRegistry registry) {
@@ -50,7 +50,7 @@ public class EndpointBuilderImpl {
* @param definitions
* @param monitor - a Monitor for logging errors
*/
- public Composite build(Composite composite, Definitions definitions, Monitor monitor)
+ public Composite build(Composite composite, BuilderContext context)
throws CompositeBuilderException {
processComponentServices(composite);
@@ -98,4 +98,8 @@ public class EndpointBuilderImpl {
}
}
}
+
+ public String getID() {
+ return "org.apache.tuscany.sca.assembly.builder.EndpointBuilder";
+ }
}
diff --git a/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/EndpointReferenceBuilderImpl.java b/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/EndpointReferenceBuilderImpl.java
index a107880022..b1cc873914 100644
--- a/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/EndpointReferenceBuilderImpl.java
+++ b/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/EndpointReferenceBuilderImpl.java
@@ -37,29 +37,25 @@ import org.apache.tuscany.sca.assembly.Multiplicity;
import org.apache.tuscany.sca.assembly.Reference;
import org.apache.tuscany.sca.assembly.SCABinding;
import org.apache.tuscany.sca.assembly.Wire;
+import org.apache.tuscany.sca.assembly.builder.BuilderContext;
import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
import org.apache.tuscany.sca.assembly.builder.Messages;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
import org.apache.tuscany.sca.core.FactoryExtensionPoint;
import org.apache.tuscany.sca.core.UtilityExtensionPoint;
-import org.apache.tuscany.sca.definitions.Definitions;
import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
import org.apache.tuscany.sca.monitor.Monitor;
-import org.apache.tuscany.sca.monitor.MonitorFactory;
/**
* Creates endpoint reference models.
*/
public class EndpointReferenceBuilderImpl {
- private Monitor monitor;
private AssemblyFactory assemblyFactory;
private InterfaceContractMapper interfaceContractMapper;
public EndpointReferenceBuilderImpl(ExtensionPointRegistry registry) {
UtilityExtensionPoint utilities = registry.getExtensionPoint(UtilityExtensionPoint.class);
- MonitorFactory monitorFactory = utilities.getUtility(MonitorFactory.class);
- monitor = monitorFactory.createMonitor();
interfaceContractMapper = utilities.getUtility(InterfaceContractMapper.class);
FactoryExtensionPoint modelFactories = registry.getExtensionPoint(FactoryExtensionPoint.class);
@@ -71,16 +67,16 @@ public class EndpointReferenceBuilderImpl {
*
* @param composite
*/
- public Composite build(Composite composite, Definitions definitions, Monitor monitor)
+ public Composite build(Composite composite, BuilderContext context)
throws CompositeBuilderException {
- this.monitor = monitor;
+ Monitor monitor = context.getMonitor();
// process component services
- processComponentReferences(composite);
+ processComponentReferences(composite, monitor);
return composite;
}
- private void processComponentReferences(Composite composite) {
+ private void processComponentReferences(Composite composite, Monitor monitor) {
monitor.pushContext("Composite: " + composite.getName().toString());
try {
@@ -102,7 +98,7 @@ public class EndpointReferenceBuilderImpl {
// recurse for composite implementations
Implementation implementation = component.getImplementation();
if (implementation instanceof Composite) {
- processComponentReferences((Composite)implementation);
+ processComponentReferences((Composite)implementation, monitor);
}
// create endpoint references to represent the component reference
@@ -111,7 +107,8 @@ public class EndpointReferenceBuilderImpl {
component,
reference,
components,
- componentServices);
+ componentServices,
+ monitor);
// fix up links between endpoints and endpoint references that represent callbacks
for (ComponentService service : component.getServices()) {
@@ -130,7 +127,7 @@ public class EndpointReferenceBuilderImpl {
// Validate that references are wired or promoted, according
// to their multiplicity
- validateReferenceMultiplicity(composite, component);
+ validateReferenceMultiplicity(composite, component, monitor);
} finally {
monitor.popContext();
@@ -275,7 +272,8 @@ public class EndpointReferenceBuilderImpl {
Component component,
ComponentReference reference,
Map<String, Component> components,
- Map<String, ComponentService> componentServices) {
+ Map<String, ComponentService> componentServices,
+ Monitor monitor) {
monitor.pushContext("Reference: " + reference.getName());
@@ -554,7 +552,7 @@ public class EndpointReferenceBuilderImpl {
} // end method
- private void validateReferenceMultiplicity(Composite composite, Component component) {
+ private void validateReferenceMultiplicity(Composite composite, Component component, Monitor monitor) {
for (ComponentReference componentReference : component.getReferences()) {
if (!ReferenceConfigurationUtil.validateMultiplicityAndTargets(componentReference.getMultiplicity(),
componentReference.getEndpointReferences())) {
diff --git a/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ModelBuilderImpl.java b/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ModelBuilderImpl.java
index d50653da9d..206afb98da 100644
--- a/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ModelBuilderImpl.java
+++ b/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ModelBuilderImpl.java
@@ -19,25 +19,22 @@
package org.apache.tuscany.sca.builder.impl;
import java.io.ByteArrayOutputStream;
-import java.util.List;
-import java.util.Map;
-import javax.xml.namespace.QName;
import javax.xml.stream.XMLOutputFactory;
import org.apache.tuscany.sca.assembly.Component;
import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.assembly.builder.BuilderContext;
import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
-import org.apache.tuscany.sca.assembly.builder.DeployedCompositeBuilder;
+import org.apache.tuscany.sca.contribution.processor.ProcessorContext;
import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
import org.apache.tuscany.sca.core.FactoryExtensionPoint;
-import org.apache.tuscany.sca.definitions.Definitions;
import org.apache.tuscany.sca.monitor.Monitor;
-public class ModelBuilderImpl implements CompositeBuilder, DeployedCompositeBuilder {
+public class ModelBuilderImpl implements CompositeBuilder {
private ExtensionPointRegistry registry;
private CompositeBuilder compositeIncludeBuilder;
@@ -89,36 +86,29 @@ public class ModelBuilderImpl implements CompositeBuilder, DeployedCompositeBuil
return "org.apache.tuscany.sca.assembly.builder.CompositeBuilder";
}
- public Composite build(Composite composite, Definitions definitions, Monitor monitor)
+ public Composite build(Composite composite, BuilderContext context)
throws CompositeBuilderException {
- return build(composite, definitions, null, monitor);
- }
-
- public Composite build(Composite composite,
- Definitions definitions,
- Map<QName, List<String>> bindingBaseURIs,
- Monitor monitor) throws CompositeBuilderException {
-
+ Monitor monitor = context.getMonitor();
try {
// Clone the composites that are included or referenced in implementation.composite
- composite = compositeCloneBuilder.build(composite, definitions, monitor);
+ composite = compositeCloneBuilder.build(composite, context);
// Collect and fuse includes. Copy all of the components
// out of the included composite into the including composite
// and discards the included composite
- composite = compositeIncludeBuilder.build(composite, definitions, monitor);
+ composite = compositeIncludeBuilder.build(composite, context);
// Set up the structural URIs for components (services/references/bindings?)
- composite = structuralURIBuilder.build(composite, definitions, monitor);
+ composite = structuralURIBuilder.build(composite, context);
// need to apply policy external attachment
- composite = policyAttachmentBuilder.build(composite, definitions, monitor);
+ composite = policyAttachmentBuilder.build(composite, context);
// Process the implementation hierarchy by calculating the component type
// for the top level implementation (composite). This has the effect of
// recursively calculating component types and configuring the
// components that depend on them
- compositeComponentTypeBuilder.createComponentType(null, composite);
+ compositeComponentTypeBuilder.createComponentType(null, composite, context);
// create the runtime model by updating the static model we have just
// created. This involves things like creating
@@ -132,13 +122,13 @@ public class ModelBuilderImpl implements CompositeBuilder, DeployedCompositeBuil
// Policies
// TODO - called here at the moment but we could have a separate build phase
// to call these. Also we need to re-org these builders
- composite = bindingURIBuilder.build(composite, definitions, monitor);
- composite = componentServiceBindingBuilder.build(composite, definitions, monitor); // binding specific build
- composite = componentReferenceBindingBuilder.build(composite, definitions, monitor); // binding specific build
- endpointBuilder.build(composite, definitions, monitor);
- endpointReferenceBuilder.build(composite, definitions, monitor);
- composite = componentReferencePromotionBuilder.build(composite, definitions, monitor); // move into the static build?
- composite = compositePolicyBuilder.build(composite, definitions, monitor); // the rest of the policy processing?
+ composite = bindingURIBuilder.build(composite, context);
+ composite = componentServiceBindingBuilder.build(composite, context); // binding specific build
+ composite = componentReferenceBindingBuilder.build(composite, context); // binding specific build
+ endpointBuilder.build(composite, context);
+ endpointReferenceBuilder.build(composite, context);
+ composite = componentReferencePromotionBuilder.build(composite, context); // move into the static build?
+ composite = compositePolicyBuilder.build(composite, context); // the rest of the policy processing?
// For debugging - in success cases
//System.out.println(dumpBuiltComposite(composite));
@@ -173,7 +163,7 @@ public class ModelBuilderImpl implements CompositeBuilder, DeployedCompositeBuil
.getFactory(XMLOutputFactory.class);
try {
- compositeProcessor.write(composite, outputFactory.createXMLStreamWriter(bos));
+ compositeProcessor.write(composite, outputFactory.createXMLStreamWriter(bos), new ProcessorContext(registry));
} catch(Exception ex) {
return ex.toString();
}
diff --git a/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/PolicyAttachmentBuilderImpl.java b/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/PolicyAttachmentBuilderImpl.java
index 59cfdc7393..cbbf54b330 100644
--- a/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/PolicyAttachmentBuilderImpl.java
+++ b/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/PolicyAttachmentBuilderImpl.java
@@ -42,11 +42,13 @@ import org.apache.tuscany.sca.assembly.ComponentService;
import org.apache.tuscany.sca.assembly.Composite;
import org.apache.tuscany.sca.assembly.Contract;
import org.apache.tuscany.sca.assembly.Implementation;
+import org.apache.tuscany.sca.assembly.builder.BuilderContext;
import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
import org.apache.tuscany.sca.common.xml.dom.DOMHelper;
import org.apache.tuscany.sca.common.xml.stax.StAXHelper;
import org.apache.tuscany.sca.contribution.processor.ContributionWriteException;
+import org.apache.tuscany.sca.contribution.processor.ProcessorContext;
import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
@@ -72,9 +74,11 @@ import org.xml.sax.SAXException;
public class PolicyAttachmentBuilderImpl implements CompositeBuilder {
private StAXHelper staxHelper;
private DOMHelper domHelper;
+ private ExtensionPointRegistry registry;
private StAXArtifactProcessor<Composite> processor;
public PolicyAttachmentBuilderImpl(ExtensionPointRegistry registry) {
+ this.registry = registry;
domHelper = DOMHelper.getInstance(registry);
staxHelper = StAXHelper.getInstance(registry);
StAXArtifactProcessorExtensionPoint processors =
@@ -86,10 +90,10 @@ public class PolicyAttachmentBuilderImpl implements CompositeBuilder {
return "org.apache.tuscany.sca.policy.builder.PolicyAttachmentBuilder";
}
- public Composite build(Composite composite, Definitions definitions, Monitor monitor)
+ public Composite build(Composite composite, BuilderContext context)
throws CompositeBuilderException {
try {
- Composite patched = applyXPath(composite, definitions, monitor);
+ Composite patched = applyXPath(composite, context.getDefinitions(), context.getMonitor());
return patched;
} catch (Exception e) {
throw new CompositeBuilderException(e);
@@ -162,7 +166,7 @@ public class PolicyAttachmentBuilderImpl implements CompositeBuilder {
StringWriter sw = new StringWriter();
XMLStreamWriter writer = staxHelper.createXMLStreamWriter(sw);
// Write the composite into a DOM document
- processor.write(composite, writer);
+ processor.write(composite, writer, new ProcessorContext(registry));
writer.close();
Document document = domHelper.load(sw.toString());
diff --git a/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/StructuralURIBuilderImpl.java b/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/StructuralURIBuilderImpl.java
index c013780c7b..b543e3347d 100644
--- a/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/StructuralURIBuilderImpl.java
+++ b/java/sca/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/StructuralURIBuilderImpl.java
@@ -20,7 +20,6 @@
package org.apache.tuscany.sca.builder.impl;
import java.net.URI;
-import java.net.URISyntaxException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -36,9 +35,9 @@ import org.apache.tuscany.sca.assembly.Contract;
import org.apache.tuscany.sca.assembly.Implementation;
import org.apache.tuscany.sca.assembly.Reference;
import org.apache.tuscany.sca.assembly.Service;
+import org.apache.tuscany.sca.assembly.builder.BuilderContext;
import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
-import org.apache.tuscany.sca.assembly.builder.DeployedCompositeBuilder;
import org.apache.tuscany.sca.assembly.builder.Messages;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
import org.apache.tuscany.sca.definitions.Definitions;
@@ -49,7 +48,7 @@ import org.apache.tuscany.sca.monitor.Monitor;
*
* @version $Rev$ $Date$
*/
-public class StructuralURIBuilderImpl implements CompositeBuilder, DeployedCompositeBuilder {
+public class StructuralURIBuilderImpl implements CompositeBuilder {
public StructuralURIBuilderImpl(ExtensionPointRegistry registry) {
}
@@ -119,109 +118,6 @@ public class StructuralURIBuilderImpl implements CompositeBuilder, DeployedCompo
}
/**
- * Generic URI construction for bindings based on Assembly Specification section 1.7.2
- *
- * @param componentURIString the string version of the URI part that comes from the component name
- * @param service the service in question
- * @param binding the binding for which the URI is being constructed
- * @param includeBindingName when set true the serviceBindingURI part should be used
- * @param defaultBindings the list of default binding configurations
- * @throws CompositeBuilderException
- */
- private void constructBindingURI(String componentURIString,
- Service service,
- Binding binding,
- Map<QName, List<String>> defaultBindings,
- Monitor monitor) throws CompositeBuilderException {
-
- try {
-
- boolean includeBindingName = !service.getName().equals(binding.getName());
-
- // calculate the service binding URI
- URI bindingURI;
- if (binding.getURI() != null) {
- bindingURI = new URI(binding.getURI());
-
- // if the user has provided an absolute binding URI then use it
- if (bindingURI.isAbsolute()) {
- return;
- }
- } else {
- bindingURI = null;
- }
-
- String serviceName = service.getName();
- // Get the service binding name
- String bindingName;
- if (binding.getName() != null) {
- bindingName = binding.getName();
- } else {
- bindingName = serviceName;
- }
-
- // calculate the component URI
- URI componentURI;
- if (componentURIString != null) {
- componentURI = new URI(addSlashToPath(componentURIString));
- } else {
- componentURI = null;
- }
-
- // if the user has provided an absolute component URI then use it
- if (componentURI != null && componentURI.isAbsolute()) {
- binding.setURI(constructBindingURI(null,
- componentURI,
- bindingURI,
- serviceName,
- includeBindingName,
- bindingName));
- return;
- }
-
- // calculate the base URI
- URI baseURI = null;
- if (defaultBindings != null) {
- List<String> uris = defaultBindings.get(binding.getType());
- if (uris != null && uris.size() > 0) {
- baseURI = new URI(addSlashToPath(uris.get(0)));
- }
- }
-
- binding.setURI(constructBindingURI(baseURI,
- componentURI,
- bindingURI,
- serviceName,
- includeBindingName,
- bindingName));
- } catch (URISyntaxException ex) {
- Monitor.error(monitor,
- this,
- Messages.ASSEMBLY_VALIDATION,
- "URLSyntaxException",
- componentURIString,
- service.getName(),
- binding.getName());
- }
- }
-
- /**
- * Use to ensure that URI paths end in "/" as here we want to maintain the
- * last path element of an base URI when other URI are resolved against it. This is
- * not the default behaviour of URI resolution as defined in RFC 2369
- *
- * @param path the path string to which the "/" is to be added
- * @return the resulting path with a "/" added if it not already there
- */
- private static String addSlashToPath(String path) {
- if (path.endsWith("/") || path.endsWith("#")) {
- return path;
- } else {
- return path + "/";
- }
- }
-
- /**
* Concatenate binding URI parts together based on Assembly Specification section 1.7.2
*
* @param baseURI the base of the binding URI
@@ -304,9 +200,9 @@ public class StructuralURIBuilderImpl implements CompositeBuilder, DeployedCompo
return URI.create(baseURI.toString() + str).normalize();
}
- public Composite build(Composite composite, Definitions definitions, Monitor monitor)
+ public Composite build(Composite composite, BuilderContext context)
throws CompositeBuilderException {
- configureStructuralURIs(composite, null, definitions, null, monitor);
+ configureStructuralURIs(composite, null, context.getDefinitions(), context.getBindingBaseURIs(), context.getMonitor());
return composite;
}
@@ -314,14 +210,6 @@ public class StructuralURIBuilderImpl implements CompositeBuilder, DeployedCompo
return "org.apache.tuscany.sca.assembly.builder.StructualURIBuilder";
}
- public Composite build(Composite composite,
- Definitions definitions,
- Map<QName, List<String>> bindingBaseURIs,
- Monitor monitor) throws CompositeBuilderException {
- configureStructuralURIs(composite, null, definitions, bindingBaseURIs, monitor);
- return composite;
- }
-
private void configureStructuralURIs(Composite composite,
String parentComponentURI,
Definitions definitions,