xapi.annotation.model.Serializable Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of xapi-dev Show documentation
Show all versions of xapi-dev Show documentation
Everything needed to run a comprehensive dev environment.
Just type X_ and pick a service from autocomplete;
new dev modules will be added as they are built.
The only dev service not included in the uber jar is xapi-dev-maven,
as it includes all runtime dependencies of maven, adding ~4 seconds to build time,
and 6 megabytes to the final output jar size (without xapi-dev-maven, it's ~1MB).
The newest version!
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 ([email protected])
*
*/
@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;
}