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
|
setManagementContextjava.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.