mrglavas    2004/08/08 14:24:58

  Modified:    java/src/org/apache/xerces/parsers DOMParser.java
  Log:
  Adding support for EntityResolver2.
  
  Revision  Changes    Path
  1.72      +68 -6     xml-xerces/java/src/org/apache/xerces/parsers/DOMParser.java
  
  Index: DOMParser.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/parsers/DOMParser.java,v
  retrieving revision 1.71
  retrieving revision 1.72
  diff -u -r1.71 -r1.72
  --- DOMParser.java    25 Mar 2004 04:03:23 -0000      1.71
  +++ DOMParser.java    8 Aug 2004 21:24:57 -0000       1.72
  @@ -20,6 +20,8 @@
   
   import org.apache.xerces.impl.Constants;
   import org.apache.xerces.util.EntityResolverWrapper;
  +import org.apache.xerces.util.EntityResolver2Wrapper;
  +import org.apache.xerces.util.EntityResolver2Wrapper.EntityResolver2;
   import org.apache.xerces.util.ErrorHandlerWrapper;
   import org.apache.xerces.util.SymbolTable;
   import org.apache.xerces.xni.XNIException;
  @@ -56,6 +58,12 @@
       //
       // Constants
       //
  +    
  +    // features
  +    
  +    /** Feature identifier: EntityResolver2. */
  +    protected static final String USE_ENTITY_RESOLVER2 =
  +        Constants.SAX_FEATURE_PREFIX + Constants.USE_ENTITY_RESOLVER2_FEATURE;
   
       // properties
   
  @@ -72,6 +80,15 @@
           SYMBOL_TABLE,
           XMLGRAMMAR_POOL,
       };
  +    
  +    //
  +    // Data
  +    //
  +    
  +    // features
  +    
  +    /** Use EntityResolver2. */
  +    protected boolean fUseEntityResolver2 = true;
   
       //
       // Constructors
  @@ -255,8 +272,14 @@
       public void setEntityResolver(EntityResolver resolver) {
   
           try {
  -            fConfiguration.setProperty(ENTITY_RESOLVER,
  -                                       new EntityResolverWrapper(resolver));
  +            if (fUseEntityResolver2 && resolver instanceof EntityResolver2) {
  +                fConfiguration.setProperty(ENTITY_RESOLVER,
  +                    new EntityResolver2Wrapper((EntityResolver2) resolver));
  +            }
  +            else {
  +                fConfiguration.setProperty(ENTITY_RESOLVER,
  +                    new EntityResolverWrapper(resolver));
  +            }
           }
           catch (XMLConfigurationException e) {
               // do nothing
  @@ -277,9 +300,15 @@
           try {
               XMLEntityResolver xmlEntityResolver =
                   (XMLEntityResolver)fConfiguration.getProperty(ENTITY_RESOLVER);
  -            if (xmlEntityResolver != null &&
  -                xmlEntityResolver instanceof EntityResolverWrapper) {
  -                entityResolver = 
((EntityResolverWrapper)xmlEntityResolver).getEntityResolver();
  +            if (xmlEntityResolver != null) {
  +                if (xmlEntityResolver instanceof EntityResolverWrapper) {
  +                    entityResolver =
  +                        ((EntityResolverWrapper) 
xmlEntityResolver).getEntityResolver();
  +                }
  +                else if (xmlEntityResolver instanceof EntityResolver2Wrapper) {
  +                    entityResolver = 
  +                        ((EntityResolver2Wrapper) 
xmlEntityResolver).getEntityResolver();
  +                }
               }
           }
           catch (XMLConfigurationException e) {
  @@ -362,6 +391,25 @@
           throws SAXNotRecognizedException, SAXNotSupportedException {
   
           try {
  +            
  +            // http://xml.org/sax/features/use-entity-resolver2
  +            //   controls whether the methods of an object implementing
  +            //   org.xml.sax.ext.EntityResolver2 will be used by the parser.
  +            //
  +            // TODO: Uncomment once SAX 2.0.2 is available. -- mrglavas
  +            /** if (featureId.equals(USE_ENTITY_RESOLVER2)) {
  +                if (state != fUseEntityResolver2) {
  +                    fUseEntityResolver2 = state;
  +                    // Refresh EntityResolver wrapper.
  +                    setEntityResolver(getEntityResolver());
  +                }
  +                return;
  +            }**/
  +            
  +            //
  +            // Default handling
  +            //
  +            
               fConfiguration.setFeature(featureId, state);
           }
           catch (XMLConfigurationException e) {
  @@ -394,6 +442,20 @@
           throws SAXNotRecognizedException, SAXNotSupportedException {
   
           try {
  +
  +            // http://xml.org/sax/features/use-entity-resolver2
  +            //   controls whether the methods of an object implementing
  +            //   org.xml.sax.ext.EntityResolver2 will be used by the parser.
  +            //
  +            // TODO: Uncomment once SAX 2.0.2 is available. -- mrglavas
  +            /** if (featureId.equals(USE_ENTITY_RESOLVER2)) {
  +                return fUseEntityResolver2;
  +            }**/
  +            
  +            //
  +            // Default handling
  +            //
  +            
               return fConfiguration.getFeature(featureId);
           }
           catch (XMLConfigurationException e) {
  
  
  

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

Reply via email to