Skip to content

Commit 1fe944b

Browse files
committed
added back the schedule generation
1 parent b90d6eb commit 1fe944b

File tree

1 file changed

+40
-1
lines changed

1 file changed

+40
-1
lines changed

merlin-framework-processor/src/main/java/gov/nasa/jpl/aerie/merlin/processor/generator/MissionModelGenerator.java

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,7 @@ private static CodeBlock generateMissionModelInstantiation(final MissionModelRec
261261
/** Generate `GeneratedSchedulerModel` class. */
262262
public JavaFile generateSchedulerModel(final MissionModelRecord missionModel) {
263263
final var typeName = missionModel.getSchedulerModelName();
264+
final var durationValueMapperCodeBlock = generateDurationMapperBlock(missionModel);
264265

265266
final var typeSpec =
266267
TypeSpec
@@ -303,6 +304,32 @@ public JavaFile generateSchedulerModel(final MissionModelRecord missionModel) {
303304
.orElse(CodeBlock.builder()).build())
304305
.addStatement("return result")
305306
.build())
307+
.addMethod(MethodSpec
308+
.methodBuilder("serializeDuration")
309+
.addModifiers(Modifier.PUBLIC)
310+
.addAnnotation(Override.class)
311+
.returns(SerializedValue.class)
312+
.addParameter(
313+
TypeName.get(Duration.class),
314+
"duration",
315+
Modifier.FINAL)
316+
.addStatement(
317+
"return $L.serializeValue(duration)", durationValueMapperCodeBlock.get()
318+
)
319+
.build())
320+
.addMethod(MethodSpec
321+
.methodBuilder("deserializeDuration")
322+
.addModifiers(Modifier.PUBLIC)
323+
.addAnnotation(Override.class)
324+
.addParameter(
325+
TypeName.get(SerializedValue.class),
326+
"serializedDuration",
327+
Modifier.FINAL)
328+
.addStatement(
329+
"return $L.deserializeValue(serializedDuration).getSuccessOrThrow()", durationValueMapperCodeBlock.get()
330+
)
331+
.returns(Duration.class)
332+
.build())
306333
.build();
307334

308335
return JavaFile
@@ -886,7 +913,19 @@ private static MethodSpec makeSerializeReturnValueMethod(final ActivityTypeRecor
886913
"return this." + COMPUTED_ATTRIBUTES_VALUE_MAPPER_FIELD_NAME + ".serializeValue(returnValue)")
887914
.build();
888915
}
889-
916+
private Optional<CodeBlock> generateDurationMapperBlock(final MissionModelRecord missionModel){
917+
final var resolver = new Resolver(this.typeUtils, this.elementUtils, missionModel.typeRules());
918+
final var mapperBlock = resolver.instantiateNullableMapperFor(
919+
elementUtils.getTypeElement(Duration.class.getName()).asType());
920+
if (mapperBlock.isPresent()) {
921+
return mapperBlock;
922+
} else {
923+
messager.printMessage(
924+
Diagnostic.Kind.ERROR,
925+
"Failed to generate value mapper for Duration");
926+
return Optional.empty();
927+
}
928+
}
890929
private Optional<Map<String, CodeBlock>> generateParameterMapperBlocks(final MissionModelRecord missionModel, final InputTypeRecord inputType)
891930
{
892931
final var resolver = new Resolver(this.typeUtils, this.elementUtils, missionModel.typeRules());

0 commit comments

Comments
 (0)