package org.jboss.windup.graph;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import com.tinkerpop.frames.Property;
/**
* Designates that a Framed method annotated with {@link Property} should be indexed by the underlying database
* implementation. This is used as a runtime performance enhancement, but comes at the cost of using additional storage
* space (and potentially memory.)
* <p>
* <b>Note:</b> Only one property in any getter/setter pair need be annotated with {@link Indexed}. Multiple annotations
* will have no effect.
*
* @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a>
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Indexed
{
/**
* The type of index to be created.
*/
IndexType value() default IndexType.DEFAULT;
/**
* Indicates the type for the property. The default is {@link String}.
*/
Class<?> dataType() default String.class;
String name() default "";
}