Author: jsdelfino
Date: Mon Oct  1 21:39:51 2007
New Revision: 581135

URL: http://svn.apache.org/viewvc?rev=581135&view=rev
Log:
Load extension schemas declared in 
META-INF/services/org.apache.tuscany.sca.contribution.processor.ValidationSchema
 files and use them to validate assembly XML files.

Modified:
    
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultValidatingXMLInputFactory.java
    
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultValidationSchemaExtensionPoint.java

Modified: 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultValidatingXMLInputFactory.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultValidatingXMLInputFactory.java?rev=581135&r1=581134&r2=581135&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultValidatingXMLInputFactory.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultValidatingXMLInputFactory.java
 Mon Oct  1 21:39:51 2007
@@ -39,6 +39,8 @@
 import javax.xml.validation.Schema;
 import javax.xml.validation.SchemaFactory;
 
+import org.xml.sax.SAXParseException;
+
 /**
  * Default implementation of an XMLInputFactory that creates validating
  * XMLStreamReaders.
@@ -86,9 +88,11 @@
         } catch (Error e) {
             //FIXME Log this, some old JDKs don't support XMLSchema validation
             //e.printStackTrace();
+        } catch (SAXParseException e) {
+            throw new IllegalStateException(e);
         } catch (Exception e) {
             //FIXME Log this, some old JDKs don't support XMLSchema validation
-            //e.printStackTrace();
+            e.printStackTrace();
         }
     }
 

Modified: 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultValidationSchemaExtensionPoint.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultValidationSchemaExtensionPoint.java?rev=581135&r1=581134&r2=581135&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultValidationSchemaExtensionPoint.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultValidationSchemaExtensionPoint.java
 Mon Oct  1 21:39:51 2007
@@ -19,9 +19,14 @@
 
 package org.apache.tuscany.sca.contribution.processor;
 
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.tuscany.sca.contribution.util.ServiceConfigurationUtil;
+
 /**
  * DefaultValidationSchemaExtensionPoint
  *
@@ -30,6 +35,7 @@
 public class DefaultValidationSchemaExtensionPoint implements 
ValidationSchemaExtensionPoint {
     
     private List<String> schemas = new ArrayList<String>();
+    private boolean loaded;
     
     public void addSchema(String uri) {
         schemas.add(uri);
@@ -39,7 +45,37 @@
         schemas.remove(uri);
     }
     
+    /**
+     * Load schema declarations from META-INF/services/
+     * org.apache.tuscany.sca.contribution.processor.ValidationSchema files
+     */
+    private void loadSchemas() {
+        if (loaded)
+            return;
+
+        // Get the schema declarations
+        ClassLoader classLoader = 
ValidationSchemaExtensionPoint.class.getClassLoader();
+        List<String> schemaDeclarations; 
+        try {
+            schemaDeclarations = 
ServiceConfigurationUtil.getServiceClassNames(classLoader, 
"org.apache.tuscany.sca.contribution.processor.ValidationSchema");
+        } catch (IOException e) {
+            throw new IllegalStateException(e);
+        }
+        
+        // Find each schema
+        for (String schemaDeclaration: schemaDeclarations) {
+            URL url = classLoader.getResource(schemaDeclaration);
+            if (url == null) {
+                throw new IllegalArgumentException(new 
FileNotFoundException(schemaDeclaration));
+            }
+            schemas.add(url.toString());
+        }
+        
+        loaded = true;
+    }
+    
     public List<String> getSchemas() {
+        loadSchemas();
         return schemas;
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to