Commit 15ad54404bfccf150d77e1ec3c79edf7057b9fd5

Authored by Dancovich
1 parent 466843a6
Exists in master

-Classe agora não é mais "final"

-Editadas documentações que faltavam
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 {