package cucumber.runtime.java.spring;
import java.util.HashMap;
import java.util.Map;
class GlueCodeContext {
public static final GlueCodeContext INSTANCE = new GlueCodeContext();
private final Map<String, Object> objects = new HashMap<String, Object>();
private final Map<String, Runnable> callbacks = new HashMap<String, Runnable>();
private int counter;
private GlueCodeContext() {
}
public void start() {
cleanUp();
counter++;
}
public String getId() {
return "cucumber_glue_" + counter;
}
public void stop() {
for (Runnable callback : callbacks.values()) {
callback.run();
}
cleanUp();
}
public Object get(String name) {
return objects.get(name);
}
public void put(String name, Object object) {
objects.put(name, object);
}
public Object remove(String name) {
callbacks.remove(name);
return objects.remove(name);
}
private void cleanUp() {
objects.clear();
callbacks.clear();
}
public void registerDestructionCallback(String name, Runnable callback) {
callbacks.put(name, callback);
}
}