protected void generateValueTypeSerialization(ValueType vt) { onNewline(out); printMethod(out, "public static final", getSerializedFormTypeName(vt), SERIALIZATION_METHOD_PREFIX + makeSafeValueTypeName(vt), makeArg(vt.getFullname(), "obj")); startMethodBody(out); if (vt.getExternalizationElements().size() == 1) { print(out, "return (obj == null) ? null : "); ExternalizationElement extElem = vt.getExternalizationElements().get(0); ValueType extElemVt = extElem.getType(); print(out, applyExternalizationIfRequired(applyExternalizerTo(extElem, "obj"), extElemVt)); } else { println(out, "if (obj == null) return null;"); println(out, "JsonObject json = new JsonObject();"); for (ExternalizationElement extElem : vt.getExternalizationElements()) { print(out, "json.add(\""); print(out, makePrettySlotName(extElem)); print(out, "\", JsonConverter.getJsonFor("); print(out, applyExternalizationIfRequired(applyExternalizerTo(extElem, "obj"), extElem.getType())); print(out, "));"); newline(out); } print(out, "return json"); } print(out, ";"); endMethodBody(out); }
protected void generateValueTypeSerializations() { for (ValueType vt : getDomainModel().getAllValueTypes()) { if (!(vt.isBuiltin() || vt.isEnum())) { println(out, ""); print(out, "// VT: " + vt.getDomainName() + " serializes as " + getSerializedFormTypeName(vt)); generateValueTypeSerialization(vt); generateValueTypeDeSerialization(vt); } } }
print(out, "return "); if (DomainModel.isNullableTypeFullName(getSerializedFormTypeName(vt))) { print(out, "(obj == null) ? null : "); print(out, "(" + vt.getFullname() + ")"); print(out, internalizationMethodName + "("); ValueType extElemVt = extElem.getType(); if (extElemVt.isBuiltin() || extElemVt.isEnum()) { print(out, "obj"); } else { print(out, DESERIALIZATION_METHOD_PREFIX + makeSafeValueTypeName(extElemVt) + "(obj)"); print(out, "JsonConverter.get"); print(out, capitalize(extElem.getType().getDomainName())); print(out, "FromJson(obj.getAsJsonObject().get(\"");; print(out, makePrettySlotName(extElem)); print(out, "\"))"); } else { print(out, DESERIALIZATION_METHOD_PREFIX); print(out, makeSafeValueTypeName(extElemVt)); print(out, "(JsonConverter.get"); print(out, getSerializedFormTypeName(extElemVt, true)); print(out, "FromJson(obj.getAsJsonObject().get(\""); print(out, makePrettySlotName(extElem)); print(out, "\")))"); print(out, ");");