protostuff
1.5.0
Una biblioteca de serialización de Java con soporte integrado para compatibilidad hacia atrás (evolución de esquemas) y validación.
Para obtener más información, vaya a https://protostuff.github.io/docs/
< dependency >
< groupId >io.protostuff</ groupId >
< artifactId >protostuff-core</ artifactId >
< version >1.7.4</ version >
</ dependency >
< dependency >
< groupId >io.protostuff</ groupId >
< artifactId >protostuff-runtime</ artifactId >
< version >1.7.4</ version >
</ dependency >
public final class Foo
{
String name ;
int id ;
public Foo ( String name , int id )
{
this . name = name ;
this . id = id ;
}
}
static void roundTrip ()
{
Foo foo = new Foo ( "foo" , 1 );
// this is lazily created and cached by RuntimeSchema
// so its safe to call RuntimeSchema.getSchema(Foo.class) over and over
// The getSchema method is also thread-safe
Schema < Foo > schema = RuntimeSchema . getSchema ( Foo . class );
// Re-use (manage) this buffer to avoid allocating on every serialization
LinkedBuffer buffer = LinkedBuffer . allocate ( 512 );
// ser
final byte [] protostuff ;
try
{
protostuff = ProtostuffIOUtil . toByteArray ( foo , schema , buffer );
}
finally
{
buffer . clear ();
}
// deser
Foo fooParsed = schema . newMessage ();
ProtostuffIOUtil . mergeFrom ( protostuff , fooParsed , schema );
}
Si va a utilizar esto únicamente para reemplazar la serialización de Java (sin compatibilidad con protobuf), establezca las siguientes propiedades del sistema:
-Dprotostuff.runtime.always_use_sun_reflection_factory=true
-Dprotostuff.runtime.preserve_null_elements=true
-Dprotostuff.runtime.morph_collection_interfaces=true
-Dprotostuff.runtime.morph_map_interfaces=true
-Dprotostuff.runtime.morph_non_final_pojos=true
También puedes personalizarlo mediante programación:
static final DefaultIdStrategy STRATEGY = new DefaultIdStrategy ( IdStrategy . DEFAULT_FLAGS
| IdStrategy . PRESERVE_NULL_ELEMENTS
| IdStrategy . MORPH_COLLECTION_INTERFACES
| IdStrategy . MORPH_MAP_INTERFACES
| IdStrategy . MORPH_NON_FINAL_POJOS );
Úsalo:
Schema < Foo > schema = RuntimeSchema . getSchema ( Foo . class , STRATEGY );
Java 1.6 o superior
Maven 3.2.3 o superior
mvn install && mvn eclipse:eclipse
# Open eclipse, import existing project, navigate to the protostuff module you're after, then hit 'Finish'.