org.mozilla.javascript
Class NativeArray

java.lang.Object
  extended by org.mozilla.javascript.ScriptableObject
      extended by org.mozilla.javascript.IdScriptableObject
          extended by org.mozilla.javascript.NativeArray
All Implemented Interfaces:
java.io.Serializable, java.lang.Iterable, java.util.Collection, java.util.List, ConstProperties, DebuggableObject, IdFunctionCall, Scriptable

public class NativeArray
extends IdScriptableObject
implements java.util.List

This class implements the Array native object.

Author:
Norris Boyd, Mike McCabe
See Also:
Serialized Form

Field Summary
 
Fields inherited from class org.mozilla.javascript.ScriptableObject
CONST, DONTENUM, EMPTY, PERMANENT, READONLY, UNINITIALIZED_CONST
 
Fields inherited from interface org.mozilla.javascript.Scriptable
NOT_FOUND
 
Constructor Summary
NativeArray(long lengthArg)
           
NativeArray(java.lang.Object[] array)
           
 
Method Summary
 void add(int index, java.lang.Object element)
           
 boolean add(java.lang.Object o)
           
 boolean addAll(java.util.Collection c)
           
 boolean addAll(int index, java.util.Collection c)
           
 void clear()
           
 boolean contains(java.lang.Object o)
           
 boolean containsAll(java.util.Collection c)
           
protected  void defineOwnProperty(Context cx, java.lang.Object id, ScriptableObject desc, boolean checkValid)
          Defines a property on an object.
 void delete(int index)
          Removes the indexed property from the object.
 java.lang.Object execIdCall(IdFunctionObject f, Context cx, Scriptable scope, Scriptable thisObj, java.lang.Object[] args)
          'thisObj' will be null if invoked as constructor, in which case instance of Scriptable should be returned.
protected  void fillConstructorProperties(IdFunctionObject ctor)
           
protected  int findInstanceIdInfo(java.lang.String s)
          Map name to id of instance property.
protected  int findPrototypeId(java.lang.String s)
           
 java.lang.Object get(int index)
           
 java.lang.Object get(int index, Scriptable start)
          Returns the value of the indexed property or NOT_FOUND.
 java.lang.Object get(long index)
           
 java.lang.Object[] getAllIds()
          Returns an array of ids for the properties of the object.
 int getAttributes(int index)
          Get the attributes of an indexed property.
 java.lang.String getClassName()
          Return the name of the class.
 java.lang.Object getDefaultValue(java.lang.Class<?> hint)
          Implements the [[DefaultValue]] internal method.
 java.lang.Object[] getIds()
          Returns an array of ids for the properties of the object.
 java.lang.Integer[] getIndexIds()
           
protected  java.lang.String getInstanceIdName(int id)
          Map id back to property name it defines.
protected  java.lang.Object getInstanceIdValue(int id)
          Get id value.
 long getLength()
           
protected  int getMaxInstanceId()
          Get maximum id findInstanceIdInfo can generate.
protected  ScriptableObject getOwnPropertyDescriptor(Context cx, java.lang.Object id)
           
 boolean has(int index, Scriptable start)
          Returns true if the property index is defined.
 int indexOf(java.lang.Object o)
           
protected  void initPrototypeId(int id)
           
 java.util.Iterator iterator()
           
 long jsGet_length()
          Deprecated. Use getLength() instead.
 int lastIndexOf(java.lang.Object o)
           
 java.util.ListIterator listIterator()
           
 java.util.ListIterator listIterator(int start)
           
 void put(int index, Scriptable start, java.lang.Object value)
          Sets the value of the indexed property, creating it if need be.
 void put(java.lang.String id, Scriptable start, java.lang.Object value)
          Sets the value of the named property, creating it if need be.
 java.lang.Object remove(int index)
           
 boolean remove(java.lang.Object o)
           
 boolean removeAll(java.util.Collection c)
           
 boolean retainAll(java.util.Collection c)
           
 java.lang.Object set(int index, java.lang.Object element)
           
protected  void setInstanceIdAttributes(int id, int attr)
          Update the attributes of the given instance property.
protected  void setInstanceIdValue(int id, java.lang.Object value)
          Set or delete id value.
 int size()
           
 java.util.List subList(int fromIndex, int toIndex)
           
 java.lang.Object[] toArray()
           
 java.lang.Object[] toArray(java.lang.Object[] a)
           
 
