|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcom.sun.hk2.component.AbstractInhabitantImpl<T>
com.sun.hk2.component.EventPublishingInhabitant<T>
com.sun.hk2.component.LazyInhabitant
org.jvnet.hk2.config.Dom
public class Dom
Inhabitant that loads configuration from XML.
This object also captures all the configuration values in a typeless way, so that the loading of the actual classes can be deferred as much as possible.
This is the Inhabitant that gets registered into Habitat,
so one can access this object by Habitat.getInhabitant(Class, String) family
of methods.
| Nested Class Summary |
|---|
| Nested classes/interfaces inherited from interface com.sun.hk2.component.Holder |
|---|
Holder.Impl<T> |
| Field Summary | |
|---|---|
DomDocument |
document
Owner of the DOM tree. |
ConfigModel |
model
Model drives the interpretation of this DOM. |
| Fields inherited from class com.sun.hk2.component.LazyInhabitant |
|---|
habitat |
| Fields inherited from class com.sun.hk2.component.EventPublishingInhabitant |
|---|
real |
| Fields inherited from class com.sun.hk2.component.AbstractInhabitantImpl |
|---|
descriptor, logger |
| Constructor Summary | |
|---|---|
Dom(Dom source,
Dom parent)
Copy constructor, used to get a deep copy of the passed instance |
|
Dom(Habitat habitat,
DomDocument document,
Dom parent,
ConfigModel model)
|
|
Dom(Habitat habitat,
DomDocument document,
Dom parent,
ConfigModel model,
XMLStreamReader in)
|
|
| Method Summary | ||
|---|---|---|
void |
addDefaultChildren()
When a new Dom object is created, ensures that all @NotNull annotated elements have a value. |
|
boolean |
addLeafElement(String xmlName,
String value)
|
|
void |
addListener(ConfigListener listener)
Add a new listener to configuration changes. |
|
String |
attribute(String name)
Obtains the attribute value, after variable expansion. |
|
void |
attribute(String name,
String value)
Updates the attribute value. |
|
List<String> |
attributes(String name)
Obtains the plural attribute value. |
|
boolean |
changeLeafElement(String xmlName,
String oldValue,
String newValue)
|
|
static String |
convertName(String name)
|
|
protected
|
copy(T parent)
Returns a copy of itself providing the parent for the new copy. |
|
protected Creator |
createCreator(Class c)
This is how we inject the configuration into the created object. |
|
|
createProxy()
Creates a strongly-typed proxy to access values in this Dom object, |
|
|
createProxy(Class<T> proxyType)
Creates a strongly-typed proxy to access values in this Dom object,
by using the specified interface type as the proxy type. |
|
static
|
digAnnotation(Class<?> target,
Class<T> annotationType)
|
|
static
|
digAnnotation(Class<?> target,
Class<T> annotationType,
List<Class<? extends Annotation>> visited)
|
|
List<Dom> |
domNodeByTypeElements(Class baseType)
Picks up all node elements that are assignable to the given type, except those who are matched by other named elements in the model. |
|
Dom |
element(String name)
Returns the child element by name |
|
Set<String> |
getAttributeNames()
Returns the list of attributes with a value on this config instance. |
|
BaseServiceLocator |
getBaseServiceLocator()
|
|
Set<String> |
getElementNames()
Returns the children name associated with this config instance. |
|
Habitat |
getHabitat()
|
|
ConfigInjector |
getInjector()
Gets the ConfigInjector instance that can be used to inject
this DOM to a bean. |
|
String |
getKey()
Obtains the actual key value from this Dom. |
|
Location |
getLocation()
Where was this Dom loaded from? |
|
|
getProxyType()
Returns the proxy type for this configuration object |
|
Dom |
getSymbolSpaceRoot(String typeName)
Locates the DOM that serves as the symbol space root. |
|
protected Object |
getter(ConfigModel.Property target,
Type t)
|
|
void |
initializationCompleted()
|
|
void |
inject(Object target)
Performs injection to the given object. |
|
protected void |
injectInto(Dom injectable,
Object target)
|
|
void |
insertAfter(Dom reference,
String name,
Dom newNode)
Inserts a new Dom node right after the given DOM element. |
|
Object |
invoke(Object proxy,
Method method,
Object[] args)
InvocationHandler implementation that allows strongly-typed access
to the configuration. |
|
Object |
invoke(Object proxy,
String methodName,
Class[] argTypes,
Object[] args)
Another version of the invoke(Object, Method, Object[]),
but instead of Method object, it takes the method name and argument types. |
|
String |
leafElement(String name)
Picks up one leaf-element value. |
|
List<String> |
leafElements(String name)
Picks up all leaf-element values of the given name. |
|
|
nodeByTypeElement(Class<T> baseType)
|
|
|
nodeByTypeElements(Class<T> baseType)
|
|
Dom |
nodeElement(String name)
Picks up one node-element value. |
|
List<Dom> |
nodeElements(String elementName)
Picks up all node-elements that have the given element name. |
|
Dom |
parent()
If this DOM is a child of another DOM, the parent pointer. |
|
String |
rawAttribute(String name)
Obtians the attribute value without variable expansion. |
|
String |
rawLeafElement(String name)
Picks up one leaf-element value without variable expansion. |
|
List<String> |
rawLeafElements(String name)
Picks up all leaf-element values of the given name, without variable expansion. |
|
void |
release()
|
|
void |
removeChild(Dom reference)
Removes an existing NodeChild |
|
boolean |
removeLeafElement(String xmlName,
String element)
|
|
boolean |
removeListener(ConfigListener listener)
Remove a listener |
|
void |
replaceChild(Dom reference,
String name,
Dom newNode)
Replaces an existing NodeChild with another one. |
|
Dom |
resolveReference(String key,
String typeName)
Recursively decends the DOM tree and finds a DOM that has the given key and the type name. |
|
void |
setLeafElements(String name,
String... values)
Updates leaf-element values. |
|
void |
setNodeElements(String name,
Dom... values)
Updates node-element values. |
|
protected void |
setter(ConfigModel.Property target,
Object value)
|
|
static Dom |
unwrap(ConfigBeanProxy proxy)
Unwraps the proxy and returns the underlying Dom object. |
|
void |
writeTo(String tagName,
XMLStreamWriter w)
Writes back this element. |
|
| Methods inherited from class com.sun.hk2.component.LazyInhabitant |
|---|
fetch, getClassLoader, lead, loadClass, metadata, type, typeName |
| Methods inherited from class com.sun.hk2.component.EventPublishingInhabitant |
|---|
addInhabitantListener, get, isActive, notify, removeInhabitantListener, toString |
| Methods inherited from class com.sun.hk2.component.AbstractInhabitantImpl |
|---|
companions, dispose, get, getAnnotation, getAnnotation, getAnnotations, getByType, getDescriptor, getDescriptorFor, getProvider, getProvider, getSerializedMetadata, getSerializedMetadata, matches, setCompanions |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
|---|
public final ConfigModel model
public final DomDocument document
| Constructor Detail |
|---|
public Dom(Habitat habitat,
DomDocument document,
Dom parent,
ConfigModel model,
XMLStreamReader in)
in - If provided, this is used to record the source location where this DOM object is loaded from.
Otherwise this can be null.
public Dom(Habitat habitat,
DomDocument document,
Dom parent,
ConfigModel model)
public Dom(Dom source,
Dom parent)
source - the instance to copy| Method Detail |
|---|
public void initializationCompleted()
public void addDefaultChildren()
protected <T extends Dom> T copy(T parent)
parent - the parent instance for the cloned copy
public static Dom unwrap(ConfigBeanProxy proxy)
Dom object.
public String getKey()
Dom.
public Dom parent()
public Location getLocation()
Dom loaded from?
public Set<String> getAttributeNames()
ConfigModel.getAttributeNames.
public Set<String> getElementNames()
public String attribute(String name)
public String rawAttribute(String name)
public List<String> attributes(String name)
public void attribute(String name,
String value)
public Dom element(String name)
name - of the element
public String leafElement(String name)
public void insertAfter(Dom reference,
String name,
Dom newNode)
Dom node right after the given DOM element.
reference - If null, the new element will be inserted at the very beginning.name - The element name of the newly inserted item. "*" to indicate that the element
name be determined by the model of the new node.
public void replaceChild(Dom reference,
String name,
Dom newNode)
NodeChild with another one.
insertAfter(Dom, String, Dom)public void removeChild(Dom reference)
NodeChild
public boolean addLeafElement(String xmlName,
String value)
public boolean removeLeafElement(String xmlName,
String element)
public boolean changeLeafElement(String xmlName,
String oldValue,
String newValue)
public String rawLeafElement(String name)
public void setLeafElements(String name,
String... values)
Synchronized so that concurrenct modifications will work correctly.
public List<String> leafElements(String name)
public List<String> rawLeafElements(String name)
public Dom nodeElement(String name)
public void setNodeElements(String name,
Dom... values)
Synchronized so that concurrenct modifications will work correctly.
public List<Dom> nodeElements(String elementName)
public List<Dom> domNodeByTypeElements(Class baseType)
FromElement("*").
public <T> List<T> nodeByTypeElements(Class<T> baseType)
public <T> T nodeByTypeElement(Class<T> baseType)
public void inject(Object target)
public ConfigInjector getInjector()
ConfigInjector instance that can be used to inject
this DOM to a bean.
public Dom getSymbolSpaceRoot(String typeName)
public Dom resolveReference(String key,
String typeName)
TODO: the current algorithm does a full tree scan. Expand the model so that we can detect deadends that are statically known not to contain the kind we are looking for, and use that to cut the search space.
public <T extends ConfigBeanProxy> T createProxy(Class<T> proxyType)
Dom object,
by using the specified interface type as the proxy type.
public <T extends ConfigBeanProxy> T createProxy()
Dom object,
public <T extends ConfigBeanProxy> Class<T> getProxyType()
T - the proxy type
public Object invoke(Object proxy,
Method method,
Object[] args)
throws Throwable
InvocationHandler implementation that allows strongly-typed access
to the configuration.
TODO: it might be a great performance improvement to have APT generate code that does this during the development time by looking at the interface.
invoke in interface InvocationHandlerThrowablepublic Habitat getHabitat()
public BaseServiceLocator getBaseServiceLocator()
public Object invoke(Object proxy,
String methodName,
Class[] argTypes,
Object[] args)
throws Throwable
invoke(Object, Method, Object[]),
but instead of Method object, it takes the method name and argument types.
Throwable
protected Object getter(ConfigModel.Property target,
Type t)
protected void setter(ConfigModel.Property target,
Object value)
throws Exception
Exceptionpublic static String convertName(String name)
protected Creator createCreator(Class c)
There are two kinds — one where @Configured is put on
a bean and that is placedinto Habitat, and the other is
where @Configured is on ConfigBeanProxy subtype,
in which case the proxy to Dom will be placed into the habitat.
createCreator in class LazyInhabitant
public static <T extends Annotation> T digAnnotation(Class<?> target,
Class<T> annotationType)
public static <T extends Annotation> T digAnnotation(Class<?> target,
Class<T> annotationType,
List<Class<? extends Annotation>> visited)
public void writeTo(String tagName,
XMLStreamWriter w)
throws XMLStreamException
tagName - The tag name of this element to be written. If null, this DOM node
must be a global element and its tag name will be used.w - Receives XML infoset stream.
XMLStreamException
protected void injectInto(Dom injectable,
Object target)
public void release()
release in interface Releasablerelease in interface Inhabitantrelease in class LazyInhabitantpublic void addListener(ConfigListener listener)
ObservableBean
addListener in interface ObservableBeanlistener - new listenerpublic boolean removeListener(ConfigListener listener)
ObservableBean
removeListener in interface ObservableBeanlistener - to remove
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||