package xapi.annotation.model; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * * Marking fields or methods as serializable will cause them to be serialized upon HTTP requests. * * This annotation allows control over whether a value may move from server to client, or vice versa. * This is useful to prevent leaking sensitive data to clients, or to prevent sending useless data to server. * * By default, all non-android JRE environments are considered servers. * See {@link xapi.util.X_Properties#isServer} for details on determining if a runtime is a server or not. * * If you wish to make a non-serializable field; * set both {@link #clientToServer()} and {@link #serverToClient()} to false; * * @author James X. Nelson (james@wetheinter.net) * */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface Serializable { /** * @return true to obfuscate values before serialization. * * The default obfuscator will use a one-time pad to hash your values. */ public boolean obfuscated() default false; ClientToServer clientToServer() default @ClientToServer; ServerToClient serverToClient() default @ServerToClient; }