Example usage for com.google.common.reflect TypeToken isPrimitive

List of usage examples for com.google.common.reflect TypeToken isPrimitive

Introduction

In this page you can find the example usage for com.google.common.reflect TypeToken isPrimitive.

Prototype

public final boolean isPrimitive() 

Source Link

Document

Returns true if this type is one of the nine primitive types (including void ).

Usage

From source file:com.microsoft.rest.Validator.java

/**
 * Validates a user provided required parameter to be not null.
 * An {@link IllegalArgumentException} is thrown if a property fails the validation.
 *
 * @param parameter the parameter to validate
 * @throws IllegalArgumentException thrown when the Validator determines the argument is invalid
 *//*  w  w  w .j a v  a 2  s. co m*/
public static void validate(Object parameter) throws IllegalArgumentException {
    // Validation of top level payload is done outside
    if (parameter == null) {
        return;
    }

    Class parameterType = parameter.getClass();
    TypeToken<?> parameterToken = TypeToken.of(parameterType);
    if (Primitives.isWrapperType(parameterType)) {
        parameterToken = parameterToken.unwrap();
    }
    if (parameterToken.isPrimitive() || parameterType.isEnum()
            || parameterToken.isAssignableFrom(LocalDate.class)
            || parameterToken.isAssignableFrom(DateTime.class) || parameterToken.isAssignableFrom(String.class)
            || parameterToken.isAssignableFrom(DateTimeRfc1123.class)
            || parameterToken.isAssignableFrom(Period.class)) {
        return;
    }

    for (Class<?> c : parameterToken.getTypes().classes().rawTypes()) {
        // Ignore checks for Object type.
        if (c.isAssignableFrom(Object.class)) {
            continue;
        }
        for (Field field : c.getDeclaredFields()) {
            field.setAccessible(true);
            JsonProperty annotation = field.getAnnotation(JsonProperty.class);
            Object property;
            try {
                property = field.get(parameter);
            } catch (IllegalAccessException e) {
                throw new IllegalArgumentException(e.getMessage(), e);
            }
            if (property == null) {
                if (annotation != null && annotation.required()) {
                    throw new IllegalArgumentException(field.getName() + " is required and cannot be null.");
                }
            } else {
                try {
                    Class<?> propertyType = property.getClass();
                    if (TypeToken.of(List.class).isAssignableFrom(propertyType)) {
                        List<?> items = (List<?>) property;
                        for (Object item : items) {
                            Validator.validate(item);
                        }
                    } else if (TypeToken.of(Map.class).isAssignableFrom(propertyType)) {
                        Map<?, ?> entries = (Map<?, ?>) property;
                        for (Map.Entry<?, ?> entry : entries.entrySet()) {
                            Validator.validate(entry.getKey());
                            Validator.validate(entry.getValue());
                        }
                    } else if (parameterType != propertyType) {
                        Validator.validate(property);
                    }
                } catch (IllegalArgumentException ex) {
                    if (ex.getCause() == null) {
                        // Build property chain
                        throw new IllegalArgumentException(field.getName() + "." + ex.getMessage());
                    } else {
                        throw ex;
                    }
                }
            }
        }
    }
}

From source file:org.apache.cassandra.cql3.functions.JavaBasedUDFunction.java

private static String composeMethod(TypeToken<?> type) {
    return (type.isPrimitive()) ? ("super.compose_" + type.getRawType().getName()) : "super.compose";
}

From source file:net.femtoparsec.binding.property.BeanPropertyHelper.java

/**
 *
 * @param resultTypeToken the type token to check
 * @param requestedResult the requested casting type
 * @return true requestedResult can be used for a {@link net.femtoparsec.binding.PathProperty} that has as <code>resultTypToken</code> as last type token in his property path.
 *//*from  w  ww  .  j  a va  2  s .  c o  m*/
public static boolean isValidRequestedResult(TypeToken<?> resultTypeToken, Class<?> requestedResult) {
    //we need to check if the resultTypeToken can be cast (converted) to the requestResult
    final Class<?> resultRawType = resultTypeToken.getRawType();
    if (requestedResult.isPrimitive()) {
        return requestedResult == resultRawType;
    } else if (resultTypeToken.isPrimitive()) {
        return isBoxer(resultRawType, requestedResult);
    } else {
        return requestedResult.isAssignableFrom(resultRawType);
    }
}

From source file:com.theoriginalbit.peripheral.converter.TypeConverter.java

/**
 * {@inheritDoc}/*from w  w w  . ja  va  2  s  . co m*/
 */
@Override
public Object toJava(Object obj, Type expected) throws TypeConversionException {
    if (obj == null) {
        final TypeToken<?> type = TypeToken.of(expected);
        if (!type.isPrimitive()) {
            throw new TypeConversionException("expected %s, got nil", type);
        }
        return null;
    }

    for (IGenericJavaTypeConverter converter : inbound) {
        Object response = converter.toJava(this, obj, expected);
        if (response != null)
            return response;
    }

    throw new TypeConversionException("expected %s, got %s",
            TypeToken.of(expected).getRawType().getSimpleName().toLowerCase(),
            obj.getClass().getSimpleName().toLowerCase());
}

From source file:com.datastax.driver.core.TypeCodec.java

protected TypeCodec(DataType cqlType, TypeToken<T> javaType) {
    checkNotNull(cqlType, "cqlType cannot be null");
    checkNotNull(javaType, "javaType cannot be null");
    checkArgument(!javaType.isPrimitive(),
            "Cannot create a codec for a primitive Java type (%s), please use the wrapper type instead",
            javaType);//from   www  .  ja  v  a2 s  . c om
    this.cqlType = cqlType;
    this.javaType = javaType;
}