Created
July 13, 2011 13:50
-
-
Save mgenov/1080326 to your computer and use it in GitHub Desktop.
TwigConvertersSample.java
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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