io.micronaut.core.reflect.ReflectionUtils Java Examples
The following examples show how to use
io.micronaut.core.reflect.ReflectionUtils.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: CompositeSerdeRegistry.java From micronaut-kafka with Apache License 2.0 | 6 votes |
@SuppressWarnings("unchecked") @Override @Nonnull public <T> Serde<T> getSerde(Class<T> type) { Serde serde = serdeMap.get(type); if (serde != null) { return serde; } else { type = ReflectionUtils.getWrapperType(type); try { return Serdes.serdeFrom(type); } catch (IllegalArgumentException e) { for (SerdeRegistry registry : registries) { serde = registry.getSerde(type); if (serde != null) { serdeMap.put(type, serde); return serde; } } } throw new SerializationException("No available serde for type: " + type); } }
Example #2
Source File: DefaultUpdateInterceptor.java From micronaut-data with Apache License 2.0 | 6 votes |
@Override public Object intercept(RepositoryMethodKey methodKey, MethodInvocationContext<T, Object> context) { PreparedQuery<?, Number> preparedQuery = (PreparedQuery<?, Number>) prepareQuery(methodKey, context); Number number = operations.executeUpdate(preparedQuery).orElse(null); final Argument<Object> returnType = context.getReturnType().asArgument(); final Class<Object> type = ReflectionUtils.getWrapperType(returnType.getType()); if (Number.class.isAssignableFrom(type)) { if (type.isInstance(number)) { return number; } else { return ConversionService.SHARED. convert(number, returnType) .orElse(0); } } else if (Boolean.class.isAssignableFrom(type)) { return number == null || number.longValue() < 0; } else { return null; } }
Example #3
Source File: TypeUtils.java From micronaut-data with Apache License 2.0 | 5 votes |
/** * Is the type a number. * @param type The type * @return True if is a number */ public static boolean isNumber(@Nullable ClassElement type) { if (type == null) { return false; } if (type.isPrimitive()) { return ClassUtils.getPrimitiveType(type.getName()).map(aClass -> Number.class.isAssignableFrom(ReflectionUtils.getWrapperType(aClass)) ).orElse(false); } else { return type.isAssignable(Number.class); } }
Example #4
Source File: TypeUtils.java From micronaut-data with Apache License 2.0 | 5 votes |
/** * Return the type for the given class element, wrapping primitives types if necessary. * @param type The type * @return The ID type */ public static @NonNull String getTypeName(@NonNull ClassElement type) { String typeName = type.getName(); return ClassUtils.getPrimitiveType(typeName).map(t -> ReflectionUtils.getWrapperType(t).getName() ).orElse(typeName); }
Example #5
Source File: RuntimePersistentProperty.java From micronaut-data with Apache License 2.0 | 5 votes |
/** * Default constructor. * @param owner The owner * @param property The property * @param constructorArg whether it is a constructor arg */ RuntimePersistentProperty(RuntimePersistentEntity<T> owner, BeanProperty<T, ?> property, boolean constructorArg) { this.owner = owner; this.property = property; this.type = ReflectionUtils.getWrapperType(property.getType()); this.dataType = PersistentProperty.super.getDataType(); this.constructorArg = constructorArg; this.argument = property.asArgument(); }
Example #6
Source File: ColumnNameResultSetReader.java From micronaut-data with Apache License 2.0 | 5 votes |
@Override public <T> T convertRequired(Object value, Class<T> type) { Class wrapperType = ReflectionUtils.getWrapperType(type); if (wrapperType.isInstance(value)) { return (T) value; } return conversionService.convert( value, type ).orElseThrow(() -> new DataAccessException("Cannot convert type [" + value.getClass() + "] with value [" + value + "] to target type: " + type + ". Consider defining a TypeConverter bean to handle this case.") ); }
Example #7
Source File: AnnotationUtils.java From micronaut-test with Apache License 2.0 | 5 votes |
@SuppressWarnings("unchecked") private static <A extends Annotation> void findRepeatableAnnotations(Annotation[] candidates, Class<A> annotationType, Class<? extends Annotation> containerType, boolean inherited, Set<A> found, Set<Annotation> visited) { for (Annotation candidate : candidates) { Class<? extends Annotation> candidateAnnotationType = candidate.annotationType(); if (!isInJavaLangAnnotationPackage(candidateAnnotationType) && visited.add(candidate)) { if (candidateAnnotationType.equals(annotationType)) { // Exact match? found.add(annotationType.cast(candidate)); } else if (candidateAnnotationType.equals(containerType)) { // Container? // Note: it's not a legitimate containing annotation type if it doesn't declare // a 'value' attribute that returns an array of the contained annotation type. // See https://docs.oracle.com/javase/specs/jls/se8/html/jls-9.html#jls-9.6.3 Method method = ReflectionUtils.getMethod(containerType, "value").orElseThrow( () -> new IllegalStateException(String.format( "Container annotation type '%s' must declare a 'value' attribute of type %s[].", containerType, annotationType))); Annotation[] containedAnnotations = ReflectionUtils.invokeMethod(candidate, method); found.addAll((Collection<? extends A>) asList(containedAnnotations)); } else { // Otherwise search recursively through the meta-annotation hierarchy... findRepeatableAnnotations(candidateAnnotationType, annotationType, containerType, inherited, found, visited); } } } }
Example #8
Source File: StoredQuery.java From micronaut-data with Apache License 2.0 | 2 votes |
/** * The argument types to the method that invokes the query. * * @return The argument types */ @NonNull default Class<?>[] getArgumentTypes() { return ReflectionUtils.EMPTY_CLASS_ARRAY; }