public interface EntitySpecResolver extends ManagementContextInjectable
entity specifications
based on the serviceType
in a template.
The resolver implementation will use the rest of the local part of the service type information
to create and decorate an appropriate entity
.
The resolvers are loaded using the ServiceLoader
mechanism, allowing external libraries
to add extra service type implementations that will be picked up at runtime.
Modifier and Type | Method and Description |
---|---|
boolean |
accepts(java.lang.String type,
BrooklynClassLoadingContext loader) |
java.lang.String |
getName()
Uniquely identifies the resolver, can be used to address the same resolver at a later point in time.
|
EntitySpec<?> |
resolve(java.lang.String type,
BrooklynClassLoadingContext loader,
java.util.Set<java.lang.String> encounteredTypes)
Create a spec for the service type
|
setManagementContext
java.lang.String getName()
boolean accepts(java.lang.String type, BrooklynClassLoadingContext loader)
@Nullable EntitySpec<?> resolve(java.lang.String type, BrooklynClassLoadingContext loader, java.util.Set<java.lang.String> encounteredTypes)
type
- - the string representation which should be converted to an EntitySpecloader
- - use it to load any Java classesencounteredTypes
- - an immutable set of the items which are currently being resolved up the stack,
used to prevent cycles. Implementations should not try to resolve the type if the symbolicName is
already contained in here. When resolving a type add it to a copy of the list before
passing the new instance down the stack. See CatalogEntitySpecResolver
for example usage.EntitySpec
corresponding to the passed type
argument, possibly pre-configured
based on the information contained in type
. Return null
value to indicate that
the implementation doesn't know how to convert type
to an EntitySpec
. Throw an
exception if type
looks like a supported value, but can't be loaded.