skir-java-gen 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +157 -70
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +172 -125
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EASnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,QAAA,MAAM,MAAM;;iBAKV,CAAC;AAEH,KAAK,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AAErC,cAAM,iBAAkB,YAAW,aAAa,CAAC,MAAM,CAAC;IACtD,QAAQ,CAAC,EAAE,UAAU;IACrB,QAAQ,CAAC,UAAU;;sBAAU;IAC7B,QAAQ,CAAC,OAAO,WAAW;IAE3B,YAAY,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,MAAM;CAmDvE;AAkkCD,eAAO,MAAM,SAAS,mBAA0B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
// TODO: add comments to generated code
|
|
2
|
-
// TODO: add comments to records/fields/methods
|
|
3
|
-
// TODO: s/field/variant for enums
|
|
4
1
|
import { convertCase, } from "skir-internal";
|
|
5
2
|
import { z } from "zod";
|
|
6
3
|
import { Namer, toEnumConstantName } from "./naming.js";
|
|
@@ -70,7 +67,7 @@ class JavaSourceFileGenerator {
|
|
|
70
67
|
//
|
|
71
68
|
|
|
72
69
|
// To install the skir client library, add:
|
|
73
|
-
// implementation("build.skir:skir-
|
|
70
|
+
// implementation("build.skir:skir-client:latest.release")
|
|
74
71
|
// to your build.gradle file
|
|
75
72
|
|
|
76
73
|
`, `package ${this.packagePrefix}skirout.`, this.modulePath.replace(/\.skir$/, "").replace("/", "."), ";\n\n");
|
|
@@ -108,7 +105,7 @@ class JavaSourceFileGenerator {
|
|
|
108
105
|
const className = this.namer.getClassName(recordLocation).name;
|
|
109
106
|
const fields = [...record.fields];
|
|
110
107
|
fields.sort((a, b) => a.name.text.localeCompare(b.name.text));
|
|
111
|
-
this.push("public ", nested === "nested" ? "static " : "", `final class ${className} {\n`);
|
|
108
|
+
this.push(commentify([docToCommentText(record.doc), "\nDeeply immutable."]), "public ", nested === "nested" ? "static " : "", `final class ${className} {\n`);
|
|
112
109
|
// Declare fields
|
|
113
110
|
for (const field of fields) {
|
|
114
111
|
const fieldName = namer.structFieldToJavaName(field);
|
|
@@ -142,12 +139,12 @@ class JavaSourceFileGenerator {
|
|
|
142
139
|
this.push(`this.${fieldName} = ${defaultExpr};\n`);
|
|
143
140
|
}
|
|
144
141
|
}
|
|
145
|
-
this.push("this._u = null;\n", "}\n\n", `public static final ${className} DEFAULT = new ${className}();\n\n`);
|
|
142
|
+
this.push("this._u = null;\n", "}\n\n", `/** Instance with all fields set to their default values. */\n`, `public static final ${className} DEFAULT = new ${className}();\n\n`);
|
|
146
143
|
// Getters
|
|
147
144
|
for (const field of fields) {
|
|
148
145
|
const fieldName = namer.structFieldToJavaName(field);
|
|
149
146
|
const type = typeSpeller.getJavaType(field.type, "frozen");
|
|
150
|
-
this.push(`public ${type} ${fieldName}() {\n`);
|
|
147
|
+
this.push(commentify([docToCommentText(field.doc)]), `public ${type} ${fieldName}() {\n`);
|
|
151
148
|
if (field.isRecursive === "hard") {
|
|
152
149
|
const defaultExpr = this.getDefaultExpression(field.type);
|
|
153
150
|
this.push(`if (this.${fieldName} != null) {\n`, `return this.${fieldName};\n`, `} else {\n`, `return ${defaultExpr};\n`, "}\n");
|
|
@@ -158,7 +155,13 @@ class JavaSourceFileGenerator {
|
|
|
158
155
|
this.push("}\n\n");
|
|
159
156
|
}
|
|
160
157
|
// toBuilder()
|
|
161
|
-
this.push(`
|
|
158
|
+
this.push(`
|
|
159
|
+
/**
|
|
160
|
+
* Returns a new builder with all fields copied from this instance.
|
|
161
|
+
* Usage: set the fields you want to modify and call \`build()\` to obtain a
|
|
162
|
+
* modified copy.
|
|
163
|
+
*/
|
|
164
|
+
public Builder toBuilder() {\n`);
|
|
162
165
|
this.push(`return new Builder(\n`);
|
|
163
166
|
for (const field of fields) {
|
|
164
167
|
const fieldName = namer.structFieldToJavaName(field);
|
|
@@ -181,10 +184,21 @@ class JavaSourceFileGenerator {
|
|
|
181
184
|
const retType = firstField
|
|
182
185
|
? "Builder_At" + convertCase(firstField.name.text, "UpperCamel")
|
|
183
186
|
: "Builder_Done";
|
|
184
|
-
this.push(
|
|
187
|
+
this.push(`/**
|
|
188
|
+
* Returns a new builder for constructing {@code ${className}} instances.
|
|
189
|
+
* All fields must be specified in alphabetical order before you can call \`build()\`.
|
|
190
|
+
*/
|
|
191
|
+
public static ${retType} builder() {
|
|
192
|
+
return new Builder();
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Returns a new builder with all fields initialized to their default values.
|
|
197
|
+
*/
|
|
198
|
+
public static Builder partialBuilder() {
|
|
199
|
+
return new Builder();
|
|
200
|
+
}\n\n`);
|
|
185
201
|
}
|
|
186
|
-
// partialBuilder()
|
|
187
|
-
this.push("public static Builder partialBuilder() {\n", "return new Builder();\n", "}\n\n");
|
|
188
202
|
// Builder_At? interfaces
|
|
189
203
|
for (const [index, field] of fields.entries()) {
|
|
190
204
|
const fieldName = namer.structFieldToJavaName(field);
|
|
@@ -194,7 +208,7 @@ class JavaSourceFileGenerator {
|
|
|
194
208
|
? "Builder_At" + convertCase(nextField.name.text, "UpperCamel")
|
|
195
209
|
: "Builder_Done";
|
|
196
210
|
const paramType = typeSpeller.getJavaType(field.type, "initializer");
|
|
197
|
-
this.push(`public interface Builder_At${upperCamelName} {\n`, `${retType} set${upperCamelName}(${paramType} ${fieldName});\n`, "}\n\n");
|
|
211
|
+
this.push(`public interface Builder_At${upperCamelName} {\n`, commentify([docToCommentText(field.doc)]), `${retType} set${upperCamelName}(${paramType} ${fieldName});\n`, "}\n\n");
|
|
198
212
|
}
|
|
199
213
|
this.push(`public interface Builder_Done {\n`, `${className} build();\n`, "}\n\n");
|
|
200
214
|
// Builder class
|
|
@@ -260,11 +274,20 @@ class JavaSourceFileGenerator {
|
|
|
260
274
|
this.push(`private static final ${serializerType} _serializerImpl = (\n`, "new build.skir.internal.StructSerializer<>(\n", `"${getRecordId(recordLocation)}",\n`, `${toJavaStringLiteral(docToCommentText(record.doc))},\n`, "DEFAULT,\n", `(${className} it) -> it != null ? it.toBuilder() : partialBuilder(),\n`, `(${className}.Builder it) -> it.build(),\n`, `(${className} it) -> it._u,\n`, `(${className}.Builder builder, ${unrecognizedFieldsType} u) -> {\n`, `builder._u = u;\n`, "return null;\n", "}\n", ")\n", ");\n\n");
|
|
261
275
|
}
|
|
262
276
|
// SERIALIZER
|
|
263
|
-
this.push(
|
|
277
|
+
this.push(`/** Serializer for {@code ${className}} instances. */
|
|
278
|
+
public static final build.skir.Serializer<${className}> SERIALIZER = (
|
|
279
|
+
build.skir.internal.SerializersKt.makeSerializer(_serializerImpl)
|
|
280
|
+
);\n\n`);
|
|
264
281
|
// TYPE_DESCRIPTOR
|
|
265
282
|
{
|
|
266
283
|
const typeDescriptorType = `build.skir.reflection.StructDescriptor.Reflective<${className}, ${className}.Builder>`;
|
|
267
|
-
this.push(
|
|
284
|
+
this.push(`/**
|
|
285
|
+
* Describes the {@code ${className}} type.
|
|
286
|
+
* Provides runtime introspection capabilities.
|
|
287
|
+
*/
|
|
288
|
+
public static final ${typeDescriptorType} TYPE_DESCRIPTOR = (
|
|
289
|
+
_serializerImpl
|
|
290
|
+
);\n\n`);
|
|
268
291
|
}
|
|
269
292
|
// Finalize serializer
|
|
270
293
|
this.push("static {\n");
|
|
@@ -285,82 +308,126 @@ class JavaSourceFileGenerator {
|
|
|
285
308
|
const { recordMap, typeSpeller } = this;
|
|
286
309
|
const recordLocation = recordMap.get(record.key);
|
|
287
310
|
const className = this.namer.getClassName(recordLocation).name;
|
|
288
|
-
const { fields } = record;
|
|
289
|
-
const
|
|
290
|
-
const
|
|
291
|
-
this.push("public ", nested === "nested" ? "static " : "", `final class ${className} {\n`);
|
|
311
|
+
const { fields: variants } = record;
|
|
312
|
+
const constantVariants = variants.filter((v) => !v.type);
|
|
313
|
+
const wrapperVariants = variants.filter((v) => v.type);
|
|
314
|
+
this.push(commentify([docToCommentText(record.doc), "\nDeeply immutable."]), "public ", nested === "nested" ? "static " : "", `final class ${className} {\n`);
|
|
292
315
|
// Kind enum
|
|
293
|
-
this.push(
|
|
294
|
-
|
|
295
|
-
|
|
316
|
+
this.push(`/** The kind of variant held by a {@code ${className}}. */
|
|
317
|
+
public enum Kind {
|
|
318
|
+
UNKNOWN,\n`);
|
|
319
|
+
for (const variant of constantVariants) {
|
|
320
|
+
this.push(variant.name.text, "_CONST,\n");
|
|
296
321
|
}
|
|
297
|
-
for (const
|
|
298
|
-
this.push(convertCase(
|
|
322
|
+
for (const variant of wrapperVariants) {
|
|
323
|
+
this.push(convertCase(variant.name.text, "UPPER_UNDERSCORE"), "_WRAPPER,\n");
|
|
299
324
|
}
|
|
300
325
|
this.push("}\n\n");
|
|
301
326
|
// Constants
|
|
302
|
-
this.push(
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
327
|
+
this.push(`/**
|
|
328
|
+
* Constant indicating an unknown {@code ${className}}.
|
|
329
|
+
* Default value for fields of type {@code ${className}}.
|
|
330
|
+
*/
|
|
331
|
+
public static final ${className} UNKNOWN = new ${className}(Kind.UNKNOWN, null);\n`);
|
|
332
|
+
for (const variant of constantVariants) {
|
|
333
|
+
const skirName = variant.name.text;
|
|
334
|
+
const name = toEnumConstantName(variant);
|
|
335
|
+
this.push(commentify(docToCommentText(variant.doc)), `public static final ${className} ${name} = new ${className}(Kind.${skirName}_CONST, null);\n`);
|
|
307
336
|
}
|
|
308
337
|
this.pushEol();
|
|
309
338
|
// WrapX methods
|
|
310
|
-
for (const
|
|
311
|
-
const
|
|
312
|
-
const
|
|
313
|
-
const
|
|
339
|
+
for (const variant of wrapperVariants) {
|
|
340
|
+
const variantName = variant.name.text;
|
|
341
|
+
const upperCamelName = convertCase(variantName, "UpperCamel");
|
|
342
|
+
const upperUnderscoreName = convertCase(variantName, "UPPER_UNDERSCORE");
|
|
343
|
+
const type = variant.type;
|
|
314
344
|
const initializerType = typeSpeller.getJavaType(type, "initializer");
|
|
315
345
|
const frozenType = typeSpeller.getJavaType(type, "frozen");
|
|
316
346
|
const toFrozenExpr = this.toFrozenExpression("value", type, "can-be-null", "_e");
|
|
317
|
-
this.push(
|
|
347
|
+
this.push(`/** Create a '${variantName}' variant wrapping around the given value. */
|
|
348
|
+
public static ${className} wrap${upperCamelName}(${initializerType} value) {
|
|
349
|
+
final ${frozenType} v = ${toFrozenExpr};
|
|
350
|
+
return new ${className}(Kind.${upperUnderscoreName}_WRAPPER, v);
|
|
351
|
+
}\n\n`);
|
|
318
352
|
}
|
|
319
|
-
// Declare fields
|
|
320
353
|
this.push("private final Kind kind;\n", "private final java.lang.Object value;\n\n");
|
|
321
354
|
// Constructor
|
|
322
|
-
this.push(`private ${className}(Kind kind, java.lang.Object value) {
|
|
355
|
+
this.push(`private ${className}(Kind kind, java.lang.Object value) {
|
|
356
|
+
this.kind = kind;
|
|
357
|
+
this.value = value;
|
|
358
|
+
}\n\n`);
|
|
323
359
|
// kind()
|
|
324
|
-
this.push(
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
360
|
+
this.push(`/** Returns the kind of variant held by this instance. */
|
|
361
|
+
public Kind kind() {
|
|
362
|
+
return kind;
|
|
363
|
+
}\n\n`);
|
|
364
|
+
// isX() and asX() methods
|
|
365
|
+
for (const variant of wrapperVariants) {
|
|
366
|
+
const type = typeSpeller.getJavaType(variant.type, "frozen");
|
|
367
|
+
const variantName = variant.name.text;
|
|
368
|
+
const upperCamelName = convertCase(variantName, "UpperCamel");
|
|
369
|
+
const upperUnderscoreName = convertCase(variantName, "UPPER_UNDERSCORE");
|
|
370
|
+
this.push(`/** Returns true if this instance holds a '${variantName}' variant. */
|
|
371
|
+
public boolean is${upperCamelName}() {
|
|
372
|
+
return kind == Kind.${upperUnderscoreName}_WRAPPER;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
/**
|
|
376
|
+
* Assuming this instance holds a '${variantName}' variant, returns its value.
|
|
377
|
+
* @throws IllegalStateException if this instance does not hold a '${variantName}' variant.
|
|
378
|
+
*/
|
|
379
|
+
public ${type} as${upperCamelName}() {
|
|
380
|
+
if (kind != Kind.${upperUnderscoreName}_WRAPPER) {
|
|
381
|
+
throw new java.lang.IllegalStateException("kind=" + kind.name());
|
|
382
|
+
}
|
|
383
|
+
return (${type}) value;
|
|
384
|
+
}\n\n`);
|
|
331
385
|
}
|
|
332
386
|
// Visitor
|
|
333
387
|
this.push("public interface Visitor<R> {\n", "R onUnknown();\n");
|
|
334
|
-
for (const
|
|
335
|
-
const upperCamelName = convertCase(
|
|
388
|
+
for (const variant of constantVariants) {
|
|
389
|
+
const upperCamelName = convertCase(variant.name.text, "UpperCamel");
|
|
336
390
|
this.push(`R on${upperCamelName}();\n`);
|
|
337
391
|
}
|
|
338
|
-
for (const
|
|
339
|
-
const upperCamelName = convertCase(
|
|
340
|
-
const type = typeSpeller.getJavaType(
|
|
392
|
+
for (const variant of wrapperVariants) {
|
|
393
|
+
const upperCamelName = convertCase(variant.name.text, "UpperCamel");
|
|
394
|
+
const type = typeSpeller.getJavaType(variant.type, "frozen");
|
|
341
395
|
this.push(`R on${upperCamelName}(${type} value);\n`);
|
|
342
396
|
}
|
|
343
397
|
this.push("}\n\n");
|
|
344
398
|
// accept()
|
|
345
399
|
this.push("public <R> R accept(Visitor<R> visitor) {\n", "return switch (kind) {\n");
|
|
346
|
-
for (const
|
|
347
|
-
const upperUnderscoreName =
|
|
348
|
-
const upperCamelName = convertCase(
|
|
400
|
+
for (const variant of constantVariants) {
|
|
401
|
+
const upperUnderscoreName = variant.name.text;
|
|
402
|
+
const upperCamelName = convertCase(variant.name.text, "UpperCamel");
|
|
349
403
|
this.push(`case ${upperUnderscoreName}_CONST -> visitor.on${upperCamelName}();\n`);
|
|
350
404
|
}
|
|
351
|
-
for (const
|
|
352
|
-
const upperUnderscoreName = convertCase(
|
|
353
|
-
const upperCamelName = convertCase(
|
|
354
|
-
const type = typeSpeller.getJavaType(
|
|
405
|
+
for (const variant of wrapperVariants) {
|
|
406
|
+
const upperUnderscoreName = convertCase(variant.name.text, "UPPER_UNDERSCORE");
|
|
407
|
+
const upperCamelName = convertCase(variant.name.text, "UpperCamel");
|
|
408
|
+
const type = typeSpeller.getJavaType(variant.type, "frozen");
|
|
355
409
|
this.push(`case ${upperUnderscoreName}_WRAPPER -> visitor.on${upperCamelName}((${type}) value);\n`);
|
|
356
410
|
}
|
|
357
411
|
this.push("default -> visitor.onUnknown();\n", "};\n", "}\n\n");
|
|
358
412
|
// equals()
|
|
359
|
-
this.push(
|
|
413
|
+
this.push(`@java.lang.Override
|
|
414
|
+
public boolean equals(Object other) {
|
|
415
|
+
if (!(other instanceof ${className})) return false;
|
|
416
|
+
final ${className} otherEnum = (${className}) other;
|
|
417
|
+
if (kind == Kind.UNKNOWN) return otherEnum.kind == Kind.UNKNOWN;
|
|
418
|
+
return kind == otherEnum.kind && java.util.Objects.equals(value, otherEnum.value);
|
|
419
|
+
}\n\n`);
|
|
360
420
|
// hashCode()
|
|
361
|
-
this.push(
|
|
421
|
+
this.push(`@java.lang.Override
|
|
422
|
+
public int hashCode() {
|
|
423
|
+
final Object v = kind == Kind.UNKNOWN ? null : value;
|
|
424
|
+
return 31 * java.util.Objects.hashCode(v) + kind.ordinal();
|
|
425
|
+
}\n\n`);
|
|
362
426
|
// toString()
|
|
363
|
-
this.push(
|
|
427
|
+
this.push(`@java.lang.Override
|
|
428
|
+
public java.lang.String toString() {
|
|
429
|
+
return SERIALIZER.toJsonCode(this, build.skir.JsonFlavor.READABLE);
|
|
430
|
+
}\n\n`);
|
|
364
431
|
// _serializerImpl
|
|
365
432
|
{
|
|
366
433
|
const serializerType = `build.skir.internal.EnumSerializer<${className}>`;
|
|
@@ -368,26 +435,35 @@ class JavaSourceFileGenerator {
|
|
|
368
435
|
this.push(`private static final ${serializerType} _serializerImpl = (\n`, "build.skir.internal.EnumSerializer.Companion.create(\n", `"${getRecordId(recordLocation)}",\n`, `${toJavaStringLiteral(docToCommentText(record.doc))},\n`, `(${className} it) -> it.kind().ordinal(),\n`, "Kind.values().length,\n", "UNKNOWN,\n", `(${unrecognizedVariantType} it) -> new ${className}(Kind.UNKNOWN, it),\n`, `(${className} it) -> (${unrecognizedVariantType}) it.value\n`, ")\n", ");\n\n");
|
|
369
436
|
}
|
|
370
437
|
// SERIALIZER
|
|
371
|
-
this.push(
|
|
438
|
+
this.push(`/** Serializer for {@code ${className}} instances. */
|
|
439
|
+
public static final build.skir.Serializer<${className}> SERIALIZER = (
|
|
440
|
+
build.skir.internal.SerializersKt.makeSerializer(_serializerImpl)
|
|
441
|
+
);\n\n`);
|
|
372
442
|
// TYPE_DESCRIPTOR
|
|
373
443
|
{
|
|
374
444
|
const typeDescriptorType = `build.skir.reflection.EnumDescriptor.Reflective<${className}>`;
|
|
375
|
-
this.push(
|
|
445
|
+
this.push(`/**
|
|
446
|
+
* Describes the {@code ${className}} type.
|
|
447
|
+
* Provides runtime introspection capabilities.
|
|
448
|
+
*/
|
|
449
|
+
public static final ${typeDescriptorType} TYPE_DESCRIPTOR = (
|
|
450
|
+
_serializerImpl
|
|
451
|
+
);\n\n`);
|
|
376
452
|
}
|
|
377
453
|
// Finalize serializer
|
|
378
454
|
this.push("static {\n");
|
|
379
|
-
for (const
|
|
380
|
-
const name =
|
|
381
|
-
this.push("_serializerImpl.addConstantVariant(\n", `${
|
|
455
|
+
for (const variant of constantVariants) {
|
|
456
|
+
const name = variant.name.text;
|
|
457
|
+
this.push("_serializerImpl.addConstantVariant(\n", `${variant.number},\n`, `"${name}",\n`, `Kind.${name}_CONST.ordinal(),\n`, `${toJavaStringLiteral(docToCommentText(variant.doc))},\n`, `${toEnumConstantName(variant)}\n`, ");\n");
|
|
382
458
|
}
|
|
383
|
-
for (const
|
|
384
|
-
const type =
|
|
459
|
+
for (const variant of wrapperVariants) {
|
|
460
|
+
const type = variant.type;
|
|
385
461
|
const javaType = typeSpeller.getJavaType(type, "frozen", "must-be-object");
|
|
386
462
|
const serializerExpression = typeSpeller.getSerializerExpression(type);
|
|
387
|
-
const skirName =
|
|
463
|
+
const skirName = variant.name.text;
|
|
388
464
|
const upperCamelName = convertCase(skirName, "UpperCamel");
|
|
389
465
|
const kindConstName = convertCase(skirName, "UPPER_UNDERSCORE") + "_WRAPPER";
|
|
390
|
-
this.push("_serializerImpl.addWrapperVariant(\n", `${
|
|
466
|
+
this.push("_serializerImpl.addWrapperVariant(\n", `${variant.number},\n`, `"${variant.name.text}",\n`, `Kind.${kindConstName}.ordinal(),\n`, `${serializerExpression},\n`, `${toJavaStringLiteral(docToCommentText(variant.doc))},\n`, `(${javaType} it) -> wrap${upperCamelName}(it),\n`, `(${className} it) -> it.as${upperCamelName}()\n`, ");\n");
|
|
391
467
|
}
|
|
392
468
|
for (const removedNumber of record.removedNumbers) {
|
|
393
469
|
this.push(`_serializerImpl.addRemovedNumber(${removedNumber});\n`);
|
|
@@ -438,7 +514,15 @@ class JavaSourceFileGenerator {
|
|
|
438
514
|
const skirName = method.name.text;
|
|
439
515
|
const javaName = convertCase(skirName, "UPPER_UNDERSCORE");
|
|
440
516
|
const methodType = `build.skir.service.Method<${requestType}, ${responseType}>`;
|
|
441
|
-
this.push(`public static final ${methodType} ${javaName} = (
|
|
517
|
+
this.push(commentify(docToCommentText(method.doc)), `public static final ${methodType} ${javaName} = (
|
|
518
|
+
new build.skir.service.Method<>(
|
|
519
|
+
"${skirName}",
|
|
520
|
+
${method.number}L,
|
|
521
|
+
${requestSerializer},
|
|
522
|
+
${responseSerializer},
|
|
523
|
+
${toJavaStringLiteral(docToCommentText(method.doc))}
|
|
524
|
+
)
|
|
525
|
+
);\n\n`);
|
|
442
526
|
}
|
|
443
527
|
writeClassForConstants(constants) {
|
|
444
528
|
this.push("public final class Constants {\n\n", "private Constants() {}\n\n");
|
|
@@ -453,7 +537,9 @@ class JavaSourceFileGenerator {
|
|
|
453
537
|
const name = constant.name.text;
|
|
454
538
|
const serializerExpression = typeSpeller.getSerializerExpression(constant.type);
|
|
455
539
|
const jsonStringLiteral = JSON.stringify(JSON.stringify(constant.valueAsDenseJson));
|
|
456
|
-
this.push(`public static final ${javaType} ${name} = (
|
|
540
|
+
this.push(commentify(docToCommentText(constant.doc)), `public static final ${javaType} ${name} = (
|
|
541
|
+
${serializerExpression}.fromJsonCode(${jsonStringLiteral})
|
|
542
|
+
);\n\n`);
|
|
457
543
|
}
|
|
458
544
|
getDefaultExpression(type) {
|
|
459
545
|
switch (type.kind) {
|
|
@@ -619,9 +705,10 @@ class JavaSourceFileGenerator {
|
|
|
619
705
|
break;
|
|
620
706
|
}
|
|
621
707
|
}
|
|
622
|
-
const indent = indentUnit.repeat(contextStack.length)
|
|
708
|
+
const indent = indentUnit.repeat(contextStack.length) +
|
|
709
|
+
(line.startsWith("*") ? " " : "");
|
|
623
710
|
result += `${indent}${line.trimEnd()}\n`;
|
|
624
|
-
if (line.startsWith("
|
|
711
|
+
if (line.startsWith("/") || line.startsWith("*")) {
|
|
625
712
|
continue;
|
|
626
713
|
}
|
|
627
714
|
const lastChar = line.slice(-1);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
// TODO: add comments to generated code
|
|
2
|
-
// TODO: add comments to records/fields/methods
|
|
3
|
-
// TODO: s/field/variant for enums
|
|
4
|
-
|
|
5
1
|
import {
|
|
6
2
|
type CodeGenerator,
|
|
7
3
|
type Constant,
|
|
@@ -120,7 +116,7 @@ class JavaSourceFileGenerator {
|
|
|
120
116
|
//
|
|
121
117
|
|
|
122
118
|
// To install the skir client library, add:
|
|
123
|
-
// implementation("build.skir:skir-
|
|
119
|
+
// implementation("build.skir:skir-client:latest.release")
|
|
124
120
|
// to your build.gradle file
|
|
125
121
|
|
|
126
122
|
`,
|
|
@@ -171,7 +167,9 @@ class JavaSourceFileGenerator {
|
|
|
171
167
|
const className = this.namer.getClassName(recordLocation).name;
|
|
172
168
|
const fields = [...record.fields];
|
|
173
169
|
fields.sort((a, b) => a.name.text.localeCompare(b.name.text));
|
|
170
|
+
|
|
174
171
|
this.push(
|
|
172
|
+
commentify([docToCommentText(record.doc), "\nDeeply immutable."]),
|
|
175
173
|
"public ",
|
|
176
174
|
nested === "nested" ? "static " : "",
|
|
177
175
|
`final class ${className} {\n`,
|
|
@@ -214,6 +212,7 @@ class JavaSourceFileGenerator {
|
|
|
214
212
|
this.push(
|
|
215
213
|
"this._u = null;\n",
|
|
216
214
|
"}\n\n",
|
|
215
|
+
`/** Instance with all fields set to their default values. */\n`,
|
|
217
216
|
`public static final ${className} DEFAULT = new ${className}();\n\n`,
|
|
218
217
|
);
|
|
219
218
|
|
|
@@ -221,7 +220,10 @@ class JavaSourceFileGenerator {
|
|
|
221
220
|
for (const field of fields) {
|
|
222
221
|
const fieldName = namer.structFieldToJavaName(field);
|
|
223
222
|
const type = typeSpeller.getJavaType(field.type!, "frozen");
|
|
224
|
-
this.push(
|
|
223
|
+
this.push(
|
|
224
|
+
commentify([docToCommentText(field.doc)]),
|
|
225
|
+
`public ${type} ${fieldName}() {\n`,
|
|
226
|
+
);
|
|
225
227
|
if (field.isRecursive === "hard") {
|
|
226
228
|
const defaultExpr = this.getDefaultExpression(field.type!);
|
|
227
229
|
this.push(
|
|
@@ -238,7 +240,13 @@ class JavaSourceFileGenerator {
|
|
|
238
240
|
}
|
|
239
241
|
|
|
240
242
|
// toBuilder()
|
|
241
|
-
this.push(`
|
|
243
|
+
this.push(`
|
|
244
|
+
/**
|
|
245
|
+
* Returns a new builder with all fields copied from this instance.
|
|
246
|
+
* Usage: set the fields you want to modify and call \`build()\` to obtain a
|
|
247
|
+
* modified copy.
|
|
248
|
+
*/
|
|
249
|
+
public Builder toBuilder() {\n`);
|
|
242
250
|
this.push(`return new Builder(\n`);
|
|
243
251
|
for (const field of fields) {
|
|
244
252
|
const fieldName = namer.structFieldToJavaName(field);
|
|
@@ -290,19 +298,23 @@ class JavaSourceFileGenerator {
|
|
|
290
298
|
? "Builder_At" + convertCase(firstField.name.text, "UpperCamel")
|
|
291
299
|
: "Builder_Done";
|
|
292
300
|
this.push(
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
301
|
+
`/**
|
|
302
|
+
* Returns a new builder for constructing {@code ${className}} instances.
|
|
303
|
+
* All fields must be specified in alphabetical order before you can call \`build()\`.
|
|
304
|
+
*/
|
|
305
|
+
public static ${retType} builder() {
|
|
306
|
+
return new Builder();
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
/**
|
|
310
|
+
* Returns a new builder with all fields initialized to their default values.
|
|
311
|
+
*/
|
|
312
|
+
public static Builder partialBuilder() {
|
|
313
|
+
return new Builder();
|
|
314
|
+
}\n\n`,
|
|
296
315
|
);
|
|
297
316
|
}
|
|
298
317
|
|
|
299
|
-
// partialBuilder()
|
|
300
|
-
this.push(
|
|
301
|
-
"public static Builder partialBuilder() {\n",
|
|
302
|
-
"return new Builder();\n",
|
|
303
|
-
"}\n\n",
|
|
304
|
-
);
|
|
305
|
-
|
|
306
318
|
// Builder_At? interfaces
|
|
307
319
|
for (const [index, field] of fields.entries()) {
|
|
308
320
|
const fieldName = namer.structFieldToJavaName(field);
|
|
@@ -314,6 +326,7 @@ class JavaSourceFileGenerator {
|
|
|
314
326
|
const paramType = typeSpeller.getJavaType(field.type!, "initializer");
|
|
315
327
|
this.push(
|
|
316
328
|
`public interface Builder_At${upperCamelName} {\n`,
|
|
329
|
+
commentify([docToCommentText(field.doc)]),
|
|
317
330
|
`${retType} set${upperCamelName}(${paramType} ${fieldName});\n`,
|
|
318
331
|
"}\n\n",
|
|
319
332
|
);
|
|
@@ -430,18 +443,23 @@ class JavaSourceFileGenerator {
|
|
|
430
443
|
|
|
431
444
|
// SERIALIZER
|
|
432
445
|
this.push(
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
446
|
+
`/** Serializer for {@code ${className}} instances. */
|
|
447
|
+
public static final build.skir.Serializer<${className}> SERIALIZER = (
|
|
448
|
+
build.skir.internal.SerializersKt.makeSerializer(_serializerImpl)
|
|
449
|
+
);\n\n`,
|
|
436
450
|
);
|
|
437
451
|
|
|
438
452
|
// TYPE_DESCRIPTOR
|
|
439
453
|
{
|
|
440
454
|
const typeDescriptorType = `build.skir.reflection.StructDescriptor.Reflective<${className}, ${className}.Builder>`;
|
|
441
455
|
this.push(
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
456
|
+
`/**
|
|
457
|
+
* Describes the {@code ${className}} type.
|
|
458
|
+
* Provides runtime introspection capabilities.
|
|
459
|
+
*/
|
|
460
|
+
public static final ${typeDescriptorType} TYPE_DESCRIPTOR = (
|
|
461
|
+
_serializerImpl
|
|
462
|
+
);\n\n`,
|
|
445
463
|
);
|
|
446
464
|
}
|
|
447
465
|
|
|
@@ -482,22 +500,27 @@ class JavaSourceFileGenerator {
|
|
|
482
500
|
const { recordMap, typeSpeller } = this;
|
|
483
501
|
const recordLocation = recordMap.get(record.key)!;
|
|
484
502
|
const className = this.namer.getClassName(recordLocation).name;
|
|
485
|
-
const { fields } = record;
|
|
486
|
-
const
|
|
487
|
-
const
|
|
503
|
+
const { fields: variants } = record;
|
|
504
|
+
const constantVariants = variants.filter((v) => !v.type);
|
|
505
|
+
const wrapperVariants = variants.filter((v) => v.type);
|
|
488
506
|
this.push(
|
|
507
|
+
commentify([docToCommentText(record.doc), "\nDeeply immutable."]),
|
|
489
508
|
"public ",
|
|
490
509
|
nested === "nested" ? "static " : "",
|
|
491
510
|
`final class ${className} {\n`,
|
|
492
511
|
);
|
|
493
512
|
// Kind enum
|
|
494
|
-
this.push(
|
|
495
|
-
|
|
496
|
-
|
|
513
|
+
this.push(
|
|
514
|
+
`/** The kind of variant held by a {@code ${className}}. */
|
|
515
|
+
public enum Kind {
|
|
516
|
+
UNKNOWN,\n`,
|
|
517
|
+
);
|
|
518
|
+
for (const variant of constantVariants) {
|
|
519
|
+
this.push(variant.name.text, "_CONST,\n");
|
|
497
520
|
}
|
|
498
|
-
for (const
|
|
521
|
+
for (const variant of wrapperVariants) {
|
|
499
522
|
this.push(
|
|
500
|
-
convertCase(
|
|
523
|
+
convertCase(variant.name.text, "UPPER_UNDERSCORE"),
|
|
501
524
|
"_WRAPPER,\n",
|
|
502
525
|
);
|
|
503
526
|
}
|
|
@@ -505,25 +528,28 @@ class JavaSourceFileGenerator {
|
|
|
505
528
|
|
|
506
529
|
// Constants
|
|
507
530
|
this.push(
|
|
508
|
-
|
|
531
|
+
`/**
|
|
532
|
+
* Constant indicating an unknown {@code ${className}}.
|
|
533
|
+
* Default value for fields of type {@code ${className}}.
|
|
534
|
+
*/
|
|
535
|
+
public static final ${className} UNKNOWN = new ${className}(Kind.UNKNOWN, null);\n`,
|
|
509
536
|
);
|
|
510
|
-
for (const
|
|
511
|
-
const skirName =
|
|
512
|
-
const name = toEnumConstantName(
|
|
537
|
+
for (const variant of constantVariants) {
|
|
538
|
+
const skirName = variant.name.text;
|
|
539
|
+
const name = toEnumConstantName(variant);
|
|
513
540
|
this.push(
|
|
541
|
+
commentify(docToCommentText(variant.doc)),
|
|
514
542
|
`public static final ${className} ${name} = new ${className}(Kind.${skirName}_CONST, null);\n`,
|
|
515
543
|
);
|
|
516
544
|
}
|
|
517
545
|
this.pushEol();
|
|
518
546
|
|
|
519
547
|
// WrapX methods
|
|
520
|
-
for (const
|
|
521
|
-
const
|
|
522
|
-
const
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
);
|
|
526
|
-
const type = field.type!;
|
|
548
|
+
for (const variant of wrapperVariants) {
|
|
549
|
+
const variantName = variant.name.text;
|
|
550
|
+
const upperCamelName = convertCase(variantName, "UpperCamel");
|
|
551
|
+
const upperUnderscoreName = convertCase(variantName, "UPPER_UNDERSCORE");
|
|
552
|
+
const type = variant.type!;
|
|
527
553
|
const initializerType = typeSpeller.getJavaType(type, "initializer");
|
|
528
554
|
const frozenType = typeSpeller.getJavaType(type, "frozen");
|
|
529
555
|
const toFrozenExpr = this.toFrozenExpression(
|
|
@@ -533,14 +559,14 @@ class JavaSourceFileGenerator {
|
|
|
533
559
|
"_e",
|
|
534
560
|
);
|
|
535
561
|
this.push(
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
562
|
+
`/** Create a '${variantName}' variant wrapping around the given value. */
|
|
563
|
+
public static ${className} wrap${upperCamelName}(${initializerType} value) {
|
|
564
|
+
final ${frozenType} v = ${toFrozenExpr};
|
|
565
|
+
return new ${className}(Kind.${upperUnderscoreName}_WRAPPER, v);
|
|
566
|
+
}\n\n`,
|
|
540
567
|
);
|
|
541
568
|
}
|
|
542
569
|
|
|
543
|
-
// Declare fields
|
|
544
570
|
this.push(
|
|
545
571
|
"private final Kind kind;\n",
|
|
546
572
|
"private final java.lang.Object value;\n\n",
|
|
@@ -548,42 +574,54 @@ class JavaSourceFileGenerator {
|
|
|
548
574
|
|
|
549
575
|
// Constructor
|
|
550
576
|
this.push(
|
|
551
|
-
`private ${className}(Kind kind, java.lang.Object value) {
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
577
|
+
`private ${className}(Kind kind, java.lang.Object value) {
|
|
578
|
+
this.kind = kind;
|
|
579
|
+
this.value = value;
|
|
580
|
+
}\n\n`,
|
|
555
581
|
);
|
|
556
582
|
|
|
557
583
|
// kind()
|
|
558
|
-
this.push(
|
|
584
|
+
this.push(
|
|
585
|
+
`/** Returns the kind of variant held by this instance. */
|
|
586
|
+
public Kind kind() {
|
|
587
|
+
return kind;
|
|
588
|
+
}\n\n`,
|
|
589
|
+
);
|
|
559
590
|
|
|
560
|
-
// asX() methods
|
|
561
|
-
for (const
|
|
562
|
-
const type = typeSpeller.getJavaType(
|
|
563
|
-
const
|
|
564
|
-
const
|
|
565
|
-
|
|
566
|
-
"UPPER_UNDERSCORE",
|
|
567
|
-
);
|
|
591
|
+
// isX() and asX() methods
|
|
592
|
+
for (const variant of wrapperVariants) {
|
|
593
|
+
const type = typeSpeller.getJavaType(variant.type!, "frozen");
|
|
594
|
+
const variantName = variant.name.text;
|
|
595
|
+
const upperCamelName = convertCase(variantName, "UpperCamel");
|
|
596
|
+
const upperUnderscoreName = convertCase(variantName, "UPPER_UNDERSCORE");
|
|
568
597
|
this.push(
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
598
|
+
`/** Returns true if this instance holds a '${variantName}' variant. */
|
|
599
|
+
public boolean is${upperCamelName}() {
|
|
600
|
+
return kind == Kind.${upperUnderscoreName}_WRAPPER;
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
/**
|
|
604
|
+
* Assuming this instance holds a '${variantName}' variant, returns its value.
|
|
605
|
+
* @throws IllegalStateException if this instance does not hold a '${variantName}' variant.
|
|
606
|
+
*/
|
|
607
|
+
public ${type} as${upperCamelName}() {
|
|
608
|
+
if (kind != Kind.${upperUnderscoreName}_WRAPPER) {
|
|
609
|
+
throw new java.lang.IllegalStateException("kind=" + kind.name());
|
|
610
|
+
}
|
|
611
|
+
return (${type}) value;
|
|
612
|
+
}\n\n`,
|
|
575
613
|
);
|
|
576
614
|
}
|
|
577
615
|
|
|
578
616
|
// Visitor
|
|
579
617
|
this.push("public interface Visitor<R> {\n", "R onUnknown();\n");
|
|
580
|
-
for (const
|
|
581
|
-
const upperCamelName = convertCase(
|
|
618
|
+
for (const variant of constantVariants) {
|
|
619
|
+
const upperCamelName = convertCase(variant.name.text, "UpperCamel");
|
|
582
620
|
this.push(`R on${upperCamelName}();\n`);
|
|
583
621
|
}
|
|
584
|
-
for (const
|
|
585
|
-
const upperCamelName = convertCase(
|
|
586
|
-
const type = typeSpeller.getJavaType(
|
|
622
|
+
for (const variant of wrapperVariants) {
|
|
623
|
+
const upperCamelName = convertCase(variant.name.text, "UpperCamel");
|
|
624
|
+
const type = typeSpeller.getJavaType(variant.type!, "frozen");
|
|
587
625
|
this.push(`R on${upperCamelName}(${type} value);\n`);
|
|
588
626
|
}
|
|
589
627
|
this.push("}\n\n");
|
|
@@ -593,20 +631,20 @@ class JavaSourceFileGenerator {
|
|
|
593
631
|
"public <R> R accept(Visitor<R> visitor) {\n",
|
|
594
632
|
"return switch (kind) {\n",
|
|
595
633
|
);
|
|
596
|
-
for (const
|
|
597
|
-
const upperUnderscoreName =
|
|
598
|
-
const upperCamelName = convertCase(
|
|
634
|
+
for (const variant of constantVariants) {
|
|
635
|
+
const upperUnderscoreName = variant.name.text;
|
|
636
|
+
const upperCamelName = convertCase(variant.name.text, "UpperCamel");
|
|
599
637
|
this.push(
|
|
600
638
|
`case ${upperUnderscoreName}_CONST -> visitor.on${upperCamelName}();\n`,
|
|
601
639
|
);
|
|
602
640
|
}
|
|
603
|
-
for (const
|
|
641
|
+
for (const variant of wrapperVariants) {
|
|
604
642
|
const upperUnderscoreName = convertCase(
|
|
605
|
-
|
|
643
|
+
variant.name.text,
|
|
606
644
|
"UPPER_UNDERSCORE",
|
|
607
645
|
);
|
|
608
|
-
const upperCamelName = convertCase(
|
|
609
|
-
const type = typeSpeller.getJavaType(
|
|
646
|
+
const upperCamelName = convertCase(variant.name.text, "UpperCamel");
|
|
647
|
+
const type = typeSpeller.getJavaType(variant.type!, "frozen");
|
|
610
648
|
this.push(
|
|
611
649
|
`case ${upperUnderscoreName}_WRAPPER -> visitor.on${upperCamelName}((${type}) value);\n`,
|
|
612
650
|
);
|
|
@@ -615,30 +653,30 @@ class JavaSourceFileGenerator {
|
|
|
615
653
|
|
|
616
654
|
// equals()
|
|
617
655
|
this.push(
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
656
|
+
`@java.lang.Override
|
|
657
|
+
public boolean equals(Object other) {
|
|
658
|
+
if (!(other instanceof ${className})) return false;
|
|
659
|
+
final ${className} otherEnum = (${className}) other;
|
|
660
|
+
if (kind == Kind.UNKNOWN) return otherEnum.kind == Kind.UNKNOWN;
|
|
661
|
+
return kind == otherEnum.kind && java.util.Objects.equals(value, otherEnum.value);
|
|
662
|
+
}\n\n`,
|
|
625
663
|
);
|
|
626
664
|
|
|
627
665
|
// hashCode()
|
|
628
666
|
this.push(
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
667
|
+
`@java.lang.Override
|
|
668
|
+
public int hashCode() {
|
|
669
|
+
final Object v = kind == Kind.UNKNOWN ? null : value;
|
|
670
|
+
return 31 * java.util.Objects.hashCode(v) + kind.ordinal();
|
|
671
|
+
}\n\n`,
|
|
634
672
|
);
|
|
635
673
|
|
|
636
674
|
// toString()
|
|
637
675
|
this.push(
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
676
|
+
`@java.lang.Override
|
|
677
|
+
public java.lang.String toString() {
|
|
678
|
+
return SERIALIZER.toJsonCode(this, build.skir.JsonFlavor.READABLE);
|
|
679
|
+
}\n\n`,
|
|
642
680
|
);
|
|
643
681
|
|
|
644
682
|
// _serializerImpl
|
|
@@ -662,54 +700,59 @@ class JavaSourceFileGenerator {
|
|
|
662
700
|
|
|
663
701
|
// SERIALIZER
|
|
664
702
|
this.push(
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
703
|
+
`/** Serializer for {@code ${className}} instances. */
|
|
704
|
+
public static final build.skir.Serializer<${className}> SERIALIZER = (
|
|
705
|
+
build.skir.internal.SerializersKt.makeSerializer(_serializerImpl)
|
|
706
|
+
);\n\n`,
|
|
668
707
|
);
|
|
669
708
|
|
|
670
709
|
// TYPE_DESCRIPTOR
|
|
671
710
|
{
|
|
672
711
|
const typeDescriptorType = `build.skir.reflection.EnumDescriptor.Reflective<${className}>`;
|
|
673
712
|
this.push(
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
713
|
+
`/**
|
|
714
|
+
* Describes the {@code ${className}} type.
|
|
715
|
+
* Provides runtime introspection capabilities.
|
|
716
|
+
*/
|
|
717
|
+
public static final ${typeDescriptorType} TYPE_DESCRIPTOR = (
|
|
718
|
+
_serializerImpl
|
|
719
|
+
);\n\n`,
|
|
677
720
|
);
|
|
678
721
|
}
|
|
679
722
|
|
|
680
723
|
// Finalize serializer
|
|
681
724
|
this.push("static {\n");
|
|
682
|
-
for (const
|
|
683
|
-
const name =
|
|
725
|
+
for (const variant of constantVariants) {
|
|
726
|
+
const name = variant.name.text;
|
|
684
727
|
this.push(
|
|
685
728
|
"_serializerImpl.addConstantVariant(\n",
|
|
686
|
-
`${
|
|
729
|
+
`${variant.number},\n`,
|
|
687
730
|
`"${name}",\n`,
|
|
688
731
|
`Kind.${name}_CONST.ordinal(),\n`,
|
|
689
|
-
`${toJavaStringLiteral(docToCommentText(
|
|
690
|
-
`${toEnumConstantName(
|
|
732
|
+
`${toJavaStringLiteral(docToCommentText(variant.doc))},\n`,
|
|
733
|
+
`${toEnumConstantName(variant)}\n`,
|
|
691
734
|
");\n",
|
|
692
735
|
);
|
|
693
736
|
}
|
|
694
|
-
for (const
|
|
695
|
-
const type =
|
|
737
|
+
for (const variant of wrapperVariants) {
|
|
738
|
+
const type = variant.type!;
|
|
696
739
|
const javaType = typeSpeller.getJavaType(
|
|
697
740
|
type,
|
|
698
741
|
"frozen",
|
|
699
742
|
"must-be-object",
|
|
700
743
|
);
|
|
701
744
|
const serializerExpression = typeSpeller.getSerializerExpression(type);
|
|
702
|
-
const skirName =
|
|
745
|
+
const skirName = variant.name.text;
|
|
703
746
|
const upperCamelName = convertCase(skirName, "UpperCamel");
|
|
704
747
|
const kindConstName =
|
|
705
748
|
convertCase(skirName, "UPPER_UNDERSCORE") + "_WRAPPER";
|
|
706
749
|
this.push(
|
|
707
750
|
"_serializerImpl.addWrapperVariant(\n",
|
|
708
|
-
`${
|
|
709
|
-
`"${
|
|
751
|
+
`${variant.number},\n`,
|
|
752
|
+
`"${variant.name.text}",\n`,
|
|
710
753
|
`Kind.${kindConstName}.ordinal(),\n`,
|
|
711
754
|
`${serializerExpression},\n`,
|
|
712
|
-
`${toJavaStringLiteral(docToCommentText(
|
|
755
|
+
`${toJavaStringLiteral(docToCommentText(variant.doc))},\n`,
|
|
713
756
|
`(${javaType} it) -> wrap${upperCamelName}(it),\n`,
|
|
714
757
|
`(${className} it) -> it.as${upperCamelName}()\n`,
|
|
715
758
|
");\n",
|
|
@@ -779,15 +822,16 @@ class JavaSourceFileGenerator {
|
|
|
779
822
|
|
|
780
823
|
const methodType = `build.skir.service.Method<${requestType}, ${responseType}>`;
|
|
781
824
|
this.push(
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
825
|
+
commentify(docToCommentText(method.doc)),
|
|
826
|
+
`public static final ${methodType} ${javaName} = (
|
|
827
|
+
new build.skir.service.Method<>(
|
|
828
|
+
"${skirName}",
|
|
829
|
+
${method.number}L,
|
|
830
|
+
${requestSerializer},
|
|
831
|
+
${responseSerializer},
|
|
832
|
+
${toJavaStringLiteral(docToCommentText(method.doc))}
|
|
833
|
+
)
|
|
834
|
+
);\n\n`,
|
|
791
835
|
);
|
|
792
836
|
}
|
|
793
837
|
|
|
@@ -814,9 +858,10 @@ class JavaSourceFileGenerator {
|
|
|
814
858
|
JSON.stringify(constant.valueAsDenseJson),
|
|
815
859
|
);
|
|
816
860
|
this.push(
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
861
|
+
commentify(docToCommentText(constant.doc)),
|
|
862
|
+
`public static final ${javaType} ${name} = (
|
|
863
|
+
${serializerExpression}.fromJsonCode(${jsonStringLiteral})
|
|
864
|
+
);\n\n`,
|
|
820
865
|
);
|
|
821
866
|
}
|
|
822
867
|
|
|
@@ -1000,9 +1045,11 @@ class JavaSourceFileGenerator {
|
|
|
1000
1045
|
break;
|
|
1001
1046
|
}
|
|
1002
1047
|
}
|
|
1003
|
-
const indent =
|
|
1048
|
+
const indent =
|
|
1049
|
+
indentUnit.repeat(contextStack.length) +
|
|
1050
|
+
(line.startsWith("*") ? " " : "");
|
|
1004
1051
|
result += `${indent}${line.trimEnd()}\n`;
|
|
1005
|
-
if (line.startsWith("
|
|
1052
|
+
if (line.startsWith("/") || line.startsWith("*")) {
|
|
1006
1053
|
continue;
|
|
1007
1054
|
}
|
|
1008
1055
|
const lastChar = line.slice(-1);
|