Commit d78978afce4d09372d4eb43a0935f6a7fa7576ce

Authored by Victor Costa
1 parent aab840a9
Exists in master

Ajuste para considerar uma hierarquia de qualquer tamanho para classes que herdam de DelegateCrud

impl/core/src/main/java/br/gov/frameworkdemoiselle/util/Reflections.java
... ... @@ -58,7 +58,7 @@ public final class Reflections {
58 58 try {
59 59 paramType = (ParameterizedType) type;
60 60 } catch (ClassCastException cause) {
61   - paramType = (ParameterizedType) ((Class<T>) type).getGenericSuperclass();
  61 + return getGenericTypeArgument((Class<T>) type, idx);
62 62 }
63 63  
64 64 return (Class<T>) paramType.getActualTypeArguments()[idx];
... ...
impl/core/src/test/java/br/gov/frameworkdemoiselle/util/ReflectionsTest.java
... ... @@ -56,6 +56,12 @@ public class ReflectionsTest {
56 56 assertEquals(Long.class, Reflections.getGenericTypeArgument(members[0], 0));
57 57 assertEquals(String.class, Reflections.getGenericTypeArgument(members[1], 0));
58 58 }
  59 +
  60 + @Test
  61 + public void testGetGenericTypeArgumentClassMultipleChildren() {
  62 + assertEquals(Long.class, Reflections.getGenericTypeArgument(OtherClass3.class, 0));
  63 + assertEquals(String.class, Reflections.getGenericTypeArgument(OtherClass3.class, 1));
  64 + }
59 65 }
60 66  
61 67 class SomeClass<T, I> {
... ... @@ -71,3 +77,11 @@ class OtherClass extends SomeClass&lt;Long, String&gt; {
71 77  
72 78 public Class<String> text;
73 79 }
  80 +
  81 +class OtherClass2 extends OtherClass {
  82 +
  83 +}
  84 +
  85 +class OtherClass3 extends OtherClass2 {
  86 +
  87 +}
... ...