diff --git a/pom.xml b/pom.xml
index cdba52f..8597ae8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -17,7 +17,7 @@
{ private final GenericHandlerGroupBuilder
builder; - public GenericHandlerGroupBuilder
postDeleteAsync(final PostDeleteAsync delegate) { + public GenericHandlerGroupBuilder
postDeleteAsync(final PostDeleteAsync
delegate) { builder.extensions.postDeleteAsync().add(delegate); return builder; } - public GenericHandlerGroupBuilder
postDeleteSync(final PostDeleteSync postDeleteSync(final PostDeleteSync delegate) {
builder.extensions.postDeleteSync().add(delegate);
return builder;
}
@@ -75,12 +75,12 @@ public GenericHandlerGroupBuilder postModifySync(final PostModifySync preDeleteAsync(final PreDeleteAsync delegate) {
+ public GenericHandlerGroupBuilder preDeleteAsync(final PreDeleteAsync delegate) {
builder.extensions.preDeleteAsync().add(delegate);
return builder;
}
- public GenericHandlerGroupBuilder preDeleteSync(final PreDeleteSync preDeleteSync(final PreDeleteSync delegate) {
builder.extensions.preDeleteSync().add(delegate);
return builder;
}
diff --git a/src/main/java/info/unterrainer/commons/httpserver/GenericHandlerGroup.java b/src/main/java/info/unterrainer/commons/httpserver/GenericHandlerGroup.java
index 69db800..26a90ff 100644
--- a/src/main/java/info/unterrainer/commons/httpserver/GenericHandlerGroup.java
+++ b/src/main/java/info/unterrainer/commons/httpserver/GenericHandlerGroup.java
@@ -5,6 +5,7 @@
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map.Entry;
+import java.util.Set;
import java.util.concurrent.ExecutorService;
import info.unterrainer.commons.httpserver.daos.CoreDao;
@@ -211,11 +212,14 @@ private void delete(final Context ctx) {
Long id = hu.checkAndGetId(ctx);
DaoTransaction {
- private final List {
private final List h : preDeleteAsync())
+ executorService.execute(() -> h.handle(asyncCtx, receivedId, jpaToDelete));
Long result = receivedId;
- for (PreDeleteSync h : preDeleteSync()) {
+ result = h.handle(ctx, entityManager, receivedId, jpaToDelete);
if (result == null)
throw new GracefulCancelationException();
}
@@ -157,12 +157,12 @@ public Long runPreDelete(final Context ctx, final AsyncExtensionContext asyncCtx
}
public void runPostDelete(final Context ctx, final AsyncExtensionContext asyncCtx, final E entityManager,
- final Long receivedId, final ExecutorService executorService) {
- for (PostDeleteAsync h : postDeleteAsync())
- executorService.execute(() -> h.handle(asyncCtx, receivedId));
+ final Long receivedId, final P deletedJpa, final ExecutorService executorService) {
+ for (PostDeleteAsync h : postDeleteAsync())
+ executorService.execute(() -> h.handle(asyncCtx, receivedId, deletedJpa));
- for (PostDeleteSync h : postDeleteSync())
+ if (!h.handle(ctx, entityManager, receivedId, deletedJpa))
throw new GracefulCancelationException();
}
}
diff --git a/src/main/java/info/unterrainer/commons/httpserver/extensions/delegates/PostDeleteAsync.java b/src/main/java/info/unterrainer/commons/httpserver/extensions/delegates/PostDeleteAsync.java
index 4393293..572cedb 100644
--- a/src/main/java/info/unterrainer/commons/httpserver/extensions/delegates/PostDeleteAsync.java
+++ b/src/main/java/info/unterrainer/commons/httpserver/extensions/delegates/PostDeleteAsync.java
@@ -1,8 +1,9 @@
package info.unterrainer.commons.httpserver.extensions.delegates;
import info.unterrainer.commons.httpserver.extensions.AsyncExtensionContext;
+import info.unterrainer.commons.rdbutils.entities.BasicJpa;
-public interface PostDeleteAsync {
+public interface PostDeleteAsync {
/**
* Allows you to execute code after the deletion of an item.
@@ -10,10 +11,11 @@ public interface PostDeleteAsync {
* Since this is asynchronous changing the DTOs will do nothing (runs in
* parallel and the action probably already happened when your code is
* executed).
- *
+ *
* @param asyncCtx a context containing values that have been mapped using
* AsyncExtensionContextMappers
* @param receivedId the ID of the item that was deleted
+ * @param deletedJpa the JPA that was deleted
*/
- void handle(AsyncExtensionContext asyncCtx, Long receivedId);
+ void handle(AsyncExtensionContext asyncCtx, Long receivedId, P deletedJpa);
}
diff --git a/src/main/java/info/unterrainer/commons/httpserver/extensions/delegates/PostDeleteSync.java b/src/main/java/info/unterrainer/commons/httpserver/extensions/delegates/PostDeleteSync.java
index 1cd51af..dcd0b78 100644
--- a/src/main/java/info/unterrainer/commons/httpserver/extensions/delegates/PostDeleteSync.java
+++ b/src/main/java/info/unterrainer/commons/httpserver/extensions/delegates/PostDeleteSync.java
@@ -1,8 +1,9 @@
package info.unterrainer.commons.httpserver.extensions.delegates;
+import info.unterrainer.commons.rdbutils.entities.BasicJpa;
import io.javalin.http.Context;
-public interface PostDeleteSync {
/**
* Allows you to execute code after the deletion of an item. {
/**
* Allows you to execute code before deletion of an item.
@@ -10,10 +11,11 @@ public interface PreDeleteAsync {
* Since this is asynchronous changing the DTOs will do nothing (runs in
* parallel and the action probably already happened when your code is
* executed).
- *
- * @param asyncCtx a context containing values that have been mapped using
- * AsyncExtensionContextMappers
- * @param receivedId the ID of the item that is about to get deleted
+ *
+ * @param asyncCtx a context containing values that have been mapped using
+ * AsyncExtensionContextMappers
+ * @param receivedId the ID of the item that is about to get deleted
+ * @param jpaToDelete the JPA to delete
*/
- void handle(AsyncExtensionContext asyncCtx, Long receivedId);
+ void handle(AsyncExtensionContext asyncCtx, Long receivedId, P jpaToDelete);
}
diff --git a/src/main/java/info/unterrainer/commons/httpserver/extensions/delegates/PreDeleteSync.java b/src/main/java/info/unterrainer/commons/httpserver/extensions/delegates/PreDeleteSync.java
index f9bc5c4..322b323 100644
--- a/src/main/java/info/unterrainer/commons/httpserver/extensions/delegates/PreDeleteSync.java
+++ b/src/main/java/info/unterrainer/commons/httpserver/extensions/delegates/PreDeleteSync.java
@@ -1,8 +1,9 @@
package info.unterrainer.commons.httpserver.extensions.delegates;
+import info.unterrainer.commons.rdbutils.entities.BasicJpa;
import io.javalin.http.Context;
-public interface PreDeleteSync {
/**
* Allows you to execute code before the deletion of an item.
@@ -15,8 +16,9 @@ public interface PostDeleteSync
@@ -15,7 +16,8 @@ public interface PreDeleteSync