diff options
Diffstat (limited to 'java/sca/modules/contribution/src/main')
2 files changed, 58 insertions, 32 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(); - + } |