xapi.annotation.model.ServerToClient 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.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Annotation specifying that a field or class requires serializing from Model
* to String, in order to send to the server.
*
* This can be applied to interfaces, classes, methods or fields, though using
* field-level concrete classes breaks compatibility;
* you should stick to interfaces + methods, and avoid classes + fields.
*
* Applying this to the class makes every field in the model serializable on
* the client, and you will have to use {@link ClientToServer#enabled()} = false
* to strictly disable any fields.
*
* This makes it easy to add client-only fields that can be used on the server,
* provided your interface is in a shared lib. If you need to hide client-only
* fields, manually call .setProperty(String, Object) on your models.
*
* @author "James X. Nelson ([email protected])"
*
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({}) // Must be placed inside a @Serializable annotation
public @interface ServerToClient {
SerializationStrategy serializer() default SerializationStrategy.ProtoStream;
boolean enabled() default true;
boolean encrypted() default false;
}