com.outbrain.ob1k.common.marshalling.ParamMarshaller Maven / Gradle / Ivy
The newest version!
package com.outbrain.ob1k.common.marshalling;
import javax.activation.UnsupportedDataTypeException;
import java.util.HashMap;
import java.util.Map;
/**
* @author marenzon
*/
public class ParamMarshaller {
private final static Map, Marshaller>> marshallers = new HashMap, Marshaller>>() {{
put(String.class, new Marshaller() {
@Override
public String unmarshall(final Object value) {
return String.valueOf(value);
}
});
put(int.class, new Marshaller() {
@Override
public Integer unmarshall(final Object value) {
return Integer.parseInt(String.valueOf(value));
}
});
put(boolean.class, new Marshaller() {
@Override
public Boolean unmarshall(final Object value) {
return Boolean.parseBoolean(String.valueOf(value));
}
});
put(long.class, new Marshaller() {
@Override
public Long unmarshall(final Object value) {
return Long.parseLong(String.valueOf(value));
}
});
put(float.class, new Marshaller() {
@Override
public Float unmarshall(final Object value) {
return Float.parseFloat(String.valueOf(value));
}
});
put(double.class, new Marshaller() {
@Override
public Double unmarshall(final Object value) {
return Double.parseDouble(String.valueOf(value));
}
});
put(char.class, new Marshaller() {
@Override
public Character unmarshall(final Object value) {
return String.valueOf(value).charAt(0);
}
});
put(byte.class, new Marshaller() {
@Override
public Byte unmarshall(final Object value) {
return Byte.parseByte(String.valueOf(value));
}
});
put(short.class, new Marshaller() {
@Override
public Short unmarshall(final Object value) {
return Short.parseShort(String.valueOf(value));
}
});
}};
@SuppressWarnings("unchecked")
public static T unmarshall(final Object value, final Class type) throws UnsupportedDataTypeException {
final Marshaller> marshaller = marshallers.get(type);
if (marshaller == null) {
throw new UnsupportedDataTypeException("can't unmarshall type " + type.getName());
}
return (T) marshaller.unmarshall(value);
}
private interface Marshaller {
T unmarshall(Object value);
}
} © 2015 - 2025 Weber Informatics LLC | Privacy Policy