summaryrefslogtreecommitdiffstats
path: root/java/sca/modules/node-impl/src
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/node-impl/src
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/node-impl/src')
-rw-r--r--java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/configuration/xml/NodeConfigurationATOMProcessor.java10
-rw-r--r--java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/configuration/xml/NodeConfigurationProcessor.java15
-rw-r--r--java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java41
-rw-r--r--java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java9
-rw-r--r--java/sca/modules/node-impl/src/test/java/org/apache/tuscany/sca/node/configuration/xml/NodeConfigurationProcessorTestCase.java14
5 files changed, 48 insertions, 41 deletions
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<Contribution> contributions, ModelResolver resolver )
+ private void contributionsPreresolve( List<Contribution> 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<Contribution> contributions, Monitor monitor)
+ protected Composite configureNode(NodeConfiguration configuration, List<Contribution> 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<Contribution> resolved = new HashSet<Contribution>();
@@ -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<Contribution> loadContributions(NodeConfiguration configuration, Monitor monitor) throws Throwable {
+ protected List<Contribution> loadContributions(NodeConfiguration configuration, ProcessorContext context) throws Throwable {
List<Contribution> contributions = new ArrayList<Contribution>();
// 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();
}
diff --git a/java/sca/modules/node-impl/src/test/java/org/apache/tuscany/sca/node/configuration/xml/NodeConfigurationProcessorTestCase.java b/java/sca/modules/node-impl/src/test/java/org/apache/tuscany/sca/node/configuration/xml/NodeConfigurationProcessorTestCase.java
index ff0144db99..a10f2cccd4 100644
--- a/java/sca/modules/node-impl/src/test/java/org/apache/tuscany/sca/node/configuration/xml/NodeConfigurationProcessorTestCase.java
+++ b/java/sca/modules/node-impl/src/test/java/org/apache/tuscany/sca/node/configuration/xml/NodeConfigurationProcessorTestCase.java
@@ -27,6 +27,7 @@ import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamWriter;
+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.DefaultExtensionPointRegistry;
@@ -45,12 +46,13 @@ public class NodeConfigurationProcessorTestCase {
private static FactoryExtensionPoint factories;
private static StAXArtifactProcessor processor;
- /**
- * @throws java.lang.Exception
- */
+ private static ProcessorContext context;
+
@BeforeClass
- public static void setUpBeforeClass() throws Exception {
+ public static void setUp() throws Exception {
ExtensionPointRegistry registry = new DefaultExtensionPointRegistry();
+ context = new ProcessorContext(registry);
+
factories = new DefaultFactoryExtensionPoint(registry);
StAXArtifactProcessorExtensionPoint processors =
registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
@@ -64,12 +66,12 @@ public class NodeConfigurationProcessorTestCase {
XMLStreamReader reader = xmlInputFactory.createXMLStreamReader(is);
is.close();
reader.nextTag();
- NodeConfiguration config = (NodeConfiguration) processor.read(reader);
+ NodeConfiguration config = (NodeConfiguration) processor.read(reader, context);
StringWriter sw = new StringWriter();
XMLOutputFactory xmlOutputFactory = factories.getFactory(XMLOutputFactory.class);
xmlOutputFactory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, Boolean.TRUE);
XMLStreamWriter writer = xmlOutputFactory.createXMLStreamWriter(sw);
- processor.write(config, writer);
+ processor.write(config, writer, context);
writer.flush();
System.out.println(sw.toString());
}