From 4f6ad3263f24e3f8b2639dd586377b1e25307bb4 Mon Sep 17 00:00:00 2001 From: deaflynx Date: Fri, 18 Dec 2020 14:58:34 +0200 Subject: [PATCH] Added edge_name_unq_key in saveEdge --- .../server/dao/edge/EdgeServiceImpl.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/dao/src/main/java/org/thingsboard/server/dao/edge/EdgeServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/edge/EdgeServiceImpl.java index 9d3ddd6b05..afb6fac8a6 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/edge/EdgeServiceImpl.java +++ b/dao/src/main/java/org/thingsboard/server/dao/edge/EdgeServiceImpl.java @@ -25,6 +25,7 @@ import org.apache.http.HttpHost; import org.apache.http.conn.ssl.DefaultHostnameVerifier; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; +import org.hibernate.exception.ConstraintViolationException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.cache.Cache; @@ -178,7 +179,17 @@ public class EdgeServiceImpl extends AbstractEntityService implements EdgeServic public Edge saveEdge(Edge edge) { log.trace("Executing saveEdge [{}]", edge); edgeValidator.validate(edge, Edge::getTenantId); - return edgeDao.save(edge.getTenantId(), edge); + try { + return edgeDao.save(edge.getTenantId(), edge); + } catch (Exception t) { + ConstraintViolationException e = extractConstraintViolationException(t).orElse(null); + if (e != null && e.getConstraintName() != null + && e.getConstraintName().equalsIgnoreCase("edge_name_unq_key")) { + throw new DataValidationException("Edge with such name already exists!"); + } else { + throw t; + } + } } @Override