Skip to content

Commit d3a0b1f

Browse files
author
Gerald Unterrainer
committed
Merge branch 'develop'
2 parents 25c83d9 + 0ab94e6 commit d3a0b1f

File tree

9 files changed

+50
-38
lines changed

9 files changed

+50
-38
lines changed

pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
<modelVersion>4.0.0</modelVersion>
1919
<artifactId>http-server</artifactId>
20-
<version>0.2.30</version>
20+
<version>0.2.31</version>
2121
<name>HttpServer</name>
2222
<packaging>jar</packaging>
2323

src/main/java/info/unterrainer/commons/httpserver/AddonBuilder.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@ public class AddonBuilder<P extends BasicJpa, J extends BasicJson, E> {
2525

2626
private final GenericHandlerGroupBuilder<P, J, E> builder;
2727

28-
public GenericHandlerGroupBuilder<P, J, E> postDeleteAsync(final PostDeleteAsync delegate) {
28+
public GenericHandlerGroupBuilder<P, J, E> postDeleteAsync(final PostDeleteAsync<P> delegate) {
2929
builder.extensions.postDeleteAsync().add(delegate);
3030
return builder;
3131
}
3232

33-
public GenericHandlerGroupBuilder<P, J, E> postDeleteSync(final PostDeleteSync<E> delegate) {
33+
public GenericHandlerGroupBuilder<P, J, E> postDeleteSync(final PostDeleteSync<P, E> delegate) {
3434
builder.extensions.postDeleteSync().add(delegate);
3535
return builder;
3636
}
@@ -75,12 +75,12 @@ public GenericHandlerGroupBuilder<P, J, E> postModifySync(final PostModifySync<P
7575
return builder;
7676
}
7777

78-
public GenericHandlerGroupBuilder<P, J, E> preDeleteAsync(final PreDeleteAsync delegate) {
78+
public GenericHandlerGroupBuilder<P, J, E> preDeleteAsync(final PreDeleteAsync<P> delegate) {
7979
builder.extensions.preDeleteAsync().add(delegate);
8080
return builder;
8181
}
8282

83-
public GenericHandlerGroupBuilder<P, J, E> preDeleteSync(final PreDeleteSync<E> delegate) {
83+
public GenericHandlerGroupBuilder<P, J, E> preDeleteSync(final PreDeleteSync<P, E> delegate) {
8484
builder.extensions.preDeleteSync().add(delegate);
8585
return builder;
8686
}

src/main/java/info/unterrainer/commons/httpserver/GenericHandlerGroup.java

+6-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.util.LinkedHashMap;
66
import java.util.List;
77
import java.util.Map.Entry;
8+
import java.util.Set;
89
import java.util.concurrent.ExecutorService;
910

1011
import info.unterrainer.commons.httpserver.daos.CoreDao;
@@ -211,11 +212,14 @@ private void delete(final Context ctx) {
211212
Long id = hu.checkAndGetId(ctx);
212213
DaoTransaction<E> transaction = dao.getTransactionManager().beginTransaction(ctx);
213214

214-
id = extensions.runPreDelete(ctx, makeAsyncExtensionContextFor(ctx), transaction.getManager(), id,
215+
Set<Long> tenants = hu.getReadTenantIdsFrom(ctx);
216+
P jpa = dao.getById(transaction.getManager(), id, tenants);
217+
id = extensions.runPreDelete(ctx, makeAsyncExtensionContextFor(ctx), transaction.getManager(), id, jpa,
215218
executorService);
216219
dao.delete(transaction.getManager(), id, hu.getReadTenantIdsFrom(ctx));
217220
ctx.status(204);
218-
extensions.runPostDelete(ctx, makeAsyncExtensionContextFor(ctx), transaction.getManager(), id, executorService);
221+
extensions.runPostDelete(ctx, makeAsyncExtensionContextFor(ctx), transaction.getManager(), id, jpa,
222+
executorService);
219223

220224
transaction.end();
221225
}

src/main/java/info/unterrainer/commons/httpserver/HandlerExtensions.java

+14-14
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@
3636
@Accessors(fluent = true)
3737
public class HandlerExtensions<P extends BasicJpa, J extends BasicJson, E> {
3838

39-
private final List<PostDeleteAsync> postDeleteAsync = new ArrayList<>();
40-
private final List<PostDeleteSync<E>> postDeleteSync = new ArrayList<>();
39+
private final List<PostDeleteAsync<P>> postDeleteAsync = new ArrayList<>();
40+
private final List<PostDeleteSync<P, E>> postDeleteSync = new ArrayList<>();
4141
private final List<PostGetListAsync<P, J>> postGetListAsync = new ArrayList<>();
4242
private final List<PostGetListSync<P, J, E>> postGetListSync = new ArrayList<>();
4343
private final List<PostGetSingleAsync<P, J>> postGetSingleAsync = new ArrayList<>();
@@ -46,8 +46,8 @@ public class HandlerExtensions<P extends BasicJpa, J extends BasicJson, E> {
4646
private final List<PostInsertSync<P, J, E>> postInsertSync = new ArrayList<>();
4747
private final List<PostModifyAsync<P, J>> postModifyAsync = new ArrayList<>();
4848
private final List<PostModifySync<P, J, E>> postModifySync = new ArrayList<>();
49-
private final List<PreDeleteAsync> preDeleteAsync = new ArrayList<>();
50-
private final List<PreDeleteSync<E>> preDeleteSync = new ArrayList<>();
49+
private final List<PreDeleteAsync<P>> preDeleteAsync = new ArrayList<>();
50+
private final List<PreDeleteSync<P, E>> preDeleteSync = new ArrayList<>();
5151
private final List<PreInsertAsync<P, J>> preInsertAsync = new ArrayList<>();
5252
private final List<PreInsertSync<P, J, E>> preInsertSync = new ArrayList<>();
5353
private final List<PreModifyAsync<P, J>> preModifyAsync = new ArrayList<>();
@@ -143,26 +143,26 @@ public J runPostModify(final Context ctx, final AsyncExtensionContext asyncCtx,
143143
}
144144

145145
public Long runPreDelete(final Context ctx, final AsyncExtensionContext asyncCtx, final E entityManager,
146-
final Long receivedId, final ExecutorService executorService) {
147-
for (PreDeleteAsync h : preDeleteAsync())
148-
executorService.execute(() -> h.handle(asyncCtx, receivedId));
146+
final Long receivedId, final P jpaToDelete, final ExecutorService executorService) {
147+
for (PreDeleteAsync<P> h : preDeleteAsync())
148+
executorService.execute(() -> h.handle(asyncCtx, receivedId, jpaToDelete));
149149

150150
Long result = receivedId;
151-
for (PreDeleteSync<E> h : preDeleteSync()) {
152-
result = h.handle(ctx, entityManager, receivedId);
151+
for (PreDeleteSync<P, E> h : preDeleteSync()) {
152+
result = h.handle(ctx, entityManager, receivedId, jpaToDelete);
153153
if (result == null)
154154
throw new GracefulCancelationException();
155155
}
156156
return result;
157157
}
158158

159159
public void runPostDelete(final Context ctx, final AsyncExtensionContext asyncCtx, final E entityManager,
160-
final Long receivedId, final ExecutorService executorService) {
161-
for (PostDeleteAsync h : postDeleteAsync())
162-
executorService.execute(() -> h.handle(asyncCtx, receivedId));
160+
final Long receivedId, final P deletedJpa, final ExecutorService executorService) {
161+
for (PostDeleteAsync<P> h : postDeleteAsync())
162+
executorService.execute(() -> h.handle(asyncCtx, receivedId, deletedJpa));
163163

164-
for (PostDeleteSync<E> h : postDeleteSync())
165-
if (!h.handle(ctx, entityManager, receivedId))
164+
for (PostDeleteSync<P, E> h : postDeleteSync())
165+
if (!h.handle(ctx, entityManager, receivedId, deletedJpa))
166166
throw new GracefulCancelationException();
167167
}
168168
}
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
11
package info.unterrainer.commons.httpserver.extensions.delegates;
22

33
import info.unterrainer.commons.httpserver.extensions.AsyncExtensionContext;
4+
import info.unterrainer.commons.rdbutils.entities.BasicJpa;
45

5-
public interface PostDeleteAsync {
6+
public interface PostDeleteAsync<P extends BasicJpa> {
67

78
/**
89
* Allows you to execute code after the deletion of an item.
910
* <p>
1011
* Since this is asynchronous changing the DTOs will do nothing (runs in
1112
* parallel and the action probably already happened when your code is
1213
* executed).
13-
*
14+
*
1415
* @param asyncCtx a context containing values that have been mapped using
1516
* AsyncExtensionContextMappers
1617
* @param receivedId the ID of the item that was deleted
18+
* @param deletedJpa the JPA that was deleted
1719
*/
18-
void handle(AsyncExtensionContext asyncCtx, Long receivedId);
20+
void handle(AsyncExtensionContext asyncCtx, Long receivedId, P deletedJpa);
1921
}

src/main/java/info/unterrainer/commons/httpserver/extensions/delegates/PostDeleteSync.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
package info.unterrainer.commons.httpserver.extensions.delegates;
22

3+
import info.unterrainer.commons.rdbutils.entities.BasicJpa;
34
import io.javalin.http.Context;
45

5-
public interface PostDeleteSync<E> {
6+
public interface PostDeleteSync<P extends BasicJpa, E> {
67

78
/**
89
* Allows you to execute code after the deletion of an item.<br>
@@ -15,8 +16,9 @@ public interface PostDeleteSync<E> {
1516
* @param entityManager the entity-manager you can use to get the active
1617
* transaction, if any
1718
* @param receivedId the ID of the item that was deleted
19+
* @param deletedJpa the JPA that was deleted
1820
* @return true, if the handler-chain should be continued to be processed, false
1921
* otherwise.
2022
*/
21-
boolean handle(Context ctx, E entityManager, Long receivedId);
23+
boolean handle(Context ctx, E entityManager, Long receivedId, P deletedJpa);
2224
}
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
11
package info.unterrainer.commons.httpserver.extensions.delegates;
22

33
import info.unterrainer.commons.httpserver.extensions.AsyncExtensionContext;
4+
import info.unterrainer.commons.rdbutils.entities.BasicJpa;
45

5-
public interface PreDeleteAsync {
6+
public interface PreDeleteAsync<P extends BasicJpa> {
67

78
/**
89
* Allows you to execute code before deletion of an item.
910
* <p>
1011
* Since this is asynchronous changing the DTOs will do nothing (runs in
1112
* parallel and the action probably already happened when your code is
1213
* executed).
13-
*
14-
* @param asyncCtx a context containing values that have been mapped using
15-
* AsyncExtensionContextMappers
16-
* @param receivedId the ID of the item that is about to get deleted
14+
*
15+
* @param asyncCtx a context containing values that have been mapped using
16+
* AsyncExtensionContextMappers
17+
* @param receivedId the ID of the item that is about to get deleted
18+
* @param jpaToDelete the JPA to delete
1719
*/
18-
void handle(AsyncExtensionContext asyncCtx, Long receivedId);
20+
void handle(AsyncExtensionContext asyncCtx, Long receivedId, P jpaToDelete);
1921
}

src/main/java/info/unterrainer/commons/httpserver/extensions/delegates/PreDeleteSync.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
package info.unterrainer.commons.httpserver.extensions.delegates;
22

3+
import info.unterrainer.commons.rdbutils.entities.BasicJpa;
34
import io.javalin.http.Context;
45

5-
public interface PreDeleteSync<E> {
6+
public interface PreDeleteSync<P extends BasicJpa, E> {
67

78
/**
89
* Allows you to execute code before the deletion of an item.<br>
@@ -15,7 +16,8 @@ public interface PreDeleteSync<E> {
1516
* @param entityManager the entity-manager you can use to get the active
1617
* transaction, if any
1718
* @param receivedId the ID of the item that is about to get deleted
19+
* @param jpaToDelete the JPA to delete
1820
* @return the ID of the item that is about to get deleted
1921
*/
20-
Long handle(Context ctx, E entityManager, Long receivedId);
22+
Long handle(Context ctx, E entityManager, Long receivedId, P jpaToDelete);
2123
}

src/test/java/info/unterrainer/commons/httpserver/scripts/LocalTestServer.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ private static void startServer() {
5757
return resultJpa;
5858
})
5959
.extension()
60-
.preDeleteSync((ctx, em, receivedId) -> {
60+
.preDeleteSync((ctx, em, receivedId, deletedJpa) -> {
6161
log.info("before delete id:[{}]", receivedId);
6262
return receivedId;
6363
})
@@ -77,7 +77,7 @@ private static void startServer() {
7777
return responseList;
7878
})
7979
.extension()
80-
.postDeleteSync((ctx, em, receivedId) -> {
80+
.postDeleteSync((ctx, em, receivedId, deletedJpa) -> {
8181
log.info("after delete");
8282
return true;
8383
})
@@ -105,7 +105,7 @@ private static void startServer() {
105105
return resultJpa;
106106
})
107107
.extension()
108-
.preDeleteSync((ctx, em, receivedId) -> {
108+
.preDeleteSync((ctx, em, receivedId, deletedJpa) -> {
109109
log.info("before delete id:[{}]", receivedId);
110110
return receivedId;
111111
})
@@ -125,7 +125,7 @@ private static void startServer() {
125125
return responseList;
126126
})
127127
.extension()
128-
.postDeleteSync((ctx, em, receivedId) -> {
128+
.postDeleteSync((ctx, em, receivedId, deletedJpa) -> {
129129
log.info("after delete");
130130
return true;
131131
})

0 commit comments

Comments
 (0)