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 --- .../xml/NodeConfigurationATOMProcessor.java | 10 +++--- .../xml/NodeConfigurationProcessor.java | 15 ++++---- .../tuscany/sca/node/impl/NodeFactoryImpl.java | 41 ++++++++++++---------- .../org/apache/tuscany/sca/node/impl/NodeImpl.java | 9 +++-- 4 files changed, 40 insertions(+), 35 deletions(-) (limited to 'java/sca/modules/node-impl/src/main') diff --git a/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/configuration/xml/NodeConfigurationATOMProcessor.java b/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/configuration/xml/NodeConfigurationATOMProcessor.java index 162670363a..d11eb317cf 100644 --- a/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/configuration/xml/NodeConfigurationATOMProcessor.java +++ b/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/configuration/xml/NodeConfigurationATOMProcessor.java @@ -31,10 +31,10 @@ import org.apache.tuscany.sca.contribution.processor.BaseStAXArtifactProcessor; import org.apache.tuscany.sca.contribution.processor.ContributionReadException; import org.apache.tuscany.sca.contribution.processor.ContributionResolveException; 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.resolver.ModelResolver; import org.apache.tuscany.sca.core.FactoryExtensionPoint; -import org.apache.tuscany.sca.monitor.Monitor; import org.apache.tuscany.sca.node.configuration.ContributionConfiguration; import org.apache.tuscany.sca.node.configuration.NodeConfiguration; import org.apache.tuscany.sca.node.configuration.NodeConfigurationFactory; @@ -57,7 +57,7 @@ public class NodeConfigurationATOMProcessor extends BaseStAXArtifactProcessor im private NodeConfigurationFactory factory; - public NodeConfigurationATOMProcessor(FactoryExtensionPoint modelFactories, Monitor monitor) { + public NodeConfigurationATOMProcessor(FactoryExtensionPoint modelFactories) { this.factory = modelFactories.getFactory(NodeConfigurationFactory.class); } @@ -70,7 +70,7 @@ public class NodeConfigurationATOMProcessor extends BaseStAXArtifactProcessor im return NodeConfiguration.class; } - public NodeConfiguration read(XMLStreamReader reader) throws ContributionReadException, XMLStreamException { + public NodeConfiguration read(XMLStreamReader reader, ProcessorContext context) throws ContributionReadException, XMLStreamException { NodeConfiguration config = factory.createNodeConfiguration(); @@ -151,10 +151,10 @@ public class NodeConfigurationATOMProcessor extends BaseStAXArtifactProcessor im return config; } - public void resolve(NodeConfiguration implementation, ModelResolver resolver) throws ContributionResolveException { + public void resolve(NodeConfiguration implementation, ModelResolver resolver, ProcessorContext context) throws ContributionResolveException { } - public void write(NodeConfiguration implementation, XMLStreamWriter writer) throws ContributionWriteException, + public void write(NodeConfiguration implementation, XMLStreamWriter writer, ProcessorContext context) throws ContributionWriteException, XMLStreamException { } } diff --git a/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/configuration/xml/NodeConfigurationProcessor.java b/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/configuration/xml/NodeConfigurationProcessor.java index 59f4eda9a5..78f4fabb20 100644 --- a/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/configuration/xml/NodeConfigurationProcessor.java +++ b/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/configuration/xml/NodeConfigurationProcessor.java @@ -35,11 +35,11 @@ import org.apache.tuscany.sca.contribution.processor.BaseStAXArtifactProcessor; import org.apache.tuscany.sca.contribution.processor.ContributionReadException; import org.apache.tuscany.sca.contribution.processor.ContributionResolveException; 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.resolver.ModelResolver; import org.apache.tuscany.sca.core.ExtensionPointRegistry; import org.apache.tuscany.sca.core.FactoryExtensionPoint; -import org.apache.tuscany.sca.monitor.Monitor; import org.apache.tuscany.sca.node.configuration.BindingConfiguration; import org.apache.tuscany.sca.node.configuration.ContributionConfiguration; import org.apache.tuscany.sca.node.configuration.DeploymentComposite; @@ -68,8 +68,7 @@ public class NodeConfigurationProcessor extends BaseStAXArtifactProcessor implem private StAXHelper helper; public NodeConfigurationProcessor(ExtensionPointRegistry registry, - StAXArtifactProcessor processor, - Monitor monitor) { + StAXArtifactProcessor processor) { FactoryExtensionPoint modelFactories = registry.getExtensionPoint(FactoryExtensionPoint.class); this.nodeConfigurationFactory = modelFactories.getFactory(NodeConfigurationFactory.class); this.processor = processor; @@ -86,7 +85,7 @@ public class NodeConfigurationProcessor extends BaseStAXArtifactProcessor implem return NodeConfiguration.class; } - public NodeConfiguration read(XMLStreamReader reader) throws ContributionReadException, XMLStreamException { + public NodeConfiguration read(XMLStreamReader reader, ProcessorContext context) throws ContributionReadException, XMLStreamException { NodeConfiguration node = null; ContributionConfiguration contribution = null; @@ -148,7 +147,7 @@ public class NodeConfigurationProcessor extends BaseStAXArtifactProcessor implem helper.save(reader, writer); composite.setContent(sw.toString()); } else { - node.getExtensions().add(processor.read(reader)); + node.getExtensions().add(processor.read(reader, context)); } break; @@ -174,10 +173,10 @@ public class NodeConfigurationProcessor extends BaseStAXArtifactProcessor implem return node; } - public void resolve(NodeConfiguration node, ModelResolver resolver) throws ContributionResolveException { + public void resolve(NodeConfiguration node, ModelResolver resolver, ProcessorContext context) throws ContributionResolveException { } - public void write(NodeConfiguration node, XMLStreamWriter writer) throws ContributionWriteException, + public void write(NodeConfiguration node, XMLStreamWriter writer, ProcessorContext context) throws ContributionWriteException, XMLStreamException { writeStart(writer, @@ -229,7 +228,7 @@ public class NodeConfigurationProcessor extends BaseStAXArtifactProcessor implem } for(Object o: node.getExtensions()) { - processor.write(o, writer); + processor.write(o, writer, context); } writeEnd(writer); diff --git a/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java b/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java index 6182c5ca2d..92e2cb9254 100644 --- a/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java +++ b/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java @@ -52,9 +52,9 @@ import javax.xml.stream.XMLStreamReader; import org.apache.tuscany.sca.assembly.AssemblyFactory; import org.apache.tuscany.sca.assembly.Base; import org.apache.tuscany.sca.assembly.Composite; +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.DeployedCompositeBuilder; import org.apache.tuscany.sca.common.java.io.IOHelper; import org.apache.tuscany.sca.common.xml.stax.StAXHelper; import org.apache.tuscany.sca.contribution.Artifact; @@ -66,6 +66,7 @@ import org.apache.tuscany.sca.contribution.Import; import org.apache.tuscany.sca.contribution.processor.ContributionReadException; import org.apache.tuscany.sca.contribution.processor.ContributionResolveException; import org.apache.tuscany.sca.contribution.processor.ExtendedURLArtifactProcessor; +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.contribution.processor.URLArtifactProcessorExtensionPoint; @@ -177,7 +178,7 @@ public class NodeFactoryImpl extends NodeFactory { extensionPoints.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class); StAXArtifactProcessor processor = processors.getProcessor(NodeConfiguration.class); reader.nextTag(); - NodeConfiguration config = (NodeConfiguration)processor.read(reader); + NodeConfiguration config = (NodeConfiguration)processor.read(reader, new ProcessorContext(extensionPoints)); xml.close(); if (base != null && config != null) { // Resolve the contribution location against the node.xml @@ -318,13 +319,13 @@ public class NodeFactoryImpl extends NodeFactory { } } - private boolean attachDeploymentComposite(Contribution contribution, Reader xml, String location, boolean attached) + private boolean attachDeploymentComposite(Contribution contribution, Reader xml, String location, boolean attached, ProcessorContext context) throws XMLStreamException, ContributionReadException { XMLStreamReader reader = inputFactory.createXMLStreamReader(xml); reader.nextTag(); // Read the composite model - Composite composite = (Composite)compositeProcessor.read(reader); + Composite composite = (Composite)compositeProcessor.read(reader, context); reader.close(); // Create an artifact for the deployment composite @@ -373,11 +374,11 @@ public class NodeFactoryImpl extends NodeFactory { * @param resolver - the ModelResolver to use * @throws ContributionResolveException */ - private void contributionsPreresolve( List contributions, ModelResolver resolver ) + private void contributionsPreresolve( List contributions, ModelResolver resolver, ProcessorContext context) throws ContributionResolveException { for( Contribution contribution : contributions ) { - contributionProcessor.preResolve(contribution, resolver); + contributionProcessor.preResolve(contribution, resolver, context); } // end for } // end method contributionsPreresolve @@ -475,7 +476,7 @@ public class NodeFactoryImpl extends NodeFactory { systemContribution = contributionFactory.createContribution(); systemContribution.setURI("http://tuscany.apache.org/SystemContribution"); systemContribution.setLocation("http://tuscany.apache.org/SystemContribution"); - ModelResolver modelResolver = new ExtensibleModelResolver(systemContribution, modelResolvers, modelFactories, monitor); + ModelResolver modelResolver = new ExtensibleModelResolver(systemContribution, modelResolvers, modelFactories); systemContribution.setModelResolver(modelResolver); systemContribution.setUnresolved(true); @@ -500,11 +501,11 @@ public class NodeFactoryImpl extends NodeFactory { return new DefaultExtensionPointRegistry(); } - protected Composite configureNode(NodeConfiguration configuration, List contributions, Monitor monitor) + protected Composite configureNode(NodeConfiguration configuration, List contributions, ProcessorContext context) throws Throwable { if (contributions == null) { // Load contributions - contributions = loadContributions(configuration, monitor); + contributions = loadContributions(configuration, context); } // Build an aggregated SCA definitions model. Must be done before we try and // resolve any contributions or composites as they may depend on the full @@ -514,6 +515,7 @@ public class NodeFactoryImpl extends NodeFactory { // into the system contribution. In turn add a default import into // each contribution so that for unresolved items the resolution // processing will look in the system contribution + Monitor monitor = context.getMonitor(); for (Contribution contribution: contributions) { monitor.pushContext("Contribution: " + contribution.getURI()); // aggregate definitions @@ -537,16 +539,16 @@ public class NodeFactoryImpl extends NodeFactory { monitor.popContext(); } - ExtensibleModelResolver modelResolver = new ExtensibleModelResolver(new Contributions(contributions), modelResolvers, modelFactories, monitor); + ExtensibleModelResolver modelResolver = new ExtensibleModelResolver(new Contributions(contributions), modelResolvers, modelFactories); // now resolve and add the system contribution - contributionProcessor.resolve(systemContribution, modelResolver); + contributionProcessor.resolve(systemContribution, modelResolver, context); contributions.add(systemContribution); // TODO - Now we can calculate applicable policy sets for each composite // pre-resolve the contributions - contributionsPreresolve(contributions, modelResolver); + contributionsPreresolve(contributions, modelResolver, context); // Build the contribution dependencies Set resolved = new HashSet(); @@ -557,7 +559,7 @@ public class NodeFactoryImpl extends NodeFactory { for (Contribution dependency: contribution.getDependencies()) { if (!resolved.contains(dependency)) { resolved.add(dependency); - contributionProcessor.resolve(dependency, modelResolver); + contributionProcessor.resolve(dependency, modelResolver, context); } } } @@ -584,13 +586,14 @@ public class NodeFactoryImpl extends NodeFactory { } // build the top level composite - ((DeployedCompositeBuilder)compositeBuilder).build(domainComposite, systemDefinitions, bindingMap, monitor); + BuilderContext builderContext = new BuilderContext(systemDefinitions, bindingMap, monitor); + compositeBuilder.build(domainComposite, builderContext); analyzeProblems(monitor); return domainComposite; } - protected List loadContributions(NodeConfiguration configuration, Monitor monitor) throws Throwable { + protected List loadContributions(NodeConfiguration configuration, ProcessorContext context) throws Throwable { List contributions = new ArrayList(); // Load the specified contributions @@ -605,14 +608,14 @@ public class NodeFactoryImpl extends NodeFactory { // Load the contribution logger.log(Level.INFO, "Loading contribution: " + contributionURL); - Contribution contribution = contributionProcessor.read(null, contributionURI, contributionURL); + Contribution contribution = contributionProcessor.read(null, contributionURI, contributionURL, context); contributions.add(contribution); boolean attached = false; for (DeploymentComposite dc : contrib.getDeploymentComposites()) { if (dc.getContent() != null) { Reader xml = new StringReader(dc.getContent()); - attached = attachDeploymentComposite(contribution, xml, null, attached); + attached = attachDeploymentComposite(contribution, xml, null, attached, context); } else if (dc.getLocation() != null) { URI dcURI = createURI(dc.getLocation()); if (!dcURI.isAbsolute()) { @@ -639,11 +642,11 @@ public class NodeFactoryImpl extends NodeFactory { URL url = dcURI.toURL(); InputStream is = openStream(url); Reader xml = new InputStreamReader(is, "UTF-8"); - attached = attachDeploymentComposite(contribution, xml, url.toString(), attached); + attached = attachDeploymentComposite(contribution, xml, url.toString(), attached, context); } } } - analyzeProblems(monitor); + analyzeProblems(context.getMonitor()); } return contributions; } diff --git a/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java b/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java index ab63c80b67..768d5a63d7 100644 --- a/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java +++ b/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java @@ -39,6 +39,7 @@ import org.apache.tuscany.sca.common.java.io.IOHelper; import org.apache.tuscany.sca.context.CompositeContext; import org.apache.tuscany.sca.context.ThreadMessageContext; import org.apache.tuscany.sca.contribution.Contribution; +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; @@ -125,10 +126,12 @@ public class NodeImpl implements Node, Client { Monitor monitor = manager.monitorFactory.createMonitor(); monitor.reset(); + ProcessorContext context = new ProcessorContext(monitor); + if (contributions == null) { - contributions = manager.loadContributions(configuration, monitor); + contributions = manager.loadContributions(configuration, context); } - domainComposite = manager.configureNode(configuration, contributions, monitor); + domainComposite = manager.configureNode(configuration, contributions, context); this.compositeContext = new CompositeContextImpl(manager.extensionPoints, endpointRegistry, domainComposite); @@ -334,7 +337,7 @@ public class NodeImpl implements Node, Client { .getFactory(XMLOutputFactory.class); try { - compositeProcessor.write(composite, outputFactory.createXMLStreamWriter(bos)); + compositeProcessor.write(composite, outputFactory.createXMLStreamWriter(bos), new ProcessorContext(manager.extensionPoints)); } catch(Exception ex) { return ex.toString(); } -- cgit v1.2.3