|Interface||public interface ObjectDefinitionDecorator extends ObjectConfiguration|
|Implementors||AsyncInitDecorator, CommandCompleteDecorator, CommandErrorDecorator, CommandResultDecorator, CommandStatusDecorator, ConstructorTag, DestroyMethodDecorator, DynamicPropertyTag, FactoryMethodDecorator, InitMethodDecorator, InjectConstructorDecorator, InjectMethodDecorator, InjectPropertyDecorator, ManagedEventsDecorator, MessageBindingDecorator, MessageDispatcherDecorator, MessageErrorDecorator, MessageHandlerDecorator, ObserveMethodDecorator, PropertyTag, PublishDecorator, PublishSubscribeDecorator, ResourceBindingDecorator, SubscribeDecorator|
All builtin configuration tags like
implement this interface. But it can also be used to create custom configuration tags.
Parsleys flexibility makes it possible that in most cases implementations of this interface
can be used as Metadata, MXML and XML tag.
For details see 11.2 Creating Custom Configuration Tags in the Parsley Manual.
Method to be invoked by the container for each configuration tag it encounters for an object that was added to the container.
public function decorate(builder:ObjectDefinitionBuilder):void
Method to be invoked by the container for each configuration tag it encounters for an object that was added to the container. It doesn't matter whether it is a builtin configuration tag or a custom extension tag, or whether it is a metadata tag, an MXML or XML tag. As long as the tag is mapped to a class that implements this interface the container will invoke it for each tag on each object.
The builder parameter getting passed to the decorator can be used to customize the ObjectDefinition that is currently getting processed. In most custom tag implementations you will peform tasks like specifying constructor arguments, property values, message receivers, custom lifecycle processors or instantiators.
A decorator is also allowed to register additional definitions through using
Those additional definitions might describe collaborators that the processed definition will need
to operate for example. If you want to register collaborators that are globally accessible (or within a certain scope)
you may consider adding them to the
ScopeExtensionRegistry in the