Class SchemaLocationResolver

  • All Implemented Interfaces:
    XSDSchemaLocationResolver
    Direct Known Subclasses:
    AppSchemaLocationResolver

    public class SchemaLocationResolver
    extends Object
    implements XSDSchemaLocationResolver
    Resolves a physical schema location from a namespace uri.

    This class works from a XSD instance from which it resolves location on disk relative to.

    Example usage:

             XSD xsd = ...
             String namespaceURI = xsd.getNamesapceURI();
    
             SchemaLocationResolver resolver = new SchemaLocationResolver( xsd );
             String schemaLocation = locator.resolveSchemaLocation( null, namespaceURI, "mySchema.xsd" );
             
    Author:
    Justin Deoliveira, The Open Planning Project
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected String[] lookupDirectories
      A list of locations to use as prefixes when looking up schema files.
      protected XSD xsd
      the xsd instance
    • Constructor Summary

      Constructors 
      Constructor Description
      SchemaLocationResolver​(XSD xsd)
      Creates the new schema location resolver.
      SchemaLocationResolver​(XSD xsd, String... lookupDirectories)
      Creates the new schema location resolver specifying additional directories to locate schema files in.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean canHandle​(XSDSchema schema, String uri, String location)
      Determines if the locator can resolve the schema location for a particular namespace uri and schema location.
      String resolveSchemaLocation​(XSDSchema schema, String uri, String location)
      Resolves location to a physical location.
      String toString()  
      • Methods inherited from class Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • xsd

        protected XSD xsd
        the xsd instance
      • lookupDirectories

        protected String[] lookupDirectories
        A list of locations to use as prefixes when looking up schema files.

        This value should be set in cases where an xml schema imports or includes schema files from sub directories.

    • Constructor Detail

      • SchemaLocationResolver

        public SchemaLocationResolver​(XSD xsd)
        Creates the new schema location resolver.
        Parameters:
        xsd - The xsd to resolve filenames relative to.
      • SchemaLocationResolver

        public SchemaLocationResolver​(XSD xsd,
                                      String... lookupDirectories)
        Creates the new schema location resolver specifying additional directories to locate schema files in.

        The lookupDirectories parameter should be used in cases where a main schema imports or includes files from sub directories. Consider the following schema file structure:

           main.xsd
           dir1/
              include1.xsd
           dir2/
              include2.xsd
         
        The constructor would be called with:
         new SchemaLocationResolver(this,"include1","include2");
         
        Parameters:
        xsd - The xsd to resolve files relative to.
        lookupDirectories - Additional lookup directories relative to the xsd to lookup files in.
    • Method Detail

      • canHandle

        public boolean canHandle​(XSDSchema schema,
                                 String uri,
                                 String location)
        Determines if the locator can resolve the schema location for a particular namespace uri and schema location.
        Returns:
        true if it can handle, otherwise false.
      • resolveSchemaLocation

        public String resolveSchemaLocation​(XSDSchema schema,
                                            String uri,
                                            String location)
        Resolves location to a physical location.

        Resolution is performed by stripping the filename off of location and looking up a resource located in the same package as the xsd.

        Specified by:
        resolveSchemaLocation in interface XSDSchemaLocationResolver
      • toString

        public String toString()
        Overrides:
        toString in class Object