Commit 15ad54404bfccf150d77e1ec3c79edf7057b9fd5
1 parent
466843a6
Exists in
master
-Classe agora não é mais "final"
-Editadas documentações que faltavam
Showing
1 changed file
with
23 additions
and
11 deletions
Show diff stats
impl/core/src/main/java/br/gov/frameworkdemoiselle/util/Reflections.java
@@ -52,9 +52,11 @@ import java.util.List; | @@ -52,9 +52,11 @@ import java.util.List; | ||
52 | * | 52 | * |
53 | * @author SERPRO | 53 | * @author SERPRO |
54 | */ | 54 | */ |
55 | -public final class Reflections { | 55 | +public class Reflections { |
56 | 56 | ||
57 | - private Reflections() { | 57 | + protected Reflections() { |
58 | + //Impede instanciar subclasses desse tipo. | ||
59 | + throw new UnsupportedOperationException(); | ||
58 | } | 60 | } |
59 | 61 | ||
60 | /** | 62 | /** |
@@ -109,7 +111,10 @@ public final class Reflections { | @@ -109,7 +111,10 @@ public final class Reflections { | ||
109 | } | 111 | } |
110 | 112 | ||
111 | /** | 113 | /** |
112 | - * TODO | 114 | + * <p>Return the parametized type passed to members (fields or methods) that accepts Generics.</p> |
115 | + * | ||
116 | + * @see #getGenericTypeArgument(Field field, int idx) | ||
117 | + * | ||
113 | */ | 118 | */ |
114 | public static <T> Class<T> getGenericTypeArgument(final Member member, final int idx) { | 119 | public static <T> Class<T> getGenericTypeArgument(final Member member, final int idx) { |
115 | Class<T> result = null; | 120 | Class<T> result = null; |
@@ -124,7 +129,10 @@ public final class Reflections { | @@ -124,7 +129,10 @@ public final class Reflections { | ||
124 | } | 129 | } |
125 | 130 | ||
126 | /** | 131 | /** |
127 | - * TODO | 132 | + * <p>Return the parametized type passed to methods that accepts Generics.</p> |
133 | + * | ||
134 | + * @see #getGenericTypeArgument(Field field, int idx) | ||
135 | + * | ||
128 | */ | 136 | */ |
129 | @SuppressWarnings("unchecked") | 137 | @SuppressWarnings("unchecked") |
130 | public static <T> Class<T> getGenericTypeArgument(final Method method, final int pos) { | 138 | public static <T> Class<T> getGenericTypeArgument(final Method method, final int pos) { |
@@ -180,7 +188,8 @@ public final class Reflections { | @@ -180,7 +188,8 @@ public final class Reflections { | ||
180 | } | 188 | } |
181 | 189 | ||
182 | /** | 190 | /** |
183 | - * TODO | 191 | + * @return All non static fields from a certain type. Inherited fields are not returned, so if you |
192 | + * need to get inherited fields you must iterate over this type's hierarchy. | ||
184 | */ | 193 | */ |
185 | public static Field[] getNonStaticDeclaredFields(Class<?> type) { | 194 | public static Field[] getNonStaticDeclaredFields(Class<?> type) { |
186 | List<Field> fields = new ArrayList<Field>(); | 195 | List<Field> fields = new ArrayList<Field>(); |
@@ -197,21 +206,24 @@ public final class Reflections { | @@ -197,21 +206,24 @@ public final class Reflections { | ||
197 | } | 206 | } |
198 | 207 | ||
199 | /** | 208 | /** |
200 | - * TODO | 209 | + * @return All non static fields from a certain type, including fields declared in superclasses of this type. |
201 | */ | 210 | */ |
202 | public static List<Field> getNonStaticFields(Class<?> type) { | 211 | public static List<Field> getNonStaticFields(Class<?> type) { |
203 | List<Field> fields = new ArrayList<Field>(); | 212 | List<Field> fields = new ArrayList<Field>(); |
204 | 213 | ||
205 | if (type != null) { | 214 | if (type != null) { |
206 | - fields.addAll(Arrays.asList(getNonStaticDeclaredFields(type))); | ||
207 | - fields.addAll(getNonStaticFields(type.getSuperclass())); | 215 | + Class<?> currentType = type; |
216 | + while(currentType!=null && !"java.lang.Object".equals(currentType.getCanonicalName())){ | ||
217 | + fields.addAll(Arrays.asList(getNonStaticDeclaredFields(currentType))); | ||
218 | + currentType = currentType.getSuperclass(); | ||
219 | + } | ||
208 | } | 220 | } |
209 | 221 | ||
210 | return fields; | 222 | return fields; |
211 | } | 223 | } |
212 | 224 | ||
213 | /** | 225 | /** |
214 | - * TODO | 226 | + * Instantiate an object of the given type. The default constructor with no parameters is used. |
215 | */ | 227 | */ |
216 | public static <T> T instantiate(Class<T> clazz) { | 228 | public static <T> T instantiate(Class<T> clazz) { |
217 | T object = null; | 229 | T object = null; |
@@ -282,7 +294,7 @@ public final class Reflections { | @@ -282,7 +294,7 @@ public final class Reflections { | ||
282 | } | 294 | } |
283 | 295 | ||
284 | /** | 296 | /** |
285 | - * TODO | 297 | + * Return an URL to access a resource available to the active classloader for the calling thread. |
286 | */ | 298 | */ |
287 | public static URL getResourceAsURL(final String resource) { | 299 | public static URL getResourceAsURL(final String resource) { |
288 | ClassLoader classLoader = getClassLoaderForResource(resource); | 300 | ClassLoader classLoader = getClassLoaderForResource(resource); |
@@ -290,7 +302,7 @@ public final class Reflections { | @@ -290,7 +302,7 @@ public final class Reflections { | ||
290 | } | 302 | } |
291 | 303 | ||
292 | /** | 304 | /** |
293 | - * TODO | 305 | + * Loads a class with the given name using the active classloader for the current thread. |
294 | */ | 306 | */ |
295 | @SuppressWarnings("unchecked") | 307 | @SuppressWarnings("unchecked") |
296 | public static <T> Class<T> forName(final String className) throws ClassNotFoundException { | 308 | public static <T> Class<T> forName(final String className) throws ClassNotFoundException { |