Package com.netflix.astyanax.serializers

Source Code of com.netflix.astyanax.serializers.SerializerTypeInferer

package com.netflix.astyanax.serializers;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.nio.ByteBuffer;
import java.util.Date;
import java.util.UUID;

import com.netflix.astyanax.Serializer;

/**
* Utility class that infers the concrete Serializer needed to turn a value into
* its binary representation
*
* @author Bozhidar Bozhanov
*
*/
public class SerializerTypeInferer {

    @SuppressWarnings({ "rawtypes", "unchecked" })
    public static <T> Serializer<T> getSerializer(Object value) {
        Serializer serializer = null;
        if (value == null) {
            serializer = ByteBufferSerializer.get();
        }
        else if (value instanceof UUID) {
            serializer = UUIDSerializer.get();
        }
        else if (value instanceof String) {
            serializer = StringSerializer.get();
        }
        else if (value instanceof Long) {
            serializer = LongSerializer.get();
        }
        else if (value instanceof Integer) {
            serializer = Int32Serializer.get();
        }
        else if (value instanceof Short) {
            serializer = ShortSerializer.get();
        }
        else if (value instanceof Byte) {
            serializer = ByteSerializer.get();
        }
        else if (value instanceof Float) {
            serializer = FloatSerializer.get();
        }
        else if (value instanceof Double) {
            serializer = DoubleSerializer.get();
        }
        else if (value instanceof BigInteger) {
            serializer = BigIntegerSerializer.get();
        }
        else if (value instanceof BigDecimal) {
            serializer = BigDecimalSerializer.get();
        }
        else if (value instanceof Boolean) {
            serializer = BooleanSerializer.get();
        }
        else if (value instanceof byte[]) {
            serializer = BytesArraySerializer.get();
        }
        else if (value instanceof ByteBuffer) {
            serializer = ByteBufferSerializer.get();
        }
        else if (value instanceof Date) {
            serializer = DateSerializer.get();
        }
    // TODO: need what to select StringCoercibleSerilizer here?
        else {
            serializer = ObjectSerializer.get();
        }
        // Add other serializers here

        return serializer;
    }

    @SuppressWarnings({ "rawtypes", "unchecked" })
    public static <T> Serializer<T> getSerializer(Class<?> valueClass) {
        Serializer serializer = null;
        if (valueClass.equals(UUID.class)) {
            serializer = UUIDSerializer.get();
        }
        else if (valueClass.equals(String.class)) {
            serializer = StringSerializer.get();
        }
        else if (valueClass.equals(Long.class) || valueClass.equals(long.class)) {
            serializer = LongSerializer.get();
        }
        else if (valueClass.equals(Integer.class) || valueClass.equals(int.class)) {
            serializer = Int32Serializer.get();
        }
        else if (valueClass.equals(Short.class) || valueClass.equals(short.class)) {
            serializer = ShortSerializer.get();
        }
        else if (valueClass.equals(Byte.class) || valueClass.equals(byte.class)) {
            serializer = ByteSerializer.get();
        }
        else if (valueClass.equals(Float.class) || valueClass.equals(float.class)) {
            serializer = FloatSerializer.get();
        }
        else if (valueClass.equals(Double.class) || valueClass.equals(double.class)) {
            serializer = DoubleSerializer.get();
        }
        else if (valueClass.equals(BigInteger.class)) {
            serializer = BigIntegerSerializer.get();
        }
        else if (valueClass.equals(BigDecimal.class)) {
            serializer = BigDecimalSerializer.get();
        }
        else if (valueClass.equals(Boolean.class) || valueClass.equals(boolean.class)) {
            serializer = BooleanSerializer.get();
        }
        else if (valueClass.equals(byte[].class)) {
            serializer = BytesArraySerializer.get();
        }
        else if (valueClass.equals(ByteBuffer.class)) {
            serializer = ByteBufferSerializer.get();
        }
        else if (valueClass.equals(Date.class)) {
            serializer = DateSerializer.get();
        }
    if (serializer == null) {
             serializer = ObjectSerializer.get();
    }
        // Add other serializers here
        return serializer;
    }
}
TOP

Related Classes of com.netflix.astyanax.serializers.SerializerTypeInferer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.