2
2
package cz .habarta .typescript .generator ;
3
3
4
4
import cz .habarta .typescript .generator .parser .SourceType ;
5
+ import cz .habarta .typescript .generator .util .Utils ;
5
6
import io .github .classgraph .ScanResult ;
6
7
import java .lang .reflect .Constructor ;
7
8
import java .lang .reflect .Type ;
8
9
import java .util .ArrayList ;
9
10
import java .util .Collections ;
10
- import java .util .Comparator ;
11
11
import java .util .List ;
12
+ import java .util .Set ;
12
13
import java .util .function .Predicate ;
13
- import javax .ws .rs .Path ;
14
- import javax .ws .rs .core .Application ;
15
14
16
15
17
16
public class JaxrsApplicationScanner {
@@ -23,10 +22,18 @@ public static List<SourceType<Type>> scanJaxrsApplication(Class<?> jaxrsApplicat
23
22
TypeScriptGenerator .getLogger ().info ("Scanning JAX-RS application: " + jaxrsApplicationClass .getName ());
24
23
final Constructor <?> constructor = jaxrsApplicationClass .getDeclaredConstructor ();
25
24
constructor .setAccessible (true );
26
- final Application application = (Application ) constructor .newInstance ();
25
+ final Object instance = constructor .newInstance ();
26
+ final Set <Class <?>> applicationClasses ;
27
+ if (instance instanceof jakarta .ws .rs .core .Application ) {
28
+ applicationClasses = ((jakarta .ws .rs .core .Application ) instance ).getClasses ();
29
+ } else if (instance instanceof javax .ws .rs .core .Application ) {
30
+ applicationClasses = ((javax .ws .rs .core .Application ) instance ).getClasses ();
31
+ } else {
32
+ applicationClasses = Collections .emptySet ();
33
+ }
27
34
final List <Class <?>> resourceClasses = new ArrayList <>();
28
- for (Class <?> cls : application . getClasses () ) {
29
- if (cls .isAnnotationPresent (Path .class )) {
35
+ for (Class <?> cls : applicationClasses ) {
36
+ if (cls .isAnnotationPresent (jakarta . ws . rs . Path . class ) || cls . isAnnotationPresent ( javax . ws . rs . Path .class )) {
30
37
resourceClasses .add (cls );
31
38
}
32
39
}
@@ -39,7 +46,10 @@ public static List<SourceType<Type>> scanJaxrsApplication(Class<?> jaxrsApplicat
39
46
}
40
47
41
48
public static List <SourceType <Type >> scanAutomaticJaxrsApplication (ScanResult scanResult , Predicate <String > isClassNameExcluded ) {
42
- final List <String > namesOfResourceClasses = scanResult .getClassesWithAnnotation (Path .class .getName ()).getNames ();
49
+ final List <String > namesOfResourceClasses = Utils .concat (
50
+ scanResult .getClassesWithAnnotation (jakarta .ws .rs .Path .class .getName ()).getNames (),
51
+ scanResult .getClassesWithAnnotation (javax .ws .rs .Path .class .getName ()).getNames ()
52
+ );
43
53
final List <Class <?>> resourceClasses = Input .loadClasses (namesOfResourceClasses );
44
54
TypeScriptGenerator .getLogger ().info (String .format ("Found %d root resources." , resourceClasses .size ()));
45
55
return new JaxrsApplicationScanner ().scanJaxrsApplication (null , resourceClasses , isClassNameExcluded );
@@ -53,19 +63,14 @@ private static RuntimeException reportError(ReflectiveOperationException e) {
53
63
}
54
64
55
65
List <SourceType <Type >> scanJaxrsApplication (Class <?> applicationClass , List <Class <?>> resourceClasses , Predicate <String > isClassNameExcluded ) {
56
- Collections .sort (resourceClasses , new Comparator <Class <?>>() {
57
- @ Override
58
- public int compare (Class <?> o1 , Class <?> o2 ) {
59
- return o1 .getName ().compareToIgnoreCase (o2 .getName ());
60
- }
61
- });
66
+ Collections .sort (resourceClasses , (o1 , o2 ) -> o1 .getName ().compareToIgnoreCase (o2 .getName ()));
62
67
final List <SourceType <Type >> sourceTypes = new ArrayList <>();
63
68
if (applicationClass != null ) {
64
- sourceTypes .add (new SourceType <Type >(applicationClass ));
69
+ sourceTypes .add (new SourceType <>(applicationClass ));
65
70
}
66
71
for (Class <?> resourceClass : resourceClasses ) {
67
72
if (isClassNameExcluded == null || !isClassNameExcluded .test (resourceClass .getName ())) {
68
- sourceTypes .add (new SourceType <Type >(resourceClass ));
73
+ sourceTypes .add (new SourceType <>(resourceClass ));
69
74
}
70
75
}
71
76
return sourceTypes ;
0 commit comments