Skip to content
This repository was archived by the owner on Feb 13, 2024. It is now read-only.

Commit d702a3c

Browse files
author
Philipp Etschel
committed
added option to filter wallet documents by type
Signed-off-by: Philipp Etschel <philipp.etschel@ch.bosch.com>
1 parent cdeece5 commit d702a3c

File tree

5 files changed

+23
-8
lines changed

5 files changed

+23
-8
lines changed

backend/business-partner-agent/src/main/java/org/hyperledger/bpa/controller/WalletController.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,18 @@
1818
package org.hyperledger.bpa.controller;
1919

2020
import io.micronaut.core.annotation.Nullable;
21+
import io.micronaut.core.convert.format.Format;
2122
import io.micronaut.http.HttpResponse;
2223
import io.micronaut.http.annotation.*;
2324
import io.micronaut.scheduling.TaskExecutors;
2425
import io.micronaut.scheduling.annotation.ExecuteOn;
2526
import io.micronaut.security.annotation.Secured;
2627
import io.micronaut.security.rules.SecurityRule;
2728
import io.micronaut.validation.Validated;
29+
import io.swagger.v3.oas.annotations.Parameter;
2830
import io.swagger.v3.oas.annotations.tags.Tag;
2931
import jakarta.inject.Inject;
32+
import org.hyperledger.bpa.api.CredentialType;
3033
import org.hyperledger.bpa.api.MyDocumentAPI;
3134
import org.hyperledger.bpa.api.aries.AriesCredential;
3235
import org.hyperledger.bpa.controller.api.issuer.DeclineExchangeRequest;
@@ -59,11 +62,15 @@ public class WalletController {
5962
/**
6063
* List wallet documents
6164
*
65+
* @param types {@link CredentialType} multi value list of types to filter
6266
* @return list of {@link MyDocumentAPI}
6367
*/
6468
@Get("/document")
65-
public HttpResponse<List<MyDocumentAPI>> getDocuments() {
66-
final List<MyDocumentAPI> myCreds = docMgmt.getMyDocuments();
69+
public HttpResponse<List<MyDocumentAPI>> getDocuments(
70+
@Parameter(
71+
description = "types filter") @Nullable @QueryValue @Format("MULTI") List<CredentialType> types) {
72+
final List<MyDocumentAPI> myCreds = docMgmt
73+
.getMyDocuments(types != null ? types.toArray(new CredentialType[0]) : null);
6774
return HttpResponse.ok(myCreds);
6875
}
6976

backend/business-partner-agent/src/main/java/org/hyperledger/bpa/impl/MyDocumentManager.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@
1717
*/
1818
package org.hyperledger.bpa.impl;
1919

20+
import io.micronaut.core.util.ArrayUtils;
2021
import jakarta.inject.Inject;
2122
import jakarta.inject.Singleton;
2223
import lombok.NonNull;
2324
import lombok.Setter;
25+
import org.hyperledger.bpa.api.CredentialType;
2426
import org.hyperledger.bpa.api.MyDocumentAPI;
2527
import org.hyperledger.bpa.api.exception.WrongApiUsageException;
2628
import org.hyperledger.bpa.config.BPAMessageSource;
@@ -84,9 +86,12 @@ public MyDocumentAPI updateDocument(@NonNull UUID id, @NonNull MyDocumentAPI api
8486
throw new WrongApiUsageException(ms.getMessage("api.document.not.found", Map.of("id", id)));
8587
}
8688

87-
public List<MyDocumentAPI> getMyDocuments() {
89+
public List<MyDocumentAPI> getMyDocuments(CredentialType... types) {
8890
List<MyDocumentAPI> result = new ArrayList<>();
89-
docRepo.findAll().forEach(dbDoc -> result.add(converter.toApiObject(dbDoc)));
91+
List<CredentialType> search = Arrays.asList(Objects.requireNonNullElseGet(
92+
ArrayUtils.isEmpty(types) ? null : types,
93+
CredentialType::values));
94+
docRepo.findByTypeIn(search).forEach(dbDoc -> result.add(converter.toApiObject(dbDoc)));
9095
return result;
9196
}
9297

backend/business-partner-agent/src/main/java/org/hyperledger/bpa/repository/MyDocumentRepository.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ public interface MyDocumentRepository extends CrudRepository<MyDocument, UUID> {
3838
*/
3939
List<MyDocument> findByIsPublicTrue();
4040

41+
List<MyDocument> findByTypeIn(List<CredentialType> type);
42+
4143
boolean existsByTypeEqualsAndIsPublicTrue(CredentialType type);
4244

4345
// this one is for migration of old agent versions only

backend/business-partner-agent/src/test/java/org/hyperledger/bpa/impl/MyDocumentManagerTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,8 @@ void testGetMyCredentialById() throws Exception {
173173
MyDocumentAPI myCred = mgmt.saveNewDocument(credential);
174174
UUID ID = myCred.getId();
175175

176-
assertEquals(1, mgmt.getMyDocuments().size());
176+
assertEquals(0, mgmt.getMyDocuments(CredentialType.ORGANIZATIONAL_PROFILE_CREDENTIAL).size());
177+
assertEquals(1, mgmt.getMyDocuments(CredentialType.INDY).size());
177178
Optional<MyDocumentAPI> result = mgmt.getMyDocumentById(ID);
178179
assertTrue(result.isPresent());
179180

backend/pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,13 @@
5656
<log4j2.version>2.14.1</log4j2.version>
5757
<lombok.version>1.18.22</lombok.version>
5858
<lombok.maven.plugin.version>1.18.20.0</lombok.maven.plugin.version>
59-
<micronaut.version>3.1.4</micronaut.version>
59+
<micronaut.version>3.2.0</micronaut.version>
6060
<micronaut.data.version>3.2.0</micronaut.data.version>
6161
<micronaut.openapi.version>3.2.0</micronaut.openapi.version>
62-
<micronaut.security.version>3.1.0</micronaut.security.version>
62+
<micronaut.security.version>3.2.0</micronaut.security.version>
6363
<mockito.version>4.1.0</mockito.version>
6464
<org.mapstruct.version>1.4.2.Final</org.mapstruct.version>
65-
<pmd.version>6.40.0</pmd.version>
65+
<pmd.version>6.41.0</pmd.version>
6666
<spotbugs.version>4.5.0</spotbugs.version>
6767
<testcontainers.version>1.16.2</testcontainers.version>
6868
<!-- Plugin Versions -->

0 commit comments

Comments
 (0)