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