01: // Copyright (c) 2003-2007, Jodd Team (jodd.sf.net). All Rights Reserved.
02:
03: package jodd.petite.scope;
04:
05: import java.util.Map;
06: import java.util.HashMap;
07:
08: /**
09: * Singleton scope pools all bean instances so they will be created only once in
10: * the container context.
11: */
12: public class SingletonScope implements Scope {
13:
14: protected Map<String, Object> instances = new HashMap<String, Object>();
15:
16: public Object lookup(String name) {
17: return instances.get(name);
18: }
19:
20: public void register(String name, Object object) {
21: instances.put(name, object);
22: }
23:
24: public void remove(String name) {
25: instances.remove(name);
26: }
27:
28: public void replaceIn(String name, ScopeReplacer scopeReplacer) {
29: Object target = instances.get(name);
30: if (target == null) {
31: return;
32: }
33: Object newObject = scopeReplacer.replace(target);
34: if (newObject != null) {
35: instances.put(scopeReplacer.getBeanName(), newObject);
36: }
37: }
38: }
|