Skip to content

Commit 47bcdd9

Browse files
committed
Added calculation of varHashList filter
1 parent bba6ebf commit 47bcdd9

File tree

11 files changed

+512
-272
lines changed

11 files changed

+512
-272
lines changed

src/main/java/eu/europa/ec/dgc/revocationdistribution/config/DgcConfigProperties.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
package eu.europa.ec.dgc.revocationdistribution.config;
2222

23+
import eu.europa.ec.dgc.revocationdistribution.model.SliceType;
2324
import lombok.Getter;
2425
import lombok.Setter;
2526
import org.springframework.boot.context.properties.ConfigurationProperties;
@@ -31,7 +32,9 @@ public class DgcConfigProperties {
3132

3233
private final GatewayDownload revocationListDownload = new GatewayDownload();
3334
private final BloomFilterConfig bloomFilter = new BloomFilterConfig();
34-
private final HashListConfig hashList = new HashListConfig();
35+
private final VarHashListConfig varHashList = new VarHashListConfig();
36+
37+
private final SliceType defaultRevocationDataType = SliceType.BLOOMFILTER;//"BLOOMFILTER";
3538

3639

3740
@Getter
@@ -52,9 +55,15 @@ public static class BloomFilterConfig {
5255

5356
@Getter
5457
@Setter
55-
public static class HashListConfig {
58+
public static class VarHashListConfig {
5659
private boolean enabled;
5760
private String type = "hash_list";
5861
private String version;
62+
private float probRate;
63+
private int minByteCount = 4;
64+
65+
public int getMinByteCount() {
66+
return minByteCount > 255 ? 255 : minByteCount;
67+
}
5968
}
6069
}

src/main/java/eu/europa/ec/dgc/revocationdistribution/config/ErrorHandler.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
package eu.europa.ec.dgc.revocationdistribution.config;
2222

23+
import eu.europa.ec.dgc.revocationdistribution.exception.BadRequestException;
2324
import eu.europa.ec.dgc.revocationdistribution.exception.DataNotChangedException;
2425
import eu.europa.ec.dgc.revocationdistribution.exception.DataNotFoundException;
2526
import eu.europa.ec.dgc.revocationdistribution.exception.PreconditionFailedException;
@@ -90,6 +91,19 @@ public ResponseEntity<Object> handleException(TokenValidationException e) {
9091
.body(e.getMessage());
9192
}
9293

94+
/**
95+
* Handles {@link BadRequestException} when a validation failed.
96+
*
97+
* @param e the thrown {@link BadRequestException}
98+
* @return A ResponseEntity with a ErrorMessage inside.
99+
*/
100+
@ExceptionHandler(BadRequestException.class)
101+
public ResponseEntity<Object> handleException(BadRequestException e) {
102+
return ResponseEntity
103+
.status(e.getStatus())
104+
.body(e.getMessage());
105+
}
106+
93107

94108
/**
95109
* Global Exception Handler to wrap exceptions into a readable JSON Object.

src/main/java/eu/europa/ec/dgc/revocationdistribution/controller/RevocationListController.java

Lines changed: 107 additions & 24 deletions
Large diffs are not rendered by default.

src/main/java/eu/europa/ec/dgc/revocationdistribution/service/SliceCalculationService.java renamed to src/main/java/eu/europa/ec/dgc/revocationdistribution/exception/BadRequestException.java

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,34 @@
1818
* ---license-end
1919
*/
2020

21-
package eu.europa.ec.dgc.revocationdistribution.service;
21+
package eu.europa.ec.dgc.revocationdistribution.exception;
2222

23+
public class BadRequestException extends RuntimeException {
24+
public int getStatus() {
25+
return status;
26+
}
2327

24-
import java.util.Optional;
25-
import lombok.RequiredArgsConstructor;
26-
import lombok.extern.slf4j.Slf4j;
27-
import org.springframework.stereotype.Service;
28+
private final int status = 400;
2829

29-
@Slf4j
30-
@RequiredArgsConstructor
31-
@Service
32-
public class SliceCalculationService {
30+
/**
31+
* Constructor for BadRequestException.
32+
*
33+
* @param message Massage of the exception.
34+
* @param inner Inner exception information
35+
*/
36+
public BadRequestException(String message, Throwable inner) {
3337

34-
private final Optional<SliceCalculationHashListImpl> sliceCalculationServiceHashList;
38+
super(message, inner);
39+
}
3540

41+
/**
42+
* Constructor for BadRequestException.
43+
*
44+
* @param message Massage of the exception.
45+
*/
46+
public BadRequestException(String message) {
47+
48+
super(message);
49+
}
3650

3751
}

src/main/java/eu/europa/ec/dgc/revocationdistribution/repository/PartitionRepository.java

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121
package eu.europa.ec.dgc.revocationdistribution.repository;
2222

2323
import eu.europa.ec.dgc.revocationdistribution.entity.PartitionEntity;
24+
import eu.europa.ec.dgc.revocationdistribution.model.SliceType;
2425
import java.time.ZonedDateTime;
25-
import java.util.Arrays;
2626
import java.util.List;
2727
import java.util.Optional;
2828
import org.springframework.data.jpa.repository.JpaRepository;
@@ -33,28 +33,30 @@
3333
public interface PartitionRepository extends JpaRepository<PartitionEntity, String> {
3434

3535

36-
List<PartitionEntity> findAllByEtagAndKid(String etag, String kid);
36+
List<PartitionEntity> findAllByEtagAndKidAndDataType(String etag, String kid, SliceType dataType);
3737

38-
List<PartitionEntity> findAllByEtagAndKidAndLastUpdatedAfter(
39-
String etag, String kid, ZonedDateTime ifModifiedSince);
38+
List<PartitionEntity> findAllByEtagAndKidAndDataTypeAndLastUpdatedAfter(
39+
String etag, String kid, SliceType dataType, ZonedDateTime ifModifiedSince);
4040

4141
@Modifying
4242
@Query("UPDATE PartitionEntity p SET p.toBeDeleted = true WHERE p.kid in :kids")
4343
void setToBeDeletedForKids(@Param("kids") List<String> kids);
4444

4545

46-
Optional<PartitionEntity> findOneByEtagAndKidAndId(String etag, String kid, String id);
46+
Optional<PartitionEntity> findOneByEtagAndKidAndIdAndDataType(
47+
String etag, String kid, String id, SliceType dataType);
4748

48-
Optional<PartitionEntity> findOneByEtagAndKidAndIdIsNull(String etag, String kid);
49+
Optional<PartitionEntity> findOneByEtagAndKidAndIdIsNullAndDataType(
50+
String etag, String kid, SliceType dataType);
4951

5052

51-
Optional<PartitionEntity> findOneByEtagAndKidAndIdAndLastUpdatedAfter(
52-
String etag, String kid, String id, ZonedDateTime ifModifiedSince);
53+
Optional<PartitionEntity> findOneByEtagAndKidAndIdAndDataTypeAndLastUpdatedAfter(
54+
String etag, String kid, String id, SliceType dataType, ZonedDateTime ifModifiedSince);
5355

54-
Optional<PartitionEntity> findOneByEtagAndKidAndIdIsNullAndLastUpdatedAfter(
55-
String etag, String kid, ZonedDateTime ifModifiedSince);
56+
Optional<PartitionEntity> findOneByEtagAndKidAndIdIsNullAndDataTypeAndLastUpdatedAfter(
57+
String etag, String kid, SliceType dataType, ZonedDateTime ifModifiedSince);
5658

57-
Long countByEtagAndKidAndId(String etag, String kid, String id);
59+
Long countByEtagAndKidAndIdAndDataType(String etag, String kid, String id, SliceType dataType);
5860

59-
Long countByEtagAndKidAndIdIsNull(String etag, String kid);
61+
Long countByEtagAndKidAndIdIsNullAndDataType(String etag, String kid,SliceType dataType);
6062
}

src/main/java/eu/europa/ec/dgc/revocationdistribution/repository/SliceRepository.java

Lines changed: 57 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
package eu.europa.ec.dgc.revocationdistribution.repository;
2222

2323
import eu.europa.ec.dgc.revocationdistribution.entity.SliceEntity;
24+
import eu.europa.ec.dgc.revocationdistribution.model.SliceType;
2425
import java.time.ZonedDateTime;
2526
import java.util.List;
2627
import java.util.Optional;
@@ -32,82 +33,94 @@
3233
public interface SliceRepository extends JpaRepository<SliceEntity, String> {
3334

3435

35-
Optional<SliceEntity> findOneByEtagAndKidAndIdAndChunkAndHash(
36-
String etag, String kid, String id, String cid, String sid);
36+
Optional<SliceEntity> findOneByEtagAndKidAndIdAndChunkAndHashAndDataType(
37+
String etag, String kid, String id, String cid, String sid, SliceType dataType);
3738

38-
Optional<SliceEntity> findOneByEtagAndKidAndIdIsNullAndChunkAndHash(
39-
String etag, String kid, String cid, String sid);
39+
Optional<SliceEntity> findOneByEtagAndKidAndIdIsNullAndChunkAndHashAndDataType(
40+
String etag, String kid, String cid, String sid, SliceType dataType);
4041

41-
List<SliceEntity> findAllByEtagAndKidAndIdAndChunk(String etag, String kid, String id, String cid);
42+
List<SliceEntity> findAllByEtagAndKidAndIdAndChunkAndDataType(
43+
String etag, String kid, String id, String cid, SliceType dataType);
4244

43-
List<SliceEntity> findAllByEtagAndKidAndIdIsNullAndChunk(String etag, String kid, String cid);
45+
List<SliceEntity> findAllByEtagAndKidAndIdIsNullAndChunkAndDataType(
46+
String etag, String kid, String cid, SliceType dataType);
4447

4548
@Modifying
4649
@Query("UPDATE SliceEntity s SET s.toBeDeleted = true WHERE s.kid in :kids")
4750
void setToBeDeletedForKids(@Param("kids") List<String> kids);
4851

49-
List<SliceEntity> findAllByEtagAndKidAndId(String etag, String kid, String id);
52+
List<SliceEntity> findAllByEtagAndKidAndIdAndDataType(String etag, String kid, String id, SliceType dataType);
5053

51-
List<SliceEntity> findAllByEtagAndKidAndIdIsNull(String etag, String kid);
54+
List<SliceEntity> findAllByEtagAndKidAndIdIsNullAndDataType(String etag, String kid, SliceType dataType);
5255

53-
List<SliceEntity> findAllByEtagAndKidAndIdIsNullAndLastUpdatedAfter(
54-
String etag, String kid, ZonedDateTime ifModifiedDateTime);
56+
List<SliceEntity> findAllByEtagAndKidAndIdIsNullAndDataTypeAndLastUpdatedAfter(
57+
String etag, String kid, SliceType dataType, ZonedDateTime ifModifiedDateTime);
5558

56-
List<SliceEntity> findAllByEtagAndKidAndIdAndLastUpdatedAfter(
57-
String etag, String kid, String id, ZonedDateTime ifModifiedDateTime);
59+
List<SliceEntity> findAllByEtagAndKidAndIdAndDataTypeAndLastUpdatedAfter(
60+
String etag, String kid, String id, SliceType dataType, ZonedDateTime ifModifiedDateTime);
5861

5962

60-
List<SliceEntity> findAllByEtagAndKidAndIdIsNullAndChunkIn(String etag, String kid, List<String> chunks);
63+
List<SliceEntity> findAllByEtagAndKidAndIdIsNullAndDataTypeAndChunkIn(
64+
String etag, String kid, SliceType dataType, List<String> chunks);
6165

62-
List<SliceEntity> findAllByEtagAndKidAndIdAndChunkIn(String etag, String kid, String id, List<String> chunks);
66+
List<SliceEntity> findAllByEtagAndKidAndIdAndDataTypeAndChunkIn(
67+
String etag, String kid, String id, SliceType dataType, List<String> chunks);
6368

64-
List<SliceEntity> findAllByEtagAndKidAndIdIsNullAndChunkAndHashIn(
65-
String etag, String kid, String cid, List<String> hashes);
69+
List<SliceEntity> findAllByEtagAndKidAndIdIsNullAndChunkAndDataTypeAndHashIn(
70+
String etag, String kid, String cid, SliceType dataType, List<String> hashes);
6671

67-
List<SliceEntity> findAllByEtagAndKidAndIdAndChunkAndHashIn(
68-
String etag, String kid, String id, String cid, List<String> hashes);
72+
List<SliceEntity> findAllByEtagAndKidAndIdAndChunkAndDataTypeAndHashIn(
73+
String etag, String kid, String id, String cid, SliceType dataType, List<String> hashes);
6974

70-
Long countByEtagAndKidAndIdIsNull(String etag, String kid);
75+
Long countByEtagAndKidAndIdIsNullAndDataType(String etag, String kid, SliceType dataType);
7176

72-
Long countByEtagAndKidAndId(String etag, String kid, String id);
77+
Long countByEtagAndKidAndIdAndDataType(String etag, String kid, String id, SliceType dataType);
7378

74-
List<SliceEntity> findAllByEtagAndKidAndIdIsNullAndChunkInAndLastUpdatedAfter(
75-
String etag, String kid, List<String> filter, ZonedDateTime ifModifiedDateTime);
79+
List<SliceEntity> findAllByEtagAndKidAndIdIsNullAndDataTypeAndChunkInAndLastUpdatedAfter(
80+
String etag, String kid, SliceType dataType, List<String> filter, ZonedDateTime ifModifiedDateTime);
7681

77-
List<SliceEntity> findAllByEtagAndKidAndIdAndChunkInAndLastUpdatedAfter(
78-
String etag, String kid, String id, List<String> filter, ZonedDateTime ifModifiedDateTime);
82+
List<SliceEntity> findAllByEtagAndKidAndIdAndDataTypeAndChunkInAndLastUpdatedAfter(
83+
String etag, String kid, String id, SliceType dataType, List<String> filter, ZonedDateTime ifModifiedDateTime);
7984

80-
Long countByEtagAndKidAndIdIsNullAndChunkIn(String etag, String kid, List<String> filter);
85+
Long countByEtagAndKidAndIdIsNullAndDataTypeAndChunkIn(
86+
String etag, String kid, SliceType dataType, List<String> filter);
8187

82-
Long countByEtagAndKidAndIdAndChunkIn(String etag, String kid, String id, List<String> filter);
88+
Long countByEtagAndKidAndIdAndDataTypeAndChunkIn(
89+
String etag, String kid, String id, SliceType dataType, List<String> filter);
8390

84-
List<SliceEntity> findAllByEtagAndKidAndIdIsNullAndChunkAndLastUpdatedAfter(
85-
String etag, String kid, String cid, ZonedDateTime ifModifiedDateTime);
91+
List<SliceEntity> findAllByEtagAndKidAndIdIsNullAndChunkAndDataTypeAndLastUpdatedAfter(
92+
String etag, String kid, String cid, SliceType dataType, ZonedDateTime ifModifiedDateTime);
8693

87-
List<SliceEntity> findAllByEtagAndKidAndIdAndChunkAndLastUpdatedAfter(
88-
String etag, String kid, String id, String cid, ZonedDateTime ifModifiedDateTime);
94+
List<SliceEntity> findAllByEtagAndKidAndIdAndChunkAndDataTypeAndLastUpdatedAfter(
95+
String etag, String kid, String id, String cid, SliceType dataType, ZonedDateTime ifModifiedDateTime);
8996

90-
Long countByEtagAndKidAndIdIsNullAndChunk(String etag, String kid, String cid);
97+
Long countByEtagAndKidAndIdIsNullAndChunkAndDataType(String etag, String kid, String cid, SliceType dataType);
9198

92-
Long countByEtagAndKidAndIdAndChunk(String etag, String kid, String id, String cid);
99+
Long countByEtagAndKidAndIdAndChunkAndDataType(String etag, String kid, String id, String cid, SliceType dataType);
93100

94-
List<SliceEntity> findAllByEtagAndKidAndIdIsNullAndChunkAndHashInAndLastUpdatedAfter(
95-
String etag, String kid, String cid, List<String> filter, ZonedDateTime ifModifiedDateTime);
101+
List<SliceEntity> findAllByEtagAndKidAndIdIsNullAndChunkAndDataTypeAndHashInAndLastUpdatedAfter(
102+
String etag, String kid, String cid, SliceType dataType, List<String> filter, ZonedDateTime ifModifiedDateTime);
96103

97-
List<SliceEntity> findAllByEtagAndKidAndIdAndChunkAndHashInAndLastUpdatedAfter(
98-
String etag, String kid, String id, String cid, List<String> filter, ZonedDateTime ifModifiedDateTime);
104+
List<SliceEntity> findAllByEtagAndKidAndIdAndChunkAndDataTypeAndHashInAndLastUpdatedAfter(
105+
String etag, String kid, String id, String cid, SliceType dataType,
106+
List<String> filter, ZonedDateTime ifModifiedDateTime);
99107

100-
Long countByEtagAndKidAndIdIsNullAndChunkAndHashIn(String etag, String kid, String cid, List<String> filter);
108+
Long countByEtagAndKidAndIdIsNullAndChunkAndDataTypeAndHashIn(
109+
String etag, String kid, String cid, SliceType dataType, List<String> filter);
101110

102-
Long countByEtagAndKidAndIdAndChunkAndHashIn(String etag, String kid, String id, String cid, List<String> filter);
111+
Long countByEtagAndKidAndIdAndChunkAndDataTypeAndHashIn(
112+
String etag, String kid, String id, String cid, SliceType dataType, List<String> filter);
103113

104-
Optional<SliceEntity> findOneByEtagAndKidAndIdIsNullAndChunkAndHashAndLastUpdatedAfter(
105-
String etag, String kid, String cid, String sid, ZonedDateTime ifModifiedDateTime);
114+
Optional<SliceEntity> findOneByEtagAndKidAndIdIsNullAndChunkAndHashAndDataTypeAndLastUpdatedAfter(
115+
String etag, String kid, String cid, String sid, SliceType dataType, ZonedDateTime ifModifiedDateTime);
106116

107-
Optional<SliceEntity> findOneByEtagAndKidAndIdAndChunkAndHashAndLastUpdatedAfter(
108-
String etag, String kid, String id, String cid, String sid, ZonedDateTime ifModifiedDateTime);
117+
Optional<SliceEntity> findOneByEtagAndKidAndIdAndChunkAndHashAndDataTypeAndLastUpdatedAfter(
118+
String etag, String kid, String id, String cid, String sid,
119+
SliceType dataType, ZonedDateTime ifModifiedDateTime);
109120

110-
Long countByEtagAndKidAndIdIsNullAndChunkAndHash(String etag, String kid, String cid, String sid);
121+
Long countByEtagAndKidAndIdIsNullAndChunkAndHashAndDataType(
122+
String etag, String kid, String cid, String sid, SliceType dataType);
111123

112-
Long countByEtagAndKidAndIdAndChunkAndHash(String etag, String kid, String id, String cid, String sid);
124+
Long countByEtagAndKidAndIdAndChunkAndHashAndDataType(
125+
String etag, String kid, String id, String cid, String sid, SliceType dataType);
113126
}

0 commit comments

Comments
 (0)