* XmlPull: Remove, unused.
Somehow, when I implemented UPnP, I thought it was required, but it isn't. ~50KB
This commit is contained in:
@ -76,9 +76,6 @@ Public domain except as listed below:
|
|||||||
Copyright (C) 2003-2006 Satoshi Konno
|
Copyright (C) 2003-2006 Satoshi Konno
|
||||||
See licenses/LICENSE-UPnP.txt
|
See licenses/LICENSE-UPnP.txt
|
||||||
|
|
||||||
XMLPull library used by UPnP:
|
|
||||||
See licenses/LICENSE-Apache2.0.txt
|
|
||||||
|
|
||||||
GeoIP data free to use, courtesy http://ip-to-country.webhosting.info/
|
GeoIP data free to use, courtesy http://ip-to-country.webhosting.info/
|
||||||
|
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,81 +0,0 @@
|
|||||||
/* -*- c-basic-offset: 4; indent-tabs-mode: nil; -*- //------100-columns-wide------>|*/
|
|
||||||
// for license please see accompanying LICENSE.txt file (available also at http://www.xmlpull.org/)
|
|
||||||
|
|
||||||
package org.xmlpull.v1;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This exception is thrown to signal XML Pull Parser related faults.
|
|
||||||
*
|
|
||||||
* @author <a href="http://www.extreme.indiana.edu/~aslom/">Aleksander Slominski</a>
|
|
||||||
*/
|
|
||||||
public class XmlPullParserException extends Exception {
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
protected Throwable detail;
|
|
||||||
protected int row = -1;
|
|
||||||
protected int column = -1;
|
|
||||||
|
|
||||||
/* public XmlPullParserException() {
|
|
||||||
}*/
|
|
||||||
|
|
||||||
public XmlPullParserException(String s) {
|
|
||||||
super(s);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
public XmlPullParserException(String s, Throwable thrwble) {
|
|
||||||
super(s);
|
|
||||||
this.detail = thrwble;
|
|
||||||
}
|
|
||||||
|
|
||||||
public XmlPullParserException(String s, int row, int column) {
|
|
||||||
super(s);
|
|
||||||
this.row = row;
|
|
||||||
this.column = column;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
public XmlPullParserException(String msg, XmlPullParser parser, Throwable chain) {
|
|
||||||
super ((msg == null ? "" : msg+" ")
|
|
||||||
+ (parser == null ? "" : "(position:"+parser.getPositionDescription()+") ")
|
|
||||||
+ (chain == null ? "" : "caused by: "+chain));
|
|
||||||
|
|
||||||
if (parser != null) {
|
|
||||||
this.row = parser.getLineNumber();
|
|
||||||
this.column = parser.getColumnNumber();
|
|
||||||
}
|
|
||||||
this.detail = chain;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Throwable getDetail() { return detail; }
|
|
||||||
// public void setDetail(Throwable cause) { this.detail = cause; }
|
|
||||||
public int getLineNumber() { return row; }
|
|
||||||
public int getColumnNumber() { return column; }
|
|
||||||
|
|
||||||
/*
|
|
||||||
public String getMessage() {
|
|
||||||
if(detail == null)
|
|
||||||
return super.getMessage();
|
|
||||||
else
|
|
||||||
return super.getMessage() + "; nested exception is: \n\t"
|
|
||||||
+ detail.getMessage();
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
//NOTE: code that prints this and detail is difficult in J2ME
|
|
||||||
@Override
|
|
||||||
public void printStackTrace() {
|
|
||||||
if (detail == null) {
|
|
||||||
super.printStackTrace();
|
|
||||||
} else {
|
|
||||||
synchronized(System.err) {
|
|
||||||
System.err.println(super.getMessage() + "; nested exception is:");
|
|
||||||
detail.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,356 +0,0 @@
|
|||||||
/* -*- c-basic-offset: 4; indent-tabs-mode: nil; -*- //------100-columns-wide------>|*/
|
|
||||||
// for license please see accompanying LICENSE.txt file (available also at http://www.xmlpull.org/)
|
|
||||||
|
|
||||||
package org.xmlpull.v1;
|
|
||||||
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.util.Enumeration;
|
|
||||||
import java.util.Hashtable;
|
|
||||||
import java.util.Vector;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This class is used to create implementations of XML Pull Parser defined in XMPULL V1 API.
|
|
||||||
* The name of actual factory class will be determined based on several parameters.
|
|
||||||
* It works similar to JAXP but tailored to work in J2ME environments
|
|
||||||
* (no access to system properties or file system) so name of parser class factory to use
|
|
||||||
* and its class used for loading (no class loader - on J2ME no access to context class loaders)
|
|
||||||
* must be passed explicitly. If no name of parser factory was passed (or is null)
|
|
||||||
* it will try to find name by searching in CLASSPATH for
|
|
||||||
* META-INF/services/plugins.JabberLinker.org.xmlpull.v1.XmlPullParserFactory resource that should contain
|
|
||||||
* a comma separated list of class names of factories or parsers to try (in order from
|
|
||||||
* left to the right). If none found, it will throw an exception.
|
|
||||||
*
|
|
||||||
* <br /><strong>NOTE:</strong>In J2SE or J2EE environments, you may want to use
|
|
||||||
* <code>newInstance(property, classLoaderCtx)</code>
|
|
||||||
* where first argument is
|
|
||||||
* <code>System.getProperty(XmlPullParserFactory.PROPERTY_NAME)</code>
|
|
||||||
* and second is <code>Thread.getContextClassLoader().getClass()</code> .
|
|
||||||
*
|
|
||||||
* @see XmlPullParser
|
|
||||||
*
|
|
||||||
* @author <a href="http://www.extreme.indiana.edu/~aslom/">Aleksander Slominski</a>
|
|
||||||
* @author Stefan Haustein
|
|
||||||
*/
|
|
||||||
|
|
||||||
public class XmlPullParserFactory {
|
|
||||||
/** used as default class to server as context class in newInstance() */
|
|
||||||
final static Class referenceContextClass;
|
|
||||||
|
|
||||||
static {
|
|
||||||
XmlPullParserFactory f = new XmlPullParserFactory();
|
|
||||||
referenceContextClass = f.getClass();
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Name of the system or midlet property that should be used for
|
|
||||||
a system property containing a comma separated list of factory
|
|
||||||
or parser class names (value:
|
|
||||||
plugins.JabberLinker.org.xmlpull.v1.XmlPullParserFactory). */
|
|
||||||
|
|
||||||
|
|
||||||
public static final String PROPERTY_NAME =
|
|
||||||
"plugins.JabberLinker.org.xmlpull.v1.XmlPullParserFactory";
|
|
||||||
|
|
||||||
private static final String RESOURCE_NAME =
|
|
||||||
"/META-INF/services/" + PROPERTY_NAME;
|
|
||||||
|
|
||||||
|
|
||||||
// public static final String DEFAULT_PROPERTY =
|
|
||||||
// "plugins.JabberLinker.org.xmlpull.xpp3.XmlPullParser,org.kxml2.io.KXmlParser";
|
|
||||||
|
|
||||||
|
|
||||||
protected Vector parserClasses;
|
|
||||||
protected String classNamesLocation;
|
|
||||||
|
|
||||||
protected Vector serializerClasses;
|
|
||||||
|
|
||||||
|
|
||||||
// features are kept there
|
|
||||||
protected Hashtable features = new Hashtable();
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Protected constructor to be called by factory implementations.
|
|
||||||
*/
|
|
||||||
|
|
||||||
protected XmlPullParserFactory() {
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set the features to be set when XML Pull Parser is created by this factory.
|
|
||||||
* <p><b>NOTE:</b> factory features are not used for XML Serializer.
|
|
||||||
*
|
|
||||||
* @param name string with URI identifying feature
|
|
||||||
* @param state if true feature will be set; if false will be ignored
|
|
||||||
*/
|
|
||||||
|
|
||||||
public void setFeature(String name,
|
|
||||||
boolean state) throws XmlPullParserException {
|
|
||||||
|
|
||||||
features.put(name, new Boolean(state));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return the current value of the feature with given name.
|
|
||||||
* <p><b>NOTE:</b> factory features are not used for XML Serializer.
|
|
||||||
*
|
|
||||||
* @param name The name of feature to be retrieved.
|
|
||||||
* @return The value of named feature.
|
|
||||||
* Unknown features are <string>always</strong> returned as false
|
|
||||||
*/
|
|
||||||
|
|
||||||
public boolean getFeature (String name) {
|
|
||||||
Boolean value = (Boolean) features.get(name);
|
|
||||||
return value != null ? value.booleanValue() : false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Specifies that the parser produced by this factory will provide
|
|
||||||
* support for XML namespaces.
|
|
||||||
* By default the value of this is set to false.
|
|
||||||
*
|
|
||||||
* @param awareness true if the parser produced by this code
|
|
||||||
* will provide support for XML namespaces; false otherwise.
|
|
||||||
*/
|
|
||||||
|
|
||||||
public void setNamespaceAware(boolean awareness) {
|
|
||||||
features.put (XmlPullParser.FEATURE_PROCESS_NAMESPACES, new Boolean (awareness));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Indicates whether or not the factory is configured to produce
|
|
||||||
* parsers which are namespace aware
|
|
||||||
* (it simply set feature XmlPullParser.FEATURE_PROCESS_NAMESPACES to true or false).
|
|
||||||
*
|
|
||||||
* @return true if the factory is configured to produce parsers
|
|
||||||
* which are namespace aware; false otherwise.
|
|
||||||
*/
|
|
||||||
|
|
||||||
public boolean isNamespaceAware() {
|
|
||||||
return getFeature (XmlPullParser.FEATURE_PROCESS_NAMESPACES);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Specifies that the parser produced by this factory will be validating
|
|
||||||
* (it simply set feature XmlPullParser.FEATURE_VALIDATION to true or false).
|
|
||||||
*
|
|
||||||
* By default the value of this is set to false.
|
|
||||||
*
|
|
||||||
* @param validating - if true the parsers created by this factory must be validating.
|
|
||||||
*/
|
|
||||||
|
|
||||||
public void setValidating(boolean validating) {
|
|
||||||
features.put (XmlPullParser.FEATURE_VALIDATION, new Boolean (validating));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Indicates whether or not the factory is configured to produce parsers
|
|
||||||
* which validate the XML content during parse.
|
|
||||||
*
|
|
||||||
* @return true if the factory is configured to produce parsers
|
|
||||||
* which validate the XML content during parse; false otherwise.
|
|
||||||
*/
|
|
||||||
|
|
||||||
public boolean isValidating() {
|
|
||||||
return getFeature (XmlPullParser.FEATURE_VALIDATION);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a new instance of a XML Pull Parser
|
|
||||||
* using the currently configured factory features.
|
|
||||||
*
|
|
||||||
* @return A new instance of a XML Pull Parser.
|
|
||||||
* @throws XmlPullParserException if a parser cannot be created which satisfies the
|
|
||||||
* requested configuration.
|
|
||||||
*/
|
|
||||||
|
|
||||||
public XmlPullParser newPullParser() throws XmlPullParserException {
|
|
||||||
|
|
||||||
if (parserClasses == null) throw new XmlPullParserException
|
|
||||||
("Factory initialization was incomplete - has not tried "+classNamesLocation);
|
|
||||||
|
|
||||||
if (parserClasses.size() == 0) throw new XmlPullParserException
|
|
||||||
("No valid parser classes found in "+classNamesLocation);
|
|
||||||
|
|
||||||
final StringBuilder issues = new StringBuilder ();
|
|
||||||
|
|
||||||
for (int i = 0; i < parserClasses.size (); i++) {
|
|
||||||
final Class ppClass = (Class) parserClasses.elementAt (i);
|
|
||||||
try {
|
|
||||||
final XmlPullParser pp = (XmlPullParser) ppClass.newInstance();
|
|
||||||
// if( ! features.isEmpty() ) {
|
|
||||||
//Enumeration keys = features.keys();
|
|
||||||
// while(keys.hasMoreElements()) {
|
|
||||||
|
|
||||||
for (Enumeration e = features.keys (); e.hasMoreElements ();) {
|
|
||||||
final String key = (String) e.nextElement();
|
|
||||||
final Boolean value = (Boolean) features.get(key);
|
|
||||||
if(value != null && value.booleanValue()) {
|
|
||||||
pp.setFeature(key, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return pp;
|
|
||||||
|
|
||||||
} catch(Exception ex) {
|
|
||||||
issues.append (ppClass.getName () + ": "+ ex.toString ()+"; ");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
throw new XmlPullParserException ("could not create parser: "+issues);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a new instance of a XML Serializer.
|
|
||||||
*
|
|
||||||
* <p><b>NOTE:</b> factory features are not used for XML Serializer.
|
|
||||||
*
|
|
||||||
* @return A new instance of a XML Serializer.
|
|
||||||
* @throws XmlPullParserException if a parser cannot be created which satisfies the
|
|
||||||
* requested configuration.
|
|
||||||
*/
|
|
||||||
|
|
||||||
public XmlSerializer newSerializer() throws XmlPullParserException {
|
|
||||||
|
|
||||||
if (serializerClasses == null) {
|
|
||||||
throw new XmlPullParserException
|
|
||||||
("Factory initialization incomplete - has not tried "+classNamesLocation);
|
|
||||||
}
|
|
||||||
if(serializerClasses.size() == 0) {
|
|
||||||
throw new XmlPullParserException
|
|
||||||
("No valid serializer classes found in "+classNamesLocation);
|
|
||||||
}
|
|
||||||
|
|
||||||
final StringBuilder issues = new StringBuilder ();
|
|
||||||
|
|
||||||
for (int i = 0; i < serializerClasses.size (); i++) {
|
|
||||||
final Class ppClass = (Class) serializerClasses.elementAt (i);
|
|
||||||
try {
|
|
||||||
final XmlSerializer ser = (XmlSerializer) ppClass.newInstance();
|
|
||||||
|
|
||||||
// for (Enumeration e = features.keys (); e.hasMoreElements ();) {
|
|
||||||
// String key = (String) e.nextElement();
|
|
||||||
// Boolean value = (Boolean) features.get(key);
|
|
||||||
// if(value != null && value.booleanValue()) {
|
|
||||||
// ser.setFeature(key, true);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
return ser;
|
|
||||||
|
|
||||||
} catch(Exception ex) {
|
|
||||||
issues.append (ppClass.getName () + ": "+ ex.toString ()+"; ");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
throw new XmlPullParserException ("could not create serializer: "+issues);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a new instance of a PullParserFactory that can be used
|
|
||||||
* to create XML pull parsers (see class description for more
|
|
||||||
* details).
|
|
||||||
*
|
|
||||||
* @return a new instance of a PullParserFactory, as returned by newInstance (null, null);
|
|
||||||
*/
|
|
||||||
public static XmlPullParserFactory newInstance () throws XmlPullParserException {
|
|
||||||
return newInstance(null, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static XmlPullParserFactory newInstance (String classNames, Class context)
|
|
||||||
throws XmlPullParserException {
|
|
||||||
|
|
||||||
if (context == null) {
|
|
||||||
//NOTE: make sure context uses the same class loader as API classes
|
|
||||||
// this is the best we can do without having access to context classloader in J2ME
|
|
||||||
// if API is in the same classloader as implementation then this will work
|
|
||||||
context = referenceContextClass;
|
|
||||||
}
|
|
||||||
|
|
||||||
String classNamesLocation = null;
|
|
||||||
|
|
||||||
if (classNames == null || classNames.length() == 0 || "DEFAULT".equals(classNames)) {
|
|
||||||
try {
|
|
||||||
InputStream is = context.getResourceAsStream (RESOURCE_NAME);
|
|
||||||
|
|
||||||
if (is == null) throw new XmlPullParserException
|
|
||||||
("resource not found: "+RESOURCE_NAME
|
|
||||||
+" make sure that parser implementing XmlPull API is available");
|
|
||||||
final StringBuilder sb = new StringBuilder();
|
|
||||||
|
|
||||||
while (true) {
|
|
||||||
final int ch = is.read();
|
|
||||||
if (ch < 0) break;
|
|
||||||
else if (ch > ' ')
|
|
||||||
sb.append((char) ch);
|
|
||||||
}
|
|
||||||
is.close ();
|
|
||||||
|
|
||||||
classNames = sb.toString ();
|
|
||||||
}
|
|
||||||
catch (Exception e) {
|
|
||||||
throw new XmlPullParserException (null, null, e);
|
|
||||||
}
|
|
||||||
classNamesLocation = "resource "+RESOURCE_NAME+" that contained '"+classNames+"'";
|
|
||||||
} else {
|
|
||||||
classNamesLocation =
|
|
||||||
"parameter classNames to newInstance() that contained '"+classNames+"'";
|
|
||||||
}
|
|
||||||
|
|
||||||
XmlPullParserFactory factory = null;
|
|
||||||
final Vector parserClasses = new Vector ();
|
|
||||||
final Vector serializerClasses = new Vector ();
|
|
||||||
int pos = 0;
|
|
||||||
|
|
||||||
while (pos < classNames.length ()) {
|
|
||||||
int cut = classNames.indexOf (',', pos);
|
|
||||||
|
|
||||||
if (cut == -1) cut = classNames.length ();
|
|
||||||
final String name = classNames.substring (pos, cut);
|
|
||||||
|
|
||||||
Class candidate = null;
|
|
||||||
Object instance = null;
|
|
||||||
|
|
||||||
try {
|
|
||||||
candidate = Class.forName (name);
|
|
||||||
// necessary because of J2ME .class issue
|
|
||||||
instance = candidate.newInstance ();
|
|
||||||
}
|
|
||||||
catch (Exception e) {}
|
|
||||||
|
|
||||||
if (candidate != null) {
|
|
||||||
boolean recognized = false;
|
|
||||||
if (instance instanceof XmlPullParser) {
|
|
||||||
parserClasses.addElement (candidate);
|
|
||||||
recognized = true;
|
|
||||||
}
|
|
||||||
if (instance instanceof XmlSerializer) {
|
|
||||||
serializerClasses.addElement (candidate);
|
|
||||||
recognized = true;
|
|
||||||
}
|
|
||||||
if (instance instanceof XmlPullParserFactory) {
|
|
||||||
if (factory == null) {
|
|
||||||
factory = (XmlPullParserFactory) instance;
|
|
||||||
}
|
|
||||||
recognized = true;
|
|
||||||
}
|
|
||||||
if (!recognized) {
|
|
||||||
throw new XmlPullParserException ("incompatible class: "+name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
pos = cut + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (factory == null) {
|
|
||||||
factory = new XmlPullParserFactory ();
|
|
||||||
}
|
|
||||||
factory.parserClasses = parserClasses;
|
|
||||||
factory.serializerClasses = serializerClasses;
|
|
||||||
factory.classNamesLocation = classNamesLocation;
|
|
||||||
return factory;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -1,326 +0,0 @@
|
|||||||
package org.xmlpull.v1;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.OutputStream;
|
|
||||||
import java.io.Writer;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Define an interface to serialziation of XML Infoset.
|
|
||||||
* This interface abstracts away if serialized XML is XML 1.0 comaptible text or
|
|
||||||
* other formats of XML 1.0 serializations (such as binary XML for example with WBXML).
|
|
||||||
*
|
|
||||||
* <p><b>PLEASE NOTE:</b> This interface will be part of XmlPull 1.2 API.
|
|
||||||
* It is included as basis for discussion. It may change in any way.
|
|
||||||
*
|
|
||||||
* <p>Exceptions that may be thrown are: IOException or runtime exception
|
|
||||||
* (more runtime exceptions can be thrown but are not declared and as such
|
|
||||||
* have no semantics defined for this interface):
|
|
||||||
* <ul>
|
|
||||||
* <li><em>IllegalArgumentException</em> - for almost all methods to signal that
|
|
||||||
* argument is illegal
|
|
||||||
* <li><em>IllegalStateException</em> - to signal that call has good arguments but
|
|
||||||
* is not expected here (violation of contract) and for features/properties
|
|
||||||
* when requesting setting unimplemented feature/property
|
|
||||||
* (UnsupportedOperationException would be better but it is not in MIDP)
|
|
||||||
* </ul>
|
|
||||||
*
|
|
||||||
* <p><b>NOTE:</b> writing CDSECT, ENTITY_REF, IGNORABLE_WHITESPACE,
|
|
||||||
* PROCESSING_INSTRUCTION, COMMENT, and DOCDECL in some implementations
|
|
||||||
* may not be supported (for example when serializing to WBXML).
|
|
||||||
* In such case IllegalStateException will be thrown and it is recommened
|
|
||||||
* to use an optional feature to signal that implementation is not
|
|
||||||
* supporting this kind of output.
|
|
||||||
*/
|
|
||||||
|
|
||||||
public interface XmlSerializer {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set feature identified by name (recommended to be URI for uniqueness).
|
|
||||||
* Some well known optional features are defined in
|
|
||||||
* <a href="http://www.xmlpull.org/v1/doc/features.html">
|
|
||||||
* http://www.xmlpull.org/v1/doc/features.html</a>.
|
|
||||||
*
|
|
||||||
* If feature is not recocgnized or can not be set
|
|
||||||
* then IllegalStateException MUST be thrown.
|
|
||||||
*
|
|
||||||
* @exception IllegalStateException If the feature is not supported or can not be set
|
|
||||||
*/
|
|
||||||
void setFeature(String name,
|
|
||||||
boolean state)
|
|
||||||
throws IllegalArgumentException, IllegalStateException;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return the current value of the feature with given name.
|
|
||||||
* <p><strong>NOTE:</strong> unknown properties are <strong>always</strong> returned as null
|
|
||||||
*
|
|
||||||
* @param name The name of feature to be retrieved.
|
|
||||||
* @return The value of named feature.
|
|
||||||
* @exception IllegalArgumentException if feature string is null
|
|
||||||
*/
|
|
||||||
boolean getFeature(String name);
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set the value of a property.
|
|
||||||
* (the property name is recommened to be URI for uniqueness).
|
|
||||||
* Some well known optional properties are defined in
|
|
||||||
* <a href="http://www.xmlpull.org/v1/doc/properties.html">
|
|
||||||
* http://www.xmlpull.org/v1/doc/properties.html</a>.
|
|
||||||
*
|
|
||||||
* If property is not recocgnized or can not be set
|
|
||||||
* then IllegalStateException MUST be thrown.
|
|
||||||
*
|
|
||||||
* @exception IllegalStateException if the property is not supported or can not be set
|
|
||||||
*/
|
|
||||||
void setProperty(String name,
|
|
||||||
Object value)
|
|
||||||
throws IllegalArgumentException, IllegalStateException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Look up the value of a property.
|
|
||||||
*
|
|
||||||
* The property name is any fully-qualified URI. I
|
|
||||||
* <p><strong>NOTE:</strong> unknown properties are <string>always</strong> returned as null
|
|
||||||
*
|
|
||||||
* @param name The name of property to be retrieved.
|
|
||||||
* @return The value of named property.
|
|
||||||
*/
|
|
||||||
Object getProperty(String name);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set to use binary output stream with given encoding.
|
|
||||||
*/
|
|
||||||
void setOutput (OutputStream os, String encoding)
|
|
||||||
throws IOException, IllegalArgumentException, IllegalStateException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set the output to the given writer.
|
|
||||||
* <p><b>WARNING</b> no information about encoding is available!
|
|
||||||
*/
|
|
||||||
void setOutput (Writer writer)
|
|
||||||
throws IOException, IllegalArgumentException, IllegalStateException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Write <?xml declaration with encoding (if encoding not null)
|
|
||||||
* and standalone flag (if standalone not null)
|
|
||||||
* This method can only be called just after setOutput.
|
|
||||||
*/
|
|
||||||
void startDocument (String encoding, Boolean standalone)
|
|
||||||
throws IOException, IllegalArgumentException, IllegalStateException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Finish writing. All unclosed start tags will be closed and output
|
|
||||||
* will be flushed. After calling this method no more output can be
|
|
||||||
* serialized until next call to setOutput()
|
|
||||||
*/
|
|
||||||
void endDocument ()
|
|
||||||
throws IOException, IllegalArgumentException, IllegalStateException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Binds the given prefix to the given namespace.
|
|
||||||
* This call is valid for the next element including child elements.
|
|
||||||
* The prefix and namespace MUST be always declared even if prefix
|
|
||||||
* is not used in element (startTag() or attribute()) - for XML 1.0
|
|
||||||
* it must result in declaring <code>xmlns:prefix='namespace'</code>
|
|
||||||
* (or <code>xmlns:prefix="namespace"</code> depending what character is used
|
|
||||||
* to quote attribute value).
|
|
||||||
*
|
|
||||||
* <p><b>NOTE:</b> this method MUST be called directly before startTag()
|
|
||||||
* and if anything but startTag() or setPrefix() is called next there will be exception.
|
|
||||||
* <p><b>NOTE:</b> prefixes "xml" and "xmlns" are already bound
|
|
||||||
* and can not be redefined see:
|
|
||||||
* <a href="http://www.w3.org/XML/xml-names-19990114-errata#NE05">Namespaces in XML Errata</a>.
|
|
||||||
* <p><b>NOTE:</b> to set default namespace use as prefix empty string.
|
|
||||||
*
|
|
||||||
* @param prefix must be not null (or IllegalArgumentException is thrown)
|
|
||||||
* @param namespace must be not null
|
|
||||||
*/
|
|
||||||
void setPrefix (String prefix, String namespace)
|
|
||||||
throws IOException, IllegalArgumentException, IllegalStateException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return namespace that corresponds to given prefix
|
|
||||||
* If there is no prefix bound to this namespace return null
|
|
||||||
* but if generatePrefix is false then return generated prefix.
|
|
||||||
*
|
|
||||||
* <p><b>NOTE:</b> if the prefix is empty string "" and defualt namespace is bound
|
|
||||||
* to this prefix then empty string ("") is returned.
|
|
||||||
*
|
|
||||||
* <p><b>NOTE:</b> prefixes "xml" and "xmlns" are already bound
|
|
||||||
* will have values as defined
|
|
||||||
* <a href="http://www.w3.org/TR/REC-xml-names/">Namespaces in XML specification</a>
|
|
||||||
*/
|
|
||||||
String getPrefix (String namespace, boolean generatePrefix)
|
|
||||||
throws IllegalArgumentException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the current depth of the element.
|
|
||||||
* Outside the root element, the depth is 0. The
|
|
||||||
* depth is incremented by 1 when startTag() is called.
|
|
||||||
* The depth is decremented after the call to endTag()
|
|
||||||
* event was observed.
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
* <!-- outside --> 0
|
|
||||||
* <root> 1
|
|
||||||
* sometext 1
|
|
||||||
* <foobar> 2
|
|
||||||
* </foobar> 2
|
|
||||||
* </root> 1
|
|
||||||
* <!-- outside --> 0
|
|
||||||
* </pre>
|
|
||||||
*/
|
|
||||||
int getDepth();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the namespace URI of the current element as set by startTag().
|
|
||||||
*
|
|
||||||
* <p><b>NOTE:</b> that measn in particaulr that: <ul>
|
|
||||||
* <li>if there was startTag("", ...) then getNamespace() returns ""
|
|
||||||
* <li>if there was startTag(null, ...) then getNamespace() returns null
|
|
||||||
* </ul>
|
|
||||||
*
|
|
||||||
* @return namespace set by startTag() that is currently in scope
|
|
||||||
*/
|
|
||||||
String getNamespace ();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the name of the current element as set by startTag().
|
|
||||||
* It can only be null before first call to startTag()
|
|
||||||
* or when last endTag() is called to close first startTag().
|
|
||||||
*
|
|
||||||
* @return namespace set by startTag() that is currently in scope
|
|
||||||
*/
|
|
||||||
String getName();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Writes a start tag with the given namespace and name.
|
|
||||||
* If there is no prefix defined for the given namespace,
|
|
||||||
* a prefix will be defined automatically.
|
|
||||||
* The explicit prefixes for namespaces can be established by calling setPrefix()
|
|
||||||
* immediately before this method.
|
|
||||||
* If namespace is null no namespace prefix is printed but just name.
|
|
||||||
* If namespace is empty string then serialzier will make sure that
|
|
||||||
* default empty namespace is declared (in XML 1.0 xmlns='')
|
|
||||||
* or throw IllegalStateException if default namespace is already bound
|
|
||||||
* to non-empty string.
|
|
||||||
*/
|
|
||||||
XmlSerializer startTag (String namespace, String name)
|
|
||||||
throws IOException, IllegalArgumentException, IllegalStateException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Write an attribute. Calls to attribute() MUST follow a call to
|
|
||||||
* startTag() immediately. If there is no prefix defined for the
|
|
||||||
* given namespace, a prefix will be defined automatically.
|
|
||||||
* If namespace is null or empty string
|
|
||||||
* no namespace prefix is printed but just name.
|
|
||||||
*/
|
|
||||||
XmlSerializer attribute (String namespace, String name, String value)
|
|
||||||
throws IOException, IllegalArgumentException, IllegalStateException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Write end tag. Repetition of namespace and name is just for avoiding errors.
|
|
||||||
* <p><b>Background:</b> in kXML endTag had no arguments, and non matching tags were
|
|
||||||
* very difficult to find...
|
|
||||||
* If namespace is null no namespace prefix is printed but just name.
|
|
||||||
* If namespace is empty string then serialzier will make sure that
|
|
||||||
* default empty namespace is declared (in XML 1.0 xmlns='').
|
|
||||||
*/
|
|
||||||
XmlSerializer endTag (String namespace, String name)
|
|
||||||
throws IOException, IllegalArgumentException, IllegalStateException;
|
|
||||||
|
|
||||||
|
|
||||||
// /**
|
|
||||||
// * Writes a start tag with the given namespace and name.
|
|
||||||
// * <br />If there is no prefix defined (prefix == null) for the given namespace,
|
|
||||||
// * a prefix will be defined automatically.
|
|
||||||
// * <br />If explicit prefixes is passed (prefix != null) then it will be used
|
|
||||||
// *and namespace declared if not already declared or
|
|
||||||
// * throw IllegalStateException the same prefix was already set on this
|
|
||||||
// * element (setPrefix()) and was bound to different namespace.
|
|
||||||
// * <br />If namespace is null then prefix must be null too or IllegalStateException is thrown.
|
|
||||||
// * <br />If namespace is null then no namespace prefix is printed but just name.
|
|
||||||
// * <br />If namespace is empty string then serializer will make sure that
|
|
||||||
// * default empty namespace is declared (in XML 1.0 xmlns='')
|
|
||||||
// * or throw IllegalStateException if default namespace is already bound
|
|
||||||
// * to non-empty string.
|
|
||||||
// */
|
|
||||||
// XmlSerializer startTag (String prefix, String namespace, String name)
|
|
||||||
// throws IOException, IllegalArgumentException, IllegalStateException;
|
|
||||||
//
|
|
||||||
// /**
|
|
||||||
// * Write an attribute. Calls to attribute() MUST follow a call to
|
|
||||||
// * startTag() immediately.
|
|
||||||
// * <br />If there is no prefix defined (prefix == null) for the given namespace,
|
|
||||||
// * a prefix will be defined automatically.
|
|
||||||
// * <br />If explicit prefixes is passed (prefix != null) then it will be used
|
|
||||||
// * and namespace declared if not already declared or
|
|
||||||
// * throw IllegalStateException the same prefix was already set on this
|
|
||||||
// * element (setPrefix()) and was bound to different namespace.
|
|
||||||
// * <br />If namespace is null then prefix must be null too or IllegalStateException is thrown.
|
|
||||||
// * <br />If namespace is null then no namespace prefix is printed but just name.
|
|
||||||
// * <br />If namespace is empty string then serializer will make sure that
|
|
||||||
// * default empty namespace is declared (in XML 1.0 xmlns='')
|
|
||||||
// * or throw IllegalStateException if default namespace is already bound
|
|
||||||
// * to non-empty string.
|
|
||||||
// */
|
|
||||||
// XmlSerializer attribute (String prefix, String namespace, String name, String value)
|
|
||||||
// throws IOException, IllegalArgumentException, IllegalStateException;
|
|
||||||
//
|
|
||||||
// /**
|
|
||||||
// * Write end tag. Repetition of namespace, prefix, and name is just for avoiding errors.
|
|
||||||
// * <br />If namespace or name arguments are different from corresponding startTag call
|
|
||||||
// * then IllegalArgumentException is thrown, if prefix argument is not null and is different
|
|
||||||
// * from corresponding starTag then IllegalArgumentException is thrown.
|
|
||||||
// * <br />If namespace is null then prefix must be null too or IllegalStateException is thrown.
|
|
||||||
// * <br />If namespace is null then no namespace prefix is printed but just name.
|
|
||||||
// * <br />If namespace is empty string then serializer will make sure that
|
|
||||||
// * default empty namespace is declared (in XML 1.0 xmlns='').
|
|
||||||
// * <p><b>Background:</b> in kXML endTag had no arguments, and non matching tags were
|
|
||||||
// * very difficult to find...</p>
|
|
||||||
// */
|
|
||||||
// ALEK: This is really optional as prefix in end tag MUST correspond to start tag but good for error checking
|
|
||||||
// XmlSerializer endTag (String prefix, String namespace, String name)
|
|
||||||
// throws IOException, IllegalArgumentException, IllegalStateException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Writes text, where special XML chars are escaped automatically
|
|
||||||
*/
|
|
||||||
XmlSerializer text (String text)
|
|
||||||
throws IOException, IllegalArgumentException, IllegalStateException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Writes text, where special XML chars are escaped automatically
|
|
||||||
*/
|
|
||||||
XmlSerializer text (char [] buf, int start, int len)
|
|
||||||
throws IOException, IllegalArgumentException, IllegalStateException;
|
|
||||||
|
|
||||||
void cdsect (String text)
|
|
||||||
throws IOException, IllegalArgumentException, IllegalStateException;
|
|
||||||
void entityRef (String text) throws IOException,
|
|
||||||
IllegalArgumentException, IllegalStateException;
|
|
||||||
void processingInstruction (String text)
|
|
||||||
throws IOException, IllegalArgumentException, IllegalStateException;
|
|
||||||
void comment (String text)
|
|
||||||
throws IOException, IllegalArgumentException, IllegalStateException;
|
|
||||||
void docdecl (String text)
|
|
||||||
throws IOException, IllegalArgumentException, IllegalStateException;
|
|
||||||
void ignorableWhitespace (String text)
|
|
||||||
throws IOException, IllegalArgumentException, IllegalStateException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Write all pending output to the stream.
|
|
||||||
* If method startTag() or attribute() was called then start tag is closed (final >)
|
|
||||||
* before flush() is called on underlying output stream.
|
|
||||||
*
|
|
||||||
* <p><b>NOTE:</b> if there is need to close start tag
|
|
||||||
* (so no more attribute() calls are allowed) but without flushinging output
|
|
||||||
* call method text() with empty string (text("")).
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
void flush ()
|
|
||||||
throws IOException;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
Reference in New Issue
Block a user