15.6.2. Registering a Transformer via Annotations

The key for each value must also be indexed, and the key instance must then be transformed in a String.
JBoss Data Grid includes some default transformation routines for encoding common primitives, however to use a custom key you must provide an implementation of org.infinispan.query.Transformer.
The following example shows how to annotate your key type using org.infinispan.query.Transformer:
@Transformable(transformer = CustomTransformer.class)
public class CustomKey {
   ...
}
 
public class CustomTransformer implements Transformer {
   @Override
   public Object fromString(String s) {
      ...
      return new CustomKey(...);
   }
 
   @Override
   public String toString(Object customType) {
      CustomKey ck = (CustomKey) customType;
      return ...
   }
}
The two methods must implement a biunique correspondence.
For example, for any object A the following must be true:
A.equals( transformer.fromString( transformer.toString( A ) )


This assumes that the transformer is the appropriate Transformer implementation for objects of type A.

Important

The Query Module is currently only available as a Technical Preview for JBoss Data Grid 6.1.