Skip to content

Commit 3c25020

Browse files
Parameter object in Input class
- added `Input.from(Parameters)` method - deprecated `Input.fromClassNamesAndJaxrsApplication` methods
1 parent 2563765 commit 3c25020

File tree

4 files changed

+95
-55
lines changed
  • typescript-generator-core/src
  • typescript-generator-gradle-plugin/src/main/java/cz/habarta/typescript/generator/gradle
  • typescript-generator-maven-plugin/src/main/java/cz/habarta/typescript/generator/maven

4 files changed

+95
-55
lines changed

typescript-generator-core/src/main/java/cz/habarta/typescript/generator/Input.java

Lines changed: 57 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -39,67 +39,93 @@ public static Input from(Type... types) {
3939
return new Input(sourceTypes);
4040
}
4141

42+
@Deprecated
4243
public static Input fromClassNamesAndJaxrsApplication(List<String> classNames, List<String> classNamePatterns, String jaxrsApplicationClassName,
4344
boolean automaticJaxrsApplication, Predicate<String> isClassNameExcluded, URLClassLoader classLoader, boolean debug) {
4445
return fromClassNamesAndJaxrsApplication(classNames, classNamePatterns, null, null, null,
45-
jaxrsApplicationClassName, automaticJaxrsApplication, isClassNameExcluded, classLoader,
46-
debug);
46+
jaxrsApplicationClassName, automaticJaxrsApplication, isClassNameExcluded, classLoader,
47+
debug);
4748
}
4849

50+
@Deprecated
4951
public static Input fromClassNamesAndJaxrsApplication(List<String> classNames,
50-
List<String> classNamePatterns, List<String> classesWithAnnotations,
51-
List<String> classesImplementingInterfaces, List<String> classesExtendingClasses,
52-
String jaxrsApplicationClassName,
53-
boolean automaticJaxrsApplication, Predicate<String> isClassNameExcluded,
54-
URLClassLoader classLoader, boolean debug) {
52+
List<String> classNamePatterns, List<String> classesWithAnnotations,
53+
List<String> classesImplementingInterfaces, List<String> classesExtendingClasses,
54+
String jaxrsApplicationClassName,
55+
boolean automaticJaxrsApplication, Predicate<String> isClassNameExcluded,
56+
URLClassLoader classLoader, boolean debug) {
57+
final Parameters parameters = new Parameters();
58+
parameters.classNames = classNames;
59+
parameters.classNamePatterns = classNamePatterns;
60+
parameters.classesWithAnnotations = classesWithAnnotations;
61+
parameters.classesImplementingInterfaces = classesImplementingInterfaces;
62+
parameters.classesExtendingClasses = classesExtendingClasses;
63+
parameters.jaxrsApplicationClassName = jaxrsApplicationClassName;
64+
parameters.automaticJaxrsApplication = automaticJaxrsApplication;
65+
parameters.isClassNameExcluded = isClassNameExcluded;
66+
parameters.classLoader = classLoader;
67+
parameters.debug = debug;
68+
return from(parameters);
69+
}
70+
71+
public static class Parameters {
72+
public List<String> classNames;
73+
public List<String> classNamePatterns;
74+
public List<String> classesWithAnnotations;
75+
public List<String> classesImplementingInterfaces;
76+
public List<String> classesExtendingClasses;
77+
public String jaxrsApplicationClassName;
78+
public boolean automaticJaxrsApplication;
79+
public Predicate<String> isClassNameExcluded;
80+
public URLClassLoader classLoader;
81+
public boolean debug;
82+
}
83+
84+
public static Input from(Parameters parameters) {
5585
final ClassLoader originalContextClassLoader = Thread.currentThread().getContextClassLoader();
5686
try {
57-
if (classLoader != null) {
58-
Thread.currentThread().setContextClassLoader(classLoader);
87+
if (parameters.classLoader != null) {
88+
Thread.currentThread().setContextClassLoader(parameters.classLoader);
5989
}
60-
try (final ClasspathScanner classpathScanner = new ClasspathScanner(classLoader, debug)) {
90+
try (final ClasspathScanner classpathScanner = new ClasspathScanner(parameters.classLoader, parameters.debug)) {
6191
final List<SourceType<Type>> types = new ArrayList<>();
62-
if (classNames != null) {
63-
types.addAll(fromClassNames(classNames));
92+
if (parameters.classNames != null) {
93+
types.addAll(fromClassNames(parameters.classNames));
6494
}
65-
if (classNamePatterns != null) {
66-
types.addAll(fromClassNamePatterns(classpathScanner.getScanResult(), classNamePatterns));
95+
if (parameters.classNamePatterns != null) {
96+
types.addAll(fromClassNamePatterns(classpathScanner.getScanResult(), parameters.classNamePatterns));
6797
}
68-
if (classesImplementingInterfaces != null) {
98+
if (parameters.classesImplementingInterfaces != null) {
6999
final ScanResult scanResult = classpathScanner.getScanResult();
70-
final List<SourceType<Type>> c = fromClassNames(
71-
classesImplementingInterfaces.stream()
72-
.flatMap(interf -> scanResult.getClassesImplementing(interf).getNames()
73-
.stream())
100+
final List<SourceType<Type>> c = fromClassNames(parameters.classesImplementingInterfaces.stream()
101+
.flatMap(interf -> scanResult.getClassesImplementing(interf).getNames().stream())
74102
.distinct()
75103
.collect(Collectors.toList())
76104
);
77105
types.addAll(c);
78106
}
79-
if (classesExtendingClasses != null) {
107+
if (parameters.classesExtendingClasses != null) {
80108
final ScanResult scanResult = classpathScanner.getScanResult();
81-
final List<SourceType<Type>> c = fromClassNames(
82-
classesExtendingClasses.stream()
83-
.flatMap(superclass -> scanResult.getSubclasses(superclass).getNames()
84-
.stream())
109+
final List<SourceType<Type>> c = fromClassNames(parameters.classesExtendingClasses.stream()
110+
.flatMap(superclass -> scanResult.getSubclasses(superclass).getNames().stream())
85111
.distinct()
86112
.collect(Collectors.toList())
87113
);
88114
types.addAll(c);
89115
}
90-
if (classesWithAnnotations != null) {
116+
if (parameters.classesWithAnnotations != null) {
91117
final ScanResult scanResult = classpathScanner.getScanResult();
92-
types.addAll(fromClassNames(classesWithAnnotations.stream()
118+
types.addAll(fromClassNames(parameters.classesWithAnnotations.stream()
93119
.flatMap(annotation -> scanResult.getClassesWithAnnotation(annotation).getNames().stream())
94120
.distinct()
95121
.collect(Collectors.toList())
96122
));
97123
}
98-
if (jaxrsApplicationClassName != null) {
99-
types.addAll(fromClassNames(Arrays.asList(jaxrsApplicationClassName)));
124+
if (parameters.jaxrsApplicationClassName != null) {
125+
types.addAll(fromClassNames(Arrays.asList(parameters.jaxrsApplicationClassName)));
100126
}
101-
if (automaticJaxrsApplication) {
102-
types.addAll(JaxrsApplicationScanner.scanAutomaticJaxrsApplication(classpathScanner.getScanResult(), isClassNameExcluded));
127+
if (parameters.automaticJaxrsApplication) {
128+
types.addAll(JaxrsApplicationScanner.scanAutomaticJaxrsApplication(classpathScanner.getScanResult(), parameters.isClassNameExcluded));
103129
}
104130
if (types.isEmpty()) {
105131
final String errorMessage = "No input classes found.";
@@ -173,7 +199,7 @@ private static List<SourceType<Type>> fromClassNames(List<String> classNames) {
173199
// skip synthetic classes (as those generated by java compiler for switch with enum)
174200
// and anonymous classes (should not be processed and they do not have SimpleName)
175201
if (!cls.isSynthetic() && !cls.isAnonymousClass()) {
176-
types.add(new SourceType<Type>(cls, null, null));
202+
types.add(new SourceType<>(cls, null, null));
177203
}
178204
}
179205
return types;

typescript-generator-core/src/test/java/cz/habarta/typescript/generator/InputTest.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,23 +68,26 @@ public void testMatches() {
6868

6969
@Test
7070
public void testClassesWithAnnotations() {
71-
final String output = new TypeScriptGenerator(TestUtils.settings()).generateTypeScript(Input.fromClassNamesAndJaxrsApplication(
72-
null, null, Arrays.asList(MyJsonClass.class.getName()), null, null, null, false, null, null, false));
71+
final Input.Parameters parameters = new Input.Parameters();
72+
parameters.classesWithAnnotations = Arrays.asList(MyJsonClass.class.getName());
73+
final String output = new TypeScriptGenerator(TestUtils.settings()).generateTypeScript(Input.from(parameters));
7374
Assert.assertTrue(output.contains("name: string;"));
7475
}
7576

7677
@Test
7778
public void testClassesImplementingInterfaces() {
78-
final String output = new TypeScriptGenerator(TestUtils.settings()).generateTypeScript(Input.fromClassNamesAndJaxrsApplication(
79-
null, null, null, Arrays.asList(MyJsonInterface.class.getName()), null, null, false, null, null, false));
79+
final Input.Parameters parameters = new Input.Parameters();
80+
parameters.classesImplementingInterfaces = Arrays.asList(MyJsonInterface.class.getName());
81+
final String output = new TypeScriptGenerator(TestUtils.settings()).generateTypeScript(Input.from(parameters));
8082
Assert.assertTrue(output.contains("firstName: string;"));
8183
Assert.assertTrue(output.contains("lastName: string;"));
8284
}
8385

8486
@Test
8587
public void testClassesExtendingClasses() {
86-
final String output = new TypeScriptGenerator(TestUtils.settings()).generateTypeScript(Input.fromClassNamesAndJaxrsApplication(
87-
null, null, null, null, Arrays.asList(MyJsonInterfaceImpl.class.getName()), null, false, null, null, false));
88+
final Input.Parameters parameters = new Input.Parameters();
89+
parameters.classesExtendingClasses = Arrays.asList(MyJsonInterfaceImpl.class.getName());
90+
final String output = new TypeScriptGenerator(TestUtils.settings()).generateTypeScript(Input.from(parameters));
8891
Assert.assertTrue(output.contains("lastName: string;"));
8992
}
9093

typescript-generator-gradle-plugin/src/main/java/cz/habarta/typescript/generator/gradle/GenerateTask.java

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -210,20 +210,25 @@ public void generate() throws Exception {
210210
settings.jackson2ModuleDiscovery = jackson2ModuleDiscovery;
211211
settings.loadJackson2Modules(classLoader, jackson2Modules);
212212
settings.classLoader = classLoader;
213+
214+
final Input.Parameters parameters = new Input.Parameters();
215+
parameters.classNames = classes;
216+
parameters.classNamePatterns = classPatterns;
217+
parameters.classesWithAnnotations = classesWithAnnotations;
218+
parameters.classesImplementingInterfaces = classesImplementingInterfaces;
219+
parameters.classesExtendingClasses = classesExtendingClasses;
220+
parameters.jaxrsApplicationClassName = classesFromJaxrsApplication;
221+
parameters.automaticJaxrsApplication = classesFromAutomaticJaxrsApplication;
222+
parameters.isClassNameExcluded = settings.getExcludeFilter();
223+
parameters.classLoader = classLoader;
224+
parameters.debug = loggingLevel == Logger.Level.Debug;
225+
213226
final File output = outputFile != null
214227
? getProject().file(outputFile)
215228
: new File(new File(getProject().getBuildDir(), "typescript-generator"), getProject().getName() + settings.getExtension());
216229
settings.validateFileName(output);
217230

218-
// TypeScriptGenerator
219-
new TypeScriptGenerator(settings).generateTypeScript(
220-
Input.fromClassNamesAndJaxrsApplication(classes, classPatterns, classesWithAnnotations,
221-
classesImplementingInterfaces, classesExtendingClasses,
222-
classesFromJaxrsApplication,
223-
classesFromAutomaticJaxrsApplication, settings.getExcludeFilter(),
224-
classLoader, loggingLevel == Logger.Level.Debug),
225-
Output.to(output)
226-
);
231+
new TypeScriptGenerator(settings).generateTypeScript(Input.from(parameters), Output.to(output));
227232
}
228233
}
229234

typescript-generator-maven-plugin/src/main/java/cz/habarta/typescript/generator/maven/GenerateMojo.java

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -799,20 +799,26 @@ public void execute() {
799799
settings.jackson2ModuleDiscovery = jackson2ModuleDiscovery;
800800
settings.loadJackson2Modules(classLoader, jackson2Modules);
801801
settings.classLoader = classLoader;
802+
803+
final Input.Parameters parameters = new Input.Parameters();
804+
parameters.classNames = classes;
805+
parameters.classNamePatterns = classPatterns;
806+
parameters.classesWithAnnotations = classesWithAnnotations;
807+
parameters.classesImplementingInterfaces = classesImplementingInterfaces;
808+
parameters.classesExtendingClasses = classesExtendingClasses;
809+
parameters.jaxrsApplicationClassName = classesFromJaxrsApplication;
810+
parameters.automaticJaxrsApplication = classesFromAutomaticJaxrsApplication;
811+
parameters.isClassNameExcluded = settings.getExcludeFilter();
812+
parameters.classLoader = classLoader;
813+
parameters.debug = loggingLevel == Logger.Level.Debug;
814+
802815
final File output = outputFile != null
803816
? outputFile
804817
: new File(new File(projectBuildDirectory, "typescript-generator"), project.getArtifactId() + settings.getExtension());
805818
settings.validateFileName(output);
806819

807-
// TypeScriptGenerator
808-
new TypeScriptGenerator(settings).generateTypeScript(
809-
Input.fromClassNamesAndJaxrsApplication(classes, classPatterns, classesWithAnnotations,
810-
classesImplementingInterfaces, classesExtendingClasses,
811-
classesFromJaxrsApplication,
812-
classesFromAutomaticJaxrsApplication, settings.getExcludeFilter(),
813-
classLoader, loggingLevel == Logger.Level.Debug),
814-
Output.to(output)
815-
);
820+
new TypeScriptGenerator(settings).generateTypeScript(Input.from(parameters), Output.to(output));
821+
816822
} catch (IOException e) {
817823
throw new RuntimeException(e);
818824
}

0 commit comments

Comments
 (0)