Fix issues around all-zero UUIDs.

This commit is contained in:
Greyson Parrelli 2022-08-05 17:28:16 -04:00
parent b9879e7210
commit eac9f78dfa
2 changed files with 17 additions and 2 deletions

View file

@ -24,6 +24,7 @@ class LogSectionStories : LogSection {
output.append("Database ID : ${myStoryRecord.id}\n")
output.append("Distribution ID: ${myStoryRecord.distributionId} (Matches expected value? ${myStoryRecord.distributionId == DistributionId.MY_STORY})\n")
output.append("Recipient ID : ${presentRecipientId(myStoryRecipientId)}\n")
output.append("toString() Test: ${DistributionId.MY_STORY} | ${DistributionId.MY_STORY.asUuid()}")
} else {
output.append("< My story does not exist >\n")
}

View file

@ -13,10 +13,18 @@ import java.util.UUID;
*/
public final class DistributionId {
public static final DistributionId MY_STORY = DistributionId.from("00000000-0000-0000-0000-000000000000");
private static final String MY_STORY_STRING = "00000000-0000-0000-0000-000000000000";
public static final DistributionId MY_STORY = DistributionId.from(MY_STORY_STRING);
private final UUID uuid;
/**
* Some devices appear to have a bad UUID.toString() that misrenders an all-zero UUID as "0000-0000".
* To account for this, we will keep our own string value, to prevent queries from going awry and such.
*/
private final String stringValue;
public static DistributionId from(String id) {
return new DistributionId(UuidUtil.parseOrThrow(id));
}
@ -31,6 +39,12 @@ public final class DistributionId {
private DistributionId(UUID uuid) {
this.uuid = uuid;
if (uuid.getLeastSignificantBits() == 0 && uuid.getMostSignificantBits() == 0) {
this.stringValue = MY_STORY_STRING;
} else {
this.stringValue = this.uuid.toString();
}
}
public UUID asUuid() {
@ -39,7 +53,7 @@ public final class DistributionId {
@Override
public String toString() {
return uuid.toString();
return stringValue;
}
@Override