X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FCore.java;h=dfa94d68264876f4d9862ccc69a015afc566092b;hb=a21f960ba3105942000efc5892836bbff37530ae;hp=d0d585f0a48458eadb14cf8099d1b8f2b3c1e9fc;hpb=806ebfdf165123e880dd95c50b6aeaad25e52bb2;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 d0d585f..dfa94d6 100644 --- a/src/main/java/net/pterodactylus/sone/core/Core.java +++ b/src/main/java/net/pterodactylus/sone/core/Core.java @@ -128,7 +128,11 @@ public class Core extends AbstractService { * @return The Sone, or a {@link Shell} around one */ public Sone getSone(String soneId) { - return soneCache.get(soneId); + Sone sone = soneCache.get(soneId); + if (sone instanceof SoneShell) { + soneCache.put(soneId, sone = ((SoneShell) sone).getShelled()); + } + return sone; } // @@ -143,6 +147,7 @@ public class Core extends AbstractService { */ public void addSone(Sone sone) { if (localSones.add(sone)) { + soneCache.put(sone.getId(), sone); SoneInserter soneInserter = new SoneInserter(freenetInterface, sone); soneInserter.start(); soneInserters.put(sone, soneInserter); @@ -196,7 +201,7 @@ public class Core extends AbstractService { Sone sone; try { logger.log(Level.FINEST, "Creating new Sone “%s” at %s (%s)…", new Object[] { name, finalRequestUri, finalInsertUri }); - sone = new Sone(UUID.randomUUID(), name, new FreenetURI(finalRequestUri), new FreenetURI(finalInsertUri)); + sone = new Sone(UUID.randomUUID(), name, new FreenetURI(finalRequestUri).setKeyType("USK").setDocName("Sone-" + name), new FreenetURI(finalInsertUri).setKeyType("USK").setDocName("Sone-" + name)); sone.setProfile(new Profile()); /* set modification counter to 1 so it is inserted immediately. */ sone.setModificationCounter(1); @@ -204,7 +209,6 @@ public class Core extends AbstractService { } catch (MalformedURLException mue1) { throw new SoneException(Type.INVALID_URI); } - localSones.add(sone); return sone; } @@ -298,7 +302,12 @@ public class Core extends AbstractService { if (replyId == null) { break; } - Sone replySone = soneCache.get(configuration.getStringValue(replyPrefix + "/Sone").getValue(null)); + Sone replySone = soneCache.get(configuration.getStringValue(replyPrefix + "/Sone/ID").getValue(null)); + String replySoneKey = configuration.getStringValue(replyPrefix + "/Sone/Key").getValue(null); + String replySoneName = configuration.getStringValue(replyPrefix + "/Sone/Name").getValue(null); + if (replySone instanceof SoneShell) { + ((SoneShell) replySone).setRequestUri(new FreenetURI(replySoneKey)).setName(replySoneName); + } Post replyPost = postCache.get(configuration.getStringValue(replyPrefix + "/Post").getValue(null)); long replyTime = configuration.getLongValue(replyPrefix + "/Time").getValue(null); String replyText = configuration.getStringValue(replyPrefix + "/Text").getValue(null); @@ -343,16 +352,26 @@ public class Core extends AbstractService { configuration.getLongValue(postPrefix + "/Time").setValue(post.getTime()); configuration.getStringValue(postPrefix + "/Text").setValue(post.getText()); } + /* write null ID as terminator. */ + configuration.getStringValue(sonePrefix + "/Post." + postId + "/ID").setValue(null); + int replyId = 0; for (Reply reply : sone.getReplies()) { String replyPrefix = sonePrefix + "/Reply." + replyId++; configuration.getStringValue(replyPrefix + "/ID").setValue(reply.getId()); - configuration.getStringValue(replyPrefix + "/Sone").setValue(reply.getSone().getId()); + configuration.getStringValue(replyPrefix + "/Sone/ID").setValue(reply.getSone().getId()); + configuration.getStringValue(replyPrefix + "/Sone/Key").setValue(reply.getSone().getRequestUri().toString()); + configuration.getStringValue(replyPrefix + "/Sone/Name").setValue(reply.getSone().getName()); configuration.getStringValue(replyPrefix + "/Post").setValue(reply.getPost().getId()); configuration.getLongValue(replyPrefix + "/Time").setValue(reply.getTime()); configuration.getStringValue(replyPrefix + "/Text").setValue(reply.getText()); } + /* write null ID as terminator. */ + configuration.getStringValue(sonePrefix + "/Reply." + replyId + "/ID").setValue(null); } + /* write null ID as terminator. */ + configuration.getStringValue("Sone/Sone." + soneId + "/ID").setValue(null); + } catch (ConfigurationException ce1) { logger.log(Level.WARNING, "Could not store configuration!", ce1); }