mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
ScriptableHashMap fixed to support integer indexing as an associative javascript array - AR-712
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@3496 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -16,17 +16,19 @@
|
||||
*/
|
||||
package org.alfresco.repo.jscript;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashMap;
|
||||
|
||||
import org.alfresco.service.namespace.NamespacePrefixResolver;
|
||||
import org.alfresco.service.namespace.QNameMap;
|
||||
import org.mozilla.javascript.Scriptable;
|
||||
|
||||
/**
|
||||
* @author Kevin Roast
|
||||
*/
|
||||
public class ScriptableHashMap<K,V> extends HashMap implements Scriptable
|
||||
public class ScriptableHashMap<K,V> extends LinkedHashMap implements Scriptable
|
||||
{
|
||||
private Scriptable parentScope;
|
||||
private Scriptable prototype;
|
||||
|
||||
/**
|
||||
* @see org.mozilla.javascript.Scriptable#getClassName()
|
||||
*/
|
||||
@@ -56,7 +58,14 @@ public class ScriptableHashMap<K,V> extends HashMap implements Scriptable
|
||||
*/
|
||||
public Object get(int index, Scriptable start)
|
||||
{
|
||||
return null;
|
||||
Object value = null;
|
||||
int i=0;
|
||||
Iterator itrValues = this.values().iterator();
|
||||
while (i++ <= index && itrValues.hasNext())
|
||||
{
|
||||
value = itrValues.next();
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -73,7 +82,7 @@ public class ScriptableHashMap<K,V> extends HashMap implements Scriptable
|
||||
*/
|
||||
public boolean has(int index, Scriptable start)
|
||||
{
|
||||
return false;
|
||||
return (index >= 0 && this.values().size() > index);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -90,6 +99,7 @@ public class ScriptableHashMap<K,V> extends HashMap implements Scriptable
|
||||
*/
|
||||
public void put(int index, Scriptable start, Object value)
|
||||
{
|
||||
// TODO: implement?
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -106,6 +116,17 @@ public class ScriptableHashMap<K,V> extends HashMap implements Scriptable
|
||||
*/
|
||||
public void delete(int index)
|
||||
{
|
||||
int i=0;
|
||||
Iterator itrKeys = this.keySet().iterator();
|
||||
while (i <= index && itrKeys.hasNext())
|
||||
{
|
||||
Object key = itrKeys.next();
|
||||
if (i == index)
|
||||
{
|
||||
remove(key);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -113,7 +134,7 @@ public class ScriptableHashMap<K,V> extends HashMap implements Scriptable
|
||||
*/
|
||||
public Scriptable getPrototype()
|
||||
{
|
||||
return null;
|
||||
return this.prototype;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -121,6 +142,7 @@ public class ScriptableHashMap<K,V> extends HashMap implements Scriptable
|
||||
*/
|
||||
public void setPrototype(Scriptable prototype)
|
||||
{
|
||||
this.prototype = prototype;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -128,7 +150,7 @@ public class ScriptableHashMap<K,V> extends HashMap implements Scriptable
|
||||
*/
|
||||
public Scriptable getParentScope()
|
||||
{
|
||||
return null;
|
||||
return this.parentScope;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -136,6 +158,7 @@ public class ScriptableHashMap<K,V> extends HashMap implements Scriptable
|
||||
*/
|
||||
public void setParentScope(Scriptable parent)
|
||||
{
|
||||
this.parentScope = parent;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -143,7 +166,7 @@ public class ScriptableHashMap<K,V> extends HashMap implements Scriptable
|
||||
*/
|
||||
public Object[] getIds()
|
||||
{
|
||||
return null;
|
||||
return keySet().toArray();
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user