Package org.glassfish.config.support
Annotation Interface Create
@Retention(RUNTIME)
@Target({METHOD,TYPE})
@GenerateServiceFromMethod(implementation="org.glassfish.config.support.GenericCreateCommand",
advertisedContracts="org.glassfish.api.admin.AdminCommand")
public @interface Create
Create command annotation.
Methods annotated with this annotation delegates to the framework to provide a generic administrative command that
create configured instances.
A Create annotation is used on a method of a configured interface. The method identifies the setter of a type that
can be added to the configured interface.
The annotated method must follow one of the two pattern : List getXs(); or void setX(X x);
the name of the method is immaterial, only the generic type of the returned List or the single parameter of the
setter method are used to determine the type of configured instance the command will create.
the resolver is used to find which instance of the parent type should be used to add the newly created child. The
resolver can also be annotated with
Param to get parameters passed to the command
invocation (like a name or a target parameter).
The generic command implementation will use the parameters passed to the command invocation with the
Param annotations on the child type to match command parameters to configuration
attributes.
Sometimes, the creation of a new configuration will require more work or more attributes/elements creation than what
can be provided or specified during the command invocation. In such a case, the Create annotation can specify a
decorator that will be called during the generic command execution, with the newly created instance.
The CreationDecorator will be looked up by its type and normal injection or parameter injection can happen.
Internationalization of generic commands follow the same rule as described in the AdminCommand javadocs. The
I18n annotation referenced from this annotation will be used as the top level command annotation, which
should provide the command description and expected result.
Parameters can be annotated with @I18n as well to override the default mapping and all resources must be located in
the target type module local strings properties file.
Sometimes, the @Create annotation cannot be used in the parent configuration object because the parent cannot have a
direct reference its children types.
For instance, if you have a declaration like
public interface ParentContainer {
@Element("*)
List children();
}
you cannot use the @Create annotation in such declaration because you do not know which subtypes of ParentConfigType
will exist.
In such cases, you should place the @Create on the child type and use the @Decorate annotation alongside to specify
the parent's method used to add the element to the parent.
@Create(....)
@Decorate(parentType=ParentContainer.class, methodName="children",
with={Create.class})
public interface SomeChild extends ParentConfigType {
...
}
- Author:
- Jerome Dochez
-
Required Element Summary
Required Elements -
Optional Element Summary
Optional ElementsModifier and TypeOptional ElementDescriptionorg.glassfish.api.admin.ExecuteOnReturns the desired behaviors in a clustered environment.Class<? extends CreationDecorator>Returns a decorator type that should be looked up and called when a new configuration element of the annotated type is created.Class<? extends CrudResolver>Returns the instance of the parent that should be used to add the newly created instance under.
-
Element Details
-
value
Name of the command that will be used to register this generic command implementation under.- Returns:
- the command name as the user types it.
-
i18n
org.glassfish.api.I18n i18nReturns the i18n key that will be used to look up a localized string in the annotated type module.- Returns:
- the key to look up localized description for the command.
-
-
-
resolver
Class<? extends CrudResolver> resolverReturns the instance of the parent that should be used to add the newly created instance under. The implementation of that interface can use the command parameters to make a determination about which instance should be used.- Returns:
- the parent instance.
- Default:
- org.glassfish.config.support.CrudResolver.DefaultResolver.class
-
decorator
Class<? extends CreationDecorator> decoratorReturns a decorator type that should be looked up and called when a new configuration element of the annotated type is created.- Returns:
- a decorator for the annotated type
- Default:
- org.glassfish.config.support.CreationDecorator.NoDecoration.class
-
cluster
org.glassfish.api.admin.ExecuteOn clusterReturns the desired behaviors in a clustered environment. By default, using all theExecuteOndefault values- Returns:
- the cluster information
- Default:
- @org.glassfish.api.admin.ExecuteOn
-