summaryrefslogtreecommitdiffstats
path: root/java/sca
diff options
context:
space:
mode:
Diffstat (limited to 'java/sca')
-rw-r--r--java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultValidationSchemaExtensionPoint.java61
-rw-r--r--java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ValidationSchemaExtensionPoint.java29
-rw-r--r--java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/impl/NodeFactoryImpl.java43
3 files changed, 84 insertions, 49 deletions
diff --git a/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultValidationSchemaExtensionPoint.java b/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultValidationSchemaExtensionPoint.java
index 9f4094aa12..d278aae06a 100644
--- a/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultValidationSchemaExtensionPoint.java
+++ b/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultValidationSchemaExtensionPoint.java
@@ -6,15 +6,15 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
- * under the License.
+ * under the License.
*/
package org.apache.tuscany.sca.contribution.processor;
@@ -23,6 +23,7 @@ import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.Set;
@@ -30,66 +31,80 @@ import org.apache.tuscany.sca.extensibility.ServiceDeclaration;
import org.apache.tuscany.sca.extensibility.ServiceDiscovery;
/**
- * Default implementation of an extension point for XML schemas.
+ * Default implementation of an extension point for XML schemas.
*
* @version $Rev$ $Date$
*/
public class DefaultValidationSchemaExtensionPoint implements ValidationSchemaExtensionPoint {
-
+ private boolean enabled;
private List<String> schemas = new ArrayList<String>();
private boolean loaded;
-
+
public void addSchema(String uri) {
schemas.add(uri);
}
-
+
public void removeSchema(String uri) {
schemas.remove(uri);
}
-
+
/**
* Load schema declarations from META-INF/services/
* org.apache.tuscany.sca.contribution.processor.ValidationSchema files
*/
private synchronized void loadSchemas() {
- if (loaded)
+ if (loaded || (!enabled))
return;
// Get the schema declarations
- Set<ServiceDeclaration> schemaDeclarations;
+ Set<ServiceDeclaration> schemaDeclarations;
try {
- schemaDeclarations = ServiceDiscovery.getInstance().getServiceDeclarations("org.apache.tuscany.sca.contribution.processor.ValidationSchema");
+ schemaDeclarations =
+ ServiceDiscovery.getInstance()
+ .getServiceDeclarations("org.apache.tuscany.sca.contribution.processor.ValidationSchema");
} catch (IOException e) {
throw new IllegalStateException(e);
- }
-
+ }
+
// TODO - temp fix to ensure that the schema tuscany-sca.xsd always comes first
String tuscanyScaXsd = null;
-
+
// Find each schema
- for (ServiceDeclaration schemaDeclaration: schemaDeclarations) {
+ for (ServiceDeclaration schemaDeclaration : schemaDeclarations) {
URL url = schemaDeclaration.getResource(schemaDeclaration.getClassName());
if (url == null) {
throw new IllegalArgumentException(new FileNotFoundException(schemaDeclaration.getClassName()));
}
-
- if (url.toString().contains("tuscany-sca.xsd")){
+
+ if (url.toString().contains("tuscany-sca-1.1.xsd")) {
tuscanyScaXsd = url.toString();
} else {
schemas.add(url.toString());
}
}
-
- if (tuscanyScaXsd != null){
+
+ if (tuscanyScaXsd != null) {
schemas.add(0, tuscanyScaXsd);
}
-
+
loaded = true;
}
-
+
public List<String> getSchemas() {
- loadSchemas();
- return schemas;
+ if (enabled) {
+ loadSchemas();
+ return schemas;
+ } else {
+ return Collections.emptyList();
+ }
+ }
+
+ public boolean isEnabled() {
+ return enabled;
+ }
+
+ public void setEnabled(boolean enabled) {
+ this.enabled = enabled;
}
}
diff --git a/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ValidationSchemaExtensionPoint.java b/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ValidationSchemaExtensionPoint.java
index cc3bb59a5b..67ec55b72e 100644
--- a/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ValidationSchemaExtensionPoint.java
+++ b/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ValidationSchemaExtensionPoint.java
@@ -6,15 +6,15 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
- * under the License.
+ * under the License.
*/
package org.apache.tuscany.sca.contribution.processor;
@@ -28,25 +28,36 @@ import java.util.List;
* @version $Rev$ $Date$
*/
public interface ValidationSchemaExtensionPoint {
-
+ /**
+ * Set the flag to control if schema validation should be enabled
+ * @param enabled
+ */
+ void setEnabled(boolean enabled);
+
+ /**
+ * Test the schema validation is enabled
+ * @return
+ */
+ boolean isEnabled();
+
/**
* Add a schema.
- *
+ *
* @param uri the URI of the schema
*/
void addSchema(String uri);
-
+
/**
* Remove a schema.
- *
+ *
* @param uri the URI of the schema
*/
void removeSchema(String uri);
-
+
/**
* Returns the list of schemas registered in the extension point.
* @return the list of schemas
*/
List<String> getSchemas();
-
+
}
diff --git a/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/impl/NodeFactoryImpl.java b/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/impl/NodeFactoryImpl.java
index 053e40b5ac..2e008fa1cc 100644
--- a/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/impl/NodeFactoryImpl.java
+++ b/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/impl/NodeFactoryImpl.java
@@ -6,15 +6,15 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
-*
+*
* http://www.apache.org/licenses/LICENSE-2.0
-*
+*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
-* under the License.
+* under the License.
*/
package org.apache.tuscany.sca.node.osgi.impl;
@@ -55,6 +55,7 @@ import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint;
import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor;
import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessorExtensionPoint;
+import org.apache.tuscany.sca.contribution.processor.ValidationSchemaExtensionPoint;
import org.apache.tuscany.sca.contribution.resolver.ExtensibleModelResolver;
import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
@@ -98,7 +99,7 @@ import org.osgi.framework.Bundle;
/**
* Represents an SCA runtime node.
- *
+ *
* @version $Rev$ $Date$
*/
public class NodeFactoryImpl {
@@ -131,7 +132,7 @@ public class NodeFactoryImpl {
private Map<Bundle, Node> nodes = new ConcurrentHashMap<Bundle, Node>();
- /**
+ /**
* Constructs a new Node controller
*/
public NodeFactoryImpl() {
@@ -219,10 +220,17 @@ public class NodeFactoryImpl {
}
long start = currentTimeMillis();
- // Create extension point registry
+ // Create extension point registry
extensionPoints = new DefaultExtensionPointRegistry();
- // Use the runtime-enabled assembly factory
+ // Enable schema validation only of the logger level is FINE or higher
+ ValidationSchemaExtensionPoint schemas =
+ extensionPoints.getExtensionPoint(ValidationSchemaExtensionPoint.class);
+ if (schemas != null) {
+ schemas.setEnabled(logger.isLoggable(Level.FINE));
+ }
+
+ // Use the runtime-enabled assembly factory
modelFactories = extensionPoints.getExtensionPoint(FactoryExtensionPoint.class);
assemblyFactory = new RuntimeAssemblyFactory();
modelFactories.addFactory(assemblyFactory);
@@ -230,6 +238,7 @@ public class NodeFactoryImpl {
// Create a monitor
utilities = extensionPoints.getExtensionPoint(UtilityExtensionPoint.class);
MonitorFactory monitorFactory = utilities.getUtility(MonitorFactory.class);
+
monitor = monitorFactory.createMonitor();
// Initialize the Tuscany module activators
@@ -352,10 +361,10 @@ public class NodeFactoryImpl {
// resolve any contributions or composites as they may depend on the full
// definitions.xml picture
- // get all definitions.xml artifacts from contributions and aggregate
+ // get all definitions.xml artifacts from contributions and aggregate
// 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
+ // each contribution so that for unresolved items the resolution
+ // processing will look in the system contribution
for (Contribution contribution : workspace.getContributions()) {
// aggregate definitions
for (Artifact artifact : contribution.getArtifacts()) {
@@ -367,19 +376,19 @@ public class NodeFactoryImpl {
// create a default import and wire it up to the system contribution
// model resolver. This is the trick that makes the resolution processing
- // skip over to the system contribution if resolution is unsuccessful
+ // skip over to the system contribution if resolution is unsuccessful
// in the current contribution
DefaultImport defaultImport = contributionFactory.createDefaultImport();
defaultImport.setModelResolver(systemContribution.getModelResolver());
contribution.getImports().add(defaultImport);
}
- // now resolve the system contribution and add the contribution
+ // now resolve the system contribution and add the contribution
// to the workspace
contributionProcessor.resolve(systemContribution, workspace.getModelResolver());
workspace.getContributions().add(systemContribution);
- // TODO - Now we can calculate applicable policy sets for each composite
+ // TODO - Now we can calculate applicable policy sets for each composite
// Build the contribution dependencies
Set<Contribution> resolved = new HashSet<Contribution>();
@@ -444,13 +453,13 @@ public class NodeFactoryImpl {
tempComposite.setName(new QName(SCA11_TUSCANY_NS, "_domain_fragment_"));
tempComposite.setURI(SCA11_TUSCANY_NS + "_domain_fragment_.composite");
- // Include the node composite in the top-level composite
+ // Include the node composite in the top-level composite
tempComposite.getIncludes().add(composite);
/*
// The following line may return null, to be investigated
XPathFactory xPathFactory = modelFactories.getFactory(XPathFactory.class);
-
+
for (PolicySet policySet : systemDefinitions.getPolicySets()) {
if (policySet.getAppliesTo() != null) {
XPath xpath = xPathFactory.newXPath();
@@ -489,7 +498,7 @@ public class NodeFactoryImpl {
/**
* Analyze problems reported by the artifact processors and builders.
- *
+ *
* @throws Exception
*/
private void analyzeProblems() throws Exception {
@@ -617,7 +626,7 @@ public class NodeFactoryImpl {
serviceName = null;
}
- // Lookup the component
+ // Lookup the component
Component component = null;
for (Component compositeComponent : domainFragementComposite.getIncludes().get(0).getComponents()) {