aboutsummaryrefslogtreecommitdiff
path: root/central/src/main/java/moe/yuuta/dn42peering/manage/ManageHandler.java
diff options
context:
space:
mode:
Diffstat (limited to 'central/src/main/java/moe/yuuta/dn42peering/manage/ManageHandler.java')
-rw-r--r--central/src/main/java/moe/yuuta/dn42peering/manage/ManageHandler.java11
1 files changed, 10 insertions, 1 deletions
diff --git a/central/src/main/java/moe/yuuta/dn42peering/manage/ManageHandler.java b/central/src/main/java/moe/yuuta/dn42peering/manage/ManageHandler.java
index 6b22858..4ba720a 100644
--- a/central/src/main/java/moe/yuuta/dn42peering/manage/ManageHandler.java
+++ b/central/src/main/java/moe/yuuta/dn42peering/manage/ManageHandler.java
@@ -22,10 +22,12 @@ import io.vertx.json.schema.SchemaParser;
import io.vertx.json.schema.SchemaRouter;
import io.vertx.json.schema.SchemaRouterOptions;
import io.vertx.json.schema.common.dsl.ObjectSchemaBuilder;
+import io.vertx.serviceproxy.ServiceException;
import moe.yuuta.dn42peering.admin.SudoUtils;
import moe.yuuta.dn42peering.asn.IASNService;
import moe.yuuta.dn42peering.jaba.Pair;
import moe.yuuta.dn42peering.node.INodeService;
+import moe.yuuta.dn42peering.peer.DuplicatePeerException;
import moe.yuuta.dn42peering.peer.IPeerService;
import moe.yuuta.dn42peering.peer.Peer;
import moe.yuuta.dn42peering.portal.FormException;
@@ -146,7 +148,14 @@ public class ManageHandler implements ISubRouter {
if (ar.succeeded()) {
peer.setId((int) (long) ar.result());
f.complete(peer);
- } else f.fail(ar.cause());
+ } else {
+ if(((ServiceException)ar.cause()).getDebugInfo().getString("causeName")
+ .equals(DuplicatePeerException.class.getName())) {
+ f.fail(new FormException(peer, "A peer on your chosen node already exists. You can only create one peer per node."));
+ return;
+ }
+ f.fail(ar.cause());
+ }
})))
.onSuccess(peer -> {
ctx.response()