Skip to content

Commit c737098

Browse files
committed
1 parent 9cd6516 commit c737098

File tree

4 files changed

+177
-125
lines changed

4 files changed

+177
-125
lines changed

openapi-processor-core/src/main/kotlin/io/openapiprocessor/core/writer/java/ApiWriter.kt

Lines changed: 12 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,9 @@ import io.openapiprocessor.core.converter.ApiOptions
99
import io.openapiprocessor.core.model.Api
1010
import io.openapiprocessor.core.model.Interface
1111
import io.openapiprocessor.core.model.datatypes.InterfaceDataType
12-
import io.openapiprocessor.core.model.datatypes.StringEnumDataType
1312
import io.openapiprocessor.core.model.datatypes.ModelDataType
14-
import io.openapiprocessor.core.writer.DefaultWriterFactory
15-
import io.openapiprocessor.core.writer.InitWriterTarget
16-
import io.openapiprocessor.core.writer.SourceFormatter
17-
import io.openapiprocessor.core.writer.WriterFactory
13+
import io.openapiprocessor.core.model.datatypes.StringEnumDataType
14+
import io.openapiprocessor.core.writer.*
1815
import java.io.StringWriter
1916
import java.io.Writer
2017

@@ -53,19 +50,6 @@ class ApiWriter(
5350
writer.close()
5451
}
5552

