package org.tjuscs.bulletgame.task;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.jexl2.JexlContext;
public class MapContext implements JexlContext {
private MapContext parentContext;
private Map<String, Object> map;
public MapContext() {
this(null);
}
public MapContext(MapContext parentContext) {
super();
this.parentContext = parentContext;
map = new HashMap<String, Object>();
}
public boolean has(String name) {
if (map.containsKey(name))
return true;
if (parentContext != null)
return parentContext.has(name);
return false;
}
public Object get(String name) {
Object obj = map.get(name);
if (obj != null) {
return obj;
}
if (parentContext != null)
return parentContext.get(name);
return null;
}
public MapContext getParentContext() {
return parentContext;
}
public void setParentContext(MapContext parentContext) {
this.parentContext = parentContext;
}
public void set(String name, Object value) {
if (map.containsKey(name) || parentContext == null)
map.put(name, value);
else if (!parentContext.has(name))
map.put(name, value);
else
parentContext.set(name, value);
}
public void setLocal(String name, Object value) {
map.put(name, value);
}
public void setParent(String name, Object value) {
parentContext.setLocal(name, value);
}
}