You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by mb...@apache.org on 2013/02/11 20:24:51 UTC
svn commit: r1444930 -
/commons/sandbox/weaver/branches/mjb/processor/src/main/java/org/apache/commons/weaver/Finder.java
Author: mbenson
Date: Mon Feb 11 19:24:51 2013
New Revision: 1444930
URL: http://svn.apache.org/r1444930
Log:
array typing
Modified:
commons/sandbox/weaver/branches/mjb/processor/src/main/java/org/apache/commons/weaver/Finder.java
Modified: commons/sandbox/weaver/branches/mjb/processor/src/main/java/org/apache/commons/weaver/Finder.java
URL: http://svn.apache.org/viewvc/commons/sandbox/weaver/branches/mjb/processor/src/main/java/org/apache/commons/weaver/Finder.java?rev=1444930&r1=1444929&r2=1444930&view=diff
==============================================================================
--- commons/sandbox/weaver/branches/mjb/processor/src/main/java/org/apache/commons/weaver/Finder.java (original)
+++ commons/sandbox/weaver/branches/mjb/processor/src/main/java/org/apache/commons/weaver/Finder.java Mon Feb 11 19:24:51 2013
@@ -4,6 +4,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.lang.reflect.Array;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
@@ -13,7 +14,8 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
-import org.apache.commons.proxy2.stub.AnnotationFactory;
+import org.apache.commons.lang3.Validate;
+import org.apache.commons.proxy.stub.AnnotationFactory;
import org.apache.xbean.asm.AnnotationVisitor;
import org.apache.xbean.asm.Attribute;
import org.apache.xbean.asm.ClassReader;
@@ -47,6 +49,20 @@ class Finder extends AnnotationFinder {
@Override
protected void storeValue(String name, Object value) {
+ Validate.notNull(value, "null annotation element");
+ if (value.getClass().isArray()) {
+ final int len = Array.getLength(value);
+ final Object typedArray;
+ try {
+ typedArray =
+ Array.newInstance(annotationType.getDeclaredMethod(name).getReturnType().getComponentType(),
+ len);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ System.arraycopy(value, 0, typedArray, 0, len);
+ value = typedArray;
+ }
elements.put(name, value);
}
}
@@ -80,7 +96,6 @@ class Finder extends AnnotationFinder {
@Override
public void visitEnd() {
- // TODO hmm, best way to strongly type the array
owner.storeValue(name, values.toArray());
}