You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by mr...@apache.org on 2004/06/15 19:40:49 UTC

cvs commit: xml-xerces/java/src/org/apache/xerces/impl/xs XMLSchemaLoader.java

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: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org