Skip to content

Commit cc6d9d5

Browse files
author
andrewwilsonnew
committed
first pass
1 parent 3e0077a commit cc6d9d5

47 files changed

Lines changed: 2006 additions & 320 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
generatorName: kotlin-misk
2+
outputDir: samples/server/petstore/kotlin-misk-config
3+
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
4+
templateDir: modules/openapi-generator/src/main/resources/kotlin-misk
5+
validateSpec: false
6+
additionalProperties:
7+
hideGenerationTimestamp: "true"
8+
moduleClassName: "PetStoreModule"
9+
generateStubImplClasses: true

bin/configs/kotlin-misk.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ generatorName: kotlin-misk
22
outputDir: samples/server/petstore/kotlin-misk
33
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
44
templateDir: modules/openapi-generator/src/main/resources/kotlin-misk
5-
validateSpec: false
65
additionalProperties:
76
hideGenerationTimestamp: "true"
87
moduleClassName: "PetStoreModule"

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinMiskServerCodegen.java

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,18 @@
4747

4848
public class KotlinMiskServerCodegen extends AbstractKotlinCodegen implements BeanValidationFeatures {
4949

50+
private final Logger LOGGER = LoggerFactory.getLogger(KotlinMiskServerCodegen.class);
51+
5052
public static final String MODULE_CLASS_NAME = "moduleClassName";
5153

52-
private final Logger LOGGER = LoggerFactory.getLogger(KotlinMiskServerCodegen.class);
5354
private static final String ROOT_PACKAGE = "rootPackage";
55+
public static final String GENERATE_STUB_IMPL_CLASSES = "generateStubImplClasses";
5456

5557
private boolean useBeanValidation = true;
5658

59+
@Setter
60+
private boolean generateStubImplClasses = false;
61+
5762
protected String rootPackage = "org.openapitools.server.api";
5863
protected String apiVersion = "1.0.0-SNAPSHOT";
5964

@@ -78,10 +83,11 @@ public KotlinMiskServerCodegen() {
7883
super();
7984

8085
addSwitch(USE_BEANVALIDATION, "Use BeanValidation API annotations to validate data types", useBeanValidation);
86+
addSwitch(GENERATE_STUB_IMPL_CLASSES, "Generate Stub Impl Classes", generateStubImplClasses);
8187

8288
modifyFeatureSet(features -> features
8389
.includeDocumentationFeatures(DocumentationFeature.Readme)
84-
.wireFormatFeatures(EnumSet.of(WireFormatFeature.PROTOBUF))
90+
.wireFormatFeatures(EnumSet.of(WireFormatFeature.JSON, WireFormatFeature.PROTOBUF))
8591
.securityFeatures(EnumSet.noneOf(
8692
SecurityFeature.class
8793
))
@@ -122,8 +128,12 @@ public KotlinMiskServerCodegen() {
122128

123129
apiTemplateFiles.clear();
124130
apiTemplateFiles.put("apiAction.mustache", "Action.kt");
125-
apiTemplateFiles.put("apiImpl.mustache", "Impl.kt");
126-
apiTemplateFiles.put("apiInterface.mustache", ".kt");
131+
132+
if (generateStubImplClasses) {
133+
apiTemplateFiles.put("apiImpl.mustache", "Impl.kt");
134+
apiTemplateFiles.put("apiInterface.mustache", ".kt");
135+
}
136+
127137
modelTemplateFiles.put("model.mustache", ".kt");
128138

129139
apiPackage = rootPackage + ".api";
@@ -155,6 +165,11 @@ public void processOpts() {
155165
}
156166
writePropertyBack(USE_BEANVALIDATION, useBeanValidation);
157167

168+
if (additionalProperties.containsKey(GENERATE_STUB_IMPL_CLASSES)) {
169+
setGenerateStubImplClasses(convertPropertyToBoolean(GENERATE_STUB_IMPL_CLASSES));
170+
}
171+
writePropertyBack(GENERATE_STUB_IMPL_CLASSES, generateStubImplClasses);
172+
158173
applyJakartaPackage();
159174

160175
String apiModuleFolder = (sourceFolder + File.separator + apiPackage).replace(".", File.separator);
@@ -211,6 +226,7 @@ private static Map<String, String> getMappings() {
211226
result.put("application/grpc", "MediaTypes.APPLICATION_GRPC");
212227
result.put("application/javascript", "MediaTypes.APPLICATION_JAVASCRIPT");
213228
result.put("application/json", "MediaTypes.APPLICATION_JSON");
229+
result.put("application/jwt", "MediaTypes.APPLICATION_JWT");
214230
result.put("application/octetstream", "MediaTypes.APPLICATION_OCTETSTREAM");
215231
result.put("application/pdf", "MediaTypes.APPLICATION_OCTETSTREAM");
216232
result.put("application/x-protobuf", "MediaTypes.APPLICATION_PROTOBUF");

modules/openapi-generator/src/main/resources/kotlin-misk/apiAction.mustache

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,6 @@ import misk.web.mediatype.MediaTypes
3333
{{/imports}}
3434

3535
{{#operations}}
36-
/**
37-
* Generated file, please change {{classname}}Impl.
38-
*/
3936
@Singleton
4037
class {{classname}}Action @Inject constructor(
4138
private val {{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}: {{classname}}

modules/openapi-generator/src/test/java/org/openapitools/codegen/AbstractOptionsTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public void checkOptionsHelp() {
6262
Assert.fail(String.format(Locale.ROOT, "These options weren't checked: %s.", StringUtils.join(skipped, ", ")));
6363
}
6464
final Set<String> undocumented = new HashSet<String>(testOptions);
65-
undocumented.removeAll(cliOptions);
65+
cliOptions.forEach(undocumented::remove);
6666
if (!undocumented.isEmpty()) {
6767
Assert.fail(String.format(Locale.ROOT, "These options weren't documented: %s. Are you expecting base options and calling cliOptions.clear()?", StringUtils.join(undocumented, ", ")));
6868
}

modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/misk/KotlinMiskServerCodegenOptionsTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,5 +38,6 @@ protected void verifyOptions() {
3838
verify(codegen).setAdditionalModelTypeAnnotations(List.of(KotlinMiskServerCodegenOptionsProvider.ADDITIONAL_MODEL_TYPE_ANNOTATIONS_VALUE));
3939
verify(codegen).setUseBeanValidation(Boolean.valueOf(KotlinMiskServerCodegenOptionsProvider.USE_BEAN_VALIDATION));
4040
verify(codegen).setModuleClassName(KotlinMiskServerCodegenOptionsProvider.MODULE_CLASS_NAME);
41+
verify(codegen).setGenerateStubImplClasses(Boolean.valueOf(KotlinMiskServerCodegenOptionsProvider.GENERATE_STUB_IMPL_CLASSES));
4142
}
4243
}

modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/misk/KotlinMiskServerCodegenTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ public void testDefaultConfiguration() {
3333
Assert.assertEquals(codegen.apiPackage(), "org.openapitools.server.api.api");
3434
Assert.assertEquals(codegen.modelPackage(), "org.openapitools.server.api.model");
3535

36-
// Test PROTOBUF wire format
36+
// Test wire formats
37+
Assert.assertTrue(codegen.getFeatureSet().getWireFormatFeatures().contains(WireFormatFeature.JSON));
3738
Assert.assertTrue(codegen.getFeatureSet().getWireFormatFeatures().contains(WireFormatFeature.PROTOBUF));
3839
}
3940

modules/openapi-generator/src/test/java/org/openapitools/codegen/options/KotlinMiskServerCodegenOptionsProvider.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public class KotlinMiskServerCodegenOptionsProvider implements OptionsProvider {
2323
public static final String API_SUFFIX_VALUE = "Api";
2424
public static final String ADDITIONAL_MODEL_TYPE_ANNOTATIONS_VALUE = "";
2525
public static final String USE_BEAN_VALIDATION = "false";
26+
public static final String GENERATE_STUB_IMPL_CLASSES = "false";
2627
public static final String MODULE_CLASS_NAME = "OpenApiModule";
2728

2829
@Override
@@ -51,6 +52,7 @@ public Map<String, String> createOptions() {
5152
ADDITIONAL_MODEL_TYPE_ANNOTATIONS_VALUE)
5253
.put(KotlinMiskServerCodegen.MODULE_CLASS_NAME, MODULE_CLASS_NAME)
5354
.put(BeanValidationFeatures.USE_BEANVALIDATION, USE_BEAN_VALIDATION)
55+
.put(KotlinMiskServerCodegen.GENERATE_STUB_IMPL_CLASSES, GENERATE_STUB_IMPL_CLASSES)
5456
.build();
5557
}
5658

0 commit comments

Comments
 (0)