summaryrefslogtreecommitdiff
path: root/opendc-web/opendc-web-server/src/main/java/org
diff options
context:
space:
mode:
Diffstat (limited to 'opendc-web/opendc-web-server/src/main/java/org')
-rw-r--r--opendc-web/opendc-web-server/src/main/java/org/opendc/web/server/rest/user/TopologyResource.java10
1 files changed, 10 insertions, 0 deletions
diff --git a/opendc-web/opendc-web-server/src/main/java/org/opendc/web/server/rest/user/TopologyResource.java b/opendc-web/opendc-web-server/src/main/java/org/opendc/web/server/rest/user/TopologyResource.java
index 2b66b64b..71491801 100644
--- a/opendc-web/opendc-web-server/src/main/java/org/opendc/web/server/rest/user/TopologyResource.java
+++ b/opendc-web/opendc-web-server/src/main/java/org/opendc/web/server/rest/user/TopologyResource.java
@@ -22,10 +22,12 @@
package org.opendc.web.server.rest.user;
+import io.quarkus.hibernate.orm.panache.Panache;
import io.quarkus.security.identity.SecurityIdentity;
import java.time.Instant;
import java.util.List;
import javax.annotation.security.RolesAllowed;
+import javax.persistence.PersistenceException;
import javax.transaction.Transactional;
import javax.validation.Valid;
import javax.ws.rs.Consumes;
@@ -193,6 +195,14 @@ public final class TopologyResource {
entity.updatedAt = Instant.now();
entity.delete();
+
+ try {
+ // Flush the results, so we can check whether the constraints are not violated
+ Panache.flush();
+ } catch (PersistenceException e) {
+ throw new WebApplicationException("Topology is still in use", 403);
+ }
+
return UserProtocol.toDto(entity, auth);
}
}