Merge branch 'partial-rewrite' into next
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sat, 29 Jun 2013 11:11:47 +0000 (13:11 +0200)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sat, 29 Jun 2013 14:05:39 +0000 (16:05 +0200)
1  2 
pom.xml
src/main/java/net/pterodactylus/sone/fcp/FcpInterface.java
src/main/java/net/pterodactylus/sone/fcp/LockSoneCommand.java
src/main/java/net/pterodactylus/sone/fcp/UnlockSoneCommand.java
src/main/resources/i18n/sone.fr.properties
src/test/java/net/pterodactylus/sone/fcp/LockSoneCommandTest.java
src/test/java/net/pterodactylus/sone/fcp/UnlockSoneCommandTest.java

diff --cc pom.xml
Simple merge
index 2a0c81a,0000000..5cad8ca
mode 100644,000000..100644
--- /dev/null
@@@ -1,58 -1,0 +1,60 @@@
-               Sone sone = getSone(parameters, "Sone", true, true);
-               getCore().lockSone(sone);
-               return new Response("SoneLocked", new SimpleFieldSetBuilder().put("Sone", sone.getId()).get());
 +/*
 + * Sone - LockSoneCommand.java - Copyright © 2013 David Roden
 + *
 + * This program is free software: you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
 + * the Free Software Foundation, either version 3 of the License, or
 + * (at your option) any later version.
 + *
 + * This program is distributed in the hope that it will be useful,
 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + * GNU General Public License for more details.
 + *
 + * You should have received a copy of the GNU General Public License
 + * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 + */
 +
 +package net.pterodactylus.sone.fcp;
 +
 +import net.pterodactylus.sone.core.Core;
 +import net.pterodactylus.sone.data.Sone;
 +import net.pterodactylus.sone.freenet.SimpleFieldSetBuilder;
 +import net.pterodactylus.sone.freenet.fcp.FcpException;
 +
 +import freenet.support.SimpleFieldSet;
 +import freenet.support.api.Bucket;
 +
++import com.google.common.base.Optional;
++
 +/**
 + * Implements the “LockSone” FCP command. If a valid local Sone was given as
 + * parameter “Sone,” this command will always lock the Sone and reply with
 + * “SoneLocked.”
 + *
 + * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
 + */
 +public class LockSoneCommand extends AbstractSoneCommand {
 +
 +      /**
 +       * Creates a new “LockSone” FCP command.
 +       *
 +       * @param core
 +       *              The core to operate on
 +       */
 +      public LockSoneCommand(Core core) {
 +              super(core, true);
 +      }
 +
 +      //
 +      // COMMAND METHODS
 +      //
 +
 +      @Override
 +      public Response execute(SimpleFieldSet parameters, Bucket data, AccessType accessType) throws FcpException {
++              Optional<Sone> sone = getSone(parameters, "Sone", true, true);
++              getCore().lockSone(sone.get());
++              return new Response("SoneLocked", new SimpleFieldSetBuilder().put("Sone", sone.get().getId()).get());
 +      }
 +
 +}
index a187576,0000000..7ecfada
mode 100644,000000..100644
--- /dev/null
@@@ -1,58 -1,0 +1,60 @@@
-               Sone sone = getSone(parameters, "Sone", true, true);
-               getCore().unlockSone(sone);
-               return new Response("SoneUnlocked", new SimpleFieldSetBuilder().put("Sone", sone.getId()).get());
 +/*
 + * Sone - LockSoneCommand.java - Copyright © 2013 David Roden
 + *
 + * This program is free software: you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
 + * the Free Software Foundation, either version 3 of the License, or
 + * (at your option) any later version.
 + *
 + * This program is distributed in the hope that it will be useful,
 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + * GNU General Public License for more details.
 + *
 + * You should have received a copy of the GNU General Public License
 + * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 + */
 +
 +package net.pterodactylus.sone.fcp;
 +
 +import net.pterodactylus.sone.core.Core;
 +import net.pterodactylus.sone.data.Sone;
 +import net.pterodactylus.sone.freenet.SimpleFieldSetBuilder;
 +import net.pterodactylus.sone.freenet.fcp.FcpException;
 +
 +import freenet.support.SimpleFieldSet;
 +import freenet.support.api.Bucket;
 +
