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,7 +58,7 @@ public final class Reflections { | ||
| 58 | try { | 58 | try { |
| 59 | paramType = (ParameterizedType) type; | 59 | paramType = (ParameterizedType) type; |
| 60 | } catch (ClassCastException cause) { | 60 | } catch (ClassCastException cause) { |
| 61 | - paramType = (ParameterizedType) ((Class<T>) type).getGenericSuperclass(); | 61 | + return getGenericTypeArgument((Class<T>) type, idx); |
| 62 | } | 62 | } |
| 63 | 63 | ||
| 64 | return (Class<T>) paramType.getActualTypeArguments()[idx]; | 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,6 +56,12 @@ public class ReflectionsTest { | ||
| 56 | assertEquals(Long.class, Reflections.getGenericTypeArgument(members[0], 0)); | 56 | assertEquals(Long.class, Reflections.getGenericTypeArgument(members[0], 0)); |
| 57 | assertEquals(String.class, Reflections.getGenericTypeArgument(members[1], 0)); | 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 | class SomeClass<T, I> { | 67 | class SomeClass<T, I> { |
| @@ -71,3 +77,11 @@ class OtherClass extends SomeClass<Long, String> { | @@ -71,3 +77,11 @@ class OtherClass extends SomeClass<Long, String> { | ||
| 71 | 77 | ||
| 72 | public Class<String> text; | 78 | public Class<String> text; |
| 73 | } | 79 | } |
| 80 | + | ||
| 81 | +class OtherClass2 extends OtherClass { | ||
| 82 | + | ||
| 83 | +} | ||
| 84 | + | ||
| 85 | +class OtherClass3 extends OtherClass2 { | ||
| 86 | + | ||
| 87 | +} |