Methods inherited from class org.mozilla.javascript.IdScriptableObject
activatePrototypeMap, addIdFunctionProperty, defaultGet, defaultPut, defineOwnProperty, delete, exportAsJSClass, get, getAttributes, has, hasPrototypeMap, incompatibleCallError, initPrototypeConstructor, initPrototypeMethod, initPrototypeValue, instanceIdInfo, setAttributes
 
Methods inherited from class org.mozilla.javascript.ScriptableObject
applyDescriptorToAttributeBitset, associateValue, avoidObjectDetection, buildDataDescriptor, callMethod, callMethod, checkPropertyChange, checkPropertyDefinition, defineClass, defineClass, defineClass, defineConst, defineConstProperty, defineFunctionProperties, defineOwnProperties, defineProperty, defineProperty, defineProperty, defineProperty, deleteProperty, deleteProperty, ensureScriptable, ensureScriptableObject, equivalentValues, get, getArrayPrototype, getAssociatedValue, getAttributes, getAttributes, getClassPrototype, getDefaultValue, getFunctionPrototype, getGetterOrSetter, getObjectPrototype, getParentScope, getProperty, getProperty, getPropertyIds, getPrototype, getSlot, getTopLevelScope, getTopScopeValue, getTypedProperty, getTypedProperty, getTypeOf, hasInstance, hasProperty, hasProperty, isAccessorDescriptor, isConst, isDataDescriptor, isEmpty, isExtensible, isFalse, isGenericDescriptor, isGetterOrSetter, isSealed, isTrue, preventExtensions, putConst, putConstProperty, putProperty, putProperty, redefineProperty, sameValue, sealObject, setAttributes, setAttributes, setAttributes, setGetterOrSetter, setParentScope, setPrototype
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface java.util.List
equals, hashCode, isEmpty
 

Constructor Detail

NativeArray

public NativeArray(long lengthArg)

NativeArray

public NativeArray(java.lang.Object[] array)
Method Detail

getClassName

public java.lang.String getClassName()
Description copied from class: ScriptableObject
Return the name of the class. This is typically the same name as the constructor. Classes extending ScriptableObject must implement this abstract method.

Specified by:
getClassName in interface Scriptable
Specified by:
getClassName in class ScriptableObject

getMaxInstanceId

protected int getMaxInstanceId()
Description copied from class: IdScriptableObject
Get maximum id findInstanceIdInfo can generate.

Overrides:
getMaxInstanceId in class IdScriptableObject

setInstanceIdAttributes

protected void setInstanceIdAttributes(int id,
                                       int attr)
Description copied from class: IdScriptableObject
Update the attributes of the given instance property. Classes which want to support changing property attributes via Object.defineProperty must override this method. The default implementation throws InternalError.

Overrides:
setInstanceIdAttributes in class IdScriptableObject
Parameters:
id - the instance property id
attr - the new attribute bitset

findInstanceIdInfo

protected int findInstanceIdInfo(java.lang.String s)
Description copied from class: IdScriptableObject
Map name to id of instance property. Should return 0 if not found or the result of IdScriptableObject.instanceIdInfo(int, int).

Overrides:
findInstanceIdInfo in class IdScriptableObject

getInstanceIdName

protected java.lang.String getInstanceIdName(int id)
Description copied from class: IdScriptableObject
Map id back to property name it defines.

Overrides:
getInstanceIdName in class IdScriptableObject

getInstanceIdValue

protected java.lang.Object getInstanceIdValue(int id)
Description copied from class: IdScriptableObject
Get id value. If id value is constant, descendant can call cacheIdValue to store value in the permanent cache. Default implementation creates IdFunctionObject instance for given id and cache its value

Overrides:
getInstanceIdValue in class IdScriptableObject

setInstanceIdValue

protected void setInstanceIdValue(int id,
                                  java.lang.Object value)
Description copied from class: IdScriptableObject
Set or delete id value. If value == NOT_FOUND , the implementation should make sure that the following getInstanceIdValue return NOT_FOUND.

Overrides:
setInstanceIdValue in class IdScriptableObject

fillConstructorProperties

protected void fillConstructorProperties(IdFunctionObject ctor)
Overrides:
fillConstructorProperties in class IdScriptableObject

initPrototypeId

protected void initPrototypeId(int id)
Overrides:
initPrototypeId in class IdScriptableObject

execIdCall