++import com.google.common.base.Optional;
++
 +/**
 + * Implements the “UnlockSone” FCP command. If a valid local Sone was given as
 + * parameter “Sone,” this command will always unlock the Sone and reply with
 + * “SoneUnlocked.”
 + *
 + * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
 + */
 +public class UnlockSoneCommand extends AbstractSoneCommand {
 +
 +      /**
 +       * Creates a new “LockSone” FCP command.
 +       *
 +       * @param core
 +       *              The core to operate on
 +       */
 +      public UnlockSoneCommand(Core core) {
 +              super(core, true);
 +      }
 +
 +      //
 +      // COMMAND METHODS
 +      //
 +
 +      @Override
 +      public Response execute(SimpleFieldSet parameters, Bucket data, AccessType accessType) throws FcpException {
++              Optional<Sone> sone = getSone(parameters, "Sone", true, true);
++              getCore().unlockSone(sone.get());
++              return new Response("SoneUnlocked", new SimpleFieldSetBuilder().put("Sone", sone.get().getId()).get());
 +      }
 +
 +}
index 3789d08,0000000..ae1993a
mode 100644,000000..100644
--- /dev/null
@@@ -1,85 -1,0 +1,87 @@@
-               when(core.getSone(eq("LocalSone"), anyBoolean())).thenReturn(localSone);
 +/*
 + * Sone - LockSoneCommandTest.java - Copyright © 2013 David Roden
 + *
 + * This program is free software: you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
 + * the Free Software Foundation, either version 3 of the License, or
 + * (at your option) any later version.
 + *
 + * This program is distributed in the hope that it will be useful,
 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + * GNU General Public License for more details.
 + *
 + * You should have received a copy of the GNU General Public License
 + * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 + */
 +
 +package net.pterodactylus.sone.fcp;
 +
 +import static org.hamcrest.CoreMatchers.is;
 +import static org.hamcrest.CoreMatchers.notNullValue;
 +import static org.hamcrest.MatcherAssert.assertThat;
 +import static org.mockito.Matchers.anyBoolean;
 +import static org.mockito.Matchers.eq;
 +import static org.mockito.Mockito.mock;
 +import static org.mockito.Mockito.verify;
 +import static org.mockito.Mockito.when;
 +
 +import net.pterodactylus.sone.core.Core;
 +import net.pterodactylus.sone.data.Sone;
 +import net.pterodactylus.sone.freenet.SimpleFieldSetBuilder;
 +import net.pterodactylus.sone.freenet.fcp.Command.Response;
 +import net.pterodactylus.sone.freenet.fcp.FcpException;
 +
 +import freenet.support.SimpleFieldSet;
 +
++import com.google.common.base.Optional;
 +import org.junit.Test;
 +
 +/**
 + * Tests for {@link UnlockSoneCommand}.
 + *
 + * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
 + */
 +public class LockSoneCommandTest {
 +
 +      @Test
 +      public void testLockingALocalSone() throws FcpException {
 +              Sone localSone = mock(Sone.class);
 +              when(localSone.getId()).thenReturn("LocalSone");
++              when(localSone.isLocal()).thenReturn(true);
 +              Core core = mock(Core.class);
-               when(core.getSone(eq("RemoteSone"), anyBoolean())).thenReturn(removeSone);
++              when(core.getSone(eq("LocalSone"))).thenReturn(Optional.of(localSone));
 +              when(core.getLocalSone(eq("LocalSone"), anyBoolean())).thenReturn(localSone);
 +              SimpleFieldSet fields = new SimpleFieldSetBuilder().put("Sone", "LocalSone").get();
 +
 +              LockSoneCommand lockSoneCommand = new LockSoneCommand(core);
 +              Response response = lockSoneCommand.execute(fields, null, null);
 +
 +              verify(core).lockSone(eq(localSone));
 +              assertThat(response, notNullValue());
 +              assertThat(response.getReplyParameters(), notNullValue());
 +              assertThat(response.getReplyParameters().get("Message"), is("SoneLocked"));
 +              assertThat(response.getReplyParameters().get("Sone"), is("LocalSone"));
 +      }
 +
 +      @Test(expected = FcpException.class)
 +      public void testLockingARemoteSone() throws FcpException {
 +              Sone removeSone = mock(Sone.class);
 +              Core core = mock(Core.class);
++              when(core.getSone(eq("RemoteSone"))).thenReturn(Optional.of(removeSone));
 +              SimpleFieldSet fields = new SimpleFieldSetBuilder().put("Sone", "RemoteSone").get();
 +
 +              LockSoneCommand lockSoneCommand = new LockSoneCommand(core);
 +              lockSoneCommand.execute(fields, null, null);
 +      }
 +
 +      @Test(expected = FcpException.class)
 +      public void testMissingSone() throws FcpException {
 +              Core core = mock(Core.class);
 +              SimpleFieldSet fields = new SimpleFieldSetBuilder().get();
 +
 +              LockSoneCommand lockSoneCommand = new LockSoneCommand(core);
 +              lockSoneCommand.execute(fields, null, null);
 +      }
 +
 +}
