Interfacepublic 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

The core extension interface for adding configuration artifacts to an object definition.

All builtin configuration tags like [Inject] or [MessageHandler] 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.

Public Methods
 MethodDefined By
Method to be invoked by the container for each configuration tag it encounters for an object that was added to the container.
Method Detail
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 builder.newBuilder. 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 GlobalFactoryRegistry instead.


builder:ObjectDefinitionBuilder — the builder that can be used to modify the target definition