Fix more warnings.

git-svn-id: svn://10.0.0.236/trunk@248538 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
nboyd%atg.com 2008-03-25 13:38:53 +00:00
parent 49ffa552f7
commit f8fc717e42
16 changed files with 279 additions and 129 deletions

View File

@ -104,8 +104,7 @@ public final class LazilyLoadedCtor implements java.io.Serializable {
private Object buildValue()
{
Class<? extends Scriptable> cl =
(Class<? extends Scriptable>)Kit.classOrNull(className);
Class<? extends Scriptable> cl = cast(Kit.classOrNull(className));
if (cl != null) {
try {
Object value = ScriptableObject.buildClassCtor(scope, cl,
@ -133,5 +132,10 @@ public final class LazilyLoadedCtor implements java.io.Serializable {
}
return Scriptable.NOT_FOUND;
}
@SuppressWarnings({"unchecked"})
private Class<? extends Scriptable> cast(Class<?> cl) {
return (Class<? extends Scriptable>)cl;
}
}

View File

@ -48,7 +48,8 @@ package org.mozilla.javascript;
import java.io.Reader;
import java.io.IOException;
import java.util.Hashtable;
import java.util.HashMap;
import java.util.Map;
/**
* This class implements the JavaScript parser.
@ -93,7 +94,7 @@ public class Parser
ScriptOrFnNode currentScriptOrFn;
Node.Scope currentScope;
private int nestingOfWith;
private Hashtable labelSet; // map of label names into nodes
private Map<String,Node> labelSet; // map of label names into nodes
private ObjArray loopSet;
private ObjArray loopAndSwitchSet;
private boolean hasReturnValue;
@ -542,7 +543,7 @@ public class Parser
currentScope = fnNode;
int savedNestingOfWith = nestingOfWith;
nestingOfWith = 0;
Hashtable savedLabelSet = labelSet;
Map<String,Node> savedLabelSet = labelSet;
labelSet = null;
ObjArray savedLoopSet = loopSet;
loopSet = null;
@ -691,7 +692,7 @@ public class Parser
String name = ts.getString();
decompiler.addName(name);
if (labelSet != null) {
label = (Node)labelSet.get(name);
label = labelSet.get(name);
}
if (label == null) {
reportError("msg.undef.label");
@ -1212,7 +1213,7 @@ public class Parser
decompiler.addEOL(Token.COLON);
if (labelSet == null) {
labelSet = new Hashtable();
labelSet = new HashMap<String,Node>();
} else if (labelSet.containsKey(name)) {
reportError("msg.dup.label");
}

View File

@ -46,7 +46,7 @@ public class ScriptOrFnNode extends Node.Scope {
public ScriptOrFnNode(int nodeType) {
super(nodeType);
symbols = new ArrayList(4);
symbols = new ArrayList<Symbol>(4);
setParent(null);
}
@ -170,7 +170,7 @@ public class ScriptOrFnNode extends Node.Scope {
*/
void flattenSymbolTable(boolean flattenAllTables) {
if (!flattenAllTables) {
ArrayList newSymbols = new ArrayList();
ArrayList<Symbol> newSymbols = new ArrayList<Symbol>();
if (this.symbolTable != null) {
// Just replace "symbols" with the symbols in this object's
// symbol table. Can't just work from symbolTable map since
@ -220,7 +220,7 @@ public class ScriptOrFnNode extends Node.Scope {
private ObjArray functions;
private ObjArray regexps;
private ArrayList symbols;
private ArrayList<Symbol> symbols;
private int paramCount = 0;
private String[] variableNames;
private boolean[] isConsts;

View File

@ -75,7 +75,7 @@ public class ScriptableInputStream extends ObjectInputStream {
}
}
protected Class resolveClass(ObjectStreamClass desc)
protected Class<?> resolveClass(ObjectStreamClass desc)
throws IOException, ClassNotFoundException
{
String name = desc.getName();

View File

@ -39,7 +39,8 @@
package org.mozilla.javascript.serialize;
import java.util.Hashtable;
import java.util.Map;
import java.util.HashMap;
import java.util.StringTokenizer;
import java.io.*;
@ -78,7 +79,7 @@ public class ScriptableOutputStream extends ObjectOutputStream {
{
super(out);
this.scope = scope;
table = new Hashtable(31);
table = new HashMap<Object,String>();
table.put(scope, "");
enableReplaceObject(true);
excludeStandardObjectNames();
@ -203,5 +204,5 @@ public class ScriptableOutputStream extends ObjectOutputStream {
}
private Scriptable scope;
private Hashtable table;
private Map<Object,String> table;
}

View File

@ -83,6 +83,7 @@ class Namespace extends IdScriptableObject
return ns.getPrefix();
}
@Override
public String toString() {
return uri();
}
@ -95,22 +96,26 @@ class Namespace extends IdScriptableObject
return uri().equals(n.uri());
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof Namespace)) return false;
return equals((Namespace)obj);
}
@Override
protected Object equivalentValues(Object value) {
if (!(value instanceof Namespace)) return Scriptable.NOT_FOUND;
boolean result = equals((Namespace)value);
return result ? Boolean.TRUE : Boolean.FALSE;
}
@Override
public String getClassName() {
return "Namespace";
}
public Object getDefaultValue(Class hint) {
@Override
public Object getDefaultValue(Class<?> hint) {
return uri();
}
@ -120,11 +125,13 @@ class Namespace extends IdScriptableObject
Id_uri = 2,
MAX_INSTANCE_ID = 2;
@Override
protected int getMaxInstanceId()
{
return super.getMaxInstanceId() + MAX_INSTANCE_ID;
}
@Override
protected int findInstanceIdInfo(String s)
{
int id;
@ -152,6 +159,7 @@ class Namespace extends IdScriptableObject
}
// #/string_id_map#
@Override
protected String getInstanceIdName(int id)
{
switch (id - super.getMaxInstanceId()) {
@ -161,6 +169,7 @@ class Namespace extends IdScriptableObject
return super.getInstanceIdName(id);
}
@Override
protected Object getInstanceIdValue(int id)
{
switch (id - super.getMaxInstanceId()) {
@ -181,6 +190,7 @@ class Namespace extends IdScriptableObject
Id_toSource = 3,
MAX_PROTOTYPE_ID = 3;
@Override
protected int findPrototypeId(String s)
{
int id;
@ -201,6 +211,7 @@ class Namespace extends IdScriptableObject
}
// #/string_id_map#
@Override
protected void initPrototypeId(int id)
{
String s;
@ -214,6 +225,7 @@ class Namespace extends IdScriptableObject
initPrototypeMethod(NAMESPACE_TAG, id, s, arity);
}
@Override
public Object execIdCall(IdFunctionObject f,
Context cx,
Scriptable scope,

View File

@ -80,6 +80,7 @@ final class QName extends IdScriptableObject
exportAsJSClass(MAX_PROTOTYPE_ID, getParentScope(), sealed);
}
@Override
public String toString() {
// ECMA357 13.3.4.2
if (delegate.getNamespace() == null) {
@ -97,12 +98,10 @@ final class QName extends IdScriptableObject
return delegate.getLocalName();
}
/**
@deprecated
This property is supposed to be invisible and I think we can make it private at some point, though Namespace
might need it
*/
/*
* TODO This property is supposed to be invisible and I think we can
* make it private at some point, though Namespace might need it
*/
String prefix() {
if (delegate.getNamespace() == null) return null;
return delegate.getNamespace().getPrefix();
@ -122,11 +121,13 @@ final class QName extends IdScriptableObject
return delegate;
}
@Override
public boolean equals(Object obj) {
if(!(obj instanceof QName)) return false;
return equals((QName)obj);
}
@Override
protected Object equivalentValues(Object value)
{
if(!(value instanceof QName)) return Scriptable.NOT_FOUND;
@ -138,11 +139,13 @@ final class QName extends IdScriptableObject
return this.delegate.isEqualTo(q.delegate);
}
@Override
public String getClassName() {
return "QName";
}
public Object getDefaultValue(Class hint) {
@Override
public Object getDefaultValue(Class<?> hint) {
return toString();
}
@ -152,11 +155,13 @@ final class QName extends IdScriptableObject
Id_uri = 2,
MAX_INSTANCE_ID = 2;
@Override
protected int getMaxInstanceId()
{
return super.getMaxInstanceId() + MAX_INSTANCE_ID;
}
@Override
protected int findInstanceIdInfo(String s)
{
int id;
@ -184,6 +189,7 @@ final class QName extends IdScriptableObject
}
// #/string_id_map#
@Override
protected String getInstanceIdName(int id)
{
switch (id - super.getMaxInstanceId()) {
@ -193,6 +199,7 @@ final class QName extends IdScriptableObject
return super.getInstanceIdName(id);
}
@Override
protected Object getInstanceIdValue(int id)
{
switch (id - super.getMaxInstanceId()) {
@ -209,6 +216,7 @@ final class QName extends IdScriptableObject
Id_toSource = 3,
MAX_PROTOTYPE_ID = 3;
@Override
protected int findPrototypeId(String s)
{
int id;
@ -229,6 +237,7 @@ final class QName extends IdScriptableObject
}
// #/string_id_map#
@Override
protected void initPrototypeId(int id)
{
String s;
@ -242,6 +251,7 @@ final class QName extends IdScriptableObject
initPrototypeMethod(QNAME_TAG, id, s, arity);
}
@Override
public Object execIdCall(IdFunctionObject f,
Context cx,
Scriptable scope,

View File

@ -59,6 +59,7 @@ class XML extends XMLObjectImpl {
this.node.setXml(this);
}
@Override
final XML getXML() {
return this;
}
@ -74,7 +75,7 @@ class XML extends XMLObjectImpl {
}
}
/** @deprecated I would love to encapsulate this somehow. */
/* TODO: needs encapsulation. */
XML makeXmlFromString(XMLName name, String value) {
try {
return newTextElementXML(this.node, name.toQname(), value.toString());
@ -83,7 +84,7 @@ class XML extends XMLObjectImpl {
}
}
/** @deprecated Rename this, at the very least. But it's not clear it's even necessary */
/* TODO: Rename this, at the very least. But it's not clear it's even necessary */
XmlNode getAnnotation() {
return node;
}
@ -94,6 +95,7 @@ class XML extends XMLObjectImpl {
// TODO Either cross-reference this next comment with the specification or delete it and change the behavior
// The comment: XML[0] should return this, all other indexes are Undefined
@Override
public Object get(int index, Scriptable start) {
if (index == 0) {
return this;
@ -102,16 +104,19 @@ class XML extends XMLObjectImpl {
}
}
@Override
public boolean has(int index, Scriptable start) {
return (index == 0);
}
@Override
public void put(int index, Scriptable start, Object value) {
// TODO Clarify the following comment and add a reference to the spec
// The comment: Spec says assignment to indexed XML object should return type error
throw ScriptRuntime.typeError("Assignment to indexed XML is not allowed");
}
@Override
public Object[] getIds() {
if (isPrototype()) {
return new Object[0];
@ -121,6 +126,7 @@ class XML extends XMLObjectImpl {
}
// TODO This is how I found it but I am not sure it makes sense
@Override
public void delete(int index) {
if (index == 0) {
this.remove();
@ -131,6 +137,7 @@ class XML extends XMLObjectImpl {
// Methods from XMLObjectImpl
//
@Override
boolean hasXMLProperty(XMLName xmlName) {
if (isPrototype()) {
return getMethod(xmlName.localName()) != NOT_FOUND;
@ -139,6 +146,7 @@ class XML extends XMLObjectImpl {
}
}
@Override
Object getXMLProperty(XMLName xmlName) {
if (isPrototype()) {
return getMethod(xmlName.localName());
@ -181,6 +189,7 @@ class XML extends XMLObjectImpl {
return name.getMyValueOn(this);
}
@Override
void deleteXMLProperty(XMLName name) {
XMLList list = getPropertyList(name);
for (int i=0; i<list.length(); i++) {
@ -188,6 +197,7 @@ class XML extends XMLObjectImpl {
}
}
@Override
void putXMLProperty(XMLName xmlName, Object value) {
if (isPrototype()) {
// TODO Is this really a no-op? Check the spec to be sure
@ -196,6 +206,7 @@ class XML extends XMLObjectImpl {
}
}
@Override
boolean hasOwnProperty(XMLName xmlName) {
boolean hasProperty = false;
@ -209,6 +220,7 @@ class XML extends XMLObjectImpl {
return hasProperty;
}
@Override
protected Object jsConstructor(Context cx, boolean inNewExpr, Object[] args) {
if (args.length == 0 || args[0] == null || args[0] == Undefined.instance) {
args = new Object[] { "" };
@ -223,6 +235,7 @@ class XML extends XMLObjectImpl {
}
// See ECMA 357, 11_2_2_1, Semantics, 3_f.
@Override
public Scriptable getExtraMethodSource(Context cx) {
if (hasSimpleContent()) {
String src = toString();
@ -239,6 +252,7 @@ class XML extends XMLObjectImpl {
this.node.removeChild(index);
}
@Override
void normalize() {
this.node.normalize();
}
@ -263,10 +277,12 @@ class XML extends XMLObjectImpl {
this.node.deleteMe();
}
@Override
void addMatches(XMLList rv, XMLName name) {
name.addMatches(rv, this);
}
@Override
XMLList elements(XMLName name) {
XMLList rv = newXMLList();
rv.setTargets(this, name.toQname());
@ -280,6 +296,7 @@ class XML extends XMLObjectImpl {
return rv;
}
@Override
XMLList child(XMLName xmlName) {
// TODO Right now I think this method would allow child( "@xxx" ) to return the xxx attribute, which is wrong
@ -303,6 +320,7 @@ class XML extends XMLObjectImpl {
return this;
}
@Override
XMLList children() {
XMLList rv = newXMLList();
XMLName all = XMLName.formStar();
@ -314,6 +332,7 @@ class XML extends XMLObjectImpl {
return rv;
}
@Override
XMLList child(int index) {
// ECMA357 13.4.4.6 (numeric case)
XMLList result = newXMLList();
@ -336,6 +355,7 @@ class XML extends XMLObjectImpl {
return this.node.getChildIndex();
}
@Override
boolean contains(Object xml) {
if (xml instanceof XML) {
return equivalentXml(xml);
@ -345,6 +365,7 @@ class XML extends XMLObjectImpl {
}
// Method overriding XMLObjectImpl
@Override
boolean equivalentXml(Object target) {
boolean result = false;
@ -367,22 +388,26 @@ class XML extends XMLObjectImpl {
return result;
}
@Override
XMLObjectImpl copy() {
return newXML( this.node.copy() );
}
@Override
boolean hasSimpleContent() {
if (isComment() || isProcessingInstruction()) return false;
if (isText() || this.node.isAttributeType()) return true;
return !this.node.hasChildElement();
}
@Override
boolean hasComplexContent() {
return !hasSimpleContent();
}
// TODO Cross-reference comment below with spec
// Comment is: Length of an XML object is always 1, it's a list of XML objects of size 1.
@Override
int length() {
return 1;
}
@ -396,12 +421,14 @@ class XML extends XMLObjectImpl {
return ecmaClass();
}
@Override
Object parent() {
XmlNode parent = this.node.parent();
if (parent == null) return null;
return newXML(this.node.parent());
}
@Override
boolean propertyIsEnumerable(Object name)
{
boolean result;
@ -417,6 +444,7 @@ class XML extends XMLObjectImpl {
return result;
}
@Override
Object valueOf() {
return this;
}
@ -425,18 +453,21 @@ class XML extends XMLObjectImpl {
// Selection of children
//
@Override
XMLList comments() {
XMLList rv = newXMLList();
this.node.addMatchingChildren(rv, XmlNode.Filter.COMMENT);
return rv;
}
@Override
XMLList text() {
XMLList rv = newXMLList();
this.node.addMatchingChildren(rv, XmlNode.Filter.TEXT);
return rv;
}
@Override
XMLList processingInstructions(XMLName xmlName) {
XMLList rv = newXMLList();
this.node.addMatchingChildren(rv, XmlNode.Filter.PROCESSING_INSTRUCTION(xmlName));
@ -664,6 +695,7 @@ class XML extends XMLObjectImpl {
}
}
@Override
public String getClassName() {
// TODO: This appears to confuse the interpreter if we use the "real" class property from ECMA. Otherwise this code
// would be:
@ -699,10 +731,12 @@ class XML extends XMLObjectImpl {
return toXMLString();
}
@Override
public String toString() {
return ecmaToString();
}
@Override
String toXMLString() {
return this.node.ecmaToXMLString(getProcessor());
}

View File

@ -109,11 +109,13 @@ class XMLCtor extends IdFunctionObject
MAX_INSTANCE_ID = 5;
@Override
protected int getMaxInstanceId()
{
return super.getMaxInstanceId() + MAX_INSTANCE_ID;
}
@Override
protected int findInstanceIdInfo(String s) {
int id;
// #generated# Last update: 2007-08-20 09:01:10 EDT
@ -150,6 +152,7 @@ class XMLCtor extends IdFunctionObject
// #/string_id_map#
@Override
protected String getInstanceIdName(int id)
{
switch (id - super.getMaxInstanceId()) {
@ -162,6 +165,7 @@ class XMLCtor extends IdFunctionObject
return super.getInstanceIdName(id);
}
@Override
protected Object getInstanceIdValue(int id)
{
switch (id - super.getMaxInstanceId()) {
@ -179,6 +183,7 @@ class XMLCtor extends IdFunctionObject
return super.getInstanceIdValue(id);
}
@Override
protected void setInstanceIdValue(int id, Object value) {
switch (id - super.getMaxInstanceId()) {
case Id_ignoreComments:
@ -207,6 +212,7 @@ class XMLCtor extends IdFunctionObject
Id_setSettings = 3,
MAX_FUNCTION_ID = 3;
@Override
protected int findPrototypeId(String s)
{
int id;
@ -224,6 +230,7 @@ class XMLCtor extends IdFunctionObject
}
// #/string_id_map#
@Override
protected void initPrototypeId(int id)
{
String s;
@ -237,6 +244,7 @@ class XMLCtor extends IdFunctionObject
initPrototypeMethod(XMLCTOR_TAG, id, s, arity);
}
@Override
public Object execIdCall(IdFunctionObject f, Context cx, Scriptable scope,
Scriptable thisObj, Object[] args)
{
@ -274,6 +282,7 @@ class XMLCtor extends IdFunctionObject
/**
hasInstance for XML objects works differently than other objects; see ECMA357 13.4.3.10.
*/
@Override
public boolean hasInstance(Scriptable instance) {
return (instance instanceof XML || instance instanceof XMLList);
}

View File

@ -45,8 +45,6 @@ import org.mozilla.javascript.*;
import org.mozilla.javascript.xml.*;
public final class XMLLibImpl extends XMLLib implements Serializable {
// TODO Document that this only works with JDK 1.5 or backport its
// features to earlier versions
private static final long serialVersionUID = 1L;
//
@ -62,7 +60,8 @@ public final class XMLLibImpl extends XMLLib implements Serializable {
if (xmlObject instanceof XML) {
return ((XML)xmlObject).toDomNode();
} else {
throw new IllegalArgumentException("xmlObject is not an XML object in JavaScript.");
throw new IllegalArgumentException(
"xmlObject is not an XML object in JavaScript.");
}
}
@ -154,10 +153,10 @@ public final class XMLLibImpl extends XMLLib implements Serializable {
}
XMLName toXMLNameFromString(Context cx, String name) {
return XMLName.create( getDefaultNamespaceURI(cx), name );
return XMLName.create(getDefaultNamespaceURI(cx), name);
}
/** @deprecated */
/* TODO: Marked deprecated by original author */
XMLName toXMLName(Context cx, Object nameValue) {
XMLName result;
@ -374,8 +373,7 @@ public final class XMLLibImpl extends XMLLib implements Serializable {
return new XML(this, this.globalScope, this.xmlPrototype, node);
}
/**
@deprecated I believe this can be replaced by ecmaToXml below.
/* TODO: Can this can be replaced by ecmaToXml below?
*/
final XML newXMLFromJs(Object inputObject) {
String frag;
@ -534,8 +532,8 @@ public final class XMLLibImpl extends XMLLib implements Serializable {
}
}
/**
@deprecated Too general; this should be split into overloaded methods.
/*
TODO: Too general; this should be split into overloaded methods.
Is that possible?
*/
XmlNode.QName toNodeQName(Context cx, Object nameValue, boolean attribute) {
@ -566,31 +564,37 @@ public final class XMLLibImpl extends XMLLib implements Serializable {
// Override methods from XMLLib
//
@Override
public boolean isXMLName(Context _cx, Object nameObj) {
return XMLName.accept(nameObj);
}
@Override
public Object toDefaultXmlNamespace(Context cx, Object uriValue) {
return this.namespacePrototype.constructNamespace(uriValue);
}
@Override
public String escapeTextValue(Object o) {
return options.escapeTextValue(o);
}
@Override
public String escapeAttributeValue(Object o) {
return options.escapeAttributeValue(o);
}
@Override
public Ref nameRef(Context cx, Object name, Scriptable scope, int memberTypeFlags) {
if ((memberTypeFlags & Node.ATTRIBUTE_FLAG) == 0) {
// should only be called foir cases like @name or @[expr]
// should only be called for cases like @name or @[expr]
throw Kit.codeBug();
}
XMLName xmlName = toAttributeName(cx, name);
return xmlPrimaryReference(cx, xmlName, scope);
}
@Override
public Ref nameRef(Context cx, Object namespace, Object name, Scriptable scope, int memberTypeFlags) {
XMLName xmlName = XMLName.create(toNodeQName(cx, namespace, name), false, false);

View File

@ -43,21 +43,22 @@ package org.mozilla.javascript.xmlimpl;
import org.mozilla.javascript.*;
import org.mozilla.javascript.xml.*;
import java.util.ArrayList;
class XMLList extends XMLObjectImpl implements Function {
static final long serialVersionUID = -4543618751670781135L;
private XmlNode.List _annos;
private XmlNode.InternalList _annos;
private XMLObjectImpl targetObject = null;
private XmlNode.QName targetProperty = null;
XMLList(XMLLibImpl lib, Scriptable scope, XMLObject prototype) {
super(lib, scope, prototype);
_annos = new XmlNode.List();
_annos = new XmlNode.InternalList();
}
/** @deprecated Will probably end up unnecessary as we move things around */
XmlNode.List getNodeList() {
/* TODO Will probably end up unnecessary as we move things around */
XmlNode.InternalList getNodeList() {
return _annos;
}
@ -67,11 +68,12 @@ class XMLList extends XMLObjectImpl implements Function {
targetProperty = property;
}
/** @deprecated */
/* TODO: original author marked this as deprecated */
private XML getXmlFromAnnotation(int index) {
return getXML(_annos, index);
}
@Override
XML getXML() {
if (length() == 1) return getXmlFromAnnotation(0);
return null;
@ -83,7 +85,7 @@ class XMLList extends XMLObjectImpl implements Function {
void replace(int index, XML xml) {
if (index < length()) {
XmlNode.List newAnnoList = new XmlNode.List();
XmlNode.InternalList newAnnoList = new XmlNode.InternalList();
newAnnoList.add(_annos, 0, index);
newAnnoList.add(xml);
newAnnoList.add(_annos, index+1, length());
@ -93,7 +95,7 @@ class XMLList extends XMLObjectImpl implements Function {
private void insert(int index, XML xml) {
if (index < length()) {
XmlNode.List newAnnoList = new XmlNode.List();
XmlNode.InternalList newAnnoList = new XmlNode.InternalList();
newAnnoList.add(_annos, 0, index);
newAnnoList.add(xml);
newAnnoList.add(_annos, index, length());
@ -107,6 +109,7 @@ class XMLList extends XMLObjectImpl implements Function {
//
//
@Override
public String getClassName() {
return "XMLList";
}
@ -117,6 +120,7 @@ class XMLList extends XMLObjectImpl implements Function {
//
//
@Override
public Object get(int index, Scriptable start) {
//Log("get index: " + index);
@ -127,6 +131,7 @@ class XMLList extends XMLObjectImpl implements Function {
}
}
@Override
boolean hasXMLProperty(XMLName xmlName) {
boolean result = false;
@ -141,10 +146,12 @@ class XMLList extends XMLObjectImpl implements Function {
return result;
}
@Override
public boolean has(int index, Scriptable start) {
return 0 <= index && index < length();
}
@Override
void putXMLProperty(XMLName xmlName, Object value) {
//Log("put property: " + name);
@ -156,12 +163,16 @@ class XMLList extends XMLObjectImpl implements Function {
}
if (length() > 1) {
throw ScriptRuntime.typeError("Assignment to lists with more than one item is not supported");
throw ScriptRuntime.typeError(
"Assignment to lists with more than one item is not supported");
} else if (length() == 0) {
// Secret sauce for super-expandos.
// We set an element here, and then add ourselves to our target.
if (targetObject != null && targetProperty != null && targetProperty.getLocalName() != null) {
// Add an empty element with our targetProperty name and then set it.
if (targetObject != null && targetProperty != null &&
targetProperty.getLocalName() != null)
{
// Add an empty element with our targetProperty name and
// then set it.
XML xmlValue = newTextElementXML(null, targetProperty, null);
addToList(xmlValue);
@ -176,10 +187,13 @@ class XMLList extends XMLObjectImpl implements Function {
}
// Now add us to our parent
XMLName name2 = XMLName.formProperty(targetProperty.getUri(), targetProperty.getLocalName());
XMLName name2 = XMLName.formProperty(
targetProperty.getNamespace().getUri(),
targetProperty.getLocalName());
targetObject.putXMLProperty(name2, this);
} else {
throw ScriptRuntime.typeError("Assignment to empty XMLList without targets not supported");
throw ScriptRuntime.typeError(
"Assignment to empty XMLList without targets not supported");
}
} else if(xmlName.isAttributeName()) {
setAttribute(xmlName, value);
@ -192,6 +206,7 @@ class XMLList extends XMLObjectImpl implements Function {
}
}
@Override
Object getXMLProperty(XMLName name) {
return getPropertyList(name);
}
@ -200,6 +215,7 @@ class XMLList extends XMLObjectImpl implements Function {
xml.replaceWith(with);
}
@Override
public void put(int index, Scriptable start, Object value) {
Object parent = Undefined.instance;
// Convert text into XML if needed.
@ -294,7 +310,7 @@ class XMLList extends XMLObjectImpl implements Function {
}
}
private XML getXML(XmlNode.List _annos, int index) {
private XML getXML(XmlNode.InternalList _annos, int index) {
if (index >= 0 && index < length()) {
return xmlFromNode(_annos.item(index));
} else {
@ -302,6 +318,7 @@ class XMLList extends XMLObjectImpl implements Function {
}
}
@Override
void deleteXMLProperty(XMLName name) {
for (int i = 0; i < length(); i++) {
XML xml = getXmlFromAnnotation(i);
@ -312,6 +329,7 @@ class XMLList extends XMLObjectImpl implements Function {
}
}
@Override
public void delete(int index) {
if (index >= 0 && index < length()) {
XML xml = getXmlFromAnnotation(index);
@ -322,6 +340,7 @@ class XMLList extends XMLObjectImpl implements Function {
}
}
@Override
public Object[] getIds() {
Object enumObjs[];
@ -377,6 +396,7 @@ class XMLList extends XMLObjectImpl implements Function {
//
//
@Override
XMLList child(int index) {
XMLList result = newXMLList();
@ -387,6 +407,7 @@ class XMLList extends XMLObjectImpl implements Function {
return result;
}
@Override
XMLList child(XMLName xmlName) {
XMLList result = newXMLList();
@ -397,14 +418,16 @@ class XMLList extends XMLObjectImpl implements Function {
return result;
}
@Override
void addMatches(XMLList rv, XMLName name) {
for (int i=0; i<length(); i++) {
getXmlFromAnnotation(i).addMatches(rv, name);
}
}
@Override
XMLList children() {
java.util.Vector v = new java.util.Vector();
ArrayList<XML> list = new ArrayList<XML>();
for (int i = 0; i < length(); i++) {
XML xml = getXmlFromAnnotation(i);
@ -416,22 +439,23 @@ class XMLList extends XMLObjectImpl implements Function {
int cChildren = childList.length();
for (int j = 0; j < cChildren; j++) {
v.addElement(childList.item(j));
list.add(childList.item(j));
}
}
}
}
XMLList allChildren = newXMLList();
int sz = v.size();
int sz = list.size();
for (int i = 0; i < sz; i++) {
allChildren.addToList(v.get(i));
allChildren.addToList(list.get(i));
}
return allChildren;
}
@Override
XMLList comments() {
XMLList result = newXMLList();
@ -443,6 +467,7 @@ class XMLList extends XMLObjectImpl implements Function {
return result;
}
@Override
XMLList elements(XMLName name) {
XMLList rv = newXMLList();
for (int i=0; i<length(); i++) {
@ -452,6 +477,7 @@ class XMLList extends XMLObjectImpl implements Function {
return rv;
}
@Override
boolean contains(Object xml) {
boolean result = false;
@ -467,6 +493,7 @@ class XMLList extends XMLObjectImpl implements Function {
return result;
}
@Override
XMLObjectImpl copy() {
XMLList result = newXMLList();
@ -478,6 +505,7 @@ class XMLList extends XMLObjectImpl implements Function {
return result;
}
@Override
boolean hasOwnProperty(XMLName xmlName) {
if (isPrototype()) {
String property = xmlName.localName();
@ -487,6 +515,7 @@ class XMLList extends XMLObjectImpl implements Function {
}
}
@Override
boolean hasComplexContent() {
boolean complexContent;
int length = length();
@ -510,6 +539,7 @@ class XMLList extends XMLObjectImpl implements Function {
return complexContent;
}
@Override
boolean hasSimpleContent() {
if (length() == 0) {
return true;
@ -526,6 +556,7 @@ class XMLList extends XMLObjectImpl implements Function {
}
}
@Override
int length() {
int result = 0;
@ -536,6 +567,7 @@ class XMLList extends XMLObjectImpl implements Function {
return result;
}
@Override
void normalize() {
for (int i = 0; i < length(); i++) {
getXmlFromAnnotation(i).normalize();
@ -546,6 +578,7 @@ class XMLList extends XMLObjectImpl implements Function {
* If list is empty, return undefined, if elements have different parents return undefined,
* If they all have the same parent, return that parent
*/
@Override
Object parent() {
if (length() == 0) return Undefined.instance;
@ -569,6 +602,7 @@ class XMLList extends XMLObjectImpl implements Function {
return candidateParent;
}
@Override
XMLList processingInstructions(XMLName xmlName) {
XMLList result = newXMLList();
@ -581,6 +615,7 @@ class XMLList extends XMLObjectImpl implements Function {
return result;
}
@Override
boolean propertyIsEnumerable(Object name) {
long index;
if (name instanceof Integer) {
@ -602,6 +637,7 @@ class XMLList extends XMLObjectImpl implements Function {
return (0 <= index && index < length());
}
@Override
XMLList text() {
XMLList result = newXMLList();
@ -612,6 +648,7 @@ class XMLList extends XMLObjectImpl implements Function {
return result;
}
@Override
public String toString() {
// ECMA357 10.1.2
if (hasSimpleContent()) {
@ -632,6 +669,7 @@ class XMLList extends XMLObjectImpl implements Function {
}
}
@Override
String toXMLString() {
// See ECMA 10.2.1
StringBuffer sb = new StringBuffer();
@ -645,6 +683,7 @@ class XMLList extends XMLObjectImpl implements Function {
return sb.toString();
}
@Override
Object valueOf() {
return this;
}
@ -653,6 +692,7 @@ class XMLList extends XMLObjectImpl implements Function {
// Other public Functions from XMLObject
//
@Override
boolean equivalentXml(Object target) {
boolean result = false;
@ -711,8 +751,10 @@ class XMLList extends XMLObjectImpl implements Function {
return ScriptRuntime.applyOrCall(isApply, cx, scope, thisObj, args);
}
@Override
protected Object jsConstructor(Context cx, boolean inNewExpr,
Object[] args) {
Object[] args)
{
if (args.length == 0) {
return newXMLList();
} else {
@ -728,6 +770,7 @@ class XMLList extends XMLObjectImpl implements Function {
/**
* See ECMA 357, 11_2_2_1, Semantics, 3_e.
*/
@Override
public Scriptable getExtraMethodSource(Context cx) {
if (length() == 1) {
return getXmlFromAnnotation(0);

View File

@ -145,12 +145,12 @@ class XMLName extends Ref {
return rv;
}
/** @deprecated */
/** TODO: marked deprecated by original author */
static XMLName formProperty(String uri, String localName) {
return formProperty(XmlNode.Namespace.create(uri), localName);
}
/** @deprecated */
/** TODO: marked deprecated by original implementor */
static XMLName create(String defaultNamespaceUri, String name) {
if (name == null)
throw new IllegalArgumentException();
@ -309,7 +309,8 @@ class XMLName extends Ref {
// Check for attribute type and convert to textNode
if (xmlValue instanceof XML) {
if (((XML)xmlValue).isAttribute()) {
xmlValue = target.makeXmlFromString(xmlName, xmlValue.toString());
xmlValue = target.makeXmlFromString(xmlName,
xmlValue.toString());
}
}
@ -343,6 +344,7 @@ class XMLName extends Ref {
}
}
@Override
public boolean has(Context cx) {
if (xmlObject == null) {
return false;
@ -350,6 +352,7 @@ class XMLName extends Ref {
return xmlObject.hasXMLProperty(this);
}
@Override
public Object get(Context cx) {
if (xmlObject == null) {
throw ScriptRuntime.undefReadError(Undefined.instance,
@ -358,6 +361,7 @@ class XMLName extends Ref {
return xmlObject.getXMLProperty(this);
}
@Override
public Object set(Context cx, Object value) {
if (xmlObject == null) {
throw ScriptRuntime.undefWriteError(Undefined.instance,
@ -371,6 +375,7 @@ class XMLName extends Ref {
return value;
}
@Override
public boolean delete(Context cx) {
if (xmlObject == null) {
return true;
@ -379,6 +384,7 @@ class XMLName extends Ref {
return !xmlObject.hasXMLProperty(this);
}
@Override
public String toString() {
//return qname.localName();
StringBuffer buff = new StringBuffer();
@ -443,19 +449,19 @@ class XMLName extends Ref {
}
}
/** @deprecated */
/* TODO: marked deprecated by original author */
boolean isAttributeName() {
return isAttributeName;
}
// TODO Fix whether this is an attribute XMLName at construction?
/** @deprecated */
// TODO Fix whether this is an attribute XMLName at construction?
// Marked deprecated by original author
void setAttributeName() {
// if (isAttributeName) throw new IllegalStateException();
isAttributeName = true;
}
/** @deprecated */
/* TODO: was marked deprecated by original author */
boolean isDescendants() {
return isDescendants;
}

View File

@ -123,43 +123,53 @@ abstract class XMLObjectImpl extends XMLObject {
// Scriptable
//
@Override
public final Object get(String name, Scriptable start) {
return super.get(name, start);
}
@Override
public final boolean has(String name, Scriptable start) {
return super.has(name, start);
}
@Override
public final void put(String name, Scriptable start, Object value) {
super.put(name, start, value);
}
@Override
public final void delete(String name) {
// TODO I am not sure about this, but this is how I found it. DPC
throw new IllegalArgumentException("String: [" + name + "]");
}
@Override
public final Scriptable getPrototype() {
return super.getPrototype();
}
@Override
public final void setPrototype(Scriptable prototype) {
super.setPrototype(prototype);
}
@Override
public final Scriptable getParentScope() {
return super.getParentScope();
}
@Override
public final void setParentScope(Scriptable parent) {
super.setParentScope(parent);
}
public final Object getDefaultValue(Class hint) {
@Override
public final Object getDefaultValue(Class<?> hint) {
return this.toString();
}
@Override
public final boolean hasInstance(Scriptable scriptable) {
return super.hasInstance(scriptable);
}
@ -220,6 +230,7 @@ abstract class XMLObjectImpl extends XMLObject {
abstract XMLList processingInstructions(XMLName xmlName);
abstract boolean propertyIsEnumerable(Object member);
abstract XMLList text();
@Override
public abstract String toString();
abstract String toXMLString();
abstract Object valueOf();
@ -241,6 +252,7 @@ abstract class XMLObjectImpl extends XMLObject {
* never returns {@link Scriptable#NOT_FOUND} for them but rather
* calls equivalentXml(value) and wrap the result as Boolean.
*/
@Override
protected final Object equivalentValues(Object value) {
boolean result = equivalentXml(value);
return result ? Boolean.TRUE : Boolean.FALSE;
@ -255,6 +267,7 @@ abstract class XMLObjectImpl extends XMLObject {
/**
* Implementation of ECMAScript [[Has]]
*/
@Override
public final boolean ecmaHas(Context cx, Object id) {
if (cx == null) cx = Context.getCurrentContext();
XMLName xmlName = lib.toXMLNameOrIndex(cx, id);
@ -269,6 +282,7 @@ abstract class XMLObjectImpl extends XMLObject {
/**
* Implementation of ECMAScript [[Get]]
*/
@Override
public final Object ecmaGet(Context cx, Object id) {
if (cx == null) cx = Context.getCurrentContext();
XMLName xmlName = lib.toXMLNameOrIndex(cx, id);
@ -287,6 +301,7 @@ abstract class XMLObjectImpl extends XMLObject {
/**
* Implementation of ECMAScript [[Put]]
*/
@Override
public final void ecmaPut(Context cx, Object id, Object value) {
if (cx == null) cx = Context.getCurrentContext();
XMLName xmlName = lib.toXMLNameOrIndex(cx, id);
@ -302,6 +317,7 @@ abstract class XMLObjectImpl extends XMLObject {
/**
* Implementation of ECMAScript [[Delete]].
*/
@Override
public final boolean ecmaDelete(Context cx, Object id) {
if (cx == null) cx = Context.getCurrentContext();
XMLName xmlName = lib.toXMLNameOrIndex(cx, id);
@ -316,6 +332,7 @@ abstract class XMLObjectImpl extends XMLObject {
}
// TODO Can this be made more strongly typed?
@Override
public Ref memberRef(Context cx, Object elem, int memberTypeFlags) {
boolean attribute = (memberTypeFlags & Node.ATTRIBUTE_FLAG) != 0;
boolean descendants = (memberTypeFlags & Node.DESCENDANTS_FLAG) != 0;
@ -334,24 +351,31 @@ abstract class XMLObjectImpl extends XMLObject {
/**
* Generic reference to implement x::ns, x.@ns::y, x..@ns::y etc.
*/
public Ref memberRef(Context cx, Object namespace, Object elem, int memberTypeFlags) {
@Override
public Ref memberRef(Context cx, Object namespace, Object elem,
int memberTypeFlags)
{
boolean attribute = (memberTypeFlags & Node.ATTRIBUTE_FLAG) != 0;
boolean descendants = (memberTypeFlags & Node.DESCENDANTS_FLAG) != 0;
XMLName rv = XMLName.create(lib.toNodeQName(cx, namespace, elem), attribute, descendants);
XMLName rv = XMLName.create(lib.toNodeQName(cx, namespace, elem),
attribute, descendants);
rv.initXMLObject(this);
return rv;
}
@Override
public NativeWith enterWith(Scriptable scope) {
return new XMLWithScope(lib, scope, this);
}
@Override
public NativeWith enterDotQuery(Scriptable scope) {
XMLWithScope xws = new XMLWithScope(lib, scope, this);
xws.initAsDotQuery();
return xws;
}
@Override
public final Object addValues(Context cx, boolean thisIsLeft,
Object value) {
if (value instanceof XMLObject) {
@ -430,6 +454,7 @@ abstract class XMLObjectImpl extends XMLObject {
MAX_PROTOTYPE_ID = 40;
@Override
protected int findPrototypeId(String s) {
int id;
// #generated# Last update: 2007-08-20 09:04:06 EDT
@ -507,6 +532,7 @@ abstract class XMLObjectImpl extends XMLObject {
}
// #/string_id_map#
@Override
protected void initPrototypeId(int id) {
String s;
int arity;
@ -582,7 +608,10 @@ abstract class XMLObjectImpl extends XMLObject {
throw ScriptRuntime.notFunctionError(object, name);
}
public Object execIdCall(IdFunctionObject f, Context cx, Scriptable scope, Scriptable thisObj, Object[] args) {
@Override
public Object execIdCall(IdFunctionObject f, Context cx, Scriptable scope,
Scriptable thisObj, Object[] args)
{
if (!f.hasTag(XMLOBJECT_TAG)) {
return super.execIdCall(f, cx, scope, thisObj, args);
}
@ -791,7 +820,7 @@ abstract class XMLObjectImpl extends XMLObject {
return lib.newTextElementXML(reference, qname, value);
}
/** @deprecated Hopefully this can be replaced with ecmaToXml below. */
/* TODO: Hopefully this can be replaced with ecmaToXml below. */
final XML newXMLFromJs(Object inputObject) {
return lib.newXMLFromJs(inputObject);
}

View File

@ -82,6 +82,7 @@ final class XMLWithScope extends NativeWith
_xmlList = lib.newXMLList();
}
@Override
protected Object updateDotQuery(boolean value)
{
// Return null to continue looping

View File

@ -87,7 +87,7 @@ class XmlNode {
document = processor.newDocument();
}
Node referenceDom = (reference != null) ? reference.dom : null;
Element e = document.createElementNS(qname.getUri(), qname.qualify(referenceDom));
Element e = document.createElementNS(qname.getNamespace().getUri(), qname.qualify(referenceDom));
if (value != null) {
e.appendChild(document.createTextNode(value));
}
@ -139,6 +139,7 @@ class XmlNode {
return raw.ecmaToXmlString(this.dom);
}
@Override
public String toString() {
return "XmlNode: type=" + dom.getNodeType() + " dom=" + dom.toString();
}
@ -329,8 +330,8 @@ class XmlNode {
}
private static class Namespaces {
private HashMap map = new HashMap();
private HashMap uriToPrefix = new HashMap();
private Map<String,String> map = new HashMap<String,String>();
private Map<String,String> uriToPrefix = new HashMap<String,String>();
Namespaces() {
}
@ -348,26 +349,24 @@ class XmlNode {
Namespace getNamespaceByUri(String uri) {
if (uriToPrefix.get(uri) == null) return null;
return Namespace.create(uri, (String)uriToPrefix.get(uri));
return Namespace.create(uri, uriToPrefix.get(uri));
}
Namespace getNamespace(String prefix) {
if (map.get(prefix) == null) return null;
return Namespace.create(prefix, (String)map.get(prefix));
return Namespace.create(prefix, map.get(prefix));
}
Namespace[] getNamespaces() {
Iterator i = map.keySet().iterator();
ArrayList rv = new ArrayList();
while(i.hasNext()) {
String prefix = (String)i.next();
String uri = (String)map.get(prefix);
ArrayList<Namespace> rv = new ArrayList<Namespace>();
for (String prefix: map.keySet()) {
String uri = map.get(prefix);
Namespace n = Namespace.create(prefix, uri);
if (!n.isEmpty()) {
rv.add( n );
rv.add(n);
}
}
return (Namespace[])rv.toArray(new Namespace[0]);
return rv.toArray(new Namespace[rv.size()]);
}
}
@ -401,7 +400,7 @@ class XmlNode {
}
final void renameNode(QName qname) {
this.dom = dom.getOwnerDocument().renameNode(dom, qname.getUri(), qname.qualify(dom));
this.dom = dom.getOwnerDocument().renameNode(dom, qname.getNamespace().getUri(), qname.qualify(dom));
}
void invalidateNamespacePrefix() {
@ -526,15 +525,15 @@ class XmlNode {
}
XmlNode[] getMatchingChildren(Filter filter) {
ArrayList rv = new ArrayList();
ArrayList<XmlNode> rv = new ArrayList<XmlNode>();
NodeList nodes = this.dom.getChildNodes();
for (int i=0; i<nodes.getLength(); i++) {
Node node = nodes.item(i);
if (filter.accept(node)) {
rv.add( createImpl(node) );
rv.add(createImpl(node));
}
}
return (XmlNode[])rv.toArray(new XmlNode[0]);
return rv.toArray(new XmlNode[rv.size()]);
}
XmlNode[] getAttributes() {
@ -602,6 +601,7 @@ class XmlNode {
private Namespace() {
}
@Override
public String toString() {
if (prefix == null) return "XmlNode.Namespace [" + uri + "]";
return "XmlNode.Namespace [" + prefix + "{" + uri + "}]";
@ -672,6 +672,7 @@ class XmlNode {
private QName() {
}
@Override
public String toString() {
return "XmlNode.QName [" + localName + "," + namespace + "]";
}
@ -744,16 +745,6 @@ class XmlNode {
element.setAttributeNS(namespace.getUri(), qualify(namespace.getPrefix(), localName), value);
}
/** @deprecated Use getNamespace() */
String getUri() {
return namespace.getUri();
}
/** @deprecated Use getNamespace() */
String getPrefix() {
return namespace.getPrefix();
}
Namespace getNamespace() {
return namespace;
}
@ -763,32 +754,32 @@ class XmlNode {
}
}
static class List {
private java.util.Vector v;
static class InternalList {
private List<XmlNode> list;
List() {
v = new java.util.Vector();
InternalList() {
list = new ArrayList<XmlNode>();
}
private void _add(XmlNode n) {
v.add(n);
list.add(n);
}
XmlNode item(int index) {
return (XmlNode)(v.get(index));
return list.get(index);
}
void remove(int index) {
v.remove(index);
list.remove(index);
}
void add(List other) {
void add(InternalList other) {
for (int i=0; i<other.length(); i++) {
_add(other.item(i));
}
}
void add(List from, int startInclusive, int endExclusive) {
void add(InternalList from, int startInclusive, int endExclusive) {
for (int i=startInclusive; i<endExclusive; i++) {
_add(from.item(i));
}
@ -798,12 +789,12 @@ class XmlNode {
_add(node);
}
/** @deprecated */
/* TODO: was marked deprecated by original author */
void add(XML xml) {
_add(xml.getAnnotation());
}
/** @deprecated */
/* TODO: was marked deprecated by original author */
void addToList(Object toAdd) {
if (toAdd instanceof Undefined) {
// Missing argument do nothing...
@ -823,23 +814,26 @@ class XmlNode {
}
int length() {
return v.size();
return list.size();
}
}
static abstract class Filter {
static final Filter COMMENT = new Filter() {
@Override
boolean accept(Node node) {
return node.getNodeType() == Node.COMMENT_NODE;
}
};
static final Filter TEXT = new Filter() {
@Override
boolean accept(Node node) {
return node.getNodeType() == Node.TEXT_NODE;
}
};
static Filter PROCESSING_INSTRUCTION(final XMLName name) {
return new Filter() {
@Override
boolean accept(Node node) {
if (node.getNodeType() == Node.PROCESSING_INSTRUCTION_NODE) {
ProcessingInstruction pi = (ProcessingInstruction)node;
@ -850,11 +844,13 @@ class XmlNode {
};
}
static Filter ELEMENT = new Filter() {
@Override
boolean accept(Node node) {
return node.getNodeType() == Node.ELEMENT_NODE;
}
};
static Filter TRUE = new Filter() {
@Override
boolean accept(Node node) {
return true;
}

View File

@ -39,6 +39,8 @@ package org.mozilla.javascript.xmlimpl;
import org.w3c.dom.*;
import javax.xml.parsers.DocumentBuilder;
import java.util.List;
import java.util.ArrayList;
import org.mozilla.javascript.*;
@ -184,29 +186,29 @@ class XmlProcessor {
}
}
private void addProcessingInstructionsTo(java.util.Vector v, Node node) {
private void addProcessingInstructionsTo(List<Node> list, Node node) {
if (node instanceof ProcessingInstruction) {
v.add(node);
list.add(node);
}
if (node.getChildNodes() != null) {
for (int i=0; i<node.getChildNodes().getLength(); i++) {
addProcessingInstructionsTo(v, node.getChildNodes().item(i));
addProcessingInstructionsTo(list, node.getChildNodes().item(i));
}
}
}
private void addCommentsTo(java.util.Vector v, Node node) {
private void addCommentsTo(List<Node> list, Node node) {
if (node instanceof Comment) {
v.add(node);
list.add(node);
}
if (node.getChildNodes() != null) {
for (int i=0; i<node.getChildNodes().getLength(); i++) {
addProcessingInstructionsTo(v, node.getChildNodes().item(i));
addProcessingInstructionsTo(list, node.getChildNodes().item(i));
}
}
}
private void addTextNodesToRemoveAndTrim(java.util.Vector toRemove, Node node) {
private void addTextNodesToRemoveAndTrim(List<Node> toRemove, Node node) {
if (node instanceof Text) {
Text text = (Text)node;
boolean BUG_369394_IS_VALID = false;
@ -237,18 +239,16 @@ class XmlProcessor {
builder = getDocumentBuilderFromPool();
Document document = builder.parse( new org.xml.sax.InputSource(new java.io.StringReader(syntheticXml)) );
if (ignoreProcessingInstructions) {
java.util.Vector v = new java.util.Vector();
addProcessingInstructionsTo(v, document);
for (int i=0; i<v.size(); i++) {
Node node = (Node)v.elementAt(i);
List<Node> list = new java.util.ArrayList<Node>();
addProcessingInstructionsTo(list, document);
for (Node node: list) {
node.getParentNode().removeChild(node);
}
}
if (ignoreComments) {
java.util.Vector v = new java.util.Vector();
addCommentsTo(v, document);
for (int i=0; i<v.size(); i++) {
Node node = (Node)v.elementAt(i);
List<Node> list = new java.util.ArrayList<Node>();
addCommentsTo(list, document);
for (Node node: list) {
node.getParentNode().removeChild(node);
}
}
@ -258,10 +258,9 @@ class XmlProcessor {
// so that it would know which whitespace to ignore.
// Instead we will try to delete it ourselves.
java.util.Vector v = new java.util.Vector();
addTextNodesToRemoveAndTrim(v, document);
for (int i=0; i<v.size(); i++) {
Node node = (Node)v.elementAt(i);
List<Node> list = new java.util.ArrayList<Node>();
addTextNodesToRemoveAndTrim(list, document);
for (Node node: list) {
node.getParentNode().removeChild(node);
}
}
@ -417,7 +416,7 @@ class XmlProcessor {
// We "mark" all the nodes first; if we tried to do this loop otherwise, it would behave unexpectedly (the inserted nodes
// would contribute to the length and it might never terminate).
java.util.Vector toIndent = new java.util.Vector();
ArrayList<Node> toIndent = new ArrayList<Node>();
boolean indentChildren = false;
for (int i=0; i<e.getChildNodes().getLength(); i++) {
if (i == 1) indentChildren = true;
@ -430,21 +429,22 @@ class XmlProcessor {
}
if (indentChildren) {
for (int i=0; i<toIndent.size(); i++) {
e.insertBefore( e.getOwnerDocument().createTextNode(beforeContent), (Node)toIndent.elementAt(i) );
e.insertBefore(e.getOwnerDocument().createTextNode(beforeContent),
toIndent.get(i));
}
}
NodeList nodes = e.getChildNodes();
java.util.Vector v = new java.util.Vector();
for (int i=0; i<nodes.getLength(); i++) {
ArrayList<Element> list = new ArrayList<Element>();
for (int i=0; i < nodes.getLength(); i++) {
if (nodes.item(i) instanceof Element) {
v.add( nodes.item(i) );
list.add((Element)nodes.item(i));
}
}
for (int i=0; i<v.size(); i++) {
beautifyElement( (Element)v.elementAt(i), indent + prettyIndent );
for (Element elem: list) {
beautifyElement(elem, indent + prettyIndent);
}
if (indentChildren) {
e.appendChild( e.getOwnerDocument().createTextNode(afterContent) );
e.appendChild(e.getOwnerDocument().createTextNode(afterContent));
}
}
}