THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
No Format |
---|
import java.util.*; import org.apache.commons.betwixt.expression.*; import org.apache.commons.betwixt.strategy.*; /** * * * @author Jesse Sweetland */ public class CustomObjectStringConverter extends ObjectStringConverterDefaultObjectStringConverter { private final Map<Class, ObjectStringConverter> _converters = new HashMap<Class, ObjectStringConverter>(); public void register(ObjectStringConverter converter, Class forType) { _converters.put(forType, converter); } public void deregister(Class forType) { _converters.remove(forType); } public ObjectStringConverter resolve(Class forType) { int minDistance = Integer.MAX_VALUE; ObjectStringConverter converter = null; for(Map.Entry<Class, ObjectStringConverter> entry: _converters.entrySet()) { int distance = getDistance(entry.getKey(), forType); if((distance >= 0) && (distance < minDistance)) { minDistance = distance; converter = entry.getValue(); } } return converter; } private int getDistance(Class superClass, Class type) { if(superClass.isAssignableFrom(type)) { Class temp = type; int distance = 0; while(temp != null) { if(temp.equals(superClass)) return distance; for(Class ifc: temp.getInterfaces()) { if(ifc.equals(superClass)) return distance; } distance++; temp = temp.getSuperclass(); } } return -1; } public String objectToString(Object object, Class type, Context context) { if(object == null) return null; ObjectStringConverter converter = resolve(type); if(converter != null) { return converter.objectToString(object, type, context); } else { return super.objectToString(object, type, context); } } public Object stringToObject(String value, Class type, Context context) { if(value == null) return null; ObjectStringConverter converter = resolve(type); if(converter != null) { return converter.stringToObject(value, type, context); } else { return super.stringToObject(value, type, context); } } } |
...