in processor/src/main/java/org/apache/commons/weaver/Finder.java [83:109]
protected void storeValue(final String name, final Object value) {
Object toStore = value;
Validate.notNull(toStore, "null annotation element");
if (toStore.getClass().isArray()) {
final Class<?> requiredType;
try {
requiredType = annotationType.getDeclaredMethod(name).getReturnType();
} catch (final Exception e) {
throw new RuntimeException(e);
}
if (!requiredType.isInstance(toStore)) {
final int len = Array.getLength(toStore);
final Object typedArray = Array.newInstance(requiredType.getComponentType(), len);
for (int i = 0; i < len; i++) {
Object element = Array.get(toStore, i);
if (element instanceof Type) {
element = toClass((Type) element);
}
Array.set(typedArray, i, element);
}
toStore = typedArray;
}
} else if (toStore instanceof Type) {
toStore = toClass((Type) toStore);
}
elements.put(name, toStore);
}