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]