Commit d78978afce4d09372d4eb43a0935f6a7fa7576ce
1 parent
aab840a9
Exists in
master
Ajuste para considerar uma hierarquia de qualquer tamanho para classes que herdam de DelegateCrud
Showing
2 changed files
with
15 additions
and
1 deletions
Show diff stats
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<Long, String> { |
| 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 | +} | ... | ... |