public java.lang.Object execIdCall(IdFunctionObject f,
                                   Context cx,
                                   Scriptable scope,
                                   Scriptable thisObj,
                                   java.lang.Object[] args)
Description copied from class: IdScriptableObject
'thisObj' will be null if invoked as constructor, in which case instance of Scriptable should be returned.

Specified by:
execIdCall in interface IdFunctionCall
Overrides:
execIdCall in class IdScriptableObject

get

public java.lang.Object get(int index,
                            Scriptable start)
Description copied from class: ScriptableObject
Returns the value of the indexed property or NOT_FOUND.

Specified by:
get in interface Scriptable
Overrides:
get in class ScriptableObject
Parameters:
index - the numeric index for the property
start - the object in which the lookup began
Returns:
the value of the property (may be null), or NOT_FOUND
See Also:
Scriptable.get(String,Scriptable)

has

public boolean has(int index,
                   Scriptable start)
Description copied from class: ScriptableObject
Returns true if the property index is defined.

Specified by:
has in interface Scriptable
Overrides:
has in class ScriptableObject
Parameters:
index - the numeric index for the property
start - the object in which the lookup began
Returns:
true if and only if the property was found in the object
See Also:
Scriptable.get(int, Scriptable), ScriptableObject.getProperty(Scriptable, int)

put

public void put(java.lang.String id,
                Scriptable start,
                java.lang.Object value)
Description copied from class: ScriptableObject
Sets the value of the named property, creating it if need be. If the property was created using defineProperty, the appropriate setter method is called.

If the property's attributes include READONLY, no action is taken. This method will actually set the property in the start object.

Specified by:
put in interface Scriptable
Overrides:
put in class IdScriptableObject
Parameters:
id - the name of the property
start - the object whose property is being set
value - value to set the property to
See Also:
Scriptable.has(String, Scriptable), Scriptable.get(String, Scriptable), ScriptableObject.putProperty(Scriptable, String, Object), Context.toObject(Object, Scriptable)

put

public void put(int index,
                Scriptable start,
                java.lang.Object value)
Description copied from class: ScriptableObject
Sets the value of the indexed property, creating it if need be.

Specified by:
put in interface Scriptable
Overrides:
put in class ScriptableObject
Parameters:
index - the numeric index for the property
start - the object whose property is being set
value - value to set the property to
See Also:
Scriptable.has(int, Scriptable), Scriptable.get(int, Scriptable), ScriptableObject.putProperty(Scriptable, int, Object), Context.toObject(Object, Scriptable)

delete

public void delete(int index)
Description copied from class: ScriptableObject
Removes the indexed property from the object. If the property is not found, or it has the PERMANENT attribute, no action is taken.

Specified by:
delete in interface Scriptable
Overrides:
delete in class ScriptableObject
Parameters:
index - the numeric index for the property
See Also:
Scriptable.get(int, Scriptable), ScriptableObject.deleteProperty(Scriptable, int)

getIds

public java.lang.Object[] getIds()
Description copied from class: ScriptableObject
Returns an array of ids for the properties of the object.

Any properties with the attribute DONTENUM are not listed.

Specified by:
getIds in interface Scriptable
Overrides:
getIds in class ScriptableObject
Returns:
an array of java.lang.Objects with an entry for every listed property. Properties accessed via an integer index will have a corresponding Integer entry in the returned array. Properties accessed by a String will have a String entry in the returned array.

getAllIds

public java.lang.Object[] getAllIds()
Description copied from class: ScriptableObject
Returns an array of ids for the properties of the object.

All properties, even those with attribute DONTENUM, are listed.

Specified by:
getAllIds in interface DebuggableObject
Overrides:
getAllIds in class ScriptableObject
Returns:
an array of java.lang.Objects with an entry for every listed property. Properties accessed via an integer index will have a corresponding Integer entry in the returned array. Properties accessed by a String will have a String entry in the returned array.

getIndexIds

public java.lang.Integer[] getIndexIds()

getDefaultValue

public java.lang.Object getDefaultValue(java.lang.Class<?> hint)
Description copied from class: ScriptableObject
Implements the [[DefaultValue]] internal method.

Note that the toPrimitive conversion is a no-op for every type other than Object, for which [[DefaultValue]] is called. See ECMA 9.1.

A hint of null means "no hint".

Specified by:
getDefaultValue in interface Scriptable
Overrides:
getDefaultValue in class ScriptableObject
Parameters:
hint - the type hint
Returns:
the default value for the object See ECMA 8.6.2.6.

