sascha@372: package de.intevation.flys.artifacts.services.meta; sascha@372: sascha@372: import java.util.Map; sascha@372: import java.util.List; sascha@372: import java.util.HashMap; sascha@372: import java.util.ArrayList; sascha@372: sascha@372: public class StackFrames sascha@372: { sascha@372: protected List> frames; sascha@372: sascha@372: public StackFrames() { sascha@372: frames = new ArrayList>(); sascha@372: } sascha@372: sascha@372: public void enter() { sascha@372: frames.add(new HashMap()); sascha@372: } sascha@372: sascha@372: public void leave() { sascha@372: frames.remove(frames.size()-1); sascha@372: } sascha@372: sascha@372: public void put(String [] keys, Object [] values) { sascha@372: Map top = frames.get(frames.size()-1); sascha@372: for (int i = 0; i < keys.length; ++i) { sascha@372: top.put(keys[i], values[i]); sascha@372: } sascha@372: } sascha@372: sascha@372: public Object get(String key) { sascha@372: return get(key, null); sascha@372: } sascha@372: sascha@372: public Object get(String key, Object def) { sascha@372: sascha@372: for (int i = frames.size()-1; i >= 0; --i) { sascha@372: Map frame = frames.get(i); sascha@372: if (frame.containsKey(key)) { sascha@372: return frame.get(key); sascha@372: } sascha@372: } sascha@372: sascha@372: return def; sascha@372: } sascha@372: } sascha@372: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :