package org.swellrt.beta.model;
import org.swellrt.beta.common.SException;
import org.swellrt.beta.model.js.SMapJs;
import org.swellrt.beta.model.local.SMapLocal;
import com.google.gwt.core.client.JavaScriptObject;
import jsinterop.annotations.JsIgnore;
import jsinterop.annotations.JsOptional;
import jsinterop.annotations.JsType;
@JsType(namespace = "swellrt", name = "Map")
public interface SMap extends SNode {
public static SMap create(@JsOptional Object data) throws IllegalCastException {
if (data != null && data instanceof JavaScriptObject)
return SMapJs.create((JavaScriptObject) data);
return new SMapLocal();
}
@JsIgnore
public static SMap create() {
return new SMapLocal();
}
/**
* Returns a container or a primitive value.
* @param key
* @return
*/
public Object get(String key) throws SException;
/**
* Returns a container or a primitive value container.
* @param key
* @return
*/
public SNode getNode(String key) throws SException;
@JsIgnore
public SMap put(String key, SNode value) throws SException;
public SMap put(String key, Object object) throws SException;
public void remove(String key) throws SException;
public boolean has(String key) throws SException;
public String[] keys() throws SException;
public void clear() throws SException;
boolean isEmpty();
int size();
Object asNative();
}