001    package org.tynamo.descriptor.annotation.handlers;
002    
003    import org.apache.commons.lang.Validate;
004    import org.tynamo.descriptor.TynamoPropertyDescriptor;
005    import org.tynamo.descriptor.annotation.InitialValue;
006    import org.tynamo.descriptor.extension.InitialValueDescriptorExtension;
007    
008    /**
009     * Creates a {@link org.tynamo.descriptor.extension.InitialValueDescriptorExtension} using the
010     * information retrieved from a {@link org.tynamo.descriptor.annotation.InitialValue} annotation.
011     *
012     * @author pruggia
013     */
014    public class InitialValueAnnotationHandler extends AbstractAnnotationHandler
015                    implements DescriptorAnnotationHandler<InitialValue, TynamoPropertyDescriptor>
016    {
017    
018            /**
019             * Creates a {@link org.tynamo.descriptor.extension.InitialValueDescriptorExtension} and adds it to
020             * the property descriptor.
021             *
022             * @param annotation Annotation added to the property. It cannot be null.
023             * @param descriptor The property descriptor. It cannot be null.
024             * @return The provided descriptor with the extension added.
025             */
026            public TynamoPropertyDescriptor decorateFromAnnotation(final InitialValue annotation,
027                                                                                                              final TynamoPropertyDescriptor descriptor)
028            {
029                    Validate.notNull(annotation, "The annotation cannot be null");
030                    Validate.notNull(descriptor, "The descriptor cannot be null");
031                    InitialValueDescriptorExtension extension = new InitialValueDescriptorExtension(annotation.value());
032                    descriptor.addExtension(InitialValueDescriptorExtension.class
033                                    .getName(), extension);
034                    return descriptor;
035            }
036    }
037