package org.arquillian.cube.docker.junit.rule; import java.lang.reflect.Field; import java.lang.reflect.ParameterizedType; import java.util.Arrays; import java.util.Optional; class Reflections { public static final void injectObject(Object instance, Field field, Object injection) throws NoSuchFieldException, IllegalAccessException { field.setAccessible(true); field.set(instance, injection); } public static final Optional<Field> findFieldByGenericType(Class<?> clazz, Class<?> fieldType, Class<?> genericType) { try { return Arrays.stream(clazz.getDeclaredFields()) .peek(f -> f.setAccessible(true)) .filter(f -> f.getType().equals(fieldType)) .filter(f -> ((ParameterizedType) f.getGenericType()).getActualTypeArguments()[0].equals(genericType)) .findAny(); } catch (Throwable t) { return Optional.empty(); } } }