summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68>2008-09-09 09:17:30 +0000
committerjsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68>2008-09-09 09:17:30 +0000
commitdc15447dfebac2b0218cb1ce6903923c574c84df (patch)
tree5cf9aba844a018bccab0743005af5d3701e98cce
parent7ea46da4356a04cd45cfa1cadcad9f7fdb28aa7f (diff)
Fixes to get the Equinox integration working. Use the parent classloader instead of the Thread context classloader as parent of the contribution classloader. Use the ServiceDiscovery to get instances of DocumentBuilderFactory and TransformerFactory. Pass these factories around instead of creating new instances in different places. Clarified the few prints in the calculator-osgi sample showing which classloader is used.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@693411 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeDocumentProcessor.java25
-rw-r--r--java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseConfigurationBuilderImpl.java12
-rw-r--r--java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentConfigurationBuilderImpl.java20
-rw-r--r--java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBindingURIBuilderImpl.java20
-rw-r--r--java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBuilderImpl.java60
-rw-r--r--java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PropertyConfigurationUtil.java18
-rw-r--r--java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassLoaderModelResolver.java11
-rw-r--r--java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceModelResolver.java12
-rw-r--r--java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ContributionClassLoader.java16
-rw-r--r--java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/DefaultModelFactoryExtensionPoint.java4
-rw-r--r--java/sca/modules/core-spring/src/main/java/org/apache/tuscany/sca/core/spring/context/SCADomainContext.java15
-rw-r--r--java/sca/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/CompositeConfigurationServiceImpl.java8
-rw-r--r--java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscovery.java18
-rw-r--r--java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntime.java7
-rw-r--r--java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java13
-rw-r--r--java/sca/modules/implementation-node/src/main/java/org/apache/tuscany/sca/implementation/node/builder/impl/NodeCompositeBuilderImpl.java20
-rw-r--r--java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/RuntimeBootStrapper.java7
-rw-r--r--java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/RuntimeBuilder.java25
-rw-r--r--java/sca/modules/node-launcher-equinox/src/main/java/org/apache/tuscany/sca/node/equinox/launcher/EquinoxHost.java3
-rw-r--r--java/sca/modules/node-launcher-equinox/src/main/java/org/apache/tuscany/sca/node/equinox/launcher/NodeLauncherUtil.java1
-rw-r--r--java/sca/modules/policy/src/main/java/org/apache/tuscany/sca/policy/util/PolicyComputationUtils.java7
-rw-r--r--java/sca/samples/calculator-osgi/src/main/java/calculator/CalculatorClient.java3
-rw-r--r--java/sca/samples/calculator-osgi/src/test/java/calculator/CalculatorTestCase.java2
-rw-r--r--java/sca/samples/domain-management/src/main/java/manager/DistributeAndRunComponents.java11
-rw-r--r--java/sca/samples/domain-management/src/main/java/manager/DistributeComponents.java11
-rw-r--r--java/sca/samples/domain-management/src/main/java/manager/WireComponents.java8
26 files changed, 276 insertions, 81 deletions
diff --git a/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeDocumentProcessor.java b/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeDocumentProcessor.java
index eccdbc6be2..bc74773d85 100644
--- a/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeDocumentProcessor.java
+++ b/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeDocumentProcessor.java
@@ -31,6 +31,7 @@ import java.util.List;
import java.util.Map;
import javax.xml.namespace.QName;
+import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
@@ -55,6 +56,7 @@ import org.apache.tuscany.sca.policy.util.PolicyComputationUtils;
*/
public class CompositeDocumentProcessor extends BaseAssemblyProcessor implements URLArtifactProcessor<Composite> {
private XMLInputFactory inputFactory;
+ private DocumentBuilderFactory documentBuilderFactory;
private List scaDefnSink;
private Collection<PolicySet> domainPolicySets = null;
private int scaDefnsCount = 0;
@@ -65,14 +67,32 @@ public class CompositeDocumentProcessor extends BaseAssemblyProcessor implements
* @param policyFactory
* @param staxProcessor
*/
+ @Deprecated
public CompositeDocumentProcessor(StAXArtifactProcessor staxProcessor,
- XMLInputFactory inputFactory, List scaDefnsSink, Monitor monitor) {
+ XMLInputFactory inputFactory,
+ List scaDefnsSink, Monitor monitor) {
super(null, null, staxProcessor, monitor);
this.inputFactory = inputFactory;
this.scaDefnSink = scaDefnsSink;
}
/**
+ * Construct a new composite processor
+ * @param assemblyFactory
+ * @param policyFactory
+ * @param staxProcessor
+ */
+ public CompositeDocumentProcessor(StAXArtifactProcessor staxProcessor,
+ XMLInputFactory inputFactory,
+ DocumentBuilderFactory documentBuilderFactory,
+ List scaDefnsSink, Monitor monitor) {
+ super(null, null, staxProcessor, monitor);
+ this.documentBuilderFactory = documentBuilderFactory;
+ this.inputFactory = inputFactory;
+ this.scaDefnSink = scaDefnsSink;
+ }
+
+ /**
* Constructs a new composite processor.
* @param modelFactories
* @param staxProcessor
@@ -81,6 +101,7 @@ public class CompositeDocumentProcessor extends BaseAssemblyProcessor implements
StAXArtifactProcessor staxProcessor, Monitor monitor) {
super(null, null, staxProcessor, monitor);
this.inputFactory = modelFactories.getFactory(ValidatingXMLInputFactory.class);
+ this.documentBuilderFactory = modelFactories.getFactory(DocumentBuilderFactory.class);
}
public Composite read(URL contributionURL, URI uri, URL url) throws ContributionReadException {
@@ -109,7 +130,7 @@ public class CompositeDocumentProcessor extends BaseAssemblyProcessor implements
try {
if ( domainPolicySets != null ) {
transformedArtifactContent =
- PolicyComputationUtils.addApplicablePolicySets(scdlStream, domainPolicySets);
+ PolicyComputationUtils.addApplicablePolicySets(scdlStream, domainPolicySets, documentBuilderFactory);
scdlStream = new ByteArrayInputStream(transformedArtifactContent);
}
} catch ( IOException e ) {
diff --git a/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseConfigurationBuilderImpl.java b/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseConfigurationBuilderImpl.java
index 925ca9dc67..6f856986ad 100644
--- a/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseConfigurationBuilderImpl.java
+++ b/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseConfigurationBuilderImpl.java
@@ -26,6 +26,8 @@ import java.util.List;
import java.util.Map;
import javax.xml.namespace.QName;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.TransformerFactory;
import org.apache.tuscany.sca.assembly.AssemblyFactory;
import org.apache.tuscany.sca.assembly.Binding;
@@ -34,7 +36,6 @@ import org.apache.tuscany.sca.assembly.ComponentProperty;
import org.apache.tuscany.sca.assembly.ComponentReference;
import org.apache.tuscany.sca.assembly.ComponentService;
import org.apache.tuscany.sca.assembly.Composite;
-import org.apache.tuscany.sca.assembly.CompositeService;
import org.apache.tuscany.sca.assembly.Contract;
import org.apache.tuscany.sca.assembly.Implementation;
import org.apache.tuscany.sca.assembly.Property;
@@ -69,14 +70,20 @@ public abstract class BaseConfigurationBuilderImpl {
private Monitor monitor;
private InterfaceContractMapper interfaceContractMapper;
private SCADefinitions policyDefinitions;
+ private DocumentBuilderFactory documentBuilderFactory;
+ private TransformerFactory transformerFactory;
protected BaseConfigurationBuilderImpl(AssemblyFactory assemblyFactory,
SCABindingFactory scaBindingFactory,
+ DocumentBuilderFactory documentBuilderFactory,
+ TransformerFactory transformerFactory,
InterfaceContractMapper interfaceContractMapper,
SCADefinitions policyDefinitions,
Monitor monitor) {
this.assemblyFactory = assemblyFactory;
this.scaBindingFactory = scaBindingFactory;
+ this.documentBuilderFactory = documentBuilderFactory;
+ this.transformerFactory = transformerFactory;
this.interfaceContractMapper = interfaceContractMapper;
this.policyDefinitions = policyDefinitions;
this.monitor = monitor;
@@ -818,7 +825,8 @@ public abstract class BaseConfigurationBuilderImpl {
for (Component component : composite.getComponents()) {
try {
- PropertyConfigurationUtil.sourceComponentProperties(compositeProperties, component);
+ PropertyConfigurationUtil.sourceComponentProperties(compositeProperties, component,
+ documentBuilderFactory, transformerFactory);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
diff --git a/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentConfigurationBuilderImpl.java b/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentConfigurationBuilderImpl.java
index 8dd585f92b..0643421a45 100644
--- a/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentConfigurationBuilderImpl.java
+++ b/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentConfigurationBuilderImpl.java
@@ -19,6 +19,9 @@
package org.apache.tuscany.sca.assembly.builder.impl;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.TransformerFactory;
+
import org.apache.tuscany.sca.assembly.AssemblyFactory;
import org.apache.tuscany.sca.assembly.Composite;
import org.apache.tuscany.sca.assembly.SCABindingFactory;
@@ -35,12 +38,27 @@ import org.apache.tuscany.sca.monitor.Monitor;
*/
public class ComponentConfigurationBuilderImpl extends BaseConfigurationBuilderImpl implements CompositeBuilder {
+ @Deprecated
+ public ComponentConfigurationBuilderImpl(AssemblyFactory assemblyFactory,
+ SCABindingFactory scaBindingFactory,
+ InterfaceContractMapper interfaceContractMapper,
+ SCADefinitions policyDefinitions,
+ Monitor monitor) {
+ super(assemblyFactory, scaBindingFactory,
+ null, null,
+ interfaceContractMapper, policyDefinitions, monitor);
+ }
+
public ComponentConfigurationBuilderImpl(AssemblyFactory assemblyFactory,
SCABindingFactory scaBindingFactory,
+ DocumentBuilderFactory documentBuilderFactory,
+ TransformerFactory transformerFactory,
InterfaceContractMapper interfaceContractMapper,
SCADefinitions policyDefinitions,
Monitor monitor) {
- super(assemblyFactory, scaBindingFactory, interfaceContractMapper, policyDefinitions, monitor);
+ super(assemblyFactory, scaBindingFactory,
+ documentBuilderFactory, transformerFactory,
+ interfaceContractMapper, policyDefinitions, monitor);
}
public void build(Composite composite) throws CompositeBuilderException {
diff --git a/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBindingURIBuilderImpl.java b/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBindingURIBuilderImpl.java
index 4c2c369f3e..85af173c0d 100644
--- a/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBindingURIBuilderImpl.java
+++ b/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBindingURIBuilderImpl.java
@@ -19,6 +19,9 @@
package org.apache.tuscany.sca.assembly.builder.impl;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.TransformerFactory;
+
import org.apache.tuscany.sca.assembly.AssemblyFactory;
import org.apache.tuscany.sca.assembly.Composite;
import org.apache.tuscany.sca.assembly.SCABindingFactory;
@@ -35,12 +38,27 @@ import org.apache.tuscany.sca.monitor.Monitor;
*/
public class CompositeBindingURIBuilderImpl extends BaseConfigurationBuilderImpl implements CompositeBuilder {
+ @Deprecated
+ public CompositeBindingURIBuilderImpl(AssemblyFactory assemblyFactory,
+ SCABindingFactory scaBindingFactory,
+ InterfaceContractMapper interfaceContractMapper,
+ SCADefinitions policyDefinitions,
+ Monitor monitor) {
+ super(assemblyFactory, scaBindingFactory,
+ null, null,
+ interfaceContractMapper, policyDefinitions, monitor);
+ }
+
public CompositeBindingURIBuilderImpl(AssemblyFactory assemblyFactory,
SCABindingFactory scaBindingFactory,
+ DocumentBuilderFactory documentBuilderFactory,
+ TransformerFactory transformerFactory,
InterfaceContractMapper interfaceContractMapper,
SCADefinitions policyDefinitions,
Monitor monitor) {
- super(assemblyFactory, scaBindingFactory, interfaceContractMapper, policyDefinitions, monitor);
+ super(assemblyFactory, scaBindingFactory,
+ documentBuilderFactory, transformerFactory,
+ interfaceContractMapper, policyDefinitions, monitor);
}
public void build(Composite composite) throws CompositeBuilderException {
diff --git a/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBuilderImpl.java b/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBuilderImpl.java
index 6fc946b29a..282fe032ba 100644
--- a/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBuilderImpl.java
+++ b/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBuilderImpl.java
@@ -20,6 +20,9 @@ package org.apache.tuscany.sca.assembly.builder.impl;
import java.util.logging.Logger;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.TransformerFactory;
+
import org.apache.tuscany.sca.assembly.AssemblyFactory;
import org.apache.tuscany.sca.assembly.Composite;
import org.apache.tuscany.sca.assembly.DefaultEndpointFactory;
@@ -62,16 +65,65 @@ public class CompositeBuilderImpl implements CompositeBuilder {
*
* @param assemblyFactory
* @param scaBindingFactory
+ * @param endpointFactory
+ * @param intentAttachPointTypeFactory
+ * @param interfaceContractMapper
+ * @param policyDefinitions
+ * @param monitor
+ */
+ @Deprecated
+ public CompositeBuilderImpl(AssemblyFactory assemblyFactory,
+ EndpointFactory endpointFactory,
+ SCABindingFactory scaBindingFactory,
+ IntentAttachPointTypeFactory intentAttachPointTypeFactory,
+ InterfaceContractMapper interfaceContractMapper,
+ SCADefinitions policyDefinitions,
+ Monitor monitor) {
+ this(assemblyFactory, endpointFactory, scaBindingFactory, intentAttachPointTypeFactory,
+ null, null, interfaceContractMapper, policyDefinitions, monitor);
+ }
+
+ /**
+ * Constructs a new composite builder.
+ *
+ * @param assemblyFactory
+ * @param scaBindingFactory
+ * @param endpointFactory
+ * @param intentAttachPointTypeFactory
+ * @param interfaceContractMapper
+ * @param policyDefinitions
+ * @param monitor
+ */
+ @Deprecated
+ public CompositeBuilderImpl(AssemblyFactory assemblyFactory,
+ SCABindingFactory scaBindingFactory,
+ IntentAttachPointTypeFactory intentAttachPointTypeFactory,
+ InterfaceContractMapper interfaceContractMapper,
+ Monitor monitor) {
+ this(assemblyFactory, null, scaBindingFactory, intentAttachPointTypeFactory,
+ null, null, interfaceContractMapper, null, monitor);
+ }
+
+ /**
+ * Constructs a new composite builder.
+ *
+ * @param assemblyFactory
+ * @param scaBindingFactory
* @param intentAttachPointTypeFactory
+ * @param documentBuilderFactory
+ * @param transformerFactory
* @param interfaceContractMapper
* @param monitor
*/
public CompositeBuilderImpl(AssemblyFactory assemblyFactory,
SCABindingFactory scaBindingFactory,
IntentAttachPointTypeFactory intentAttachPointTypeFactory,
+ DocumentBuilderFactory documentBuilderFactory,
+ TransformerFactory transformerFactory,
InterfaceContractMapper interfaceContractMapper,
Monitor monitor) {
- this(assemblyFactory, null, scaBindingFactory, intentAttachPointTypeFactory, interfaceContractMapper, null, monitor);
+ this(assemblyFactory, null, scaBindingFactory, intentAttachPointTypeFactory,
+ documentBuilderFactory, transformerFactory, interfaceContractMapper, null, monitor);
}
/**
@@ -89,6 +141,8 @@ public class CompositeBuilderImpl implements CompositeBuilder {
EndpointFactory endpointFactory,
SCABindingFactory scaBindingFactory,
IntentAttachPointTypeFactory intentAttachPointTypeFactory,
+ DocumentBuilderFactory documentBuilderFactory,
+ TransformerFactory transformerFactory,
InterfaceContractMapper interfaceContractMapper,
SCADefinitions policyDefinitions,
Monitor monitor) {
@@ -102,10 +156,10 @@ public class CompositeBuilderImpl implements CompositeBuilder {
componentReferencePromotionWireBuilder = new ComponentReferencePromotionWireBuilderImpl(assemblyFactory, endpointFactory, monitor);
compositeReferenceWireBuilder = new CompositeReferenceWireBuilderImpl(assemblyFactory, endpointFactory, monitor);
compositeCloneBuilder = new CompositeCloneBuilderImpl(monitor);
- componentConfigurationBuilder = new ComponentConfigurationBuilderImpl(assemblyFactory, scaBindingFactory, interfaceContractMapper, policyDefinitions, monitor);
+ componentConfigurationBuilder = new ComponentConfigurationBuilderImpl(assemblyFactory, scaBindingFactory, documentBuilderFactory, transformerFactory, interfaceContractMapper, policyDefinitions, monitor);
compositeServiceConfigurationBuilder = new CompositeServiceConfigurationBuilderImpl(assemblyFactory);
compositeReferenceConfigurationBuilder = new CompositeReferenceConfigurationBuilderImpl(assemblyFactory);
- compositeBindingURIBuilder = new CompositeBindingURIBuilderImpl(assemblyFactory, scaBindingFactory, interfaceContractMapper, policyDefinitions, monitor);
+ compositeBindingURIBuilder = new CompositeBindingURIBuilderImpl(assemblyFactory, scaBindingFactory, documentBuilderFactory, transformerFactory, interfaceContractMapper, policyDefinitions, monitor);
componentServicePromotionBuilder = new ComponentServicePromotionBuilderImpl(assemblyFactory);
compositeServicePromotionBuilder = new CompositeServicePromotionBuilderImpl(assemblyFactory);
compositePromotionBuilder = new CompositePromotionBuilderImpl(assemblyFactory, endpointFactory, interfaceContractMapper, monitor);
diff --git a/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PropertyConfigurationUtil.java b/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PropertyConfigurationUtil.java
index 71971ef5a4..0105d4af50 100644
--- a/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PropertyConfigurationUtil.java
+++ b/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PropertyConfigurationUtil.java
@@ -59,10 +59,8 @@ import org.xml.sax.InputSource;
* @version $Rev$ $Date$
*/
abstract class PropertyConfigurationUtil {
- private static final DocumentBuilderFactory DOC_BUILDER_FACTORY = DocumentBuilderFactory.newInstance();
- private static final TransformerFactory TRANSFORMER_FACTORY = TransformerFactory.newInstance();
- private static Document evaluate(Document node, XPathExpression expression)
+ private static Document evaluate(Document node, XPathExpression expression, DocumentBuilderFactory documentBuilderFactory)
throws XPathExpressionException, ParserConfigurationException {
Node value = node.getDocumentElement();
@@ -72,7 +70,7 @@ abstract class PropertyConfigurationUtil {
}
// TODO: How to wrap the result into a Document?
- Document document = DOC_BUILDER_FACTORY.newDocumentBuilder().newDocument();
+ Document document = documentBuilderFactory.newDocumentBuilder().newDocument();
if (result instanceof Document) {
return (Document)result;
} else {
@@ -83,7 +81,7 @@ abstract class PropertyConfigurationUtil {
}
}
- private static Document loadFromFile(String file) throws MalformedURLException, IOException,
+ private static Document loadFromFile(String file, TransformerFactory transformerFactory) throws MalformedURLException, IOException,
TransformerException, ParserConfigurationException {
URI uri = URI.create(file);
// URI resolution for relative URIs is done when the composite is resolved.
@@ -96,7 +94,7 @@ abstract class PropertyConfigurationUtil {
Source streamSource = new SAXSource(new InputSource(is));
DOMResult result = new DOMResult();
- javax.xml.transform.Transformer transformer = TRANSFORMER_FACTORY.newTransformer();
+ javax.xml.transform.Transformer transformer = transformerFactory.newTransformer();
transformer.transform(streamSource, result);
Document document = (Document)result.getNode();
@@ -115,7 +113,9 @@ abstract class PropertyConfigurationUtil {
}
static void sourceComponentProperties(Map<String, Property> compositeProperties,
- Component componentDefinition) throws CompositeBuilderException,
+ Component componentDefinition,
+ DocumentBuilderFactory documentBuilderFactory,
+ TransformerFactory transformerFactory) throws CompositeBuilderException,
ParserConfigurationException,
XPathExpressionException,
TransformerException,
@@ -143,7 +143,7 @@ abstract class PropertyConfigurationUtil {
Document compositePropDefValues = (Document)compositeProp.getValue();
// FIXME: How to deal with namespaces?
- Document node = evaluate(compositePropDefValues, aProperty.getSourceXPathExpression());
+ Document node = evaluate(compositePropDefValues, aProperty.getSourceXPathExpression(), documentBuilderFactory);
if (node != null) {
aProperty.setValue(node);
@@ -152,7 +152,7 @@ abstract class PropertyConfigurationUtil {
throw new CompositeBuilderException("The 'source' has an invalid value: " + source);
}
} else if (file != null) {
- aProperty.setValue(loadFromFile(aProperty.getFile()));
+ aProperty.setValue(loadFromFile(aProperty.getFile(), transformerFactory));
}
}
diff --git a/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassLoaderModelResolver.java b/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassLoaderModelResolver.java
index d9dde0f8ee..260516d146 100644
--- a/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassLoaderModelResolver.java
+++ b/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassLoaderModelResolver.java
@@ -39,6 +39,7 @@ import org.apache.tuscany.sca.contribution.java.JavaImport;
import org.apache.tuscany.sca.contribution.resolver.ClassReference;
import org.apache.tuscany.sca.contribution.resolver.DefaultDelegatingModelResolver;
import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.extensibility.ServiceDiscovery;
/**
* A Model Resolver for ClassReferences.
@@ -49,16 +50,12 @@ public class ClassLoaderModelResolver extends URLClassLoader implements ModelRes
private Contribution contribution;
private Map<String, ModelResolver> importResolvers = new HashMap<String, ModelResolver>();
- private static ClassLoader contextClassLoader() {
- return AccessController.doPrivileged(new PrivilegedAction<ClassLoader>() {
- public ClassLoader run() {
- return Thread.currentThread().getContextClassLoader();
- }
- });
+ private static ClassLoader parentClassLoader() {
+ return ServiceDiscovery.class.getClassLoader();
}
public ClassLoaderModelResolver(final Contribution contribution, ModelFactoryExtensionPoint modelFactories) throws MalformedURLException {
- super(new URL[] {new URL(contribution.getLocation())}, contextClassLoader());
+ super(new URL[] {new URL(contribution.getLocation())}, parentClassLoader());
this.contribution = contribution;
// Index Java import resolvers by package name
diff --git a/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceModelResolver.java b/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceModelResolver.java
index 716abf4602..b2bcdb7f54 100644
--- a/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceModelResolver.java
+++ b/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceModelResolver.java
@@ -30,6 +30,7 @@ import org.apache.tuscany.sca.contribution.Contribution;
import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
import org.apache.tuscany.sca.contribution.resolver.ClassReference;
import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.extensibility.ServiceDiscovery;
/**
* A Model Resolver for ClassReferences.
@@ -56,11 +57,12 @@ public class ClassReferenceModelResolver implements ModelResolver {
if (cl == null) {
// Allow privileged access to get ClassLoader. Requires RuntimePermission in security policy.
- ClassLoader contextClassLoader = AccessController.doPrivileged(new PrivilegedAction<ClassLoader>() {
- public ClassLoader run() {
- return Thread.currentThread().getContextClassLoader();
- }
- });
+ //ClassLoader contextClassLoader = AccessController.doPrivileged(new PrivilegedAction<ClassLoader>() {
+ // public ClassLoader run() {
+ // return Thread.currentThread().getContextClassLoader();
+ // }
+ //});
+ ClassLoader contextClassLoader = ServiceDiscovery.class.getClassLoader();
cl = new ContributionClassLoader(contribution, contextClassLoader);
contribution.setClassLoader(cl);
}
diff --git a/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ContributionClassLoader.java b/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ContributionClassLoader.java
index 60bf7f223b..aa68925376 100644
--- a/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ContributionClassLoader.java
+++ b/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ContributionClassLoader.java
@@ -64,18 +64,6 @@ public class ContributionClassLoader extends URLClassLoader {
}
/*
- * @return the context ClassLoader of the current thread.
- */
- protected static ClassLoader getContextClassLoader() {
- ClassLoader contextClassLoader = AccessController.doPrivileged(new PrivilegedAction<ClassLoader>() {
- public ClassLoader run() {
- return Thread.currentThread().getContextClassLoader();
- }
- });
- return contextClassLoader;
- }
-
- /*
* Return the ClassLoader corresponding to a contribution providing an export
* Create a new ClassLoader for the contribution if one does not exist
*/
@@ -83,7 +71,7 @@ public class ContributionClassLoader extends URLClassLoader {
ClassLoader cl = exportingContribution.getClassLoader();
if (!(cl instanceof ContributionClassLoader)) {
if (cl == null) {
- cl = getContextClassLoader();
+ cl = getParent();
}
cl = new ContributionClassLoader(exportingContribution, cl);
@@ -390,7 +378,7 @@ public class ContributionClassLoader extends URLClassLoader {
@Override
public String toString() {
- return "SCA contribution classloader for : " + contribution.getLocation();
+ return "SCA Contribution ClassLoader location: " + contribution.getLocation() + " parent ClassLoader: " + getParent();
}
diff --git a/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/DefaultModelFactoryExtensionPoint.java b/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/DefaultModelFactoryExtensionPoint.java
index 555d25a2db..b69c58a0ff 100644
--- a/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/DefaultModelFactoryExtensionPoint.java
+++ b/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/DefaultModelFactoryExtensionPoint.java
@@ -20,7 +20,6 @@
package org.apache.tuscany.sca.contribution;
import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
import java.util.HashMap;
import org.apache.tuscany.sca.extensibility.ServiceDiscovery;
@@ -116,8 +115,7 @@ public class DefaultModelFactoryExtensionPoint implements ModelFactoryExtensionP
// Call the newInstance static method on the factory abstract class
try {
- Method newInstanceMethod = factoryInterface.getMethod("newInstance");
- factory = newInstanceMethod.invoke(null);
+ factory = ServiceDiscovery.getInstance().newFactoryClassInstance(factoryInterface);
} catch (Exception e) {
throw new IllegalArgumentException(e);
}
diff --git a/java/sca/modules/core-spring/src/main/java/org/apache/tuscany/sca/core/spring/context/SCADomainContext.java b/java/sca/modules/core-spring/src/main/java/org/apache/tuscany/sca/core/spring/context/SCADomainContext.java
index 7855818904..8fa5f4cd53 100644
--- a/java/sca/modules/core-spring/src/main/java/org/apache/tuscany/sca/core/spring/context/SCADomainContext.java
+++ b/java/sca/modules/core-spring/src/main/java/org/apache/tuscany/sca/core/spring/context/SCADomainContext.java
@@ -22,9 +22,11 @@ import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
+import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
+import javax.xml.transform.TransformerFactory;
import org.apache.tuscany.sca.assembly.AssemblyFactory;
import org.apache.tuscany.sca.assembly.Composite;
@@ -145,7 +147,10 @@ public class SCADomainContext {
}
// Wire the top level component's composite
- buildComposite(composites.get(0), assemblyFactory, scaBindingFactory, mapper);
+ DocumentBuilderFactory documentBuilderFactory = modelFactories.getFactory(DocumentBuilderFactory.class);
+ TransformerFactory transformerFactory = modelFactories.getFactory(TransformerFactory.class);
+ buildComposite(composites.get(0), assemblyFactory, scaBindingFactory,
+ documentBuilderFactory, transformerFactory, mapper);
} catch (ContributionException e) {
throw new RuntimeException(e);
@@ -157,7 +162,10 @@ public class SCADomainContext {
}
private void buildComposite(Composite composite, AssemblyFactory assemblyFactory,
- SCABindingFactory scaBindingFactory, InterfaceContractMapper interfaceContractMapper) throws CompositeBuilderException {
+ SCABindingFactory scaBindingFactory,
+ DocumentBuilderFactory documentBuilderFactory,
+ TransformerFactory transformerFactory,
+ InterfaceContractMapper interfaceContractMapper) throws CompositeBuilderException {
Monitor monitor = new Monitor() {
@@ -170,7 +178,8 @@ public class SCADomainContext {
};
// Configure and wire the composite
- CompositeBuilderImpl compositeUtil = new CompositeBuilderImpl(assemblyFactory, scaBindingFactory, new DefaultIntentAttachPointTypeFactory(), interfaceContractMapper, monitor);
+ CompositeBuilderImpl compositeUtil = new CompositeBuilderImpl(assemblyFactory, scaBindingFactory, new DefaultIntentAttachPointTypeFactory(),
+ documentBuilderFactory, transformerFactory, interfaceContractMapper, monitor);
compositeUtil.build(composite);
}
diff --git a/java/sca/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/CompositeConfigurationServiceImpl.java b/java/sca/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/CompositeConfigurationServiceImpl.java
index 3fb9673246..09bb05cf87 100644
--- a/java/sca/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/CompositeConfigurationServiceImpl.java
+++ b/java/sca/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/CompositeConfigurationServiceImpl.java
@@ -40,10 +40,12 @@ import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.namespace.QName;
+import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamWriter;
+import javax.xml.transform.TransformerFactory;
import org.apache.tuscany.sca.assembly.AssemblyFactory;
import org.apache.tuscany.sca.assembly.Component;
@@ -161,13 +163,15 @@ public class CompositeConfigurationServiceImpl extends HttpServlet implements Se
contributionProcessor = new ContributionContentProcessor(modelFactories, modelResolvers, urlProcessor, staxProcessor, monitor);
// Create contribution and composite builders
+ DocumentBuilderFactory documentBuilderFactory = modelFactories.getFactory(DocumentBuilderFactory.class);
+ TransformerFactory transformerFactory = modelFactories.getFactory(TransformerFactory.class);
contributionDependencyBuilder = new ContributionDependencyBuilderImpl(monitor);
SCABindingFactory scaBindingFactory = modelFactories.getFactory(SCABindingFactory.class);
IntentAttachPointTypeFactory intentAttachPointTypeFactory = modelFactories.getFactory(IntentAttachPointTypeFactory.class);
InterfaceContractMapper contractMapper = utilities.getUtility(InterfaceContractMapper.class);
- compositeBuilder = new CompositeBuilderImpl(assemblyFactory, scaBindingFactory, intentAttachPointTypeFactory, contractMapper, monitor);
+ compositeBuilder = new CompositeBuilderImpl(assemblyFactory, scaBindingFactory, intentAttachPointTypeFactory, documentBuilderFactory, transformerFactory, contractMapper, monitor);
compositeIncludeBuilder = new CompositeIncludeBuilderImpl(monitor);
- nodeConfigurationBuilder = new NodeCompositeBuilderImpl(assemblyFactory, scaBindingFactory, contractMapper, null, monitor);
+ nodeConfigurationBuilder = new NodeCompositeBuilderImpl(assemblyFactory, scaBindingFactory, documentBuilderFactory, transformerFactory, contractMapper, null, monitor);
}
@Override
diff --git a/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscovery.java b/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscovery.java
index 79b92e0390..c1bbfeb8e0 100644
--- a/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscovery.java
+++ b/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscovery.java
@@ -20,6 +20,8 @@
package org.apache.tuscany.sca.extensibility;
import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.HashSet;
@@ -148,5 +150,21 @@ public class ServiceDiscovery {
}
return services.iterator().next().loadClass();
}
+
+ /**
+ * Create a new instance of a factory service class.
+ *
+ * @param serviceInterface
+ * @return service implementation class
+ * @throws SecurityException
+ * @throws NoSuchMethodException
+ * @throws InvocationTargetException
+ * @throws IllegalAccessException
+ */
+ public Object newFactoryClassInstance(final Class<?> serviceInterface) throws SecurityException, NoSuchMethodException, InvocationTargetException, IllegalAccessException {
+ Method newInstanceMethod = serviceInterface.getMethod("newInstance");
+ Object factory = newInstanceMethod.invoke(null);
+ return factory;
+ }
}
diff --git a/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntime.java b/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntime.java
index 1f6dc4260d..55b6afb6f2 100644
--- a/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntime.java
+++ b/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntime.java
@@ -27,6 +27,9 @@ import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.TransformerFactory;
+
import org.apache.tuscany.sca.assembly.AssemblyFactory;
import org.apache.tuscany.sca.assembly.Composite;
import org.apache.tuscany.sca.assembly.EndpointFactory;
@@ -217,6 +220,8 @@ public class ReallySmallRuntime {
EndpointFactory endpointFactory = factories.getFactory(EndpointFactory.class);
UtilityExtensionPoint utilities = registry.getExtensionPoint(UtilityExtensionPoint.class);
InterfaceContractMapper mapper = utilities.getUtility(InterfaceContractMapper.class);
+ DocumentBuilderFactory documentBuilderFactory = factories.getFactory(DocumentBuilderFactory.class);
+ TransformerFactory transformerFactory = factories.getFactory(TransformerFactory.class);
//Create a composite builder
SCADefinitions aggregatedDefinitions = new SCADefinitionsImpl();
@@ -228,6 +233,8 @@ public class ReallySmallRuntime {
scaBindingFactory,
endpointFactory,
intentAttachPointTypeFactory,
+ documentBuilderFactory,
+ transformerFactory,
mapper,
aggregatedDefinitions);
compositeBuilder.build(composite);
diff --git a/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java b/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java
index b85b94f850..738e5e6248 100644
--- a/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java
+++ b/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java
@@ -24,8 +24,10 @@ import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.List;
+import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLOutputFactory;
+import javax.xml.transform.TransformerFactory;
import org.apache.tuscany.sca.assembly.AssemblyFactory;
import org.apache.tuscany.sca.assembly.Composite;
@@ -142,6 +144,8 @@ public class ReallySmallRuntimeBuilder {
SCABindingFactory scaBindingFactory,
EndpointFactory endpointFactory,
IntentAttachPointTypeFactory intentAttachPointTypeFactory,
+ DocumentBuilderFactory documentBuilderFactory,
+ TransformerFactory transformerFactory,
InterfaceContractMapper interfaceContractMapper,
SCADefinitions policyDefinitions) {
@@ -150,6 +154,8 @@ public class ReallySmallRuntimeBuilder {
endpointFactory,
scaBindingFactory,
intentAttachPointTypeFactory,
+ documentBuilderFactory,
+ transformerFactory,
interfaceContractMapper,
policyDefinitions,
monitor);
@@ -211,7 +217,12 @@ public class ReallySmallRuntimeBuilder {
// Create and register document processors for SCA assembly XML
documentProcessors.getProcessor(Composite.class);
- documentProcessors.addArtifactProcessor(new CompositeDocumentProcessor(staxProcessor, validatingInputFactory, policyDefinitions, monitor));
+ DocumentBuilderFactory documentBuilderFactory = AccessController.doPrivileged(new PrivilegedAction<DocumentBuilderFactory>() {
+ public DocumentBuilderFactory run() {
+ return DocumentBuilderFactory.newInstance();
+ }
+ });
+ documentProcessors.addArtifactProcessor(new CompositeDocumentProcessor(staxProcessor, validatingInputFactory, documentBuilderFactory, policyDefinitions, monitor));
// Create Model Resolver extension point
ModelResolverExtensionPoint modelResolvers = registry.getExtensionPoint(ModelResolverExtensionPoint.class);
diff --git a/java/sca/modules/implementation-node/src/main/java/org/apache/tuscany/sca/implementation/node/builder/impl/NodeCompositeBuilderImpl.java b/java/sca/modules/implementation-node/src/main/java/org/apache/tuscany/sca/implementation/node/builder/impl/NodeCompositeBuilderImpl.java
index bbf396a724..736afc13f0 100644
--- a/java/sca/modules/implementation-node/src/main/java/org/apache/tuscany/sca/implementation/node/builder/impl/NodeCompositeBuilderImpl.java
+++ b/java/sca/modules/implementation-node/src/main/java/org/apache/tuscany/sca/implementation/node/builder/impl/NodeCompositeBuilderImpl.java
@@ -22,6 +22,9 @@ package org.apache.tuscany.sca.implementation.node.builder.impl;
import java.util.ArrayList;
import java.util.List;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.TransformerFactory;
+
import org.apache.tuscany.sca.assembly.AssemblyFactory;
import org.apache.tuscany.sca.assembly.Binding;
import org.apache.tuscany.sca.assembly.Component;
@@ -45,12 +48,27 @@ import org.apache.tuscany.sca.monitor.Monitor;
*/
public class NodeCompositeBuilderImpl extends BaseConfigurationBuilderImpl implements CompositeBuilder {
+ @Deprecated
+ public NodeCompositeBuilderImpl(AssemblyFactory assemblyFactory,
+ SCABindingFactory scaBindingFactory,
+ InterfaceContractMapper interfaceContractMapper,
+ SCADefinitions policyDefinitions,
+ Monitor monitor) {
+ super(assemblyFactory, scaBindingFactory,
+ null, null,
+ interfaceContractMapper, policyDefinitions, monitor);
+ }
+
public NodeCompositeBuilderImpl(AssemblyFactory assemblyFactory,
SCABindingFactory scaBindingFactory,
+ DocumentBuilderFactory documentBuilderFactory,
+ TransformerFactory transformerFactory,
InterfaceContractMapper interfaceContractMapper,
SCADefinitions policyDefinitions,
Monitor monitor) {
- super(assemblyFactory, scaBindingFactory, interfaceContractMapper, policyDefinitions, monitor);
+ super(assemblyFactory, scaBindingFactory,
+ documentBuilderFactory, transformerFactory,
+ interfaceContractMapper, policyDefinitions, monitor);
}
public void build(Composite composite) throws CompositeBuilderException {
diff --git a/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/RuntimeBootStrapper.java b/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/RuntimeBootStrapper.java
index c9995d6024..5b0e31fd03 100644
--- a/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/RuntimeBootStrapper.java
+++ b/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/RuntimeBootStrapper.java
@@ -27,6 +27,9 @@ import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.TransformerFactory;
+
import org.apache.tuscany.sca.assembly.AssemblyFactory;
import org.apache.tuscany.sca.assembly.Composite;
import org.apache.tuscany.sca.assembly.EndpointFactory;
@@ -218,6 +221,8 @@ public class RuntimeBootStrapper {
IntentAttachPointTypeFactory intentAttachPointTypeFactory =
factories.getFactory(IntentAttachPointTypeFactory.class);
EndpointFactory endpointFactory = factories.getFactory(EndpointFactory.class);
+ DocumentBuilderFactory documentBuilderFactory = factories.getFactory(DocumentBuilderFactory.class);
+ TransformerFactory transformerFactory = factories.getFactory(TransformerFactory.class);
UtilityExtensionPoint utilities = registry.getExtensionPoint(UtilityExtensionPoint.class);
InterfaceContractMapper mapper = utilities.getUtility(InterfaceContractMapper.class);
@@ -232,6 +237,8 @@ public class RuntimeBootStrapper {
scaBindingFactory,
endpointFactory,
intentAttachPointTypeFactory,
+ documentBuilderFactory,
+ transformerFactory,
mapper,
aggregatedDefinitions);
compositeBuilder.build(composite);
diff --git a/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/RuntimeBuilder.java b/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/RuntimeBuilder.java
index 98a44cef9e..6c93fa7800 100644
--- a/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/RuntimeBuilder.java
+++ b/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/RuntimeBuilder.java
@@ -24,8 +24,10 @@ import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.List;
+import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLOutputFactory;
+import javax.xml.transform.TransformerFactory;
import org.apache.tuscany.sca.assembly.AssemblyFactory;
import org.apache.tuscany.sca.assembly.Composite;
@@ -143,11 +145,14 @@ public class RuntimeBuilder {
SCABindingFactory scaBindingFactory,
EndpointFactory endpointFactory,
IntentAttachPointTypeFactory intentAttachPointTypeFactory,
+ DocumentBuilderFactory documentBuilderFactory,
+ TransformerFactory transformerFactory,
InterfaceContractMapper interfaceContractMapper,
SCADefinitions policyDefinitions) {
return new CompositeBuilderImpl(assemblyFactory, endpointFactory, scaBindingFactory,
- intentAttachPointTypeFactory, interfaceContractMapper, policyDefinitions,
+ intentAttachPointTypeFactory, documentBuilderFactory, transformerFactory,
+ interfaceContractMapper, policyDefinitions,
monitor);
}
@@ -170,13 +175,7 @@ public class RuntimeBuilder {
ModelFactoryExtensionPoint modelFactories = registry.getExtensionPoint(ModelFactoryExtensionPoint.class);
// Create a new XML input factory
- // Allow privileged access to factory. Requires RuntimePermission in security policy file.
- XMLInputFactory inputFactory = AccessController.doPrivileged(new PrivilegedAction<XMLInputFactory>() {
- public XMLInputFactory run() {
- return XMLInputFactory.newInstance();
- }
- });
- modelFactories.addFactory(inputFactory);
+ XMLInputFactory inputFactory = modelFactories.getFactory(XMLInputFactory.class);
// Create a validation XML schema extension point
ValidationSchemaExtensionPoint schemas = new DefaultValidationSchemaExtensionPoint();
@@ -191,11 +190,7 @@ public class RuntimeBuilder {
// Create and register StAX processors for SCA assembly XML
// Allow privileged access to factory. Requires RuntimePermission in security policy file.
- XMLOutputFactory outputFactory = AccessController.doPrivileged(new PrivilegedAction<XMLOutputFactory>() {
- public XMLOutputFactory run() {
- return XMLOutputFactory.newInstance();
- }
- });
+ XMLOutputFactory outputFactory = modelFactories.getFactory(XMLOutputFactory.class);
ExtensibleStAXArtifactProcessor staxProcessor =
new ExtensibleStAXArtifactProcessor(staxProcessors, inputFactory, outputFactory, monitor);
@@ -204,9 +199,11 @@ public class RuntimeBuilder {
registry.getExtensionPoint(URLArtifactProcessorExtensionPoint.class);
// Create and register document processors for SCA assembly XML
+ DocumentBuilderFactory documentBuilderFactory = modelFactories.getFactory(DocumentBuilderFactory.class);
+ documentBuilderFactory.setNamespaceAware(true);
documentProcessors.getProcessor(Composite.class);
documentProcessors.addArtifactProcessor(new CompositeDocumentProcessor(staxProcessor, validatingInputFactory,
- policyDefinitions, monitor));
+ documentBuilderFactory, policyDefinitions, monitor));
// Create Model Resolver extension point
ModelResolverExtensionPoint modelResolvers = registry.getExtensionPoint(ModelResolverExtensionPoint.class);
diff --git a/java/sca/modules/node-launcher-equinox/src/main/java/org/apache/tuscany/sca/node/equinox/launcher/EquinoxHost.java b/java/sca/modules/node-launcher-equinox/src/main/java/org/apache/tuscany/sca/node/equinox/launcher/EquinoxHost.java
index 74e7d6ac4a..2a6e24f6e0 100644
--- a/java/sca/modules/node-launcher-equinox/src/main/java/org/apache/tuscany/sca/node/equinox/launcher/EquinoxHost.java
+++ b/java/sca/modules/node-launcher-equinox/src/main/java/org/apache/tuscany/sca/node/equinox/launcher/EquinoxHost.java
@@ -96,6 +96,9 @@ public class EquinoxHost {
// Set system packages
props.put("org.osgi.framework.system.packages", systemPackages);
+ // Use the boot classloader as the parent classloader
+ props.put("osgi.contextClassLoaderParent", "boot");
+
// Set the extension bundle
props.put("osgi.framework.extensions", "org.apache.tuscany.sca.extensibility.equinox");
diff --git a/java/sca/modules/node-launcher-equinox/src/main/java/org/apache/tuscany/sca/node/equinox/launcher/NodeLauncherUtil.java b/java/sca/modules/node-launcher-equinox/src/main/java/org/apache/tuscany/sca/node/equinox/launcher/NodeLauncherUtil.java
index d0c3e6f4f8..07da404d12 100644
--- a/java/sca/modules/node-launcher-equinox/src/main/java/org/apache/tuscany/sca/node/equinox/launcher/NodeLauncherUtil.java
+++ b/java/sca/modules/node-launcher-equinox/src/main/java/org/apache/tuscany/sca/node/equinox/launcher/NodeLauncherUtil.java
@@ -250,7 +250,6 @@ final class NodeLauncherUtil {
if (!entry.isDirectory() && entryName != null
&& entryName.length() > 0
&& !entryName.startsWith(".")
- && !entryName.startsWith("META-INF")
&& entryName.lastIndexOf("/") > 0) {
String pkg = entryName.substring(0, entryName.lastIndexOf("/")).replace('/', '.') + version;
packages.add(pkg);
diff --git a/java/sca/modules/policy/src/main/java/org/apache/tuscany/sca/policy/util/PolicyComputationUtils.java b/java/sca/modules/policy/src/main/java/org/apache/tuscany/sca/policy/util/PolicyComputationUtils.java
index aace23edf6..2e4c6a9d78 100644
--- a/java/sca/modules/policy/src/main/java/org/apache/tuscany/sca/policy/util/PolicyComputationUtils.java
+++ b/java/sca/modules/policy/src/main/java/org/apache/tuscany/sca/policy/util/PolicyComputationUtils.java
@@ -341,10 +341,9 @@ public class PolicyComputationUtils {
}
}
- public static byte[] addApplicablePolicySets(InputStream is, Collection<PolicySet> domainPolicySets) throws Exception {
- DocumentBuilderFactory dbFac = DocumentBuilderFactory.newInstance();
- dbFac.setNamespaceAware(true);
- DocumentBuilder db = dbFac.newDocumentBuilder();
+ public static byte[] addApplicablePolicySets(InputStream is, Collection<PolicySet> domainPolicySets, DocumentBuilderFactory documentBuilderFactory) throws Exception {
+ documentBuilderFactory.setNamespaceAware(true);
+ DocumentBuilder db = documentBuilderFactory.newDocumentBuilder();
Document doc = db.parse(is);
is.close();
return addApplicablePolicySets(doc, domainPolicySets);
diff --git a/java/sca/samples/calculator-osgi/src/main/java/calculator/CalculatorClient.java b/java/sca/samples/calculator-osgi/src/main/java/calculator/CalculatorClient.java
index 4e28301c25..a7dcba8f5e 100644
--- a/java/sca/samples/calculator-osgi/src/main/java/calculator/CalculatorClient.java
+++ b/java/sca/samples/calculator-osgi/src/main/java/calculator/CalculatorClient.java
@@ -42,8 +42,7 @@ public class CalculatorClient {
public void calculate() {
// Calculate
- System.out.println(getClass().getClassLoader());
- System.out.println(Reference.class.getClassLoader());
+ System.out.println("SCA API ClassLoader: " + Reference.class.getClassLoader());
System.out.println("3 + 2=" + calculatorService.add(3, 2));
System.out.println("3 - 2=" + calculatorService.subtract(3, 2));
System.out.println("3 * 2=" + calculatorService.multiply(3, 2));
diff --git a/java/sca/samples/calculator-osgi/src/test/java/calculator/CalculatorTestCase.java b/java/sca/samples/calculator-osgi/src/test/java/calculator/CalculatorTestCase.java
index 0561370d3a..dc0da7d20d 100644
--- a/java/sca/samples/calculator-osgi/src/test/java/calculator/CalculatorTestCase.java
+++ b/java/sca/samples/calculator-osgi/src/test/java/calculator/CalculatorTestCase.java
@@ -39,7 +39,7 @@ public class CalculatorTestCase extends TestCase {
protected void setUp() throws Exception {
launcher = NodeLauncher.newInstance();
node = launcher.createNodeFromClassLoader("Calculator.composite", getClass().getClassLoader());
- System.out.println(node.getClass().getClassLoader());
+ System.out.println("SCA Node API ClassLoader: " + node.getClass().getClassLoader());
node.start();
}
diff --git a/java/sca/samples/domain-management/src/main/java/manager/DistributeAndRunComponents.java b/java/sca/samples/domain-management/src/main/java/manager/DistributeAndRunComponents.java
index 380d501ab5..28eede693d 100644
--- a/java/sca/samples/domain-management/src/main/java/manager/DistributeAndRunComponents.java
+++ b/java/sca/samples/domain-management/src/main/java/manager/DistributeAndRunComponents.java
@@ -40,6 +40,7 @@ import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
+import javax.xml.transform.TransformerFactory;
import org.apache.tuscany.sca.assembly.AssemblyFactory;
import org.apache.tuscany.sca.assembly.Binding;
@@ -100,6 +101,8 @@ public class DistributeAndRunComponents {
private static WorkspaceFactory workspaceFactory;
private static AssemblyFactory assemblyFactory;
private static XMLOutputFactory outputFactory;
+ private static DocumentBuilderFactory documentBuilderFactory;
+ private static TransformerFactory transformerFactory;
private static StAXArtifactProcessor<Object> xmlProcessor;
private static ContributionDependencyBuilder contributionDependencyBuilder;
private static CompositeBuilder domainCompositeBuilder;
@@ -127,6 +130,8 @@ public class DistributeAndRunComponents {
modelFactories = extensionPoints.getExtensionPoint(ModelFactoryExtensionPoint.class);
XMLInputFactory inputFactory = modelFactories.getFactory(XMLInputFactory.class);
outputFactory = modelFactories.getFactory(XMLOutputFactory.class);
+ documentBuilderFactory = modelFactories.getFactory(DocumentBuilderFactory.class);
+ transformerFactory = modelFactories.getFactory(TransformerFactory.class);
// Get contribution workspace and assembly model factories
workspaceFactory = modelFactories.getFactory(WorkspaceFactory.class);
@@ -152,10 +157,12 @@ public class DistributeAndRunComponents {
SCABindingFactory scaBindingFactory = modelFactories.getFactory(SCABindingFactory.class);
IntentAttachPointTypeFactory attachPointTypeFactory = modelFactories.getFactory(IntentAttachPointTypeFactory.class);
InterfaceContractMapper contractMapper = utilities.getUtility(InterfaceContractMapper.class);
- domainCompositeBuilder = new CompositeBuilderImpl(assemblyFactory, scaBindingFactory, attachPointTypeFactory, contractMapper, monitor);
+ domainCompositeBuilder = new CompositeBuilderImpl(assemblyFactory, scaBindingFactory, attachPointTypeFactory,
+ documentBuilderFactory, transformerFactory, contractMapper, monitor);
// Create a node composite builder
- nodeCompositeBuilder = new NodeCompositeBuilderImpl(assemblyFactory, scaBindingFactory, contractMapper, null, monitor);
+ nodeCompositeBuilder = new NodeCompositeBuilderImpl(assemblyFactory, scaBindingFactory,
+ documentBuilderFactory, transformerFactory, contractMapper, null, monitor);
}
diff --git a/java/sca/samples/domain-management/src/main/java/manager/DistributeComponents.java b/java/sca/samples/domain-management/src/main/java/manager/DistributeComponents.java
index 4af2547a81..def0a1894f 100644
--- a/java/sca/samples/domain-management/src/main/java/manager/DistributeComponents.java
+++ b/java/sca/samples/domain-management/src/main/java/manager/DistributeComponents.java
@@ -37,6 +37,7 @@ import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
+import javax.xml.transform.TransformerFactory;
import org.apache.tuscany.sca.assembly.AssemblyFactory;
import org.apache.tuscany.sca.assembly.Binding;
@@ -113,6 +114,8 @@ public class DistributeComponents {
private static WorkspaceFactory workspaceFactory;
private static AssemblyFactory assemblyFactory;
private static XMLOutputFactory outputFactory;
+ private static DocumentBuilderFactory documentBuilderFactory;
+ private static TransformerFactory transformerFactory;
private static StAXArtifactProcessor<Object> xmlProcessor;
private static ContributionDependencyBuilder contributionDependencyBuilder;
private static CompositeBuilder domainCompositeBuilder;
@@ -140,6 +143,8 @@ public class DistributeComponents {
modelFactories = extensionPoints.getExtensionPoint(ModelFactoryExtensionPoint.class);
XMLInputFactory inputFactory = modelFactories.getFactory(XMLInputFactory.class);
outputFactory = modelFactories.getFactory(XMLOutputFactory.class);
+ documentBuilderFactory = modelFactories.getFactory(DocumentBuilderFactory.class);
+ transformerFactory = modelFactories.getFactory(TransformerFactory.class);
// Get contribution workspace and assembly model factories
workspaceFactory = modelFactories.getFactory(WorkspaceFactory.class);
@@ -165,10 +170,12 @@ public class DistributeComponents {
SCABindingFactory scaBindingFactory = modelFactories.getFactory(SCABindingFactory.class);
IntentAttachPointTypeFactory attachPointTypeFactory = modelFactories.getFactory(IntentAttachPointTypeFactory.class);
InterfaceContractMapper contractMapper = utilities.getUtility(InterfaceContractMapper.class);
- domainCompositeBuilder = new CompositeBuilderImpl(assemblyFactory, scaBindingFactory, attachPointTypeFactory, contractMapper, monitor);
+ domainCompositeBuilder = new CompositeBuilderImpl(assemblyFactory, scaBindingFactory, attachPointTypeFactory,
+ documentBuilderFactory, transformerFactory, contractMapper, monitor);
// Create a node composite builder
- nodeCompositeBuilder = new NodeCompositeBuilderImpl(assemblyFactory, scaBindingFactory, contractMapper, null, monitor);
+ nodeCompositeBuilder = new NodeCompositeBuilderImpl(assemblyFactory, scaBindingFactory,
+ documentBuilderFactory, transformerFactory, contractMapper, null, monitor);
}
diff --git a/java/sca/samples/domain-management/src/main/java/manager/WireComponents.java b/java/sca/samples/domain-management/src/main/java/manager/WireComponents.java
index 899a6fd412..d24d5c67c9 100644
--- a/java/sca/samples/domain-management/src/main/java/manager/WireComponents.java
+++ b/java/sca/samples/domain-management/src/main/java/manager/WireComponents.java
@@ -34,6 +34,7 @@ import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamWriter;
+import javax.xml.transform.TransformerFactory;
import org.apache.tuscany.sca.assembly.AssemblyFactory;
import org.apache.tuscany.sca.assembly.Composite;
@@ -92,6 +93,8 @@ public class WireComponents {
private static WorkspaceFactory workspaceFactory;
private static AssemblyFactory assemblyFactory;
private static XMLOutputFactory outputFactory;
+ private static DocumentBuilderFactory documentBuilderFactory;
+ private static TransformerFactory transformerFactory;
private static StAXArtifactProcessor<Object> xmlProcessor;
private static ContributionDependencyBuilder contributionDependencyBuilder;
private static CompositeBuilder domainCompositeBuilder;
@@ -116,6 +119,8 @@ public class WireComponents {
modelFactories = extensionPoints.getExtensionPoint(ModelFactoryExtensionPoint.class);
XMLInputFactory inputFactory = modelFactories.getFactory(XMLInputFactory.class);
outputFactory = modelFactories.getFactory(XMLOutputFactory.class);
+ documentBuilderFactory = modelFactories.getFactory(DocumentBuilderFactory.class);
+ transformerFactory = modelFactories.getFactory(TransformerFactory.class);
// Get contribution workspace and assembly model factories
workspaceFactory = modelFactories.getFactory(WorkspaceFactory.class);
@@ -139,7 +144,8 @@ public class WireComponents {
SCABindingFactory scaBindingFactory = modelFactories.getFactory(SCABindingFactory.class);
IntentAttachPointTypeFactory attachPointTypeFactory = modelFactories.getFactory(IntentAttachPointTypeFactory.class);
InterfaceContractMapper contractMapper = utilities.getUtility(InterfaceContractMapper.class);
- domainCompositeBuilder = new CompositeBuilderImpl(assemblyFactory, scaBindingFactory, attachPointTypeFactory, contractMapper, monitor);
+ domainCompositeBuilder = new CompositeBuilderImpl(assemblyFactory, scaBindingFactory, attachPointTypeFactory,
+ documentBuilderFactory, transformerFactory, contractMapper, monitor);
}