Groovy Documentation

groovy.transform
[Java] Annotation Type AutoExternalize

java.lang.Object
  groovy.transform.AutoExternalize

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
@GroovyASTTransformationClass("org.codehaus.groovy.transform.AutoExternalizeASTTransformation")
public @interface AutoExternalize

Note: This annotation is currently experimental! Use at your own risk!

Class annotation used to assist in the creation of Externalizable classes. The @AutoExternalize annotation instructs the compiler to execute an AST transformation which adds writeExternal() and readExternal() methods to a class and adds Externalizable to the interfaces which the class implements. The writeExternal() method writes each property (or field) for the class while the readExternal() method will read each one back in the same order. Properties or fields marked as transient are ignored.

Example usage:

 import groovy.transform.*
 @AutoExternalize
 class Person {
   String first, last
   List favItems
   Date since
 }
 
Which will create a class of the following form:
 class Person implements Externalizable {
   ...
   public void writeExternal(ObjectOutput out) throws IOException {
     out.writeObject(first)
     out.writeObject(last)
     out.writeObject(favItems)
     out.writeObject(since)
   }

   public void readExternal(ObjectInput oin) {
     first = oin.readObject()
     last = oin.readObject()
     favItems = oin.readObject()
     since = oin.readObject()
   }
   ...
 }
 
Authors:
Paul King
Since:
1.8.0


 
Optional Element Summary
java.lang.String[] excludes

Comma separated list of property names to exclude from externalizing.

boolean includeFields

Include fields as well as properties when externalizing.

 
Method Summary
 
Methods inherited from class java.lang.Object
java.lang.Object#wait(long), java.lang.Object#wait(long, int), java.lang.Object#wait(), java.lang.Object#equals(java.lang.Object), java.lang.Object#toString(), java.lang.Object#hashCode(), java.lang.Object#getClass(), java.lang.Object#notify(), java.lang.Object#notifyAll()
 

Element Detail

excludes

public java.lang.String[] excludes
Comma separated list of property names to exclude from externalizing. For convenience, a String with comma separated names can be used in addition to an array (using Groovy's literal list notation) of String values. @default {}


includeFields

public boolean includeFields
Include fields as well as properties when externalizing. @default false


 

Groovy Documentation