56-
private fun writeValidation() {
57-
if (!options.beanValidation)
58-
return
59-
60-
val vWriter = getWriter("${options.packageName}.validation", "Values")
61-
writeValues(vWriter)
62-
vWriter.close()
63-
64-
val vvWriter = getWriter("${options.packageName}.validation", "ValueValidator")
65-
writeValueValidator(vvWriter)
66-
vvWriter.close()
67-
}
68-
6953
private fun writeInterfaces(api: Api) {
7054
api.forEachInterface {
7155
val writer = getWriter(it.getPackageName(), it.getInterfaceName())
@@ -98,6 +82,16 @@ class ApiWriter(
9882
}
9983
}
10084

85+
private fun writeValidation() {
86+
validationWriter.write({ format(it) }, writerFactory)
87+
}
88+
89+
private fun writeAdditionalFiles() {
90+
additionalWriter.forEach {
91+
it(options, { format(it) }, writerFactory)
92+
}
93+
}
94+
10195
private fun writeInterface(writer: Writer, itf: Interface) {
10296
val raw = StringWriter()
10397
interfaceWriter.write(raw, itf)
@@ -128,18 +122,6 @@ class ApiWriter(
128122
writer.write(format(raw.toString()))
129123
}
130124

131-
private fun writeValues(writer: Writer) {
132-
val raw = StringWriter()
133-
validationWriter.writeValues(raw)
134-
writer.write(format(raw.toString()))
135-
}
136-
137-
private fun writeValueValidator(writer: Writer) {
138-
val raw = StringWriter()
139-
validationWriter.writeValueValidator(raw)
140-
writer.write(format(raw.toString()))
141-
}
142-
143125
private fun getWriter(packageName: String, className: String): Writer {
144126
return writerFactory.createWriter(packageName, className)
145127
}
@@ -148,7 +130,6 @@ class ApiWriter(
148130
if (!options.formatCode) {
149131
return raw
150132
}
151-
152133
return formatter.format(raw)
153134
}
154135
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
/*
2+
* Copyright 2023 https://github.com/openapi-processor/openapi-processor-base
3+
* PDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.openapiprocessor.core.writer.java
7+
8+
import io.openapiprocessor.core.converter.ApiOptions
9+
import java.io.Writer
10+
11+
class StringValuesWriter(val options: ApiOptions) {
12+
13+
fun writeValues(target: Writer) {
14+
target.write("""
15+
package ${options.packageName}.validation;
16+
17+
import ${options.beanValidationFormat}.validation.Constraint;
18+
import ${options.beanValidationFormat}.validation.Payload;
19+
import java.lang.annotation.*;
20+
21+
@Target({ElementType.FIELD, ElementType.PARAMETER})
22+
@Retention(RetentionPolicy.RUNTIME)
23+
@Constraint(validatedBy = ValueValidator.class)
24+
@Documented
25+
public @interface Values {
26+
String message() default "Invalid value. Should be one of values.";
27+
Class<?>[] groups() default {};
28+
Class<? extends Payload>[] payload() default {};
29+
String[] values() default {};
30+
}
31+
32+
""".trimIndent())
33+
}
34+
35+
fun writeValueValidator(target: Writer) {
36+
target.write("""
37+
package ${options.packageName}.validation;
38+
39+
import jakarta.validation.ConstraintValidator;
40+
import jakarta.validation.ConstraintValidatorContext;
41+
42+
import java.util.Arrays;
43+
44+
public class ValueValidator implements ConstraintValidator<Values, String> {
45+
private String[] values;
46+
47+
@Override
48+
public void initialize (Values constraintAnnotation) {
49+
values = constraintAnnotation.values();
50+
}
51+
52+
@Override
53+
public boolean isValid (String value, ConstraintValidatorContext context) {
54+
return value != null && Arrays.asList(values).contains(value);
55+
}
56+
}
57+
58+
""".trimIndent())
59+
}
60+
}

openapi-processor-core/src/main/kotlin/io/openapiprocessor/core/writer/java/ValidationWriter.kt

Lines changed: 33 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -6,55 +6,45 @@
66
package io.openapiprocessor.core.writer.java
77

88
import io.openapiprocessor.core.converter.ApiOptions
9+
import io.openapiprocessor.core.writer.SourceFormatter
10+
import io.openapiprocessor.core.writer.WriterFactory
11+
import java.io.StringWriter
912
import java.io.Writer
1013

11-
class ValidationWriter(val options: ApiOptions) {
12-
13-
fun writeValues(target: Writer) {
14-
target.write("""
15-
package ${options.packageName}.validation;
16-
17-
import ${options.beanValidationFormat}.validation.Constraint;
18-
import ${options.beanValidationFormat}.validation.Payload;
19-
import java.lang.annotation.*;
20-
21-
@Target({ElementType.FIELD, ElementType.PARAMETER})
22-
@Retention(RetentionPolicy.RUNTIME)
23-
@Constraint(validatedBy = ValueValidator.class)
24-
@Documented
25-
public @interface Values {
26-
String message() default "Invalid value. Should be one of values.";
27-
Class<?>[] groups() default {};
28-
Class<? extends Payload>[] payload() default {};
29-
String[] values() default {};
30-
}
31-
32-
""".trimIndent())
14+
class ValidationWriter(
15+
private val options: ApiOptions,
16+
private val stringValuesWriter: StringValuesWriter = StringValuesWriter(options)
17+
) {
18+
fun write(formatter: SourceFormatter, writerFactory: WriterFactory) {
19+
if (!options.beanValidation)
20+
return
21+
22+
val annotationWriter = createAnnotationWriter(writerFactory)
23+
writeValues(annotationWriter, formatter)
24+
annotationWriter.close()
25+
26+
val validatorWriter = createValidatorWriter(writerFactory)
27+
writeValueValidator(validatorWriter, formatter)
28+
validatorWriter.close()
3329
}
3430

35-
fun writeValueValidator(target: Writer) {
36-
target.write("""
37-
package ${options.packageName}.validation;
38-
39-
import jakarta.validation.ConstraintValidator;
40-
import jakarta.validation.ConstraintValidatorContext;
41-
42-
import java.util.Arrays;
43-
44-
public class ValueValidator implements ConstraintValidator<Values, String> {
45-
private String[] values;
31+
private fun createAnnotationWriter(writerFactory: WriterFactory): Writer {
32+
return writerFactory.createWriter("${options.packageName}.validation", "Values")
33+
}
4634

47-
@Override
48-
public void initialize (Values constraintAnnotation) {
49-
values = constraintAnnotation.values();
50-
}
35+
private fun createValidatorWriter(writerFactory: WriterFactory): Writer {
36+
return writerFactory.createWriter("${options.packageName}.validation", "ValueValidator")
37+
}
5138

52-
@Override
53-
public boolean isValid (String value, ConstraintValidatorContext context) {
54-
return value != null && Arrays.asList(values).contains(value);
55-
}
56-
}
39+
private fun writeValues(writer: Writer, formatter: SourceFormatter) {
40+
val raw = StringWriter()
41+
stringValuesWriter.writeValues(raw)
42+
writer.write(formatter.format(raw.toString()))
43+
}
5744

58-
""".trimIndent())
45+
private fun writeValueValidator(writer: Writer, formatter: SourceFormatter) {
46+
val raw = StringWriter()
47+
stringValuesWriter.writeValueValidator(raw)
48+
writer.write(formatter.format(raw.toString()))
5949
}
6050
}

0 commit comments

Comments
 (0)