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