fix: Telemetry can't serialize traits anymore (#477)

* fix: Telemetry can't serialize traits anymore

* Add tests
This commit is contained in:
Rene Leonhardt 2024-04-19 16:06:37 +02:00 committed by GitHub
parent 9666590cb1
commit 67dc425a94
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 88 additions and 25 deletions

View file

@ -28,9 +28,10 @@ public class IdentifyTraitsPersistence {
public static final IdentifyTraitsPersistence INSTANCE = new IdentifyTraitsPersistence();
private static final Logger LOGGER = Logger.getInstance(IdentifyTraitsPersistence.class);
private static final Path FILE = Directories.PATH.resolve("segment-identify-traits.json");
static Path FILE = Directories.PATH.resolve("segment-identify-traits.json");
private IdentifyTraits identifyTraits = null;
IdentifyTraits identifyTraits = null;
private Gson gson = new Gson();
protected IdentifyTraitsPersistence() {}
@ -41,36 +42,25 @@ public class IdentifyTraitsPersistence {
return identifyTraits;
}
public synchronized void set(IdentifyTraits identifyTraits) {
public synchronized boolean set(IdentifyTraits identifyTraits) {
if (Objects.equals(identifyTraits, this.identifyTraits)) {
return;
return true;
}
this.identifyTraits = identifyTraits;
String string = null;
if (identifyTraits != null) {
string = serialize(identifyTraits);
}
save(string, FILE);
return save(serialize(identifyTraits), FILE);
}
private String serialize(IdentifyTraits identifyTraits) {
if (identifyTraits == null) {
return null;
}
return new Gson().toJson(identifyTraits);
String serialize(IdentifyTraits identifyTraits) {
return identifyTraits == null ? null : gson.toJson(identifyTraits);
}
private IdentifyTraits deserialize(String identity) {
if (identity == null) {
return null;
}
return new Gson().fromJson(identity, IdentifyTraits.class);
IdentifyTraits deserialize(String identity) {
return identity == null ? null : gson.fromJson(identity, IdentifyTraits.class);
}
private String load(Path file) {
String event = null;
String load(Path file) {
try(Stream<String> lines = getLines(file)) {
event = lines
return lines
.filter(l -> !l.isBlank())
.findAny()
.map(String::trim)
@ -78,7 +68,7 @@ public class IdentifyTraitsPersistence {
} catch (IOException e) {
LOGGER.warn("Could not read identity file at " + file.toAbsolutePath(), e);
}
return event;
return null;
}
/* for testing purposes */
@ -86,13 +76,15 @@ public class IdentifyTraitsPersistence {
return Files.lines(file);
}
private void save(String event, Path file) {
boolean save(String event, Path file) {
try {
createFileAndParent(file);
writeFile(event, file);
return true;
} catch (IOException e) {
LOGGER.warn("Could not write identity to file at " + FILE.toAbsolutePath(), e);
}
return false;
}
/* for testing purposes */