Skip to content

Commit a97e9d8

Browse files
committed
Allow reducing the generated record visibility
1 parent abb742d commit a97e9d8

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

api/src/main/java/com/cosium/json_schema_to_java_record_api/JsonSchemaConfiguration.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,15 @@
1818
*/
1919
String javaTypeQualifiedName() default "";
2020

21+
JavaTypeVisibility javaTypeVisibility() default JavaTypeVisibility.PUBLIC;
22+
2123
/**
2224
* @return The interfaces that the generated record must implement.
2325
*/
2426
String[] javaInterfaceQualifiedNames() default {};
27+
28+
enum JavaTypeVisibility {
29+
PUBLIC,
30+
DEFAULT
31+
}
2532
}

core/src/main/java/com/cosium/json_schema_to_java_record/JsonSchemaContent.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -128,16 +128,24 @@ public TypeName writeJavaType(
128128
return className;
129129
}
130130

131+
Modifier[] javaTypeVisibility =
132+
switch (Optional.ofNullable(schemaConfiguration)
133+
.map(JsonSchemaConfiguration::javaTypeVisibility)
134+
.orElse(JsonSchemaConfiguration.JavaTypeVisibility.PUBLIC)) {
135+
case PUBLIC -> new Modifier[] {Modifier.PUBLIC};
136+
case DEFAULT -> new Modifier[0];
137+
};
138+
131139
TypeSpec.Builder typeBuilder;
132140
if (enumeration != null) {
133-
typeBuilder = TypeSpec.enumBuilder(className).addModifiers(Modifier.PUBLIC);
141+
typeBuilder = TypeSpec.enumBuilder(className).addModifiers(javaTypeVisibility);
134142
enumeration.stream().map(String::valueOf).forEach(typeBuilder::addEnumConstant);
135143
} else {
136-
typeBuilder = TypeSpec.recordBuilder(className).addModifiers(Modifier.PUBLIC);
144+
typeBuilder = TypeSpec.recordBuilder(className).addModifiers(javaTypeVisibility);
137145

138146
MethodSpec.Builder constructorBuilder = MethodSpec.constructorBuilder();
139147
MethodSpec.Builder compactConstructorBuilder =
140-
MethodSpec.compactConstructorBuilder().addModifiers(Modifier.PUBLIC);
148+
MethodSpec.compactConstructorBuilder().addModifiers(javaTypeVisibility);
141149

142150
for (Map.Entry<String, JsonSchemaContent> property : properties().entrySet()) {
143151

@@ -151,7 +159,7 @@ public TypeName writeJavaType(
151159
javaTypes,
152160
addJsonRelatedAnnotations(
153161
MethodSpec.methodBuilder(propertyName), propertyName))
154-
.addModifiers(Modifier.PUBLIC)
162+
.addModifiers(javaTypeVisibility)
155163
.returns(String.class)
156164
.addStatement("return $S", propertyConstValue)
157165
.build());

0 commit comments

Comments
 (0)