X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Fjsite%2Fcore%2FNodeManager.java;h=d81416bc9457d891a8a88d3a02067d34728f7d51;hb=5e5d4cb3b2789b4d3ba801e297da27f09003f306;hp=f772dc2592bf440791db738fb054a22423d92251;hpb=78dd8a015cbfdedca1a962d03d16b89ee8187b8f;p=jSite2.git diff --git a/src/net/pterodactylus/jsite/core/NodeManager.java b/src/net/pterodactylus/jsite/core/NodeManager.java index f772dc2..d81416b 100644 --- a/src/net/pterodactylus/jsite/core/NodeManager.java +++ b/src/net/pterodactylus/jsite/core/NodeManager.java @@ -40,6 +40,7 @@ import java.util.logging.Logger; import net.pterodactylus.fcp.highlevel.HighLevelClient; import net.pterodactylus.fcp.highlevel.HighLevelClientListener; +import net.pterodactylus.fcp.highlevel.HighLevelException; import net.pterodactylus.fcp.highlevel.KeyGenerationResult; import net.pterodactylus.util.io.Closer; import net.pterodactylus.util.logging.Logging; @@ -48,7 +49,6 @@ import net.pterodactylus.util.logging.Logging; * TODO * * @author David ‘Bombe’ Roden <bombe@freenetproject.org> - * @version $Id$ */ public class NodeManager implements Iterable, PropertyChangeListener, HighLevelClientListener { @@ -346,6 +346,7 @@ public class NodeManager implements Iterable, PropertyChangeListener, High if (nodeClients.containsKey(node)) { disconnect(node); } + nodes.remove(node); node.removePropertyChangeListener(this); fireNodeRemoved(node); } @@ -429,17 +430,22 @@ public class NodeManager implements Iterable, PropertyChangeListener, High * public key at index 1 * @throws IOException * if an I/O error occurs communicating with the node + * @throws JSiteException + * if there is a problem with the node */ - public String[] generateKeyPair() throws IOException { - if (!nodes.isEmpty()) { - Node node = nodes.get(0); - HighLevelClient highLevelClient = nodeClients.get(node); - try { - KeyGenerationResult keyGenerationResult = highLevelClient.generateKey().getResult(); - return new String[] { keyGenerationResult.getInsertURI(), keyGenerationResult.getRequestURI() }; - } catch (InterruptedException e) { - /* ignore. */ - } + public String[] generateKeyPair() throws IOException, JSiteException { + if (nodes.isEmpty()) { + throw new NoNodeException("no node configured"); + } + Node node = nodes.get(0); + HighLevelClient highLevelClient = nodeClients.get(node); + try { + KeyGenerationResult keyGenerationResult = highLevelClient.generateKey().getResult(); + return new String[] { keyGenerationResult.getInsertURI(), keyGenerationResult.getRequestURI() }; + } catch (HighLevelException hle1) { + throw new BackendException(hle1); + } catch (InterruptedException e) { + /* ignore. */ } return null; }