summaryrefslogtreecommitdiff
path: root/gnu/xml/stream/XMLParser.java
diff options
context:
space:
mode:
authorChris Burdess <dog@bluezoo.org>2006-03-03 12:30:59 +0000
committerChris Burdess <dog@bluezoo.org>2006-03-03 12:30:59 +0000
commit85b35b1bda7ca489cbe770303289ed28c2a49363 (patch)
tree6ad41665c318feeebd7793a292b9f53d3bf3c52d /gnu/xml/stream/XMLParser.java
parent6ecf858745c60dcbf2b5ffac9da4e07ec15862d4 (diff)
downloadclasspath-85b35b1bda7ca489cbe770303289ed28c2a49363.tar.gz
2006-03-03 Chris Burdess <dog@gnu.org>
Fixes PR 26503 * gnu/xml/stream/EntityReferenceImpl.java, gnu/xml/stream/FilteredEventReader.java, gnu/xml/stream/SAXParser.java, gnu/xml/stream/XIncludeFilter.java, gnu/xml/stream/XMLEventAllocatorImpl.java, gnu/xml/stream/XMLEventFactoryImpl.java, gnu/xml/stream/XMLEventImpl.java, gnu/xml/stream/XMLEventReaderImpl.java, gnu/xml/stream/XMLEventWriterImpl.java, gnu/xml/stream/XMLInputFactoryImpl.java, gnu/xml/stream/XMLOutputFactoryImpl.java, gnu/xml/stream/XMLParser.java, javax/xml/stream/EventFilter.java, javax/xml/stream/Location.java, javax/xml/stream/StreamFilter.java, javax/xml/stream/XMLEventFactory.java, javax/xml/stream/XMLEventReader.java, javax/xml/stream/XMLEventWriter.java, javax/xml/stream/XMLInputFactory.java, javax/xml/stream/XMLOutputFactory.java, javax/xml/stream/XMLReporter.java, javax/xml/stream/XMLResolver.java, javax/xml/stream/XMLStreamConstants.java, javax/xml/stream/XMLStreamReader.java, javax/xml/stream/events/EntityDeclaration.java, javax/xml/stream/events/EntityReference.java, javax/xml/stream/events/XMLEvent.java, javax/xml/stream/util/EventReaderDelegate.java, javax/xml/stream/util/ReaderDelegate.java: Updated to final version of StAX API as specified in JWSDP 2.0. * gnu/xml/stream/EndEntityImpl.java, gnu/xml/stream/LocationImpl.java, gnu/xml/stream/StartEntityImpl.java, gnu/xml/stream/XMLStreamReaderImpl.java, javax/xml/stream/XMLFilter.java, javax/xml/stream/XMLIterator.java, javax/xml/stream/events/EndEntity.java, javax/xml/stream/events/StartEntity.java: Removed legacy files.
Diffstat (limited to 'gnu/xml/stream/XMLParser.java')
-rw-r--r--gnu/xml/stream/XMLParser.java63
1 files changed, 35 insertions, 28 deletions
diff --git a/gnu/xml/stream/XMLParser.java b/gnu/xml/stream/XMLParser.java
index 147fff720..9bb483426 100644
--- a/gnu/xml/stream/XMLParser.java
+++ b/gnu/xml/stream/XMLParser.java
@@ -137,6 +137,10 @@ public class XMLParser
final static int ATTRIBUTE_DEFAULT_REQUIRED = 33;
final static int ATTRIBUTE_DEFAULT_FIXED = 34;
+ // -- additional event types --
+ final static int START_ENTITY = 50;
+ final static int END_ENTITY = 51;
+
/**
* The current input.
*/
@@ -318,6 +322,12 @@ public class XMLParser
private final boolean baseAware;
/**
+ * Whether to report extended event types (START_ENTITY and END_ENTITY)
+ * in addition to the standard event types. Used by the SAX parser.
+ */
+ private final boolean extendedEventTypes;
+
+ /**
* The reporter to receive parsing warnings.
*/
final XMLReporter reporter;
@@ -389,6 +399,7 @@ public class XMLParser
boolean supportDTD,
boolean baseAware,
boolean stringInterning,
+ boolean extendedEventTypes,
XMLReporter reporter,
XMLResolver resolver)
{
@@ -400,6 +411,7 @@ public class XMLParser
this.supportDTD = supportDTD;
this.baseAware = baseAware;
this.stringInterning = stringInterning;
+ this.extendedEventTypes = extendedEventTypes;
this.reporter = reporter;
this.resolver = resolver;
if (validating)
@@ -446,6 +458,7 @@ public class XMLParser
boolean supportDTD,
boolean baseAware,
boolean stringInterning,
+ boolean extendedEventTypes,
XMLReporter reporter,
XMLResolver resolver)
{
@@ -457,6 +470,7 @@ public class XMLParser
this.supportDTD = supportDTD;
this.baseAware = baseAware;
this.stringInterning = stringInterning;
+ this.extendedEventTypes = extendedEventTypes;
this.reporter = reporter;
this.resolver = resolver;
if (validating)
@@ -561,7 +575,7 @@ public class XMLParser
return attrs.size();
}
- public String getAttributeName(int index)
+ public String getAttributeLocalName(int index)
{
Attribute a = (Attribute) attrs.get(index);
return a.localName;
@@ -579,7 +593,7 @@ public class XMLParser
return a.prefix;
}
- public QName getAttributeQName(int index)
+ public QName getAttributeName(int index)
{
Attribute a = (Attribute) attrs.get(index);
String namespaceURI = getNamespaceURI(a.prefix);
@@ -995,16 +1009,16 @@ public class XMLParser
String entityName = (String) startEntityStack.removeFirst();
buf.setLength(0);
buf.append(entityName);
- event = XMLStreamConstants.START_ENTITY;
- return event;
+ event = START_ENTITY;
+ return extendedEventTypes ? event : next();
}
else if (!endEntityStack.isEmpty())
{
String entityName = (String) endEntityStack.removeFirst();
buf.setLength(0);
buf.append(entityName);
- event = XMLStreamConstants.END_ENTITY;
- return event;
+ event = END_ENTITY;
+ return extendedEventTypes ? event : next();
}
try
{
@@ -1499,10 +1513,10 @@ public class XMLParser
InputStream in = null;
if (resolver != null)
{
- if (resolver instanceof XMLResolver2)
- in = ((XMLResolver2) resolver).resolve(ids.publicId, url);
- else
- in = resolver.resolve(url);
+ Object obj = resolver.resolveEntity(ids.publicId, url, getXMLBase(),
+ null);
+ if (obj instanceof InputStream)
+ in = (InputStream) obj;
}
if (in == null)
in = resolve(url);
@@ -4249,6 +4263,7 @@ public class XMLParser
true, // supportDTD
true, // baseAware
true, // stringInterning
+ true, // extendedEventTypes
null,
null);
XMLStreamReader reader = p;
@@ -4280,7 +4295,7 @@ public class XMLParser
"='"+reader.getNamespaceURI(i)+"'");
l = reader.getAttributeCount();
for (int i = 0; i < l; i++)
- System.out.println("\tattribute "+reader.getAttributeQName(i)+
+ System.out.println("\tattribute "+reader.getAttributeName(i)+
"='"+reader.getAttributeValue(i)+"'");
break;
case XMLStreamConstants.END_ELEMENT:
@@ -4308,10 +4323,10 @@ public class XMLParser
System.out.println("PROCESSING_INSTRUCTION "+reader.getPITarget()+
" "+reader.getPIData());
break;
- case XMLStreamConstants.START_ENTITY:
+ case START_ENTITY:
System.out.println("START_ENTITY "+reader.getText());
break;
- case XMLStreamConstants.END_ENTITY:
+ case END_ENTITY:
System.out.println("END_ENTITY "+reader.getText());
break;
default:
@@ -4324,7 +4339,7 @@ public class XMLParser
Location l = reader.getLocation();
System.out.println("At line "+l.getLineNumber()+
", column "+l.getColumnNumber()+
- " of "+l.getLocationURI());
+ " of "+l.getSystemId());
throw e;
}
}
@@ -4933,19 +4948,6 @@ public class XMLParser
}
/**
- * Compatibility interface that can be used to resolve based on a public
- * ID, not just an URL.
- */
- interface XMLResolver2
- extends XMLResolver
- {
-
- InputStream resolve(String publicId, String systemId)
- throws XMLStreamException;
-
- }
-
- /**
* An XML input source.
*/
static class Input
@@ -5013,7 +5015,12 @@ public class XMLParser
return line;
}
- public String getLocationURI()
+ public String getPublicId()
+ {
+ return publicId;
+ }
+
+ public String getSystemId()
{
return systemId;
}