package de.zalando.sprocwrapper; 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; import de.zalando.sprocwrapper.sharding.VirtualShardKeyStrategy; /** * @author jmussler */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @Inherited public @interface SProcService { public enum WriteTransaction { NONE, ONE_PHASE, TWO_PHASE } Class<?> shardStrategy() default VirtualShardKeyStrategy.class; String namespace() default ""; boolean validate() default false; /** * Defines how sharded writes will be handled. If set to {@link WriteTransaction#NONE}, no transaction context will * be created. If set to {@link WriteTransaction#ONE_PHASE}, all errors during the sproc call will be rolled back. * If set to {@link WriteTransaction#TWO_PHASE}, all errors during sproc call and "prepare transaction" are rolled * back. In the last case, the Postgres instance must be configured to manage 2-phase-commits (XA). */ WriteTransaction shardedWriteTransaction() default WriteTransaction.NONE; }