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]