X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FCore.java;h=612398d57a7f12c66aede837daf4557a11ba15e5;hb=ee1e4a2f7a24a97270a7c93570a984b3a0b9cf6c;hp=63bf18157e41a931f51c3a950be82f28ac299b80;hpb=7948a66da729b30be545d553e7a8234b5957b165;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/core/Core.java b/src/main/java/net/pterodactylus/sone/core/Core.java index 63bf181..612398d 100644 --- a/src/main/java/net/pterodactylus/sone/core/Core.java +++ b/src/main/java/net/pterodactylus/sone/core/Core.java @@ -616,11 +616,12 @@ public class Core extends AbstractService implements SoneProvider { return null; } synchronized (sones) { - final Sone sone = database.newSoneBuilder().by(identity.getId()).build(Optional.absent()); - if (sone.isLocal()) { - return sone; + Optional existingSone = database.getSone(identity.getId()); + if (existingSone.isPresent() && existingSone.get().isLocal()) { + return existingSone.get(); } - boolean newSone = sone.getRequestUri() == null; + boolean newSone = !existingSone.isPresent(); + final Sone sone = newSone ? database.newSoneBuilder().by(identity.getId()).build(Optional.absent()) : existingSone.get(); sone.setRequestUri(SoneUri.create(identity.getRequestUri())); sone.setLatestEdition(Numbers.safeParseLong(identity.getProperty("Sone.LatestEdition"), (long) 0)); if (newSone) {