public class ConfigurationBuilderImpl extends Object implements ConfigurationBuilder
| Modifier and Type | Field and Description |
|---|---|
static String |
IMPORT |
static String |
INIT |
| Modifier and Type | Method and Description |
|---|---|
void |
addConfiguration(Configuration conf)
Add all configuration parameters from the given Configuration object.
|
void |
bind(Node key,
Node value)
Bind classes to each other, based on their full class names; alternatively,
bound a NamedParameter configuration option to a configuration value.
|
<T> void |
bind(String key,
String value)
Bind classes to each other, based on their full class names; alternatively,
bound a NamedParameter configuration option to a configuration value.
|
<T> void |
bindConstructor(ClassNode<T> k,
ClassNode<? extends ExternalConstructor<? extends T>> v)
Register an ExternalConstructor implementation with Tang.
|
<T> void |
bindImplementation(ClassNode<T> n,
ClassNode<? extends T> m) |
<T> void |
bindList(NamedParameterNode<List<T>> iface,
List implList)
Bind an list of implementations(Class or String) to an given NamedParameter.
|
void |
bindList(String iface,
List implList) |
<T> void |
bindParameter(NamedParameterNode<T> name,
String value) |
<T> void |
bindSetEntry(NamedParameterNode<Set<T>> iface,
Node impl) |
<T> void |
bindSetEntry(NamedParameterNode<Set<T>> iface,
String impl) |
void |
bindSetEntry(String iface,
Node impl) |
void |
bindSetEntry(String iface,
String impl) |
ConfigurationImpl |
build()
Produce an immutable Configuration object that contains the current
bindings and ClassHierarchy of this ConfigurationBuilder.
|
String |
classPrettyDefaultString(String longName)
Pretty print the default implementation / value of the provided class / NamedParameter.
|
String |
classPrettyDescriptionString(String fullName)
Pretty print the human readable documentation of the provided class / NamedParameter.
|
boolean |
equals(Object o) |
ClassHierarchy |
getClassHierarchy()
Each ConfigurationBuilder instance is associated with a ClassHierarchy.
|
int |
hashCode() |
void |
registerLegacyConstructor(ClassNode<?> cn,
ClassNode<?>... args)
Force Tang to treat the specified constructor as though it had an @Inject
annotation.
|
void |
registerLegacyConstructor(ClassNode<?> c,
ConstructorArg... args)
Force Tang to treat the specified constructor as though it had an @Inject
annotation.
|
void |
registerLegacyConstructor(String s,
String... args)
Force Tang to treat the specified constructor as though it had an @Inject
annotation.
|
public static final String IMPORT
public static final String INIT
public void addConfiguration(Configuration conf) throws BindException
ConfigurationBuilderaddConfiguration in interface ConfigurationBuilderconf - the configuration to be addedBindExceptionpublic ClassHierarchy getClassHierarchy()
ConfigurationBuildergetClassHierarchy in interface ConfigurationBuilderpublic void registerLegacyConstructor(ClassNode<?> c, ConstructorArg... args) throws BindException
ConfigurationBuilderThis method takes ClassNode and ConstructorArg objects. Like all of the methods in this API, these objects must come from the ClassHierarchy instance returned by getClassHierarchy().
registerLegacyConstructor in interface ConfigurationBuilderc - The class the constructor instantiates.args - The parsed ConstructorArg objects corresponding to the types of the arguments taken by the constructor,
in declaration order.BindException - if the constructor does not exist, or if it has already been bound as a legacy constructor.public void registerLegacyConstructor(String s, String... args) throws BindException
ConfigurationBuilderregisterLegacyConstructor in interface ConfigurationBuilders - The full name of the class the constructor instantiates.args - The full names of the types of the arguments taken by the constructor, in declaration order.BindException - if the constructor does not exist, or if it has already been bound as a legacy constructor.public void registerLegacyConstructor(ClassNode<?> cn, ClassNode<?>... args) throws BindException
ConfigurationBuilderThis method takes ClassNode objects. Like all of the methods in this API, the ClassNode objects must come from the ClassHierarchy instance returned by getClassHierarchy().
registerLegacyConstructor in interface ConfigurationBuildercn - The class the constructor instantiates.args - The types of the arguments taken by the constructor, in declaration order.BindException - if the constructor does not exist, or if it has already been bound as a legacy constructor.public <T> void bind(String key, String value) throws BindException
ConfigurationBuilderbind in interface ConfigurationBuilderT - a typekey - The full name of the interface that should resolve to impl,
or the NamedParameter to be set.value - The full name of the implementation that will be used in
place of impl, or the value the NamedParameter should be set to.BindException - If (In the case of interfaces and implementations)
the underlying ClassHierarchy does not recognise iface and
impl as known, valid classes, or if impl is not a in
implementation of iface, or (in the case of NamedParameters
and values) if iface is not a NamedParameter, or if impl
fails to parse as the type the iface expects.public void bind(Node key, Node value) throws BindException
ConfigurationBuilderThis method takes Node objects. Like all of the methods in this API, these objects must come from the ClassHierarchy instance returned by getClassHierarchy().
bind in interface ConfigurationBuilderkey - The interface / NamedParameter to be bound.value - The implementation / value iface should be set to.BindException - if there is a type checking error
See bind(String,String) for a more complete description.public <T> void bindImplementation(ClassNode<T> n, ClassNode<? extends T> m) throws BindException
BindExceptionpublic <T> void bindParameter(NamedParameterNode<T> name, String value) throws BindException
BindExceptionpublic void bindSetEntry(String iface, String impl) throws BindException
bindSetEntry in interface ConfigurationBuilderBindExceptionpublic void bindSetEntry(String iface, Node impl) throws BindException
bindSetEntry in interface ConfigurationBuilderBindExceptionpublic <T> void bindSetEntry(NamedParameterNode<Set<T>> iface, String impl) throws BindException
bindSetEntry in interface ConfigurationBuilderBindExceptionpublic <T> void bindSetEntry(NamedParameterNode<Set<T>> iface, Node impl) throws BindException
bindSetEntry in interface ConfigurationBuilderBindExceptionpublic <T> void bindList(NamedParameterNode<List<T>> iface, List implList)
ConfigurationBuilderSince ordering of the list is important, list binding cannot be repeated or merged unlike set binding. If the elements of the list are Classes, the objects created by the Classes will be injected. If the elements are Strings, the values will be injected directly to a given list parameter.
bindList in interface ConfigurationBuilderT - a typeiface - The list named parameter to be instantiatedimplList - The list of class or value will be used to instantiated the named parameterpublic void bindList(String iface, List implList)
bindList in interface ConfigurationBuilderpublic <T> void bindConstructor(ClassNode<T> k, ClassNode<? extends ExternalConstructor<? extends T>> v)
ConfigurationBuilderTo see how the second use case could be useful, consider a implementing a URI interface with a distinct subclass for each valid URI prefix (e.g., http://, ssh://, etc...). An ExternalConstructor could examine the prefix and delegate to a constructor of the correct implementation (e.g, HttpURL, SshURL, etc...) which would validate the remainder of the provided string. URI's external constructor would return the validated subclass of URI that corresponds to the provided string, allowing instanceof and downcasts to behave as expected in the code that invoked Tang.
Both use cases should be avoided when possible, since they can unnecessarily complicate object injections and undermine Tang's ability to statically check a given configuration.
This method takes ClassNode objects. Like all of the methods in this API, these objects must come from the ClassHierarchy instance returned by getClassHierarchy().
bindConstructor in interface ConfigurationBuilderT - a typek - The class or interface to be instantiated.v - The ExternalConstructor class that will be used to instantiate iface.public ConfigurationImpl build()
ConfigurationBuilderSince Tang eagerly checks for configuration errors, this method does not perform any additional validation, and does not throw any checkable exceptions.
build in interface ConfigurationBuilderpublic String classPrettyDefaultString(String longName) throws NameResolutionException
ConfigurationBuilderclassPrettyDefaultString in interface ConfigurationBuilderlongName - a name of class or parameterNameResolutionExceptionpublic String classPrettyDescriptionString(String fullName) throws NameResolutionException
ConfigurationBuilderclassPrettyDescriptionString in interface ConfigurationBuilderfullName - a name of class or parameterNameResolutionExceptionCopyright © 2017 The Apache Software Foundation. All rights reserved.