Skip to content

Instantly share code, notes, and snippets.

@mgenov
Created July 13, 2011 13:50
Show Gist options
  • Save mgenov/1080326 to your computer and use it in GitHub Desktop.
Save mgenov/1080326 to your computer and use it in GitHub Desktop.
TwigConvertersSample.java
public enum MyEnum {
TEST, ABC
}
public static class Bar {
@Id
Integer myKey;
Map<MyEnum, Integer> map = new HashMap<MyEnum, Integer>();
}
public static class MyEnumToString implements SpecificConverter<MyEnum, String> {
@Override
public String convert(MyEnum source) {
return source.toString();
}
}
public static class StringToMyEnum implements SpecificConverter<String, MyEnum> {
@Override
public MyEnum convert(String source) {
return MyEnum.valueOf(source);
}
}
@Test
public void usingEnumAsKey() {
ObjectDatastore datastore = createDatastore();
Bar bar = new Bar();
bar.map.put(MyEnum.ABC, 10);
Key key = datastore.store().instance(bar).now();
datastore = createDatastore();
Bar b2 = datastore.load(key);
System.out.println(b2.map);
}
private ObjectDatastore createDatastore() {
ObjectDatastore datastore = new AnnotationObjectDatastore() {
@Override
protected CombinedConverter createTypeConverter() {
CombinedConverter converter = new CombinedConverter();
converter.append(new PrimitiveConverter());
converter.append(new CollectionConverter(converter));
converter.append(new MyEnumToString());
converter.append(new StringToMyEnum());
EngineConverters.registerAll(converter);
CoreConverters.registerAll(converter);
MapConverters.registerAll(converter);
return converter;
}
};
return datastore;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment