X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=system%2Fgeneral%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fsystem%2Fcore%2FDefaultScope.java;h=3e15ea9c8f5a6eec5a9695545d12fdd1c172c6b4;hb=0d8d8f24656e585ee75558cfd6a4c661f8f14985;hp=b57f51f64f01a04d743f626fc6e90fd00fae4c39;hpb=7273d083a2f03cd3d2061d3c6628a46b679e718b;p=utils diff --git a/system/general/src/main/java/org/wamblee/system/core/DefaultScope.java b/system/general/src/main/java/org/wamblee/system/core/DefaultScope.java index b57f51f6..3e15ea9c 100644 --- a/system/general/src/main/java/org/wamblee/system/core/DefaultScope.java +++ b/system/general/src/main/java/org/wamblee/system/core/DefaultScope.java @@ -17,18 +17,22 @@ package org.wamblee.system.core; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.TreeMap; public class DefaultScope implements Scope { - private List _parents; - private int _count; - private Map _properties; - private Map _runtimes; - private Map _provided; - private ProvidedInterface[] _externallyProvided; + private List parents; + private Map properties; + private Map runtimes; + private Map provided; + private List externallyProvided; + + public DefaultScope(ListaExternallyProvided) { + this(aExternallyProvided.toArray(new ProvidedInterface[0])); + } public DefaultScope(ProvidedInterface[] aExternallyProvided) { this(aExternallyProvided, new ArrayList()); @@ -40,46 +44,49 @@ public class DefaultScope implements Scope { public DefaultScope(ProvidedInterface[] aExternallyProvided, List aParent) { - _parents = new ArrayList(aParent); - _count = 0; - _properties = new TreeMap(); - _runtimes = new TreeMap(); - _provided = new TreeMap(); - _externallyProvided = aExternallyProvided; + parents = new ArrayList(aParent); + properties = new HashMap(); + runtimes = new HashMap(); + provided = new HashMap(); + externallyProvided = new ArrayList(); + externallyProvided.addAll(Arrays.asList(aExternallyProvided)); } @Override - public ProvidedInterface[] getProvidedInterfaces() { - return _externallyProvided; + public List getProvidedInterfaces() { + return Collections.unmodifiableList(externallyProvided); } @Override public Object get(String aKey) { - return _properties.get(aKey); + return properties.get(aKey); } @Override public void put(String aKey, Object aValue) { - _properties.put(aKey, aValue); + properties.put(aKey, aValue); } @Override public void addRuntime(Component aComponent, Object aRuntime) { - _runtimes.put(aComponent.getQualifiedName(), aRuntime); + runtimes.put(aComponent.getName(), aRuntime); } @Override public Object getRuntime(Component aComponent) { - return _runtimes.get(aComponent.getQualifiedName()); + return runtimes.get(aComponent.getName()); + } + + @Override + public Object getRuntime(String aName) { + return runtimes.get(aName); } @Override synchronized public void publishInterface(ProvidedInterface aInterface, Object aImplementation) { - String id = "" + _count++; - _provided.put(id, new ProvidedInterfaceImplementation(aInterface, + provided.put(aInterface, new ProvidedInterfaceImplementation(aInterface, aImplementation)); - aInterface.setUniqueId(id); } @Override @@ -87,15 +94,10 @@ public class DefaultScope implements Scope { Class aType) { if ( aInterface == null ) { return null; - } - String id = aInterface.getUniqueId(); - if ( id == null ) { - // optional interface that was not published. - return null; - } - ProvidedInterfaceImplementation provided = _provided.get(id); - if (provided == null) { - for (Scope parent : _parents) { + } + ProvidedInterfaceImplementation providedIntf = provided.get(aInterface); + if (providedIntf == null) { + for (Scope parent : parents) { T impl = parent.getInterfaceImplementation(aInterface, aType); if ( impl != null ) { return impl; @@ -103,7 +105,7 @@ public class DefaultScope implements Scope { } return null; } else { - return provided.getImplementation(aType); + return providedIntf.getImplementation(aType); } } }