package org.swellrt.beta.model.local; import java.util.HashMap; import java.util.Map; import org.swellrt.beta.model.IllegalCastException; import org.swellrt.beta.model.SMap; import org.swellrt.beta.model.SNode; import org.swellrt.beta.model.SPrimitive; import org.swellrt.beta.model.SUtils; import org.swellrt.beta.model.js.HasJsProxy; import org.swellrt.beta.model.js.Proxy; import org.swellrt.beta.model.js.SMapProxyHandler; public class SMapLocal implements SMap, HasJsProxy { public SMapLocal() { } private Map<String, SNode> map = new HashMap<String, SNode>(); private Proxy proxy = null; @Override public Object get(String key) { SNode node = map.get(key); if (node instanceof SPrimitive) return ((SPrimitive) node).get(); return node; } @Override public SMap put(String key, SNode value) { map.put(key, value); return this; } @Override public SMap put(String key, Object object) throws IllegalCastException { SNode node = SUtils.castToSNode(object); return put(key, node); } @Override public void remove(String key) { map.remove(key); } @Override public boolean has(String key) { return map.containsKey(key); } @Override public String[] keys() { return map.keySet().toArray(new String[map.size()]); } @Override public Proxy getJsProxy() { return proxy; } @Override public void setJsProxy(Proxy proxy) { this.proxy = proxy; } @Override public SNode getNode(String key) { SNode n = map.get(key); return n; } @Override public void clear() { map.clear(); } @Override public boolean isEmpty() { return map.isEmpty(); } @Override public int size() { return map.size(); } @Override public Object asNative() { if (proxy == null) proxy = new Proxy(this, new SMapProxyHandler()); return proxy; } }