X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=system%2Fgeneral%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fsystem%2Fcore%2FDefaultScope.java;h=7cfd2cab390266ae169a13da6efcb630e970e9cd;hb=ddd261f331280640c5b53c7128230b629ebcd268;hp=3e15ea9c8f5a6eec5a9695545d12fdd1c172c6b4;hpb=92e23e5ecf9614f2ab770a8cdedc0b21ddf1e127;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 3e15ea9c..7cfd2cab 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,12 +1,12 @@ /* * Copyright 2008 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. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -22,90 +22,194 @@ import java.util.HashMap; import java.util.List; import java.util.Map; + +/** + * DOCUMENT ME! + * + * @author $author$ + * @version $Revision$ + */ public class DefaultScope implements Scope { + /** + * DOCUMENT ME! + */ + private List parents; + + /** + * DOCUMENT ME! + */ + private Map properties; + + /** + * DOCUMENT ME! + */ + private Map runtimes; + + /** + * DOCUMENT ME! + */ + private Map provided; + + /** + * DOCUMENT ME! + */ + private List externallyProvided; + +/** + * Creates a new DefaultScope object. + * + * @param aExternallyProvided DOCUMENT ME! + */ + public DefaultScope(List aExternallyProvided) { + this(aExternallyProvided.toArray(new ProvidedInterface[0])); + } + +/** + * Creates a new DefaultScope object. + * + * @param aExternallyProvided DOCUMENT ME! + */ + public DefaultScope(ProvidedInterface[] aExternallyProvided) { + this(aExternallyProvided, new ArrayList()); + } + +/** + * Creates a new DefaultScope object. + * + * @param aExternallyProvided DOCUMENT ME! + * @param aParent DOCUMENT ME! + */ + public DefaultScope(ProvidedInterface[] aExternallyProvided, Scope aParent) { + this(aExternallyProvided, Arrays.asList(new Scope[] { aParent })); + } + +/** + * Creates a new DefaultScope object. + * + * @param aExternallyProvided DOCUMENT ME! + * @param aParent DOCUMENT ME! + */ + 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)); + } + + /** + * DOCUMENT ME! + * + * @return DOCUMENT ME! + */ + @Override + public List getProvidedInterfaces() { + return Collections.unmodifiableList(externallyProvided); + } + + /** + * DOCUMENT ME! + * + * @param aKey DOCUMENT ME! + * + * @return DOCUMENT ME! + */ + @Override + public Object get(String aKey) { + return properties.get(aKey); + } + + /** + * DOCUMENT ME! + * + * @param aKey DOCUMENT ME! + * @param aValue DOCUMENT ME! + */ + @Override + public void put(String aKey, Object aValue) { + properties.put(aKey, aValue); + } + + /** + * DOCUMENT ME! + * + * @param aComponent DOCUMENT ME! + * @param aRuntime DOCUMENT ME! + */ + @Override + public void addRuntime(Component aComponent, Object aRuntime) { + runtimes.put(aComponent.getName(), aRuntime); + } + + /** + * DOCUMENT ME! + * + * @param aComponent DOCUMENT ME! + * + * @return DOCUMENT ME! + */ + @Override + public Object getRuntime(Component aComponent) { + return runtimes.get(aComponent.getName()); + } + + /** + * DOCUMENT ME! + * + * @param aName DOCUMENT ME! + * + * @return DOCUMENT ME! + */ + @Override + public Object getRuntime(String aName) { + return runtimes.get(aName); + } + + /** + * DOCUMENT ME! + * + * @param aInterface DOCUMENT ME! + * @param aImplementation DOCUMENT ME! + */ + @Override + synchronized public void publishInterface(ProvidedInterface aInterface, + Object aImplementation) { + provided.put(aInterface, + new ProvidedInterfaceImplementation(aInterface, aImplementation)); + } + + /** + * DOCUMENT ME! + * + * @param DOCUMENT ME! + * @param aInterface DOCUMENT ME! + * @param aType DOCUMENT ME! + * + * @return DOCUMENT ME! + */ + @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 providedIntf = provided.get(aInterface); - if (providedIntf == null) { - for (Scope parent : parents) { - T impl = parent.getInterfaceImplementation(aInterface, aType); - if ( impl != null ) { - return impl; - } - } - return null; - } else { - return providedIntf.getImplementation(aType); - } - } + return null; + } else { + return providedIntf.getImplementation(aType); + } + } }