neilg       2002/09/10 07:20:07

  Modified:    java/src/org/apache/xerces/impl XMLEntityManager.java
                        XMLEntityScanner.java XMLScanner.java
                        XMLDocumentFragmentScannerImpl.java
  Log:
  revert part of last commit.  That was experimental code that should not have been 
checked in.
  
  Revision  Changes    Path
  1.42      +27 -23    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.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- XMLEntityManager.java     10 Sep 2002 14:04:52 -0000      1.41
  +++ XMLEntityManager.java     10 Sep 2002 14:20:07 -0000      1.42
  @@ -79,7 +79,6 @@
   import org.apache.xerces.impl.validation.ValidationManager;
   
   import org.apache.xerces.util.EncodingMap;
  -import org.apache.xerces.util.XMLStringBuffer;
   import org.apache.xerces.util.SymbolTable;
   import org.apache.xerces.util.URI;
   import org.apache.xerces.util.XMLChar;
  @@ -2741,7 +2740,7 @@
           } // scanLiteral(int,XMLString):int
   
           /**
  -         * Scans a range of character data up to the specified delimiter,
  +         * Scans a range of character data up to the specicied delimiter,
            * setting the fields of the XMLString structure, appropriately.
            * <p>
            * <strong>Note:</strong> The characters are consumed.
  @@ -2770,16 +2769,8 @@
            * @throws IOException  Thrown if i/o error occurs.
            * @throws EOFException Thrown on end of file.
            */
  -        public boolean scanData(String delimiter, XMLStringBuffer buffer)
  +        public boolean scanData(String delimiter, XMLString data)
               throws IOException {
  -            boolean done = false;
  -            int delimLen = delimiter.length();
  -            char charAt0 = delimiter.charAt(0);
  -            int offset = fCurrentEntity.position;
  -            int c = fCurrentEntity.ch[offset];
  -            int newlines = 0;
  -            boolean external = fCurrentEntity.isExternal();
  -            do {
               if (DEBUG_BUFFER) {
                   System.out.print("(scanData: ");
                   print();
  @@ -2787,6 +2778,9 @@
               }
   
               // load more characters, if needed
  +            int delimLen = delimiter.length();
  +            char charAt0 = delimiter.charAt(0);
  +            //int limit = fCurrentEntity.count - delimLen + 1;
   
               if (fCurrentEntity.position == fCurrentEntity.count) {
                   load(0, true);
  @@ -2800,7 +2794,7 @@
               if (fCurrentEntity.position >= fCurrentEntity.count - delimLen) {
                   // something must be wrong with the input:  e.g., file ends  an 
unterminated comment
                   int length = fCurrentEntity.count - fCurrentEntity.position;
  -                buffer.append (fCurrentEntity.ch, fCurrentEntity.position, length); 
  +                data.setValues(fCurrentEntity.ch, fCurrentEntity.position, length); 
                   fCurrentEntity.columnNumber += fCurrentEntity.count;
                   fCurrentEntity.position = fCurrentEntity.count;
                   load(0,true);
  @@ -2808,9 +2802,10 @@
               }
   
               // normalize newlines
  -            offset = fCurrentEntity.position;
  -            c = fCurrentEntity.ch[offset];
  -            newlines = 0;
  +            int offset = fCurrentEntity.position;
  +            int c = fCurrentEntity.ch[offset];
  +            int newlines = 0;
  +            boolean external = fCurrentEntity.isExternal();
               if (c == '\n' || (c == '\r' && external)) {
                   if (DEBUG_BUFFER) {
                       System.out.print("[newline, "+offset+", 
"+fCurrentEntity.position+": ");
  @@ -2823,6 +2818,7 @@
                           newlines++;
                           fCurrentEntity.lineNumber++;
                           fCurrentEntity.columnNumber = 1;
  +                        /***/
                           if (fCurrentEntity.position == fCurrentEntity.count) {
                               offset = 0;
                               fCurrentEntity.position = newlines;
  @@ -2830,6 +2826,7 @@
                                   break;
                               }
                           }
  +                        /***/
                           if (fCurrentEntity.ch[fCurrentEntity.position] == '\n') {
                               fCurrentEntity.position++;
                               offset++;
  @@ -2838,11 +2835,13 @@
                           else {
                               newlines++;
                           }
  +                        /***/
                       }
                       else if (c == '\n') {
                           newlines++;
                           fCurrentEntity.lineNumber++;
                           fCurrentEntity.columnNumber = 1;
  +                        /***/
                           if (fCurrentEntity.position == fCurrentEntity.count) {
                               offset = 0;
                               fCurrentEntity.position = newlines;
  @@ -2851,6 +2850,14 @@
                                   break;
                               }
                           }
  +                        /***/
  +                        /*** NEWLINE NORMALIZATION ***
  +                        if (fCurrentEntity.ch[fCurrentEntity.position] == '\r'
  +                            && external) {
  +                            fCurrentEntity.position++;
  +                            offset++;
  +                        }
  +                        /***/
                       }
                       else {
                           fCurrentEntity.position--;
  @@ -2862,7 +2869,7 @@
                   }
                   int length = fCurrentEntity.position - offset;
                   if (fCurrentEntity.position == fCurrentEntity.count - 1) {
  -                    buffer.append(fCurrentEntity.ch, offset, length);
  +                    data.setValues(fCurrentEntity.ch, offset, length);
                       if (DEBUG_BUFFER) {
                           System.out.print("]newline, "+offset+", 
"+fCurrentEntity.position+": ");
                           print();
  @@ -2878,6 +2885,7 @@
               }
   
               // iterate over buffer looking for delimiter
  +            boolean done = false;
               OUTER: while (fCurrentEntity.position < fCurrentEntity.count) {
                   c = fCurrentEntity.ch[fCurrentEntity.position++];
                   if (c == charAt0) {
  @@ -2905,10 +2913,7 @@
                   }
                   else if (XMLChar.isInvalid(c)) {
                       fCurrentEntity.position--;
  -                    int length = fCurrentEntity.position - offset;
  -                    fCurrentEntity.columnNumber += length - newlines;
  -                    buffer.append(fCurrentEntity.ch, offset, length); 
  -                    return true;
  +                    break;
                   }
               }
               int length = fCurrentEntity.position - offset;
  @@ -2916,7 +2921,7 @@
               if (done) {
                   length -= delimLen;
               }
  -            buffer.append (fCurrentEntity.ch, offset, length);
  +            data.setValues(fCurrentEntity.ch, offset, length);
   
               // return true if string was skipped
               if (DEBUG_BUFFER) {
  @@ -2924,7 +2929,6 @@
                   print();
                   System.out.println(" -> " + done);
               }
  -            } while (!done);
               return !done;
   
           } // scanData(String,XMLString)
  
  
  
  1.6       +2 -3      xml-xerces/java/src/org/apache/xerces/impl/XMLEntityScanner.java
  
  Index: XMLEntityScanner.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/XMLEntityScanner.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- XMLEntityScanner.java     10 Sep 2002 14:04:52 -0000      1.5
  +++ XMLEntityScanner.java     10 Sep 2002 14:20:07 -0000      1.6
  @@ -63,7 +63,6 @@
   import org.apache.xerces.xni.QName;
   import org.apache.xerces.xni.XMLLocator;
   import org.apache.xerces.xni.XMLString;
  -import org.apache.xerces.util.XMLStringBuffer;
   
   /**
    * This class allows various parser scanners to scan basic XML constructs
  @@ -289,7 +288,7 @@
        * @throws IOException  Thrown if i/o error occurs.
        * @throws EOFException Thrown on end of file.
        */
  -    public abstract boolean scanData(String delimiter, XMLStringBuffer data) 
  +    public abstract boolean scanData(String delimiter, XMLString data) 
           throws IOException;
   
       /**
  
  
  
  1.19      +10 -5     xml-xerces/java/src/org/apache/xerces/impl/XMLScanner.java
  
  Index: XMLScanner.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/XMLScanner.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- XMLScanner.java   10 Sep 2002 14:04:52 -0000      1.18
  +++ XMLScanner.java   10 Sep 2002 14:20:07 -0000      1.19
  @@ -637,10 +637,11 @@
               }
           }
   
  -        fStringBuffer.clear();
           // data
  -        if (fEntityScanner.scanData("?>", fStringBuffer)) {
  +        if (fEntityScanner.scanData("?>", data)) {
  +            fStringBuffer.clear();
               do {
  +                fStringBuffer.append(data);
                   int c = fEntityScanner.peekChar();
                   if (c != -1) {
                       if (XMLChar.isHighSurrogate(c)) {
  @@ -652,7 +653,8 @@
                           fEntityScanner.scanChar();
                       }
                   }
  -            } while (fEntityScanner.scanData("?>", fStringBuffer));
  +            } while (fEntityScanner.scanData("?>", data));
  +            fStringBuffer.append(data);
               data.setValues(fStringBuffer);
           }
   
  @@ -677,7 +679,9 @@
           // text
           // REVISIT: handle invalid character, eof
           text.clear();
  -        while (fEntityScanner.scanData("--", text)) {
  +        while (fEntityScanner.scanData("--", fString)) {
  +            text.append(fString);
  +            /***/
               int c = fEntityScanner.peekChar();
               if (c != -1) {
                   if (XMLChar.isHighSurrogate(c)) {
  @@ -690,6 +694,7 @@
                   }
               } 
           }
  +        text.append(fString);
           if (!fEntityScanner.skipChar('>')) {
               reportFatalError("DashDashInComment", null);
           }
  
  
  
  1.18      +5 -6      
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.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- XMLDocumentFragmentScannerImpl.java       10 Sep 2002 14:04:52 -0000      1.17
  +++ XMLDocumentFragmentScannerImpl.java       10 Sep 2002 14:20:07 -0000      1.18
  @@ -898,10 +898,9 @@
           }
   
           while (true) {
  -            fStringBuffer.clear();
  -            if (!fEntityScanner.scanData("]]", fStringBuffer)) {
  -                if (fDocumentHandler != null && fStringBuffer.length > 0) {
  -                    fDocumentHandler.characters(fStringBuffer, null);
  +            if (!fEntityScanner.scanData("]]", fString)) {
  +                if (fDocumentHandler != null && fString.length > 0) {
  +                    fDocumentHandler.characters(fString, null);
                   }
                   int brackets = 2;
                   while (fEntityScanner.skipChar(']')) {
  @@ -925,7 +924,7 @@
               }
               else {
                   if (fDocumentHandler != null) {
  -                    fDocumentHandler.characters(fStringBuffer, null);
  +                    fDocumentHandler.characters(fString, null);
                   }
                   int c = fEntityScanner.peekChar();
                   if (c != -1 && XMLChar.isInvalid(c)) {
  
  
  

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

Reply via email to