X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=system%2Fgeneral%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fsystem%2Fcore%2FDefaultScope.java;h=ad4b09863418b6e7f02b47cfcdfec952f5e4b2db;hb=32a8562695029cf13d915bc7941a61fe07ff0005;hp=8b0c88efe0e4b746a6d92dd5e9a49d1fe1446ddc;hpb=a003b7d0db5305071271df0439f31adf9d1f426a;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 8b0c88ef..ad4b0986 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,24 @@ 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; +import java.util.UUID; public class DefaultScope implements Scope { private List _parents; - private int _count; private Map _properties; private Map _runtimes; - private Map _provided; - private ProvidedInterface[] _externallyProvided; + private Map _provided; + private List _externallyProvided; + + public DefaultScope(ListaExternallyProvided) { + this(aExternallyProvided.toArray(new ProvidedInterface[0])); + } public DefaultScope(ProvidedInterface[] aExternallyProvided) { this(aExternallyProvided, new ArrayList()); @@ -41,16 +47,16 @@ 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; + _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 @@ -65,38 +71,36 @@ public class DefaultScope implements Scope { @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 - public T retrieveInterfaceImplementation(ProvidedInterface aInterface, + public T getInterfaceImplementation(ProvidedInterface aInterface, 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); + } + ProvidedInterfaceImplementation provided = _provided.get(aInterface); if (provided == null) { for (Scope parent : _parents) { - T impl = parent.retrieveInterfaceImplementation(aInterface, aType); + T impl = parent.getInterfaceImplementation(aInterface, aType); if ( impl != null ) { return impl; }