Skip to content

Commit 5402b5d

Browse files
committed
Enable configuring JsonTypeInfo for Java generation in Maven plugin
1 parent 860bb61 commit 5402b5d

File tree

2 files changed

+22
-13
lines changed

2 files changed

+22
-13
lines changed

documentation/developer-guide/modules/tooling-guide/pages/maven-plugin.adoc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ are replaced using `packageName` | `String` | none | {nok}
118118
| `templateFile` | The path and name of the velocity template file containing the macro library. See xref:java-aspect-tooling.adoc#providing-custom-macros-for-code-generation[Providing Custom Macros for Code Generation]. | `String` | none | {nok}
119119
| `executeLibraryMacros` | Execute the macros provided in the velocity macro library. | `Boolean` | `false` | {nok}
120120
| `disableJacksonAnnotations` | Leads to generated Java code that does not contain https://github.com/FasterXML/jackson[Jackson] annotations. | `Boolean` | `false` | {nok}
121+
| `jsonTypeInfo` | If Jackson annotations are enabled, determines the value of `JsonTypeInfo.Id`, e.g., `NAME`. | `String` | `DEDUCTION` | {nok}
121122
| `skip` | Skip execution of plugin and generation | `Boolean` | `false` | {nok}
122123
| `namePrefix` | Name prefix for generated Aspect, Entity Java classes | `String` | none | {nok}
123124
| `namePostfix` | Name postfix for generated Aspect, Entity Java classes | `String` | none | {nok}

tools/esmf-aspect-model-maven-plugin/src/main/java/org/eclipse/esmf/aspectmodel/GenerateJavaClasses.java

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -36,21 +36,29 @@ public class GenerateJavaClasses extends CodeGenerationMojo {
3636
@Parameter( defaultValue = "false" )
3737
private boolean disableJacksonAnnotations;
3838

39+
@Parameter( defaultValue = "deduction" )
40+
protected String jsonTypeInfo;
41+
3942
@Override
4043
public void executeGeneration() throws MojoExecutionException {
41-
final Set<Aspect> aspects = loadAspects();
42-
for ( final Aspect aspect : aspects ) {
43-
final File templateLibFile = Path.of( templateFile ).toFile();
44-
validateParameters( templateLibFile );
45-
final JavaCodeGenerationConfig config = JavaCodeGenerationConfigBuilder.builder()
46-
.enableJacksonAnnotations( !disableJacksonAnnotations )
47-
.packageName( determinePackageName( aspect ) )
48-
.executeLibraryMacros( executeLibraryMacros )
49-
.templateLibFile( templateLibFile )
50-
.namePrefix( namePrefix )
51-
.namePostfix( namePostfix )
52-
.build();
53-
new AspectModelJavaGenerator( aspect, config ).generate( nameMapper );
44+
try {
45+
final Set<Aspect> aspects = loadAspects();
46+
for ( final Aspect aspect : aspects ) {
47+
final File templateLibFile = Path.of( templateFile ).toFile();
48+
validateParameters( templateLibFile );
49+
final JavaCodeGenerationConfig config = JavaCodeGenerationConfigBuilder.builder()
50+
.enableJacksonAnnotations( !disableJacksonAnnotations )
51+
.jsonTypeInfo( JavaCodeGenerationConfig.JsonTypeInfoType.valueOf( jsonTypeInfo.toUpperCase() ) )
52+
.packageName( determinePackageName( aspect ) )
53+
.executeLibraryMacros( executeLibraryMacros )
54+
.templateLibFile( templateLibFile )
55+
.namePrefix( namePrefix )
56+
.namePostfix( namePostfix )
57+
.build();
58+
new AspectModelJavaGenerator( aspect, config ).generate( nameMapper );
59+
}
60+
} catch ( final Exception exception ) {
61+
throw new MojoExecutionException( "Could not generate Java classes for Aspect Models", exception );
5462
}
5563
LOG.info( "Successfully generated Java classes for Aspect Models." );
5664
}

0 commit comments

Comments
 (0)