com.khubla.cbean.serializer.impl.SimpleFieldSerializer.java Source code

Java tutorial

Introduction

Here is the source code for com.khubla.cbean.serializer.impl.SimpleFieldSerializer.java

Source

/*
 * cBean Copyright 2016, Tom Everett <tom@khubla.com>
 *
 *   This program is free software: you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation, either version 3 of the License, or
 *   (at your option) any later version.
 *
 *    This program is distributed in the hope that it will be useful,
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *    GNU General Public License for more details.
 *
 *    You should have received a copy of the GNU General Public License
 *    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package com.khubla.cbean.serializer.impl;

import java.lang.reflect.Field;
import java.util.HashSet;
import java.util.Set;

import org.apache.commons.beanutils.BeanUtils;

import com.khubla.cbean.serializer.FieldSerializer;
import com.khubla.cbean.serializer.SerializerException;

public class SimpleFieldSerializer implements FieldSerializer {
    private static final Set<Class<?>> WRAPPER_TYPES = getWrapperTypes();

    private static Set<Class<?>> getWrapperTypes() {
        final Set<Class<?>> ret = new HashSet<Class<?>>();
        ret.add(Boolean.class);
        ret.add(Character.class);
        ret.add(Byte.class);
        ret.add(Short.class);
        ret.add(Integer.class);
        ret.add(Long.class);
        ret.add(Float.class);
        ret.add(Double.class);
        ret.add(Void.class);
        return ret;
    }

    public static boolean isWrapperType(Class<?> clazz) {
        return WRAPPER_TYPES.contains(clazz);
    }

    public SimpleFieldSerializer() {
    }

    @Override
    public boolean applies(Field field) {
        final Class<?> clazz = field.getType();
        return isWrapperType(clazz) || clazz.isPrimitive() || clazz.equals(String.class);
    }

    @Override
    public void delete(Object o, Field field) throws SerializerException {
        // nothing to do
    }

    @Override
    public void deserialize(Object o, Field field, String value) throws SerializerException {
        try {
            BeanUtils.setProperty(o, field.getName(), value);
        } catch (final Exception e) {
            throw new SerializerException(e);
        }
    }

    @Override
    public String serialize(Object o, Field field) throws SerializerException {
        try {
            return BeanUtils.getSimpleProperty(o, field.getName());
        } catch (final Exception e) {
            throw new SerializerException(e);
        }
    }
}