Don’t set insert URI of a Sone, let it be generated from the identity.
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sat, 27 Sep 2014 18:31:57 +0000 (20:31 +0200)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sat, 27 Sep 2014 18:31:57 +0000 (20:31 +0200)
src/main/java/net/pterodactylus/sone/core/SoneDownloaderImpl.java
src/main/java/net/pterodactylus/sone/core/SoneInserter.java
src/main/java/net/pterodactylus/sone/data/Sone.java
src/main/java/net/pterodactylus/sone/data/SoneImpl.java
src/test/java/net/pterodactylus/sone/core/SoneDownloaderTest.java
src/test/java/net/pterodactylus/sone/core/SoneInserterTest.java

index a46d911..1521eaf 100644 (file)
@@ -346,10 +346,6 @@ public class SoneDownloaderImpl extends AbstractService implements SoneDownloade
                        }
                }
 
-               if (originalSone.getInsertUri() != null) {
-                       sone.setInsertUri(originalSone.getInsertUri());
-               }
-
                SimpleXML profileXml = soneXml.getNode("profile");
                if (profileXml == null) {
                        /* TODO - mark Sone as bad. */
index 9fad053..9f1f164 100644 (file)
@@ -17,7 +17,6 @@
 
 package net.pterodactylus.sone.core;
 
-import static com.google.common.base.Preconditions.checkArgument;
 import static java.lang.String.format;
 import static java.lang.System.currentTimeMillis;
 import static net.pterodactylus.sone.data.Album.NOT_EMPTY;
@@ -229,7 +228,7 @@ public class SoneInserter extends AbstractService {
                                                sone.setStatus(SoneStatus.inserting);
                                                long insertTime = currentTimeMillis();
                                                eventBus.post(new SoneInsertingEvent(sone));
-                                               FreenetURI finalUri = freenetInterface.insertDirectory(insertInformation.getInsertUri(), insertInformation.generateManifestEntries(), "index.html");
+                                               FreenetURI finalUri = freenetInterface.insertDirectory(sone.getInsertUri(), insertInformation.generateManifestEntries(), "index.html");
                                                eventBus.post(new SoneInsertedEvent(sone, currentTimeMillis() - insertTime));
                                                /* at this point we might already be stopped. */
                                                if (shouldStop()) {
@@ -304,7 +303,6 @@ public class SoneInserter extends AbstractService {
                        soneProperties.put("name", sone.getName());
                        soneProperties.put("time", currentTimeMillis());
                        soneProperties.put("requestUri", sone.getRequestUri());
-                       soneProperties.put("insertUri", sone.getInsertUri());
                        soneProperties.put("profile", sone.getProfile());
                        soneProperties.put("posts", Ordering.from(Post.TIME_COMPARATOR).sortedCopy(sone.getPosts()));
                        soneProperties.put("replies", Ordering.from(Reply.TIME_COMPARATOR).reverse().sortedCopy(sone.getReplies()));
@@ -322,15 +320,6 @@ public class SoneInserter extends AbstractService {
                        return fingerprint;
                }
 
-               /**
-                * Returns the insert URI of the Sone.
-                *
-                * @return The insert URI of the Sone
-                */
-               public FreenetURI getInsertUri() {
-                       return (FreenetURI) soneProperties.get("insertUri");
-               }
-
                //
                // ACTIONS
                //
index 55e5fff..c27e8cc 100644 (file)
@@ -208,18 +208,6 @@ public interface Sone extends Identified, Fingerprintable, Comparable<Sone> {
        Identity getIdentity();
 
        /**
-        * Sets the identity of this Sone. The {@link Identity#getId() ID} of the
-        * identity has to match this Sone’s {@link #getId()}.
-        *
-        * @param identity
-        *              The identity of this Sone
-        * @return This Sone (for method chaining)
-        * @throws IllegalArgumentException
-        *              if the ID of the identity does not match this Sone’s ID
-        */
-       Sone setIdentity(Identity identity) throws IllegalArgumentException;
-
-       /**
         * Returns the name of this Sone.
         *
         * @return The name of this Sone
@@ -257,15 +245,6 @@ public interface Sone extends Identified, Fingerprintable, Comparable<Sone> {
        FreenetURI getInsertUri();
 
        /**
-        * Sets the insert URI of this Sone.
-        *
-        * @param insertUri
-        *              The insert URI of this Sone
-        * @return This Sone (for method chaining)
-        */
-       Sone setInsertUri(FreenetURI insertUri);
-
-       /**
         * Returns the latest edition of this Sone.
         *
         * @return The latest edition of this Sone
index 1fe971f..86fe3d9 100644 (file)
@@ -18,7 +18,9 @@
 package net.pterodactylus.sone.data;
 
 import static com.google.common.base.Preconditions.checkNotNull;
+import static java.lang.String.format;
 
+import java.net.MalformedURLException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -30,6 +32,7 @@ import java.util.logging.Logger;
 
 import net.pterodactylus.sone.data.SoneOptions.DefaultSoneOptions;
 import net.pterodactylus.sone.freenet.wot.Identity;
+import net.pterodactylus.sone.freenet.wot.OwnIdentity;
 import net.pterodactylus.util.logging.Logging;
 
 import freenet.keys.FreenetURI;
@@ -140,24 +143,6 @@ public class SoneImpl implements Sone {
        }
 
        /**
-        * Sets the identity of this Sone. The {@link Identity#getId() ID} of the
-        * identity has to match this Sone’s {@link #getId()}.
-        *
-        * @param identity
-        *              The identity of this Sone
-        * @return This Sone (for method chaining)
-        * @throws IllegalArgumentException
-        *              if the ID of the identity does not match this Sone’s ID
-        */
-       public SoneImpl setIdentity(Identity identity) throws IllegalArgumentException {
-               if (!identity.getId().equals(id)) {
-                       throw new IllegalArgumentException("Identity’s ID does not match Sone’s ID!");
-               }
-               this.identity = identity;
-               return this;
-       }
-
-       /**
         * Returns the name of this Sone.
         *
         * @return The name of this Sone
@@ -209,26 +194,14 @@ public class SoneImpl implements Sone {
         * @return The insert URI of this Sone
         */
        public FreenetURI getInsertUri() {
-               return (insertUri != null) ? insertUri.setSuggestedEdition(latestEdition) : null;
-       }
-
-       /**
-        * Sets the insert URI of this Sone.
-        *
-        * @param insertUri
-        *              The insert URI of this Sone
-        * @return This Sone (for method chaining)
-        */
-       public Sone setInsertUri(FreenetURI insertUri) {
-               if (this.insertUri == null) {
-                       this.insertUri = insertUri.setKeyType("USK").setDocName("Sone").setMetaString(new String[0]);
-                       return this;
+               if (!isLocal()) {
+                       return null;
                }
-               if (!this.insertUri.equalsKeypair(insertUri)) {
-                       logger.log(Level.WARNING, String.format("Request URI %s tried to overwrite %s!", insertUri, this.insertUri));
-                       return this;
+               try {
+                       return new FreenetURI(((OwnIdentity) getIdentity()).getInsertUri()).setDocName("Sone").setMetaString(new String[0]);
+               } catch (MalformedURLException e) {
+                       throw new IllegalStateException(format("Own identity %s's insert URI is incorrect.", getIdentity()), e);
                }
-               return this;
        }
 
        /**
index 6095027..c910233 100644 (file)
@@ -563,18 +563,6 @@ public class SoneDownloaderTest {
        }
 
        @Test
-       public void soneInsertUriIsCopiedToNewSone() throws SoneException {
-               InputStream inputStream = getClass().getResourceAsStream("sone-parser-no-payload.xml");
-               FreenetURI insertUri = mock(FreenetURI.class);
-               when(insertUri.setKeyType(anyString())).thenReturn(insertUri);
-               when(insertUri.setDocName(anyString())).thenReturn(insertUri);
-               when(insertUri.setMetaString(any(String[].class))).thenReturn(insertUri);
-               when(insertUri.setSuggestedEdition(anyLong())).thenReturn(insertUri);
-               when(sone.getInsertUri()).thenReturn(insertUri);
-               assertThat(soneDownloader.parseSone(sone, inputStream).getInsertUri(), is(insertUri));
-       }
-
-       @Test
        public void parsingASoneSucceedsWithProfile() throws SoneException, MalformedURLException {
                InputStream inputStream = getClass().getResourceAsStream("sone-parser-with-profile.xml");
                final Profile profile = soneDownloader.parseSone(sone, inputStream).getProfile();
index 9efd4dd..28ead14 100644 (file)
@@ -73,7 +73,6 @@ public class SoneInserterTest {
                InsertInformation insertInformation = soneInserter.new InsertInformation(sone);
                HashMap<String, Object> manifestEntries = insertInformation.generateManifestEntries();
                assertThat(manifestEntries.keySet(), containsInAnyOrder("index.html", "sone.xml"));
-               assertThat(insertInformation.getInsertUri(), is(insertUri));
                assertThat(insertInformation.getFingerprint(), is(fingerprint));
        }