From 4ae4002366ded3f4b19cd96f403d8b418fcf00a1 Mon Sep 17 00:00:00 2001 From: rfeng Date: Fri, 16 Oct 2009 05:42:26 +0000 Subject: 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 --- .../sca/builder/impl/BindingURIBuilderImpl.java | 23 +--- .../sca/builder/impl/ComponentBuilderImpl.java | 78 +++++++------- .../impl/ComponentReferenceBindingBuilderImpl.java | 13 ++- .../ComponentReferencePromotionBuilderImpl.java | 6 +- .../impl/ComponentServiceBindingBuilderImpl.java | 13 ++- .../builder/impl/CompositeCloneBuilderImpl.java | 5 +- .../impl/CompositeComponentTypeBuilderImpl.java | 37 +++---- .../builder/impl/CompositeIncludeBuilderImpl.java | 6 +- .../builder/impl/CompositePolicyBuilderImpl.java | 55 +++++----- .../sca/builder/impl/EndpointBuilderImpl.java | 12 ++- .../builder/impl/EndpointReferenceBuilderImpl.java | 26 +++-- .../tuscany/sca/builder/impl/ModelBuilderImpl.java | 46 ++++---- .../builder/impl/PolicyAttachmentBuilderImpl.java | 10 +- .../sca/builder/impl/StructuralURIBuilderImpl.java | 120 +-------------------- 14 files changed, 159 insertions(+), 291 deletions(-) (limited to 'java/sca/modules/builder/src/main') 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> 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 components, - Map componentServices) { + Map 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 components, - Map componentReferences) { + Map 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 components, - Map componentServices) { + Map 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 components, - Map componentReferences) { + Map 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 intents = new HashSet(); 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 components, - Map componentServices) { + Map 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> 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 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) { } @@ -118,109 +117,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> 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 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 * @@ -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> bindingBaseURIs, - Monitor monitor) throws CompositeBuilderException { - configureStructuralURIs(composite, null, definitions, bindingBaseURIs, monitor); - return composite; - } - private void configureStructuralURIs(Composite composite, String parentComponentURI, Definitions definitions, -- cgit v1.2.3