elena 2003/02/12 09:10:34
Modified: java/src/org/apache/xerces/impl XML11EntityScanner.java
XMLEntityManager.java XMLEntityScanner.java
java/src/org/apache/xerces/impl/msg XMLMessages.properties
Log:
Xerces failed to report a fatal error on invalid QName. Bug fix:
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=15079.
Revision Changes Path
1.2 +3 -34
xml-xerces/java/src/org/apache/xerces/impl/XML11EntityScanner.java
Index: XML11EntityScanner.java
===================================================================
RCS file:
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/XML11EntityScanner.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- XML11EntityScanner.java 7 Dec 2002 00:15:58 -0000 1.1
+++ XML11EntityScanner.java 12 Feb 2003 17:10:33 -0000 1.2
@@ -57,43 +57,12 @@
package org.apache.xerces.impl;
-import java.io.EOFException;
-import java.io.FileInputStream;
-import java.io.FilterReader;
-import java.io.InputStream;
-import java.io.InputStreamReader;
import java.io.IOException;
-import java.io.Reader;
-import java.io.StringReader;
-import java.net.URL;
-import java.util.Hashtable;
-import java.util.Stack;
-import java.util.Vector;
-import org.apache.xerces.impl.XMLErrorReporter;
-import org.apache.xerces.impl.io.ASCIIReader;
-import org.apache.xerces.impl.io.UCSReader;
-import org.apache.xerces.impl.io.UTF8Reader;
-import org.apache.xerces.impl.msg.XMLMessageFormatter;
-import org.apache.xerces.impl.validation.ValidationManager;
-
-import org.apache.xerces.util.EncodingMap;
-import org.apache.xerces.util.SymbolTable;
-import org.apache.xerces.util.XMLStringBuffer;
-import org.apache.xerces.util.SymbolTable;
-import org.apache.xerces.util.URI;
import org.apache.xerces.util.XML11Char;
-import org.apache.xerces.util.XMLResourceIdentifierImpl;
-
+import org.apache.xerces.util.XMLStringBuffer;
import org.apache.xerces.xni.QName;
-import org.apache.xerces.xni.XMLResourceIdentifier;
import org.apache.xerces.xni.XMLString;
-import org.apache.xerces.xni.XNIException;
-import org.apache.xerces.xni.parser.XMLComponent;
-import org.apache.xerces.xni.parser.XMLComponentManager;
-import org.apache.xerces.xni.parser.XMLConfigurationException;
-import org.apache.xerces.xni.parser.XMLEntityResolver;
-import org.apache.xerces.xni.parser.XMLInputSource;
/**
* Implements the entity scanner methods in
@@ -111,7 +80,7 @@
//
/** Default constructor. */
- public XML11EntityScanner( ) {
+ public XML11EntityScanner() {
super();
} // <init>()
1.62 +11 -18 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.61
retrieving revision 1.62
diff -u -r1.61 -r1.62
--- XMLEntityManager.java 10 Feb 2003 21:37:34 -0000 1.61
+++ XMLEntityManager.java 12 Feb 2003 17:10:33 -0000 1.62
@@ -57,12 +57,9 @@
package org.apache.xerces.impl;
-import java.io.EOFException;
-import java.io.FileInputStream;
-import java.io.FilterReader;
+import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
-import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
import java.net.URL;
@@ -71,24 +68,18 @@
import java.util.Stack;
import java.util.Vector;
-import org.apache.xerces.impl.XMLErrorReporter;
import org.apache.xerces.impl.io.ASCIIReader;
import org.apache.xerces.impl.io.UCSReader;
import org.apache.xerces.impl.io.UTF8Reader;
import org.apache.xerces.impl.msg.XMLMessageFormatter;
import org.apache.xerces.impl.validation.ValidationManager;
-
import org.apache.xerces.util.EncodingMap;
-import org.apache.xerces.util.XMLStringBuffer;
import org.apache.xerces.util.SecurityManager;
import org.apache.xerces.util.SymbolTable;
import org.apache.xerces.util.URI;
import org.apache.xerces.util.XMLChar;
import org.apache.xerces.util.XMLResourceIdentifierImpl;
-
-import org.apache.xerces.xni.QName;
import org.apache.xerces.xni.XMLResourceIdentifier;
-import org.apache.xerces.xni.XMLString;
import org.apache.xerces.xni.XNIException;
import org.apache.xerces.xni.parser.XMLComponent;
import org.apache.xerces.xni.parser.XMLComponentManager;
@@ -1087,14 +1078,14 @@
if(version == Constants.XML_VERSION_1_0) {
if(fXML10EntityScanner == null) {
fXML10EntityScanner = new XMLEntityScanner();
- fXML10EntityScanner.reset(fSymbolTable, this);
+ fXML10EntityScanner.reset(fSymbolTable, this, fErrorReporter);
}
fEntityScanner = fXML10EntityScanner;
fEntityScanner.setCurrentEntity(fCurrentEntity);
} else {
if(fXML11EntityScanner == null) {
fXML11EntityScanner = new XML11EntityScanner();
- fXML11EntityScanner.reset(fSymbolTable, this);
+ fXML11EntityScanner.reset(fSymbolTable, this, fErrorReporter);
}
fEntityScanner = fXML11EntityScanner;
fEntityScanner.setCurrentEntity(fCurrentEntity);
@@ -1108,7 +1099,7 @@
if(fXML10EntityScanner == null) {
fXML10EntityScanner = new XMLEntityScanner();
}
- fXML10EntityScanner.reset(fSymbolTable, this);
+ fXML10EntityScanner.reset(fSymbolTable, this, fErrorReporter);
fEntityScanner = fXML10EntityScanner;
}
return fEntityScanner;
@@ -1237,10 +1228,12 @@
fCurrentEntity = null;
// reset scanner
- if(fXML10EntityScanner != null)
- fXML10EntityScanner.reset(fSymbolTable, this);
- if(fXML11EntityScanner != null)
- fXML11EntityScanner.reset(fSymbolTable, this);
+ if(fXML10EntityScanner != null){
+ fXML10EntityScanner.reset(fSymbolTable, this, fErrorReporter);
+ }
+ if(fXML11EntityScanner != null) {
+ fXML11EntityScanner.reset(fSymbolTable, this, fErrorReporter);
+ }
// DEBUG
if (DEBUG_ENTITIES) {
1.13 +20 -4 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.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- XMLEntityScanner.java 3 Feb 2003 08:44:43 -0000 1.12
+++ XMLEntityScanner.java 12 Feb 2003 17:10:33 -0000 1.13
@@ -64,6 +64,7 @@
import org.apache.xerces.util.XMLChar;
import org.apache.xerces.util.SymbolTable;
import org.apache.xerces.impl.io.UCSReader;
+import org.apache.xerces.impl.msg.XMLMessageFormatter;
import org.apache.xerces.util.XMLStringBuffer;
import java.io.IOException;
@@ -91,12 +92,17 @@
protected int fBufferSize = XMLEntityManager.DEFAULT_BUFFER_SIZE;
+ /**
+ * Error reporter. This property identifier is:
+ * http://apache.org/xml/properties/internal/error-reporter
+ */
+ protected XMLErrorReporter fErrorReporter;
//
// Constructors
//
/** Default constructor. */
- public XMLEntityScanner( ) {
+ public XMLEntityScanner() {
} // <init>()
//
@@ -490,6 +496,7 @@
int index = -1;
while (XMLChar.isName(fCurrentEntity.ch[fCurrentEntity.position])) {
char c = fCurrentEntity.ch[fCurrentEntity.position];
+
if (c == ':') {
if (index != -1) {
break;
@@ -531,8 +538,15 @@
prefix = fSymbolTable.addSymbol(fCurrentEntity.ch,
offset, prefixLength);
int len = length - prefixLength - 1;
+ int startLocal = index +1;
+ if (!XMLChar.isNameStart(fCurrentEntity.ch[startLocal])){
+ fErrorReporter.reportError(XMLMessageFormatter.XML_DOMAIN,
+ "IllegalQName",
+ null,
+
XMLErrorReporter.SEVERITY_FATAL_ERROR);
+ }
localpart = fSymbolTable.addSymbol(fCurrentEntity.ch,
- index + 1, len);
+ startLocal, len);
}
else {
@@ -1478,10 +1492,12 @@
}
// reset what little state we have...
- public void reset(SymbolTable symbolTable, XMLEntityManager entityManager) {
+ public void reset(SymbolTable symbolTable, XMLEntityManager entityManager,
+ XMLErrorReporter reporter) {
fCurrentEntity = null;
fSymbolTable = symbolTable;
fEntityManager = entityManager;
+ fErrorReporter = reporter;
}
//
1.17 +1 -0
xml-xerces/java/src/org/apache/xerces/impl/msg/XMLMessages.properties
Index: XMLMessages.properties
===================================================================
RCS file:
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/msg/XMLMessages.properties,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- XMLMessages.properties 8 Jan 2003 23:04:11 -0000 1.16
+++ XMLMessages.properties 12 Feb 2003 17:10:34 -0000 1.17
@@ -261,6 +261,7 @@
# Namespaces support
# 4. Using Qualified Names
+ IllegalQName = Element or attribute do not match QName production:
QName::=(NCName':')?NCName.
ElementXMLNSPrefix = Element \"{0}\" cannot have \"xmlns\" as its prefix.
ElementPrefixUnbound = The prefix \"{0}\" for element \"{1}\" is not bound.
AttributePrefixUnbound = The prefix \"{0}\" for attribute \"{1}\" is not
bound.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]