[infinispan-dev] Providing a context for object de-serialization

Sanne Grinovero sanne at infinispan.org
Tue Jun 26 12:13:28 EDT 2012


Imagine I have a value object which needs to be stored in Infinispan:

class Person {
   final String nationality = ...
   final String fullName = ...
 [constructor]
}

And now let's assume that - as you could expect - most Person
instances have the same value for the nationality String, but a
different name.

I want to define a custom Externalizer for my type, but the current
Externalizer API doesn't allow to refer to some common application
context, which might be extremely useful to deserialize this Person
instance:

we could avoid filling the memory of my Grid by having multiple copies
of the nationality String repeated all over, when a String [1] could
be reused.

Would it be a good idea to have the Externalizer instances have an
initialization phase receiving a ComponentRegistry, so I could look up
some custom service to de-duplicate or otherwise optimize my in-memory
data representation?
Personally I'd prefer to receive it injected via the constructor so
that I could use a final field when my custom Externalizer is
constructed.

This is OGM related.

Cheers,
Sanne


1 - or any immutable object: I'm using String as an example so let's
forget about the static String pool optimizations the JVM might
enable..


More information about the infinispan-dev mailing list