public interface ConfigurationBuilder
for convenience methods that assume the
underlying ClassHierarchy object delegates to the default
classloader, and enable many compile time static checks.
,
which pushes additional type checks to class load
time. This allows Tint, Tang's static analysis tool, to detect a wide
range of runtime configuration errors at build time.
Modifier and Type | Method and Description |
---|---|
void |
addConfiguration(Configuration c)
Add all configuration parameters from the given Configuration object.
|
void |
bind(Node iface,
Node impl)
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 iface,
String impl)
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> iface,
ClassNode<? extends ExternalConstructor<? extends T>> impl)
Register an ExternalConstructor implementation with Tang.
|
<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 |
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) |
Configuration |
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 / NamedParamter.
|
String |
classPrettyDescriptionString(String longName)
Pretty print the human readable documentation of the provided class / NamedParamter.
|
ClassHierarchy |
getClassHierarchy()
Each ConfigurationBuilder instance is associated with a ClassHierarchy.
|
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 cn,
String... args)
Force Tang to treat the specified constructor as though it had an @Inject
annotation.
|
void addConfiguration(Configuration c) throws BindException
c
- BindException
ClassHierarchy getClassHierarchy()
void registerLegacyConstructor(ClassNode<?> cn, ClassNode<?>... args) throws BindException
cn
- 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.void registerLegacyConstructor(String cn, String... args) throws BindException
cn
- 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.void registerLegacyConstructor(ClassNode<?> c, ConstructorArg... args) throws BindException
cn
- 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.<T> void bind(String iface, String impl) throws BindException
iface
- The full name of the interface that should resolve to impl,
or the NamedParameter to be set.impl
- 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 recognice 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.void bind(Node iface, Node impl) throws BindException
key
- The interface / NamedParmaeter to be bound.value
- The implementation / value iface should be set to.BindException
- if there is a type checking errorfor a more complete description.
<T> void bindConstructor(ClassNode<T> iface, ClassNode<? extends ExternalConstructor<? extends T>> impl) throws BindException
iface
- The class or interface to be instantiated.impl
- The ExternalConstructor class that will be used to instantiate iface.BindException
- If impl does not instantiate a subclass of iface.String classPrettyDefaultString(String longName) throws BindException
BindException
String classPrettyDescriptionString(String longName) throws BindException
BindException
Configuration build()
<T> void bindSetEntry(NamedParameterNode<Set<T>> iface, Node impl) throws BindException
BindException
<T> void bindSetEntry(NamedParameterNode<Set<T>> iface, String impl) throws BindException
BindException
void bindSetEntry(String iface, String impl) throws BindException
BindException
void bindSetEntry(String iface, Node impl) throws BindException
BindException
<T> void bindList(NamedParameterNode<List<T>> iface, List implList) throws BindException
iface
- The list named parameter to be instantiatedimplList
- The list of class or value will be used to instantiated the named parameterBindException
void bindList(String iface, List implList) throws BindException
BindException
Copyright © 2015 The Apache Software Foundation. All rights reserved.