io7m-com / cedarbridge

Cedarbridge message protocol specification language
https://www.io7m.com/software/cedarbridge
ISC License
0 stars 0 forks source link

Generated variant serializer doesn't serialize index values #15

Closed io7m closed 2 years ago

io7m commented 2 years ago
[variant IdA1AdminPermission
  [documentation AdminBan "A permission that allows for banning admins."]
  [case AdminBan]
  [documentation AdminCreate "A permission that allows for creating admins."]
  [case AdminCreate]
  [documentation AdminDelete "A permission that allows for deleting admins."]
  [case AdminDelete]
  [documentation AdminWrite "A permission that allows updating admins."]
  [case AdminWrite]
  [documentation AdminWriteSelf "A permission that allows an admin to update itself."]
  [case AdminWriteSelf]
  [documentation AdminRead "A permission that allows reading admins."]
  [case AdminRead]
  [documentation AuditRead "A permission that allows reading the audit log."]
  [case AuditRead]
  [documentation UserDelete "A permission that allows deleting users."]
  [case UserDelete]
  [documentation UserCreate "A permission that allows creating users."]
  [case UserCreate]
  [documentation UserWrite "A permission that allows updating users."]
  [case UserWrite]
  [documentation UserRead "A permission that allows reading users."]
  [case UserRead]
  [documentation UserBan "A permission that allows for banning users."]
  [case UserBan]
]

This yields a serialize method that looks like this:

  @Override
  public void serialize(final CBSerializationContextType context, final IdA1AdminPermission value)
      throws IOException {
    if (value instanceof IdA1AdminPermission.AdminBan) {
      serializeAdminBan(context, (IdA1AdminPermission.AdminBan) value);
      return;
    }
    if (value instanceof IdA1AdminPermission.AdminCreate) {
      serializeAdminCreate(context, (IdA1AdminPermission.AdminCreate) value);
      return;
    }
    if (value instanceof IdA1AdminPermission.AdminDelete) {
      serializeAdminDelete(context, (IdA1AdminPermission.AdminDelete) value);
      return;
    }
    if (value instanceof IdA1AdminPermission.AdminWrite) {
      serializeAdminWrite(context, (IdA1AdminPermission.AdminWrite) value);
      return;
    }
    if (value instanceof IdA1AdminPermission.AdminWriteSelf) {
      serializeAdminWriteSelf(context, (IdA1AdminPermission.AdminWriteSelf) value);
      return;
    }
    if (value instanceof IdA1AdminPermission.AdminRead) {
      serializeAdminRead(context, (IdA1AdminPermission.AdminRead) value);
      return;
    }
    if (value instanceof IdA1AdminPermission.AuditRead) {
      serializeAuditRead(context, (IdA1AdminPermission.AuditRead) value);
      return;
    }
    if (value instanceof IdA1AdminPermission.UserDelete) {
      serializeUserDelete(context, (IdA1AdminPermission.UserDelete) value);
      return;
    }
    if (value instanceof IdA1AdminPermission.UserCreate) {
      serializeUserCreate(context, (IdA1AdminPermission.UserCreate) value);
      return;
    }
    if (value instanceof IdA1AdminPermission.UserWrite) {
      serializeUserWrite(context, (IdA1AdminPermission.UserWrite) value);
      return;
    }
    if (value instanceof IdA1AdminPermission.UserRead) {
      serializeUserRead(context, (IdA1AdminPermission.UserRead) value);
      return;
    }
    if (value instanceof IdA1AdminPermission.UserBan) {
      serializeUserBan(context, (IdA1AdminPermission.UserBan) value);
      return;
    }
    throw new IllegalArgumentException(String.format("Unrecognized variant case class: %s",value.getClass()));
  }

Note the lack of calls to context.writeVariantIndex().