getAttributes

public int getAttributes(int index)
Description copied from class: ScriptableObject
Get the attributes of an indexed property.

Overrides:
getAttributes in class ScriptableObject
Parameters:
index - the numeric index for the property
Returns:
the bitset of attributes
See Also:
ScriptableObject.has(String, Scriptable), ScriptableObject.READONLY, ScriptableObject.DONTENUM, ScriptableObject.PERMANENT, ScriptableObject.EMPTY

getOwnPropertyDescriptor

protected ScriptableObject getOwnPropertyDescriptor(Context cx,
                                                    java.lang.Object id)
Overrides:
getOwnPropertyDescriptor in class IdScriptableObject

defineOwnProperty

protected void defineOwnProperty(Context cx,
                                 java.lang.Object id,
                                 ScriptableObject desc,
                                 boolean checkValid)
Description copied from class: ScriptableObject
Defines a property on an object. Based on [[DefineOwnProperty]] from 8.12.10 of the spec.

Overrides:
defineOwnProperty in class ScriptableObject
Parameters:
cx - the current Context
id - the name/index of the property
desc - the new property descriptor, as described in 8.6.1
checkValid - whether to perform validity checks

getLength

public long getLength()

jsGet_length

public long jsGet_length()
Deprecated. Use getLength() instead.


contains

public boolean contains(java.lang.Object o)
Specified by:
contains in interface java.util.Collection
Specified by:
contains in interface java.util.List

toArray

public java.lang.Object[] toArray()
Specified by:
toArray in interface java.util.Collection
Specified by:
toArray in interface java.util.List

toArray

public java.lang.Object[] toArray(java.lang.Object[] a)
Specified by:
toArray in interface java.util.Collection
Specified by:
toArray in interface java.util.List

containsAll

public boolean containsAll(java.util.Collection c)
Specified by:
containsAll in interface java.util.Collection
Specified by:
containsAll in interface java.util.List

size

public int size()
Specified by:
size in interface java.util.Collection
Specified by:
size in interface java.util.List
Overrides:
size in class ScriptableObject

get

public java.lang.Object get(long index)

get

public java.lang.Object get(int index)
Specified by:
get in interface java.util.List

indexOf

public int indexOf(java.lang.Object o)
Specified by:
indexOf in interface java.util.List

lastIndexOf

public int lastIndexOf(java.lang.Object o)
Specified by:
lastIndexOf in interface java.util.List

iterator

public java.util.Iterator iterator()
Specified by:
iterator in interface java.lang.Iterable
Specified by:
iterator in interface java.util.Collection
Specified by:
iterator in interface java.util.List

listIterator

public java.util.ListIterator listIterator()
Specified by:
listIterator in interface java.util.List

listIterator

public java.util.ListIterator listIterator(int start)
Specified by:
listIterator in interface java.util.List

add

public boolean add(java.lang.Object o)
Specified by:
add in interface java.util.Collection
Specified by:
add in interface java.util.List

remove

public boolean remove(java.lang.Object o)
Specified by:
remove in interface java.util.Collection
Specified by:
remove in interface java.util.List

addAll

public boolean addAll(java.util.Collection c)
Specified by:
addAll in interface java.util.Collection
Specified by:
addAll in interface java.util.List

removeAll

public boolean removeAll(java.util.Collection c)
Specified by:
removeAll in interface java.util.Collection
Specified by:
removeAll in interface java.util.List

retainAll

public boolean retainAll(java.util.Collection c)
Specified by:
retainAll in interface java.util.Collection
Specified by:
retainAll in interface java.util.List

clear

public void clear()
Specified by:
clear in interface java.util.Collection
Specified by:
clear in interface java.util.List

add

public void add(int index,
                java.lang.Object element)
Specified by:
add in interface java.util.List

addAll

public boolean addAll(int index,
                      java.util.Collection c)
Specified by:
addAll in interface java.util.List

set

public java.lang.Object set(int index,
                            java.lang.Object element)
Specified by:
set in interface java.util.List

remove

public java.lang.Object remove(int index)
Specified by:
remove in interface java.util.List

subList

public java.util.List subList(int fromIndex,
                              int toIndex)
Specified by:
subList in interface java.util.List

findPrototypeId

protected int findPrototypeId(java.lang.String s)
Overrides:
findPrototypeId in class IdScriptableObject