package org.corfudb.annotations;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/** <p>Marks an object which should exist in the Corfu log.
* Objects marked with the CorfuObject annotation are targeted for
* instrumentation by the annotation processor.</p>
* Created by mwei on 3/30/16.
*/
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface CorfuObject {
/** @return Whether the constructor is persisted in the log or not. */
ConstructorType constructorType() default ConstructorType.RUNTIME;
/** @return Whether or not the object holds state or not. Deprecated. */
@Deprecated
ObjectType objectType() default ObjectType.STATELESS;
/** @return Where the state of the object is stored. Deprecated. */
@Deprecated
StateSource stateSource() default StateSource.SELF;
/** @return What the state source is. Deprecated. */
@Deprecated
Class stateType() default StaticMappingObject.class;
}