Skip to content

Commit a3d27c3

Browse files
committed
Enable configuring JsonTypeInfo for Java generation in samm-cli
1 parent 5402b5d commit a3d27c3

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

documentation/developer-guide/modules/tooling-guide/pages/samm-cli.adoc

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,12 +105,14 @@ of model resolution] for more information.
105105
| _--language, -l_ : the language from the model for which the diagram should be
106106
generated (default: en) |
107107
| _--custom-resolver_ : use an external resolver for the resolution of the model elements | `samm aspect AspectModel.ttl to svg --custom-resolver "java -jar resolver.jar"`
108-
.10+| [[aspect-to-java]] aspect <model> to java | Generate Java classes from an Aspect Model | `samm aspect AspectModel.ttl to java`
108+
.11+| [[aspect-to-java]] aspect <model> to java | Generate Java classes from an Aspect Model | `samm aspect AspectModel.ttl to java`
109109
| _--output-directory, -d_ : output directory to write files to (default:
110110
current directory) |
111111
| _--package-name, -pn_ : package to use for generated Java classes | `samm aspect AspectModel.ttl to java -pn org.company.product`
112112
| _--no-jackson, -nj_ : disable https://github.com/FasterXML/jackson[Jackson] annotation
113113
generation in generated Java classes |
114+
| _--json-type-info_, _-jti_ : If Jackson annotations are enabled, determines the value
115+
of JsonTypeInfo.Id. Default: DEDUCTION |
114116
| _--template-library-file, -tlf_ : the path and name of the
115117
https://velocity.apache.org/[Velocity] template file containing the macro library |
116118
| _--execute-library-macros, -elm_ : Execute the macros provided in the

tools/samm-cli/src/main/java/org/eclipse/esmf/aspect/to/AspectToJavaCommand.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,13 @@ public class AspectToJavaCommand extends AbstractCommand {
4545
description = "Disable Jackson annotation generation in generated Java classes." )
4646
private boolean disableJacksonAnnotations = false;
4747

48+
@CommandLine.Option(
49+
names = { "--json-type-info", "-jti" },
50+
description = "If Jackson annotations are enabled, determines the value of JsonTypeInfo.Id. Default: DEDUCTION",
51+
converter = JsonTypeInfoConverter.class
52+
)
53+
private JavaCodeGenerationConfig.JsonTypeInfoType jsonTypeInfo;
54+
4855
@SuppressWarnings( "FieldCanBeLocal" )
4956
@CommandLine.Option(
5057
names = { "--template-library-file", "-tlf" },
@@ -74,14 +81,16 @@ public class AspectToJavaCommand extends AbstractCommand {
7481
description = "Generate Java domain classes for a Static Meta Model" )
7582
private boolean generateStaticMetaModelJavaClasses = false;
7683

84+
@SuppressWarnings( "FieldCanBeLocal" )
7785
@CommandLine.Option( names = { "--name-prefix", "-namePrefix" },
7886
description = "Name prefix for generated Aspect, Entity Java classes" )
7987
private String namePrefix = "";
8088

89+
@SuppressWarnings( "FieldCanBeLocal" )
8190
@CommandLine.Option( names = { "--name-postfix", "-namePostfix" },
8291
description = "Name postfix for generated Aspect, Entity Java classes" )
8392
private String namePostfix = "";
84-
93+
8594
@SuppressWarnings( "FieldCanBeLocal" )
8695
@CommandLine.Option(
8796
names = { "--details" },
@@ -97,6 +106,15 @@ public class AspectToJavaCommand extends AbstractCommand {
97106
@CommandLine.Mixin
98107
private ResolverConfigurationMixin resolverConfiguration;
99108

109+
static class JsonTypeInfoConverter implements CommandLine.ITypeConverter<JavaCodeGenerationConfig.JsonTypeInfoType> {
110+
@Override
111+
public JavaCodeGenerationConfig.JsonTypeInfoType convert( final String value ) throws Exception {
112+
return value == null
113+
? JavaCodeGenerationConfig.JsonTypeInfoType.DEDUCTION
114+
: JavaCodeGenerationConfig.JsonTypeInfoType.valueOf( value.toUpperCase() );
115+
}
116+
}
117+
100118
@Override
101119
public void run() {
102120
setDetails( details );
@@ -120,6 +138,7 @@ private JavaCodeGenerationConfig buildConfig( final Aspect aspect ) {
120138
.orElseGet( () -> aspect.urn().getNamespaceMainPart() );
121139
return JavaCodeGenerationConfigBuilder.builder()
122140
.executeLibraryMacros( executeLibraryMacros )
141+
.jsonTypeInfo( jsonTypeInfo )
123142
.templateLibFile( templateLibFile )
124143
.enableJacksonAnnotations( !disableJacksonAnnotations )
125144
.packageName( pkgName )

0 commit comments

Comments
 (0)