Skip to content

Commit cdd2a15

Browse files
author
Gerald Unterrainer
committed
Merge branch 'develop'
2 parents c84e1a9 + 31f9158 commit cdd2a15

File tree

8 files changed

+53
-41
lines changed

8 files changed

+53
-41
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.28</version>
20+
<version>0.2.29</version>
2121
<name>HttpServer</name>
2222
<packaging>jar</packaging>
2323

src/main/java/info/unterrainer/commons/httpserver/daos/AsyncJpqlDao.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
import javax.persistence.EntityManagerFactory;
44

5+
import info.unterrainer.commons.httpserver.jpas.BasicPermissionJpa;
56
import info.unterrainer.commons.rdbutils.entities.BasicAsyncJpa;
6-
import info.unterrainer.commons.rdbutils.entities.BasicJpa;
77

88
public class AsyncJpqlDao<P extends BasicAsyncJpa> extends BasicJpqlDao<P> {
99

@@ -21,7 +21,7 @@ public class AsyncJpqlDao<P extends BasicAsyncJpa> extends BasicJpqlDao<P> {
2121
* @param tenantJpaType the JPA of the tenant-permission table associated
2222
*/
2323
public AsyncJpqlDao(final EntityManagerFactory emf, final Class<P> type,
24-
final Class<? extends BasicJpa> tenantJpaType) {
24+
final Class<? extends BasicPermissionJpa> tenantJpaType) {
2525
super(emf, type);
2626
this.coreDao.tenantData = new TenantData(tenantJpaType);
2727
}
@@ -42,7 +42,7 @@ public AsyncJpqlDao(final EntityManagerFactory emf, final Class<P> type,
4242
* @param tenantIdFieldName the name of the field holding the tenant-ID
4343
*/
4444
public AsyncJpqlDao(final EntityManagerFactory emf, final Class<P> type,
45-
final Class<? extends BasicJpa> tenantJpaType, final String tenantReferenceFieldName,
45+
final Class<? extends BasicPermissionJpa> tenantJpaType, final String tenantReferenceFieldName,
4646
final String tenantIdFieldName) {
4747
super(emf, type);
4848
this.coreDao.tenantData = new TenantData(tenantJpaType, tenantReferenceFieldName, tenantIdFieldName);

src/main/java/info/unterrainer/commons/httpserver/daos/InsertQueryBuilder.java

+1-9
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
package info.unterrainer.commons.httpserver.daos;
22

3-
import java.time.LocalDateTime;
43
import java.util.function.Function;
54

65
import javax.persistence.EntityManager;
76

8-
import info.unterrainer.commons.jreutils.DateUtils;
97
import info.unterrainer.commons.rdbutils.Transactions;
108
import info.unterrainer.commons.rdbutils.entities.BasicJpa;
119
import lombok.Getter;
@@ -31,12 +29,6 @@ protected <V> V withEntityManager(final Function<EntityManager, V> func) {
3129
* @return the entity after insertion
3230
*/
3331
public P execute() {
34-
return withEntityManager(em -> {
35-
LocalDateTime time = DateUtils.nowUtc();
36-
entity.setCreatedOn(time);
37-
entity.setEditedOn(time);
38-
em.persist(entity);
39-
return entity;
40-
});
32+
return withEntityManager(em -> dao.coreDao.create(em, entity, writeTenantIds));
4133
}
4234
}

src/main/java/info/unterrainer/commons/httpserver/daos/JpqlCoreDao.java

+8-7
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import info.unterrainer.commons.httpserver.exceptions.ForbiddenException;
2323
import info.unterrainer.commons.httpserver.exceptions.InternalServerErrorException;
24+
import info.unterrainer.commons.httpserver.jpas.BasicPermissionJpa;
2425
import info.unterrainer.commons.httpserver.jsons.ListJson;
2526
import info.unterrainer.commons.jreutils.DateUtils;
2627
import info.unterrainer.commons.rdbutils.entities.BasicJpa;
@@ -61,7 +62,7 @@ public P create(final EntityManager em, final P entity, final Set<Long> tenantId
6162
if (hasTenantData())
6263
try {
6364
for (Long tenantId : tenantIds) {
64-
BasicJpa tenantJpa = tenantData.getType().getConstructor().newInstance();
65+
BasicPermissionJpa tenantJpa = tenantData.getPermissionJpaType().getConstructor().newInstance();
6566
tenantData.getReferenceSetMethod().invoke(tenantJpa, entity.getId());
6667
tenantData.getTenantIdSetMethod().invoke(tenantJpa, tenantId);
6768

@@ -71,8 +72,8 @@ public P create(final EntityManager em, final P entity, final Set<Long> tenantId
7172
}
7273
} catch (InstantiationException | IllegalAccessException | IllegalArgumentException
7374
| InvocationTargetException | NoSuchMethodException | SecurityException e) {
74-
throw new InternalServerErrorException(
75-
String.format("Error creating permission-entry in [%s]", tenantData.getType().getSimpleName()));
75+
throw new InternalServerErrorException(String.format("Error creating permission-entry in [%s]",
76+
tenantData.getPermissionJpaType().getSimpleName()));
7677
}
7778
return entity;
7879
}
@@ -233,8 +234,8 @@ private String addTenantJoin(final String joinClause) {
233234
if (joinClause == null || joinClause.isBlank())
234235
r = "";
235236

236-
r += String.format(" LEFT JOIN %s tenantTable on o.id = tenantTable.%s", tenantData.getType().getSimpleName(),
237-
tenantData.getMainTableIdReferenceField());
237+
r += String.format(" LEFT JOIN %s tenantTable on o.id = tenantTable.%s",
238+
tenantData.getPermissionJpaType().getSimpleName(), tenantData.getMainTableIdReferenceField());
238239
return r;
239240
}
240241

@@ -266,8 +267,8 @@ private Map<String, Object> addTenantParams(final Map<String, Object> map, final
266267
}
267268

268269
private boolean hasTenantData() {
269-
return tenantData != null && tenantData.getType() != null && tenantData.getMainTableIdReferenceField() != null
270-
&& tenantData.getTenantIdField() != null;
270+
return tenantData != null && tenantData.getPermissionJpaType() != null
271+
&& tenantData.getMainTableIdReferenceField() != null && tenantData.getTenantIdField() != null;
271272
}
272273

273274
private boolean isSet(final String str) {

src/main/java/info/unterrainer/commons/httpserver/daos/JpqlDao.java

+8-5
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import javax.persistence.EntityManagerFactory;
66

7+
import info.unterrainer.commons.httpserver.jpas.BasicPermissionJpa;
78
import info.unterrainer.commons.rdbutils.entities.BasicJpa;
89
import io.javalin.http.Context;
910

@@ -22,7 +23,8 @@ public class JpqlDao<P extends BasicJpa> extends BasicJpqlDao<P> {
2223
* @param type the return-type of the query (the underlying JPA)
2324
* @param tenantJpaType the JPA of the tenant-permission table associated
2425
*/
25-
public JpqlDao(final EntityManagerFactory emf, final Class<P> type, final Class<? extends BasicJpa> tenantJpaType) {
26+
public JpqlDao(final EntityManagerFactory emf, final Class<P> type,
27+
final Class<? extends BasicPermissionJpa> tenantJpaType) {
2628
super(emf, type);
2729
this.coreDao.tenantData = new TenantData(tenantJpaType);
2830
}
@@ -45,7 +47,7 @@ public JpqlDao(final EntityManagerFactory emf, final Class<P> type, final Class<
4547
* associated
4648
*/
4749
public JpqlDao(final Function<Context, EntityManagerFactory> entityManagerFactorySupplier, final Class<P> type,
48-
final Class<? extends BasicJpa> tenantJpaType) {
50+
final Class<? extends BasicPermissionJpa> tenantJpaType) {
4951
super(entityManagerFactorySupplier, type);
5052
this.coreDao.tenantData = new TenantData(tenantJpaType);
5153
}
@@ -65,8 +67,9 @@ public JpqlDao(final Function<Context, EntityManagerFactory> entityManagerFactor
6567
* to the main-table-id
6668
* @param tenantIdFieldName the name of the field holding the tenant-ID
6769
*/
68-
public JpqlDao(final EntityManagerFactory emf, final Class<P> type, final Class<? extends BasicJpa> tenantJpaType,
69-
final String tenantReferenceFieldName, final String tenantIdFieldName) {
70+
public JpqlDao(final EntityManagerFactory emf, final Class<P> type,
71+
final Class<? extends BasicPermissionJpa> tenantJpaType, final String tenantReferenceFieldName,
72+
final String tenantIdFieldName) {
7073
super(emf, type);
7174
this.coreDao.tenantData = new TenantData(tenantJpaType, tenantReferenceFieldName, tenantIdFieldName);
7275
}
@@ -90,7 +93,7 @@ public JpqlDao(final EntityManagerFactory emf, final Class<P> type, final Class<
9093
* tenant-ID
9194
*/
9295
public JpqlDao(final Function<Context, EntityManagerFactory> entityManagerFactorySupplier, final Class<P> type,
93-
final Class<? extends BasicJpa> tenantJpaType, final String tenantReferenceFieldName,
96+
final Class<? extends BasicPermissionJpa> tenantJpaType, final String tenantReferenceFieldName,
9497
final String tenantIdFieldName) {
9598
super(entityManagerFactorySupplier, type);
9699
this.coreDao.tenantData = new TenantData(tenantJpaType, tenantReferenceFieldName, tenantIdFieldName);

src/main/java/info/unterrainer/commons/httpserver/daos/TenantData.java

+12-11
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
import java.lang.reflect.Method;
44

55
import info.unterrainer.commons.httpserver.exceptions.InternalServerErrorException;
6-
import info.unterrainer.commons.rdbutils.entities.BasicJpa;
6+
import info.unterrainer.commons.httpserver.jpas.BasicPermissionJpa;
77
import lombok.Getter;
88

99
public class TenantData {
1010

1111
@Getter
12-
private Class<? extends BasicJpa> type;
12+
private Class<? extends BasicPermissionJpa> permissionJpaType;
1313
@Getter
1414
private String mainTableIdReferenceField = "referenceId";
1515
@Getter
@@ -18,37 +18,38 @@ public class TenantData {
1818
private Method referenceSetMethod;
1919
private Method tenantIdSetMethod;
2020

21-
public TenantData(final Class<? extends BasicJpa> type) {
21+
public TenantData(final Class<? extends BasicPermissionJpa> permissionJpaType) {
2222
super();
23-
this.type = type;
23+
this.permissionJpaType = permissionJpaType;
2424
}
2525

26-
public TenantData(final Class<? extends BasicJpa> type, final String mainTableIdReferenceField,
27-
final String tenantIdField) {
26+
public TenantData(final Class<? extends BasicPermissionJpa> permissionJpaType,
27+
final String mainTableIdReferenceField, final String tenantIdField) {
2828
super();
29-
this.type = type;
29+
this.permissionJpaType = permissionJpaType;
3030
this.mainTableIdReferenceField = mainTableIdReferenceField;
3131
this.tenantIdField = tenantIdField;
3232
}
3333

3434
public Method getReferenceSetMethod() {
3535
if (referenceSetMethod == null)
3636
try {
37-
referenceSetMethod = type.getMethod("set" + capitalize(mainTableIdReferenceField), Long.class);
37+
referenceSetMethod = permissionJpaType.getMethod("set" + capitalize(mainTableIdReferenceField),
38+
Long.class);
3839
} catch (NoSuchMethodException | SecurityException e) {
3940
throw new InternalServerErrorException(
40-
String.format("Error creating permission-entry in [%s]", type.getSimpleName()), e);
41+
String.format("Error creating permission-entry in [%s]", permissionJpaType.getSimpleName()), e);
4142
}
4243
return referenceSetMethod;
4344
}
4445

4546
public Method getTenantIdSetMethod() {
4647
if (tenantIdSetMethod == null)
4748
try {
48-
tenantIdSetMethod = type.getMethod("set" + capitalize(tenantIdField), Long.class);
49+
tenantIdSetMethod = permissionJpaType.getMethod("set" + capitalize(tenantIdField), Long.class);
4950
} catch (NoSuchMethodException | SecurityException e) {
5051
throw new InternalServerErrorException(
51-
String.format("Error creating permission-entry in [%s]", type.getSimpleName()), e);
52+
String.format("Error creating permission-entry in [%s]", permissionJpaType.getSimpleName()), e);
5253
}
5354
return tenantIdSetMethod;
5455
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package info.unterrainer.commons.httpserver.jpas;
2+
3+
import javax.persistence.MappedSuperclass;
4+
5+
import info.unterrainer.commons.rdbutils.entities.BasicJpa;
6+
import lombok.Data;
7+
import lombok.NoArgsConstructor;
8+
import lombok.experimental.SuperBuilder;
9+
10+
@Data
11+
@NoArgsConstructor
12+
@SuperBuilder(toBuilder = true)
13+
@MappedSuperclass
14+
public class BasicPermissionJpa extends BasicJpa {
15+
16+
private Long referenceId;
17+
private Long tenantId;
18+
}

src/test/java/info/unterrainer/commons/httpserver/scripts/jpas/TestPermissionJpa.java

+2-5
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import javax.persistence.Entity;
44
import javax.persistence.Table;
55

6-
import info.unterrainer.commons.rdbutils.entities.BasicJpa;
6+
import info.unterrainer.commons.httpserver.jpas.BasicPermissionJpa;
77
import lombok.Data;
88
import lombok.EqualsAndHashCode;
99
import lombok.NoArgsConstructor;
@@ -15,8 +15,5 @@
1515
@SuperBuilder(toBuilder = true)
1616
@Entity
1717
@Table(name = "test_permission")
18-
public class TestPermissionJpa extends BasicJpa {
19-
20-
private Long referenceId;
21-
private Long tenantId;
18+
public class TestPermissionJpa extends BasicPermissionJpa {
2219
}

0 commit comments

Comments
 (0)