package org.mongodb.morphia.issue646; import org.mongodb.morphia.converters.SimpleValueConverter; import org.mongodb.morphia.converters.TypeConverter; import org.mongodb.morphia.mapping.MappedField; public class SquareConverter extends TypeConverter implements SimpleValueConverter { public SquareConverter() { super(Square.class); } @Override public Object decode(final Class targetClass, final Object fromDBObject, final MappedField optionalExtraInfo) { if (fromDBObject == null) { return null; } if (fromDBObject instanceof String) { return new Square(); } throw new RuntimeException( "Did not expect " + fromDBObject.getClass().getName()); } @Override public Object encode(final Object value, final MappedField optionalExtraInfo) { if (value == null) { return null; } if (!(value instanceof Square)) { throw new RuntimeException( "Did not expect " + value.getClass().getName()); } return "Square"; } }