mrglavas    2004/06/15 10:40:49

  Modified:    java/src/org/apache/xerces/impl/xs XMLSchemaLoader.java
  Log:
  The XML Schema API [1] states that the DOMConfiguration of an XSLoader may

  allow setting of a resource-resolver (LSResourceResolver). Supporting this

  parameter so that applications may use their own resolver to locate

  schema imports and includes.

  

  [1] 
http://www.w3.org/Submission/2004/SUBM-xmlschema-api-20040309/xml-schema-api.html#Interface-Loader
  
  Revision  Changes    Path
  1.29      +87 -57    
xml-xerces/java/src/org/apache/xerces/impl/xs/XMLSchemaLoader.java
  
  Index: XMLSchemaLoader.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/XMLSchemaLoader.java,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- XMLSchemaLoader.java      27 May 2004 12:26:56 -0000      1.28
  +++ XMLSchemaLoader.java      15 Jun 2004 17:40:49 -0000      1.29
  @@ -43,6 +43,7 @@
   import org.apache.xerces.impl.xs.models.CMBuilder;
   import org.apache.xerces.impl.xs.models.CMNodeFactory;
   import org.apache.xerces.impl.xs.traversers.XSDHandler;
  +import org.apache.xerces.util.DOMEntityResolverWrapper;
   import org.apache.xerces.util.DOMErrorHandlerWrapper;
   import org.apache.xerces.util.DefaultErrorHandler;
   import org.apache.xerces.util.ParserConfigurationSettings;
  @@ -66,6 +67,7 @@
   import org.apache.xerces.xs.XSModel;
   import org.w3c.dom.DOMException;
   import org.w3c.dom.ls.LSInput;
  +import org.w3c.dom.ls.LSResourceResolver;
   import org.xml.sax.InputSource;
   
   /**
  @@ -214,8 +216,12 @@
   
       // XSLoader attributes
       private DOMStringList fRecognizedParameters = null;
  -     /** DOM L3 error handler */
  -     private DOMErrorHandlerWrapper fErrorHandler = null;
  +     
  +    /** DOM L3 error handler */
  +    private DOMErrorHandlerWrapper fErrorHandler = null;
  +    
  +    /** DOM L3 resource resolver */
  +    private DOMEntityResolverWrapper fResourceResolver = null;
   
       // default constructor.  Create objects we absolutely need:
       public XMLSchemaLoader() {
  @@ -1082,41 +1088,45 @@
        * @see 
org.apache.xerces.dom3.DOMConfiguration#canSetParameter(java.lang.String, 
java.lang.Object)
        */
       public boolean canSetParameter(String name, Object value) {
  -             if(value instanceof Boolean){
  -                     boolean state = ((Boolean)value).booleanValue();
  -                     if (name.equals(Constants.DOM_VALIDATE) ||
  -                         name.equals(SCHEMA_FULL_CHECKING) ||
  -                         name.equals(CONTINUE_AFTER_FATAL_ERROR) ||
  -                         name.equals(ALLOW_JAVA_ENCODINGS) ||
  -                         name.equals(STANDARD_URI_CONFORMANT_FEATURE)){
  -                             return true;
  -
  -                     }
  -                     return false;                   
  -             }
  -             if (name.equals(Constants.DOM_ERROR_HANDLER)||
  -                 name.equals(SYMBOL_TABLE) ||
  -                     name.equals(ERROR_REPORTER) ||
  -                     name.equals(ERROR_HANDLER) ||
  -                     name.equals(ENTITY_RESOLVER) ||
  -                     name.equals(XMLGRAMMAR_POOL) ||
  -                     name.equals(SCHEMA_LOCATION) ||
  -                     name.equals(SCHEMA_NONS_LOCATION) ||
  -                     name.equals(JAXP_SCHEMA_SOURCE)){
  -                             return true;
  -             }
  +        if(value instanceof Boolean){
  +            boolean state = ((Boolean)value).booleanValue();
  +            if (name.equals(Constants.DOM_VALIDATE) ||
  +                name.equals(SCHEMA_FULL_CHECKING) ||
  +                name.equals(CONTINUE_AFTER_FATAL_ERROR) ||
  +                name.equals(ALLOW_JAVA_ENCODINGS) ||
  +                name.equals(STANDARD_URI_CONFORMANT_FEATURE)) {
  +                return true;
  +                
  +            }
  +            return false;                    
  +        }
  +        if (name.equals(Constants.DOM_ERROR_HANDLER) ||
  +            name.equals(Constants.DOM_RESOURCE_RESOLVER) ||
  +            name.equals(SYMBOL_TABLE) ||
  +            name.equals(ERROR_REPORTER) ||
  +            name.equals(ERROR_HANDLER) ||
  +            name.equals(ENTITY_RESOLVER) ||
  +            name.equals(XMLGRAMMAR_POOL) ||
  +            name.equals(SCHEMA_LOCATION) ||
  +            name.equals(SCHEMA_NONS_LOCATION) ||
  +            name.equals(JAXP_SCHEMA_SOURCE)) {
  +            return true;
  +        }
           return false;
       }
  -
  +    
       /* (non-Javadoc)
        * @see org.apache.xerces.dom3.DOMConfiguration#getParameter(java.lang.String)
        */
       public Object getParameter(String name) throws DOMException {
  -             if (name.equals(Constants.DOM_ERROR_HANDLER)){
  -                     if (fErrorHandler != null){
  -                             return fErrorHandler.getErrorHandler();
  -                     }
  -             }
  +        
  +        if (name.equals(Constants.DOM_ERROR_HANDLER)){
  +            return (fErrorHandler != null) ? fErrorHandler.getErrorHandler() : null;
  +        }
  +        else if (name.equals(Constants.DOM_RESOURCE_RESOLVER)) {
  +            return (fResourceResolver != null) ? 
fResourceResolver.getEntityResolver() : null;
  +        }
  +        
           try {
               boolean feature = getFeature(name);
               return (feature) ? Boolean.TRUE : Boolean.FALSE;
  @@ -1135,31 +1145,33 @@
               }
           }
       }
  -
  +    
       /* (non-Javadoc)
        * @see org.apache.xerces.dom3.DOMConfiguration#getParameterNames()
        */
       public DOMStringList getParameterNames() {
           if (fRecognizedParameters == null){
  -             Vector v = new Vector();
  -                     v.add("validate");
  -                     v.add(SYMBOL_TABLE);
  -                     v.add(ERROR_REPORTER);
  -                     v.add(ERROR_HANDLER);
  -                     v.add(ENTITY_RESOLVER);
  -                     v.add(XMLGRAMMAR_POOL);
  -                     v.add(SCHEMA_LOCATION);
  -                     v.add(SCHEMA_NONS_LOCATION);
  -                     v.add(JAXP_SCHEMA_SOURCE);
  -                     v.add(SCHEMA_FULL_CHECKING);
  -                     v.add(CONTINUE_AFTER_FATAL_ERROR);
  -                     v.add(ALLOW_JAVA_ENCODINGS);
  -                     v.add(STANDARD_URI_CONFORMANT_FEATURE);
  -             fRecognizedParameters = new DOMStringListImpl(v);       
  +            Vector v = new Vector();
  +            v.add(Constants.DOM_VALIDATE);
  +            v.add(Constants.DOM_ERROR_HANDLER);
  +            v.add(Constants.DOM_RESOURCE_RESOLVER);
  +            v.add(SYMBOL_TABLE);
  +            v.add(ERROR_REPORTER);
  +            v.add(ERROR_HANDLER);
  +            v.add(ENTITY_RESOLVER);
  +            v.add(XMLGRAMMAR_POOL);
  +            v.add(SCHEMA_LOCATION);
  +            v.add(SCHEMA_NONS_LOCATION);
  +            v.add(JAXP_SCHEMA_SOURCE);
  +            v.add(SCHEMA_FULL_CHECKING);
  +            v.add(CONTINUE_AFTER_FATAL_ERROR);
  +            v.add(ALLOW_JAVA_ENCODINGS);
  +            v.add(STANDARD_URI_CONFORMANT_FEATURE);
  +            fRecognizedParameters = new DOMStringListImpl(v);        
           }
           return fRecognizedParameters;
       }
  -
  +    
       /* (non-Javadoc)
        * @see org.apache.xerces.dom3.DOMConfiguration#setParameter(java.lang.String, 
java.lang.Object)
        */
  @@ -1198,22 +1210,40 @@
                   throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
               }
               return;
  -
  +            
           }
  -
  +        if (name.equals(Constants.DOM_RESOURCE_RESOLVER)) {
  +            if (value instanceof LSResourceResolver) {
  +                try {
  +                    fResourceResolver = new 
DOMEntityResolverWrapper((LSResourceResolver) value);
  +                    setEntityResolver(fResourceResolver);
  +                } 
  +                catch (XMLConfigurationException e) {}
  +            } else {
  +                // REVISIT: type mismatch
  +                String msg =
  +                    DOMMessageFormatter.formatMessage(
  +                        DOMMessageFormatter.DOM_DOMAIN,
  +                        "FEATURE_NOT_SUPPORTED",
  +                        new Object[] { name });
  +                throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  +            }
  +            return;
  +        }
  +        
           try {
               setProperty(name, value);
           } catch (Exception ex) {
  -
  +            
               String msg =
                   DOMMessageFormatter.formatMessage(
  -                    DOMMessageFormatter.DOM_DOMAIN,
  -                    "FEATURE_NOT_SUPPORTED",
  -                    new Object[] { name });
  +                        DOMMessageFormatter.DOM_DOMAIN,
  +                        "FEATURE_NOT_SUPPORTED",
  +                        new Object[] { name });
               throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  -
  +            
           }
  -
  +        
       }
       
        private XMLInputSource dom2xmlInputSource(LSInput is) {
  
  
  

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

Reply via email to