index 05fc73c,0000000..b966b19
mode 100644,000000..100644
--- /dev/null
@@@ -1,85 -1,0 +1,87 @@@
-               when(core.getSone(eq("LocalSone"), anyBoolean())).thenReturn(localSone);
 +/*
 + * Sone - LockSoneCommandTest.java - Copyright © 2013 David Roden
 + *
 + * This program is free software: you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
 + * the Free Software Foundation, either version 3 of the License, or
 + * (at your option) any later version.
 + *
 + * This program is distributed in the hope that it will be useful,
 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + * GNU General Public License for more details.
 + *
 + * You should have received a copy of the GNU General Public License
 + * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 + */
 +
 +package net.pterodactylus.sone.fcp;
 +
 +import static org.hamcrest.CoreMatchers.is;
 +import static org.hamcrest.CoreMatchers.notNullValue;
 +import static org.hamcrest.MatcherAssert.assertThat;
 +import static org.mockito.Matchers.anyBoolean;
 +import static org.mockito.Matchers.eq;
 +import static org.mockito.Mockito.mock;
 +import static org.mockito.Mockito.verify;
 +import static org.mockito.Mockito.when;
 +
 +import net.pterodactylus.sone.core.Core;
 +import net.pterodactylus.sone.data.Sone;
 +import net.pterodactylus.sone.freenet.SimpleFieldSetBuilder;
 +import net.pterodactylus.sone.freenet.fcp.Command.Response;
 +import net.pterodactylus.sone.freenet.fcp.FcpException;
 +
 +import freenet.support.SimpleFieldSet;
 +
++import com.google.common.base.Optional;
 +import org.junit.Test;
 +
 +/**
 + * Tests for {@link LockSoneCommand}.
 + *
 + * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
 + */
 +public class UnlockSoneCommandTest {
 +
 +      @Test
 +      public void testUnlockingALocalSone() throws FcpException {
 +              Sone localSone = mock(Sone.class);
 +              when(localSone.getId()).thenReturn("LocalSone");
++              when(localSone.isLocal()).thenReturn(true);
 +              Core core = mock(Core.class);
-               when(core.getSone(eq("RemoteSone"), anyBoolean())).thenReturn(removeSone);
++              when(core.getSone(eq("LocalSone"))).thenReturn(Optional.of(localSone));
 +              when(core.getLocalSone(eq("LocalSone"), anyBoolean())).thenReturn(localSone);
 +              SimpleFieldSet fields = new SimpleFieldSetBuilder().put("Sone", "LocalSone").get();
 +
 +              UnlockSoneCommand unlockSoneCommand = new UnlockSoneCommand(core);
 +              Response response = unlockSoneCommand.execute(fields, null, null);
 +
 +              verify(core).unlockSone(eq(localSone));
 +              assertThat(response, notNullValue());
 +              assertThat(response.getReplyParameters(), notNullValue());
 +              assertThat(response.getReplyParameters().get("Message"), is("SoneUnlocked"));
 +              assertThat(response.getReplyParameters().get("Sone"), is("LocalSone"));
 +      }
 +
 +      @Test(expected = FcpException.class)
 +      public void testUnlockingARemoteSone() throws FcpException {
 +              Sone removeSone = mock(Sone.class);
 +              Core core = mock(Core.class);
++              when(core.getSone(eq("RemoteSone"))).thenReturn(Optional.of(removeSone));
 +              SimpleFieldSet fields = new SimpleFieldSetBuilder().put("Sone", "RemoteSone").get();
 +
 +              UnlockSoneCommand unlockSoneCommand = new UnlockSoneCommand(core);
 +              unlockSoneCommand.execute(fields, null, null);
 +      }
 +
 +      @Test(expected = FcpException.class)
 +      public void testMissingSone() throws FcpException {
 +              Core core = mock(Core.class);
 +              SimpleFieldSet fields = new SimpleFieldSetBuilder().get();
 +
 +              UnlockSoneCommand unlockSoneCommand = new UnlockSoneCommand(core);
 +              unlockSoneCommand.execute(fields, null, null);
 +      }
 +
 +}