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

com.fastchar.converters.FastEnumParamConverter Maven / Gradle / Ivy

Go to download

FastChar is Web+ORM Framework in Java Copyright (C) http://www.fastchar.com All rights reserved.

The newest version!
package com.fastchar.converters;

import com.fastchar.asm.FastParameter;
import com.fastchar.core.FastAction;
import com.fastchar.interfaces.IFastParamConverter;

import java.lang.reflect.ParameterizedType;
import java.util.Arrays;
import java.util.Collection;

@SuppressWarnings("unchecked")
public class FastEnumParamConverter implements IFastParamConverter {

    @Override
    public Object convertValue(FastAction action, FastParameter parameter, int[] marker) throws Exception {
        Object value = null;
        if (parameter.getType().isEnum()) {
            marker[0] = 1;
            value = action.getParamToEnum(parameter.getName(),(Class) parameter.getType());
        } else if (Enum[].class.isAssignableFrom(parameter.getType())) {
            marker[0] = 1;
            value = action.getParamToEnumArray(parameter.getName(),(Class) parameter.getType().getComponentType());
        }else if (Collection.class.isAssignableFrom(parameter.getType())) {
            if (parameter.getParameterizedType() instanceof ParameterizedType) {
                ParameterizedType parameterizedType = (ParameterizedType) parameter.getParameterizedType();
                Class actualTypeArgument = (Class) parameterizedType.getActualTypeArguments()[0];
                if (actualTypeArgument.isEnum()) {
                    Collection collection = FastTypeHelper.getCollectionInstance(parameter.getType());
                    if (collection != null) {
                        Object[] paramToEnumArray = action.getParamToEnumArray(parameter.getName(),(Class) actualTypeArgument);
                        collection.addAll(Arrays.asList(paramToEnumArray));
                        value = collection;
                    }
                    marker[0] = 1;
                }
            }
        }
        return value;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy