Ripped out stale 1.3 XML parsing code.
authorwassa <wassa@ab3bd59b-922f-494d-bb5f-6f0a3c29deca>
Mon, 18 Sep 2006 19:46:23 +0000 (19:46 +0000)
committerwassa <wassa@ab3bd59b-922f-494d-bb5f-6f0a3c29deca>
Mon, 18 Sep 2006 19:46:23 +0000 (19:46 +0000)
git-svn-id: https://subversion.switch.ch/svn/shibboleth/java-idp/trunk@2029 ab3bd59b-922f-494d-bb5f-6f0a3c29deca

src/edu/internet2/middleware/shibboleth/xml/Parser.java [deleted file]
src/edu/internet2/middleware/shibboleth/xml/SchemaStore.java [deleted file]
src/edu/internet2/middleware/shibboleth/xml/SchemasDirectoryImpl.java [deleted file]
src/edu/internet2/middleware/shibboleth/xml/SchemasResourceListImpl.java [deleted file]

diff --git a/src/edu/internet2/middleware/shibboleth/xml/Parser.java b/src/edu/internet2/middleware/shibboleth/xml/Parser.java
deleted file mode 100644 (file)
index 8855860..0000000
+++ /dev/null
@@ -1,329 +0,0 @@
-/*
- * Copyright [2005] [University Corporation for Advanced Internet Development, Inc.]
- *
- * Licensed 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.
- */
-
-/*
- * Parser.java
- * 
- * Validating and non-validating XML parsing using JAXP 1.3.
- * 
- * Previous versions of the code directly used the Xerces DOMParser
- * class. This class has been hidden in the Sun XML stack, and the
- * public interface is to use DocumentBuilderFactory. This module 
- * requires the DOM 3 and JAXP 1.3 support built into J2SE 5.0 and
- * distributed separately for earlier releases of Java from
- * https://jaxp.dev.java.net/. It should also work with Xerces 2.7.0
- * when that release becomes available.
- * 
- * The org.opensaml.XML class already has most of the parsing code,
- * but it uses a subset of the required Schemas. Here we build a
- * wider Schema object, set it as the default SAML schema (because
- * some Shibboleth namespace fields appear in SAML statements), and
- * demand that Schema for every parser (DocumentBuilder) we request.
- * 
- * Currently, this class exposes static methods. Should a real 
- * framework be installed, it would become a singleton object.
- */
-package edu.internet2.middleware.shibboleth.xml;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.StringWriter;
-import java.net.URL;
-import java.util.Iterator;
-import java.util.Map;
-
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.validation.Schema;
-
-import org.apache.log4j.Logger;
-import org.apache.xml.security.c14n.CanonicalizationException;
-import org.apache.xml.security.c14n.Canonicalizer;
-import org.apache.xml.security.c14n.InvalidCanonicalizerException;
-import org.opensaml.SAMLException;
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-
-import edu.internet2.middleware.shibboleth.common.ShibResource;
-
-/**
- * Obtain schema validating and non-validating XML parsers.
- * 
- * @author Howard Gilbert
- */
-public class Parser {
-    
-    // This class is used by both the Idp and SP, so it must use
-    // a conventionally declared logger. The SP has a special logger
-    // setup so this package also logs to the init log.
-    private static Logger log = Logger.getLogger(Parser.class);
-    
-    
-    /**
-     * All the namespaces used by any part of Shibboleth
-     * 
-     * Note: The current Schema compiler requires that dependencies
-     * (imports) be listed before the namespace of the schema
-     * that imports them.
-     */
-    private static String[] namespaces = new String[]{
-            "http://www.w3.org/2000/09/xmldsig#",  
-            "http://www.w3.org/2001/04/xmlenc#",
-            "urn:oasis:names:tc:SAML:1.0:assertion",
-            "urn:oasis:names:tc:SAML:2.0:assertion",
-            "http://www.w3.org/XML/1998/namespace",
-            "http://schemas.xmlsoap.org/soap/envelope/",
-            "urn:mace:shibboleth:credentials:1.0",
-            "urn:oasis:names:tc:SAML:1.0:protocol",
-            "urn:mace:shibboleth:namemapper:1.0",
-            "urn:mace:shibboleth:idp:config:1.0",
-            "urn:mace:shibboleth:wayf:config:1.0",
-            "urn:mace:shibboleth:arp:1.0",
-            "urn:mace:shibboleth:resolver:1.0",
-            "urn:oasis:names:tc:SAML:2.0:metadata",
-            "urn:oasis:names:tc:SAML:metadata:extension",
-            "urn:mace:shibboleth:target:config:1.0",
-            "urn:mace:shibboleth:trust:1.0",
-            "urn:mace:shibboleth:metadata:1.0",
-            "urn:mace:shibboleth:1.0",
-            "http://schemas.xmlsoap.org/soap/envelope/"
-      };
-    
-    private static String[] resources = new String[]{
-            "credentials.xsd",
-            "cs-sstc-schema-assertion-1.1.xsd",
-            "cs-sstc-schema-protocol-1.1.xsd",
-            "namemapper.xsd",
-            "saml-schema-assertion-2.0.xsd",
-            "saml-schema-metadata-2.0.xsd",
-            "saml-schema-metadata-ext.xsd",
-            "shibboleth-arp-1.0.xsd",
-            "shibboleth-idpconfig-1.0.xsd",
-            "shibboleth-metadata-1.0.xsd",
-            "shibboleth-resolver-1.0.xsd",
-            "shibboleth-targetconfig-1.0.xsd",
-            "shibboleth-trust-1.0.xsd",
-            "shibboleth.xsd",
-            "soap-envelope.xsd",
-            "wayfconfig.xsd",
-            "xenc-schema.xsd",
-            "xml.xsd",
-            "xmldsig-core-schema.xsd"
-       };
-    private static String[] oldResources = new String[]{
-            "cs-sstc-schema-assertion-01.xsd",
-            "cs-sstc-schema-protocol-01.xsd",
-            "xmldsig-core-schema.xsd"
-       };
-    
-    // If there were a real Framework here (like Spring) then
-    // the schemaBuilder would be inserted 
-    private static String defaultDirectory = "/schemas/";
-    private static String oldSchemasDir = "/schemas/saml-1.0/";
-    private static final boolean useResourceBuilder=true;
-    
-    private static SchemaStore schemaBuilder = 
-        (useResourceBuilder?
-            (SchemaStore)
-                new SchemasResourceListImpl(defaultDirectory,resources):
-            (SchemaStore)
-                new SchemasDirectoryImpl(defaultDirectory));
-    private static SchemaStore oldSchemasBuilder = 
-        (useResourceBuilder?
-                (SchemaStore)
-                    new SchemasResourceListImpl(oldSchemasDir,oldResources):
-                (SchemaStore)
-                       new SchemasDirectoryImpl(oldSchemasDir));
-    
-    private static Schema schema = schemaBuilder.compileSchema(namespaces);
-    static {
-        // Merge in the XSDs defining non-conflicting namespaces
-        // A non-replacing putAll()
-        Map/*<String,Document>*/ source = schemaBuilder.getSchemaMap();
-        Map/*<String,Document>*/ sink   = oldSchemasBuilder.getSchemaMap();
-        Iterator/*<String>*/ nsi = source.keySet().iterator();
-        while (nsi.hasNext()) {
-            String namespace = (String) nsi.next();
-            if (!sink.containsKey(namespace)) {
-                sink.put(namespace,source.get(namespace));
-            }
-        }
-    }
-       private static Schema schemaOldSAML= 
-           oldSchemasBuilder.compileSchema(namespaces);
-    
-    /**
-     * Load a DOM from a wrapped byte stream.
-     * 
-     * @param ins InputSource The XML document
-     * @param validate If true, use Schema. Otherwise, its raw XML.
-     * @return A DOM 3 tree
-     */
-    public static Document loadDom(InputSource ins, boolean validate) 
-        throws SAMLException, SAXException, IOException {
-
-               Document doc = null;
-               log.debug("Loading XML from (" + ins.getSystemId() + ")" + (validate ? " with Schema validation" : ""));
-               if (validate) {
-            if (schema==null) 
-                throw new SAXException("Cannot validate XML because of invalid Schemas");
-                       doc = org.opensaml.XML.parserPool.parse(ins, schema);
-               } else {
-                       doc = org.opensaml.XML.parserPool.parse(ins, null);
-               }
-               return doc;
-       }
-    
-    
-    /**
-        * A dummy class that pretends to be an old Xerces DOMParser to simplify conversion of existing code.
-        */
-    public static class DOMParser {
-        Document doc = null;
-        boolean validate = false;
-        
-        public DOMParser(boolean validate) {
-            this.validate=validate;
-        }
-        
-        public Document parse(InputSource ins) throws SAXException, IOException, SAMLException {
-            doc = loadDom(ins,validate);
-            return doc;
-        }
-        
-        public Document getDocument() {
-            return doc;
-        }
-    }
-    
-    /**
-     * Write a DOM out to a character stream (for debugging and logging)
-     * 
-     * @param dom The DOM tree to write
-     * @return A string containing the XML in character form.
-     */
-    public static String jaxpSerialize(Node dom) {
-        TransformerFactory factory = TransformerFactory.newInstance();
-        Transformer transformer = null;
-        DOMSource source = new DOMSource(dom);
-        try {
-            transformer = factory.newTransformer();
-            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
-        } catch (TransformerConfigurationException e) {
-            return null;
-        }
-        StringWriter stringWriter = new StringWriter();
-        StreamResult result = new StreamResult(stringWriter);
-        try {
-            transformer.transform(source, result);
-        } catch (TransformerException e1) {
-            return null;
-        }
-        return stringWriter.toString();
-    }
-    
-    /**
-     *  Serializes the XML representation of the SAML object to a stream
-     *
-     * @param  out                      Stream to use for output
-     * @exception  java.io.IOException  Raised if an I/O problem is detected
-     * @exception  SAMLException Raised if the object is incompletely defined 
-     */
-    public static String serialize(Node root){
-       byte[] bs = null;
-        try
-        {
-            Canonicalizer c = Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_EXCL_OMIT_COMMENTS);
-            bs = c.canonicalizeSubtree(root, "#default saml samlp ds xsd xsi code kind rw typens");
-        }
-        catch (InvalidCanonicalizerException e)
-        {
-            log.error("Error obtaining an XML canonicalizer ",e);
-            return null;
-        }
-        catch (CanonicalizationException e)
-        {
-            log.error("Error canonicalizing XML ",e);
-            return null;
-        }
-        return new String(bs);
-    }
-
-    
-    /**
-     * Version of loadDom where the file is specified as a resource name
-     * 
-     * @param configFilePath input resource
-     * @param validate if true, use Schema
-     * @return DOM tree or null if file cannot be loaded or parsed
-     */
-    public static Document loadDom(String configFilePath,boolean validate) throws SAMLException, SAXException, IOException 
-    {
-       InputSource insrc;
-       try {
-            InputStream resourceAsStream = 
-                new ShibResource(configFilePath).getInputStream();
-            insrc = new InputSource(resourceAsStream);
-            insrc.setSystemId(configFilePath);
-        } catch (Exception e1) {
-            log.error("Configuration file "+configFilePath+" could not be located.");
-            return null;
-        }
-        
-        return loadDom(insrc,validate); // Now pass on to the main routine
-        
-    }
-
-    /**
-     * Version of loadDom where the file is specified as a URL.
-     * 
-     * @param configURL input resource
-     * @param validate if true, use Schema
-     * @return DOM tree
-     */
-    public static Document loadDom(URL configURL, boolean validate) throws SAMLException, SAXException, IOException 
-    {
-       InputSource insrc;
-       try {
-            InputStream resourceAsStream = configURL.openStream();
-            insrc = new InputSource(resourceAsStream);
-            insrc.setSystemId(configURL.toString());
-        } catch (Exception e1) {
-            log.error("Configuration URL "+configURL+" could not be accessed.");
-            return null;
-        }
-        
-        return loadDom(insrc,validate); // Now pass on to the main routine
-        
-    }
-    
-    /**
-     * Override the OpenSAML default schema from SAML 1.1 to 
-     * SAML 1.1 plus Shibboleth (and some SAML 2.0).
-     */
-    static {
-        //org.opensaml.XML.parserPool.setDefaultSchema(schema);
-               org.opensaml.XML.parserPool.setDefaultSchemas(schemaOldSAML,schema);
-    }
-    
-}
diff --git a/src/edu/internet2/middleware/shibboleth/xml/SchemaStore.java b/src/edu/internet2/middleware/shibboleth/xml/SchemaStore.java
deleted file mode 100644 (file)
index 4cc19ac..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright [2005] [University Corporation for Advanced Internet Development, Inc.]
- *
- * Licensed 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.
- */
-
-/*
- * Load and compile a bunch of XSD files from some repository. Schemas may be stored in a directory on disk, as
- * resources in the Java classpath, in columns of an XML aware database, or in an XML "catalog" respository. This
- * interface describes the functions that a SchemaStore must provide. Implementations will have additional properties or
- * constructor arguments that define file paths, URL's (database, jdbc, jar, ...).
- */
-
-package edu.internet2.middleware.shibboleth.xml;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.xml.XMLConstants;
-import javax.xml.transform.Source;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.validation.Schema;
-import javax.xml.validation.SchemaFactory;
-
-import org.apache.log4j.Logger;
-import org.w3c.dom.Document;
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
-/**
- * Compile a Schema object from a Map of DOM objects representing XSD files keyed by the Namespace that the XSD defines.
- * <p>
- * This class is typically subclassed by implementations that obtain the Map of XSD DOMs from some external source.
- * </p>
- * 
- * @author Howard Gilbert
- */
-public class SchemaStore implements ErrorHandler {
-
-       private static Logger log = Logger.getLogger(SchemaStore.class);
-
-       protected Map/* <String,Document> */bucket = new HashMap/* <String,Document> */();
-
-       /**
-        * You can create the Map through a subclass and then just get a copy of the Map without compiling. This is useful
-        * when merging sources.
-        * 
-        * @return
-        */
-       public Map/* <String,Document> */getSchemaMap() {
-
-               return bucket;
-       }
-
-       /**
-        * Can only construct this class from a Map.
-        * 
-        * @param bucket
-        */
-       public SchemaStore(Map/* <String,Document> */bucket) {
-
-               super();
-               this.bucket = bucket;
-       }
-
-       protected SchemaStore() {
-
-       }
-
-       /**
-        * Create JAXP 1.3 Schema object from list of namespaces and resource dir
-        * <p>
-        * This is an alternate approach to the Schema building logic used in org.opensaml.XML. That module is driven off a
-        * list of file names. This code reads in all the *.xsd files in a directory, indexes them by the namespace the
-        * schema defines, and then is driven off a list of namespaces. This is more more indirect and requires a bit more
-        * code, but it is more in line with the actual XSD standard where files and filenames are incidental. It can also
-        * be quickly ported to some other schema storage medium (LDAP, Database, ...).
-        * </p>
-        * 
-        * @param namespaces
-        *            Array of required XML namespaces for validation
-        * @param resourcedir
-        *            Resource directory with schema files ("/schemas/")
-        * @return Schema object combining all namespaces.
-        */
-       public Schema compileSchema(String[] namespaces) {
-
-               Schema schema = null;
-               ArrayList sources = new ArrayList();
-               for (int i = 0; i < namespaces.length; i++) {
-                       Document doc = (Document) bucket.get(namespaces[i]);
-                       if (doc == null) {
-                               log.error("Schema missing for namespace (" + namespaces[i] + ").");
-                       } else {
-                               sources.add(new DOMSource(doc));
-                       }
-               }
-               // Now compile all the XSD files into a single composite Schema object
-               SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
-               try {
-                       factory.setErrorHandler(this);
-                       schema = factory.newSchema((Source[]) sources.toArray(new Source[0]));
-               } catch (SAXException e) {
-                       log.error("Schemas failed to compile, dependencies may be corrupt: " + e);
-               }
-               return schema;
-       }
-
-       public void warning(SAXParseException exception) throws SAXException {
-               log.warn(exception);
-               
-       }
-
-       public void error(SAXParseException exception) throws SAXException {
-               log.error(exception);
-               throw exception;
-       }
-
-       public void fatalError(SAXParseException exception) throws SAXException {
-               log.error(exception);
-               throw exception;
-       }
-
-}
diff --git a/src/edu/internet2/middleware/shibboleth/xml/SchemasDirectoryImpl.java b/src/edu/internet2/middleware/shibboleth/xml/SchemasDirectoryImpl.java
deleted file mode 100644 (file)
index 5d7983e..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright [2005] [University Corporation for Advanced Internet Development, Inc.]
- *
- * Licensed 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.
- */
-
-package edu.internet2.middleware.shibboleth.xml;
-
-import java.io.File;
-import java.io.InputStream;
-import java.net.URL;
-
-import org.apache.log4j.Logger;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.xml.sax.InputSource;
-
-/**
- * 
- * Find Schemas in a Resource directory
- * 
- * @author Howard Gilbert
- * 
- */
-public class SchemasDirectoryImpl extends SchemaStore {
-    
-    // This class is used by both the Idp and SP, so it must use
-    // a conventionally declared logger. The SP has a special logger
-    // setup so this package also logs to the init log.
-    private static Logger log = Logger.getLogger(SchemasDirectoryImpl.class);
-    
-    private String resourcedir = "/schemas/";
-
-       
-    /**
-     * Load the bucket initially from a supplied directory.
-     * 
-     * @param resourcedir
-     */
-    public SchemasDirectoryImpl(String resourcedir) {
-        super();
-        this.resourcedir = resourcedir;
-        this.loadBucket();
-    }
-    
-       private boolean loadBucket() {
-               // for each .xsd file in the directory
-        URL resource = Parser.class.getResource(resourcedir);
-        String path = resource.getPath();
-        File dir = new File(path);
-        if (!dir.isDirectory()) {
-            log.error("Cannot find the schemas resource directory");
-            return false;
-        }
-        String[] filenames = dir.list();
-               for (int i=0;i<filenames.length;i++) {
-            String filename = filenames[i];
-            if (!filename.endsWith(".xsd"))
-                continue;
-            InputStream inputStream =
-                    Parser.class.getResourceAsStream(
-                        "/schemas/" + filename);
-            InputSource insrc = new InputSource(inputStream);
-           
-            // Non-validating parse to DOM
-            Document xsddom;
-                       try {
-                               xsddom = Parser.loadDom(insrc,false);
-                       } catch (Exception e) {
-                               log.error("Error parsing XML schema (" + filename + "): " + e);
-                               continue;
-                       }
-            
-            // Get the target namespace from the root element
-            Element ele = xsddom.getDocumentElement();
-            if (!ele.getLocalName().equals("schema")) {
-                log.error("Schema file wrong root element:"+filename);
-                continue;
-            }
-            String targetNamespace = ele.getAttribute("targetNamespace");
-            if (targetNamespace==null) {
-                log.error("Schema has no targetNamespace: "+filename);
-                continue;
-            }
-            
-            // Put the DOM in the Bucket keyed by namespace
-            if (bucket.containsKey(targetNamespace)) {
-                log.debug("Replacing XSD for namespace: "+targetNamespace+" "+filename);
-            } else {
-                log.debug("Defining XSD for namespace:  "+targetNamespace+" "+filename);
-            }
-            bucket.put(targetNamespace,xsddom);
-        }
-               return true;
-       }
-
-}
diff --git a/src/edu/internet2/middleware/shibboleth/xml/SchemasResourceListImpl.java b/src/edu/internet2/middleware/shibboleth/xml/SchemasResourceListImpl.java
deleted file mode 100644 (file)
index 5423a81..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright [2005] [University Corporation for Advanced Internet Development, Inc.]
- *
- * Licensed 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.
- */
-
-package edu.internet2.middleware.shibboleth.xml;
-
-import java.io.InputStream;
-
-import org.apache.log4j.Logger;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.xml.sax.InputSource;
-
-/**
- *  
- * Find Schemas as a list of resource files.
- * 
- * <p>Java resources are files found in the Classpath of the current
- * ClassLoader. They may be in directories on disk, in jar files, or
- * elsewhere. This class must be passed a list of resource names, but
- * it uses the Java runtime to actually locate the xsd data.
- * 
- * @author Howard Gilbert
- */
-public class SchemasResourceListImpl extends SchemaStore {
-    
-    // This class is used by both the Idp and SP, so it must use
-    // a conventionally declared logger. The SP has a special logger
-    // setup so this package also logs to the init log.
-    private static Logger log = Logger.getLogger(SchemasResourceListImpl.class);
-    
-    private String resourceprefix = "/schemas/";
-    private String[] resourceNames = null;
-
-    /**
-     * @param resourcedir
-     */
-    public SchemasResourceListImpl(String resourcedir, String[] resources) {
-        this.resourceprefix = resourcedir;
-        this.resourceNames = resources;
-        this.loadBucket();
-    }
-    
-   
-    private void loadBucket() {
-               for (int i=0;i<resourceNames.length;i++) {
-            String filename = resourceNames[i];
-            if (!filename.endsWith(".xsd")) {
-                log.error(filename + " doesn't end in .xsd, ignoring it.");
-                continue;
-            }
-            String resourceName = resourceprefix+filename;
-            InputStream inputStream =
-                SchemasResourceListImpl.class.getResourceAsStream(
-                            resourceName);
-            if (inputStream == null) {
-                log.error("Resource "+resourceName+" not found, ignoring it.");
-                continue;
-            }
-            InputSource insrc = new InputSource(inputStream);
-            insrc.setSystemId(resourceName);
-           
-            // Non-validating parse to DOM
-            Document xsddom;
-                       try {
-                               xsddom = Parser.loadDom(insrc,false);
-                       } catch (Exception e) {
-                               log.error("Error parsing XML schema (" + resourceName + "): " + e);
-                               continue;
-                       }
-            
-            // Get the target namespace from the root element
-            Element ele = xsddom.getDocumentElement();
-            if (!ele.getLocalName().equals("schema")) {
-                log.error("Schema file wrong root element:"+resourceName);
-                continue;
-            }
-            String targetNamespace = ele.getAttribute("targetNamespace");
-            if (targetNamespace==null || targetNamespace == "") {
-                log.error("Schema has no targetNamespace: "+resourceName);
-                continue;
-            }
-            
-            // Put the DOM in the Bucket keyed by namespace
-            if (bucket.containsKey(targetNamespace)) {
-                log.debug("Replacing XSD for namespace: "+targetNamespace+" "+filename);
-            } else {
-                log.debug("Defining XSD for namespace:  "+targetNamespace+" "+filename);
-            }
-            bucket.put(targetNamespace,xsddom);
-        }
-       }
-
-}