protected void injectStaticByType(Object test, Field fieldToAutoInjectStatic) {
InjectIntoStaticByType injectIntoStaticByTypeAnnotation = fieldToAutoInjectStatic.getAnnotation(InjectIntoStaticByType.class);
Class<?>[] targetClass = injectIntoStaticByTypeAnnotation.target();
Object objectToInject = getObjectToInject(test, fieldToAutoInjectStatic);
Type objectToInjectType = getObjectToInjectType(test, fieldToAutoInjectStatic);
Class objectToInjectClass = getClassForType(objectToInjectType);
Restore restore = getEnumValueReplaceDefault(InjectIntoStaticByType.class, "restore", injectIntoStaticByTypeAnnotation.restore(), defaultAnnotationPropertyValues);
PropertyAccess propertyAccess = getEnumValueReplaceDefault(InjectIntoStaticByType.class, "propertyAccess", injectIntoStaticByTypeAnnotation.propertyAccess(), defaultAnnotationPropertyValues);
try {
for (Class<?> clzz : targetClass) {
Object oldValue = InjectionUtils.injectIntoStaticByType(objectToInject, objectToInjectType, clzz, propertyAccess);
storeValueToRestoreAfterTest(clzz, null, objectToInjectClass, propertyAccess, oldValue, restore);
}
} catch (UnitilsException e) {
throw new UnitilsException(getSituatedErrorMessage(InjectIntoStaticByType.class, fieldToAutoInjectStatic, e.getMessage()), e);
}
}