1
1
package com .fasterxml .jackson .failing ;
2
2
3
-
4
- import com .fasterxml .jackson .databind .JavaType ;
5
- import com .fasterxml .jackson .databind .ObjectMapper ;
6
- import org .junit .Test ;
7
-
8
3
import java .lang .reflect .Method ;
9
4
import java .lang .reflect .Type ;
10
5
11
- import static org .junit .Assert .assertEquals ;
6
+ import com .fasterxml .jackson .databind .*;
7
+ import com .fasterxml .jackson .databind .introspect .AnnotatedClass ;
8
+ import com .fasterxml .jackson .databind .introspect .AnnotatedMethod ;
9
+ import com .fasterxml .jackson .databind .introspect .AnnotatedParameter ;
12
10
13
- public class GenericParameterTypeFactory1456Test {
11
+ public class GenericParameterTypeFactory1456Test extends BaseMapTest
12
+ {
14
13
public static class BaseController <Entity extends BaseEntity > {
15
14
public void process (Entity entity ) {}
16
15
}
@@ -21,12 +20,26 @@ public static class BaseEntity {}
21
20
22
21
public static class ImplEntity extends BaseEntity {}
23
22
24
- @ Test
25
- public void testGenericParameterHierarchy () throws NoSuchMethodException {
23
+ private final ObjectMapper MAPPER = new ObjectMapper ();
24
+
25
+ public void testGenericParameterDirect () throws Exception
26
+ {
26
27
Method proceed = BaseController .class .getMethod ("process" , BaseEntity .class );
27
28
Type entityType = proceed .getGenericParameterTypes ()[0 ];
28
29
29
- JavaType resolvedType = new ObjectMapper () .getTypeFactory ().constructType (entityType , ImplController .class );
30
+ JavaType resolvedType = MAPPER .getTypeFactory ().constructType (entityType , ImplController .class );
30
31
assertEquals (ImplEntity .class , resolvedType .getRawClass ());
31
32
}
33
+
34
+ public void testGenericParameterViaClass () throws Exception
35
+ {
36
+ BeanDescription desc = MAPPER .getDeserializationConfig ().introspect (
37
+ MAPPER .constructType (ImplController .class ));
38
+ AnnotatedClass ac = desc .getClassInfo ();
39
+ AnnotatedMethod m = ac .findMethod ("process" , new Class <?>[] { BaseEntity .class });
40
+ assertNotNull (m );
41
+ assertEquals (1 , m .getParameterCount ());
42
+ AnnotatedParameter param = m .getParameter (0 );
43
+ assertEquals (ImplEntity .class , param .getType ().getRawClass ());
44
+ }
32
45
}
0 commit comments