X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=system%2Fgeneral%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fsystem%2Fcore%2FDefaultScope.java;h=d3f62a7b88404a3ae6612422ec8b28c4d5114094;hb=dec278a67997ea8e85d10662e31548afd8890ed3;hp=50c6cc3b2ad6ebd682b0f57336963e019b34c1be;hpb=e1975449f1bf16ccb441632d68e440f3e3704a79;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 50c6cc3b..d3f62a7b 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 @@ -1,5 +1,5 @@ /* - * Copyright 2008 the original author or authors. + * Copyright 2005-2010 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,90 +22,117 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +/** + * + * @author $author$ + * @version $Revision$ + */ public class DefaultScope implements Scope { + private List parents; + + private Map properties; + + private Map runtimes; + + private Map provided; + + private List externallyProvided; + + /** + * Creates a new DefaultScope object. + * + */ + public DefaultScope(List aExternallyProvided) { + this(aExternallyProvided.toArray(new ProvidedInterface[0])); + } + + /** + * Creates a new DefaultScope object. + * + */ + public DefaultScope(ProvidedInterface[] aExternallyProvided) { + this(aExternallyProvided, new ArrayList()); + } + + /** + * Creates a new DefaultScope object. + * + */ + public DefaultScope(ProvidedInterface[] aExternallyProvided, Scope aParent) { + this(aExternallyProvided, Arrays.asList(new Scope[] { aParent })); + } + + /** + * Creates a new DefaultScope object. + * + */ + public DefaultScope(ProvidedInterface[] aExternallyProvided, + List aParent) { + parents = new ArrayList(aParent); + properties = new HashMap(); + runtimes = new HashMap(); + provided = new HashMap(); + externallyProvided = new ArrayList(); + externallyProvided.addAll(Arrays.asList(aExternallyProvided)); + } + + @Override + public List getProvidedInterfaces() { + return Collections.unmodifiableList(externallyProvided); + } + + @Override + public Object get(String aKey) { + return properties.get(aKey); + } + + @Override + public void put(String aKey, Object aValue) { + properties.put(aKey, aValue); + } + + @Override + public void addRuntime(Component aComponent, Object aRuntime) { + runtimes.put(aComponent.getName(), aRuntime); + } + + @Override + public Object getRuntime(Component aComponent) { + return runtimes.get(aComponent.getName()); + } + + @Override + public Object getRuntime(String aName) { + return runtimes.get(aName); + } + + @Override + synchronized public void publishInterface(ProvidedInterface aInterface, + Object aImplementation) { + provided.put(aInterface, new ProvidedInterfaceImplementation( + aInterface, aImplementation)); + } + + @Override + public T getInterfaceImplementation(ProvidedInterface aInterface, + Class aType) { + if (aInterface == null) { + return null; + } + + ProvidedInterfaceImplementation providedIntf = provided.get(aInterface); + + if (providedIntf == null) { + for (Scope parent : parents) { + T impl = parent.getInterfaceImplementation(aInterface, aType); + + if (impl != null) { + return impl; + } + } - 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()); - } - - public DefaultScope(ProvidedInterface[] aExternallyProvided, Scope aParent) { - this(aExternallyProvided, Arrays.asList(new Scope[] { aParent })); - } - - public DefaultScope(ProvidedInterface[] aExternallyProvided, - List aParent) { - _parents = new ArrayList(aParent); - _properties = new HashMap(); - _runtimes = new HashMap(); - _provided = new HashMap(); - _externallyProvided = new ArrayList(); - _externallyProvided.addAll(Arrays.asList(aExternallyProvided)); - } - - @Override - public List getProvidedInterfaces() { - return Collections.unmodifiableList(_externallyProvided); - } - - @Override - public Object get(String aKey) { - return _properties.get(aKey); - } - - @Override - public void put(String aKey, Object aValue) { - _properties.put(aKey, aValue); - } - - @Override - public void addRuntime(Component aComponent, Object aRuntime) { - _runtimes.put(aComponent.getName(), aRuntime); - } - - @Override - public Object getRuntime(Component aComponent) { - return _runtimes.get(aComponent.getName()); - } - - @Override - public Object getRuntime(String aName) { - return _runtimes.get(aName); - } - - @Override - synchronized public void publishInterface(ProvidedInterface aInterface, - Object aImplementation) { - _provided.put(aInterface, new ProvidedInterfaceImplementation(aInterface, - aImplementation)); - } - - @Override - public T getInterfaceImplementation(ProvidedInterface aInterface, - Class aType) { - if ( aInterface == null ) { - return null; - } - ProvidedInterfaceImplementation provided = _provided.get(aInterface); - if (provided == null) { - for (Scope parent : _parents) { - T impl = parent.getInterfaceImplementation(aInterface, aType); - if ( impl != null ) { - return impl; - } - } - return null; - } else { - return provided.getImplementation(aType); - } - } + return null; + } + return providedIntf.getImplementation(aType); + } }