mrglavas    2004/09/21 21:19:34

  Modified:    java/src/org/apache/xerces/impl XMLDTDScannerImpl.java
                        XMLEntityManager.java
                        XMLDocumentFragmentScannerImpl.java
  Log:
  Fixing JIRA Bug #816:

  http://nagoya.apache.org/jira/browse/XERCESJ-816

  

  This had only been partially fixed. A value for the encoding

  attribute specified on an LSInput is authoritative, meaning

  it will override any encoding in an XML or Text declaration.

  Should be covering all of these cases now. Renamed some

  methods in XMLEntityManager.ScannedEntity so that their

  names are more descriptive of what they actually do.
  
  Revision  Changes    Path
  1.51      +4 -2      
xml-xerces/java/src/org/apache/xerces/impl/XMLDTDScannerImpl.java
  
  Index: XMLDTDScannerImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/XMLDTDScannerImpl.java,v
  retrieving revision 1.50
  retrieving revision 1.51
  diff -u -r1.50 -r1.51
  --- XMLDTDScannerImpl.java    1 Sep 2004 03:06:07 -0000       1.50
  +++ XMLDTDScannerImpl.java    22 Sep 2004 04:19:33 -0000      1.51
  @@ -706,7 +706,9 @@
                   encoding = fStrings[1];
   
                   fEntityScanner.setXMLVersion(version);
  -                fEntityScanner.setEncoding(encoding);
  +                if (!fEntityScanner.fCurrentEntity.isEncodingExternallySpecified()) 
{
  +                    fEntityScanner.setEncoding(encoding);
  +                }
   
                   // call handler
                   if (fDTDHandler != null) {
  
  
  
  1.85      +18 -15    xml-xerces/java/src/org/apache/xerces/impl/XMLEntityManager.java
  
  Index: XMLEntityManager.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/XMLEntityManager.java,v
  retrieving revision 1.84
  retrieving revision 1.85
  diff -u -r1.84 -r1.85
  --- XMLEntityManager.java     21 Sep 2004 21:22:33 -0000      1.84
  +++ XMLEntityManager.java     22 Sep 2004 04:19:33 -0000      1.85
  @@ -907,8 +907,8 @@
           String literalSystemId = xmlInputSource.getSystemId();
           String baseSystemId = xmlInputSource.getBaseSystemId();
           String encoding = xmlInputSource.getEncoding();
  +        final boolean encodingExternallySpecified = (encoding != null);
           Boolean isBigEndian = null;
  -             boolean declaredEncoding = false;
   
           // create reader
           InputStream stream = null;
  @@ -920,8 +920,6 @@
           }
           if (reader == null) {
               stream = xmlInputSource.getByteStream();
  -                     if(stream != null && encoding != null)
  -                             declaredEncoding = true;
               if (stream == null) {
                   URL location = new URL(expandedSystemId);
                   URLConnection connect = location.openConnection();
  @@ -1073,7 +1071,7 @@
           fCurrentEntity = new ScannedEntity(name,
                   new XMLResourceIdentifierImpl(publicId, literalSystemId, 
baseSystemId, expandedSystemId),
                   stream, reader, encoding, literal, false, isExternal);
  -             fCurrentEntity.setDeclaredEncoding(declaredEncoding);
  +             
fCurrentEntity.setEncodingExternallySpecified(encodingExternallySpecified);
           fEntityScanner.setCurrentEntity(fCurrentEntity);
           fResourceIdentifier.setValues(publicId, literalSystemId, baseSystemId, 
expandedSystemId);
           return encoding;
  @@ -2317,8 +2315,11 @@
           /** Auto-detected encoding. */
           public String encoding;
           
  -        /** Encoding has been set externally for eg: using DOMInput*/
  -        boolean declaredEncoding = false;
  +        /** 
  +         * Encoding has been set externally, for example
  +         * using a SAX InputSource or a DOM LSInput.
  +         */
  +        boolean externallySpecifiedEncoding = false;
           
           // version
           
  @@ -2495,6 +2496,16 @@
               return null;
           }
           
  +        /** Returns whether the encoding of this entity was externally specified. 
**/
  +        public boolean isEncodingExternallySpecified() {
  +            return externallySpecifiedEncoding;
  +        }
  +        
  +        /** Sets whether the encoding of this entity was externally specified. **/
  +        public void setEncodingExternallySpecified(boolean value) {
  +            externallySpecifiedEncoding = value;
  +        }
  +        
           //
           // Object methods
           //
  @@ -2513,14 +2524,6 @@
               return str.toString();
               
           } // toString():String
  -             
  -             public boolean isDeclaredEncoding() {
  -                     return declaredEncoding;
  -             }
  -             
  -             public void setDeclaredEncoding(boolean value) {
  -                     declaredEncoding = value;
  -             }
   
       } // class ScannedEntity
   
  
  
  
  1.57      +2 -2      
xml-xerces/java/src/org/apache/xerces/impl/XMLDocumentFragmentScannerImpl.java
  
  Index: XMLDocumentFragmentScannerImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/XMLDocumentFragmentScannerImpl.java,v
  retrieving revision 1.56
  retrieving revision 1.57
  diff -u -r1.56 -r1.57
  --- XMLDocumentFragmentScannerImpl.java       1 Sep 2004 03:06:08 -0000       1.56
  +++ XMLDocumentFragmentScannerImpl.java       22 Sep 2004 04:19:34 -0000      1.57
  @@ -680,7 +680,7 @@
           }
   
           // set encoding on reader
  -        if (encoding != null && 
!fEntityScanner.fCurrentEntity.isDeclaredEncoding()) {
  +        if (encoding != null && 
!fEntityScanner.fCurrentEntity.isEncodingExternallySpecified()) {
               fEntityScanner.setEncoding(encoding);
           }
   
  
  
  

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

Reply via email to