package org.osgl.util; import org.osgl.Osgl; import org.osgl.exception.NotAppliedException; import java.util.Map; public class SimpleStringValueResolver extends Osgl.F2<String, Class<?>, Object> { public static final SimpleStringValueResolver INSTANCE = new SimpleStringValueResolver(); protected Map<Class, StringValueResolver> resolvers = C.newMap(); public SimpleStringValueResolver() { registerPredefinedResolvers(); } @Override public Object apply(String s, Class<?> aClass) throws NotAppliedException, Osgl.Break { StringValueResolver r = resolvers.get(aClass); if (null != r) { return r.resolve(s); } if (null != s && Enum.class.isAssignableFrom(aClass)) { return Enum.valueOf(((Class<Enum>) aClass), s); } return null; } private void registerPredefinedResolvers() { resolvers.putAll(StringValueResolver.predefined()); } }