All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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