Skip to content

Commit 9801676

Browse files
authored
fix: use mapper embedding date-time in LocalStatusListCredentialPublisherExtension (#711)
fix: use mapper embedding date/time modules in LocalStatusListCredentialPublisherExtension
1 parent fbc1bc3 commit 9801676

File tree

4 files changed

+22
-9
lines changed

4 files changed

+22
-9
lines changed

extensions/issuance/local-statuslist-publisher/build.gradle.kts

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ dependencies {
2525
implementation(libs.edc.spi.transaction)
2626
implementation(libs.jakarta.rsApi)
2727
implementation(libs.edc.spi.web)
28+
implementation(libs.edc.lib.jsonld)
2829

2930
testImplementation(libs.edc.junit)
3031
testImplementation(libs.restAssured)

extensions/issuance/local-statuslist-publisher/src/main/java/org/eclipse/edc/issuerservice/publisher/LocalStatusListCredentialPublisherExtension.java

+14-5
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414

1515
package org.eclipse.edc.issuerservice.publisher;
1616

17-
import com.fasterxml.jackson.databind.ObjectMapper;
1817
import org.eclipse.edc.identityhub.spi.verifiablecredentials.store.CredentialStore;
1918
import org.eclipse.edc.issuerservice.publisher.api.StatusListCredentialController;
2019
import org.eclipse.edc.issuerservice.spi.credentials.statuslist.StatusListCredentialPublisher;
@@ -24,51 +23,61 @@
2423
import org.eclipse.edc.runtime.metamodel.annotation.Provider;
2524
import org.eclipse.edc.runtime.metamodel.annotation.Setting;
2625
import org.eclipse.edc.runtime.metamodel.annotation.Settings;
26+
import org.eclipse.edc.spi.monitor.Monitor;
2727
import org.eclipse.edc.spi.system.Hostname;
2828
import org.eclipse.edc.spi.system.ServiceExtension;
2929
import org.eclipse.edc.spi.system.ServiceExtensionContext;
30+
import org.eclipse.edc.spi.types.TypeManager;
3031
import org.eclipse.edc.transaction.spi.TransactionContext;
3132
import org.eclipse.edc.web.spi.WebService;
3233
import org.eclipse.edc.web.spi.configuration.PortMapping;
3334
import org.eclipse.edc.web.spi.configuration.PortMappingRegistry;
3435
import org.jetbrains.annotations.NotNull;
3536

3637
import static java.util.Optional.ofNullable;
38+
import static org.eclipse.edc.spi.constants.CoreConstants.JSON_LD;
3739

3840

3941
@Extension(value = LocalStatusListCredentialPublisherExtension.NAME)
4042
public class LocalStatusListCredentialPublisherExtension implements ServiceExtension {
4143
public static final String NAME = "IssuerService Default Services Extension";
4244
private static final String STATUS_LIST = "statuslist";
45+
4346
@Inject
4447
private CredentialStore store;
4548

4649
@Inject
4750
private PortMappingRegistry portMappingRegistry;
51+
4852
@Inject
4953
private Hostname hostname;
5054

5155
@Inject
5256
private WebService webServer;
5357

58+
@Inject
59+
private Monitor monitor;
60+
61+
@Inject
62+
private TypeManager typeManager;
63+
5464
@Configuration
5565
private StatusListCredentialEndpointConfig config;
5666
@Inject
5767
private TransactionContext transactionContext;
68+
@Setting(description = "Configures endpoint for reaching the StatusList API.", key = "edc.statuslist.callback.address", required = false)
69+
private String callbackAddress;
5870

5971
@Override
6072
public String name() {
6173
return NAME;
6274
}
6375

64-
@Setting(description = "Configures endpoint for reaching the StatusList API.", key = "edc.statuslist.callback.address", required = false)
65-
private String callbackAddress;
66-
6776
@Override
6877
public void initialize(ServiceExtensionContext context) {
6978
portMappingRegistry.register(new PortMapping(STATUS_LIST, config.port(), config.path()));
7079

71-
webServer.registerResource(STATUS_LIST, new StatusListCredentialController(store, context.getMonitor(), new ObjectMapper()));
80+
webServer.registerResource(STATUS_LIST, new StatusListCredentialController(store, monitor, () -> typeManager.getMapper(JSON_LD)));
7281
}
7382

7483
@Provider(isDefault = true)

extensions/issuance/local-statuslist-publisher/src/main/java/org/eclipse/edc/issuerservice/publisher/api/StatusListCredentialController.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import org.eclipse.edc.web.spi.exception.ObjectConflictException;
3434

3535
import java.util.List;
36+
import java.util.function.Supplier;
3637

3738
import static jakarta.ws.rs.core.MediaType.APPLICATION_JSON;
3839

@@ -41,9 +42,9 @@ public class StatusListCredentialController {
4142
private static final List<String> SUPPORTED_TYPES = List.of(APPLICATION_JSON, "application/vc+jwt", MediaType.WILDCARD);
4243
private final CredentialStore store;
4344
private final Monitor monitor;
44-
private final ObjectMapper mapper;
45+
private final Supplier<ObjectMapper> mapper;
4546

46-
public StatusListCredentialController(CredentialStore store, Monitor monitor, ObjectMapper mapper) {
47+
public StatusListCredentialController(CredentialStore store, Monitor monitor, Supplier<ObjectMapper> mapper) {
4748
this.store = store;
4849
this.monitor = monitor;
4950
this.mapper = mapper;
@@ -89,7 +90,7 @@ public Response resolveStatusListCredential(@HeaderParam("Accept") @DefaultValue
8990
var contentType = "application/vc+jwt";
9091
if (acceptHeader.equals(APPLICATION_JSON)) {
9192
try {
92-
body = mapper.writeValueAsString(selectedCredential.getVerifiableCredential().credential());
93+
body = mapper.get().writeValueAsString(selectedCredential.getVerifiableCredential().credential());
9394
contentType = APPLICATION_JSON;
9495
} catch (JsonProcessingException e) {
9596
throw new EdcException(e);

extensions/issuance/local-statuslist-publisher/src/test/java/org/eclipse/edc/issuerservice/publisher/api/StatusListCredentialControllerTest.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.eclipse.edc.iam.verifiablecredentials.spi.model.VerifiableCredentialContainer;
2323
import org.eclipse.edc.identityhub.spi.verifiablecredentials.model.VerifiableCredentialResource;
2424
import org.eclipse.edc.identityhub.spi.verifiablecredentials.store.CredentialStore;
25+
import org.eclipse.edc.junit.annotations.ApiTest;
2526
import org.eclipse.edc.spi.monitor.Monitor;
2627
import org.eclipse.edc.spi.result.StoreResult;
2728
import org.eclipse.edc.web.jersey.testfixtures.RestControllerTestBase;
@@ -42,6 +43,7 @@
4243
import static org.mockito.Mockito.verifyNoInteractions;
4344
import static org.mockito.Mockito.when;
4445

46+
@ApiTest
4547
class StatusListCredentialControllerTest extends RestControllerTestBase {
4648

4749

@@ -149,7 +151,7 @@ void resolveStatusListCredential_moreThanOneCredential_expect409() {
149151

150152
@Override
151153
protected Object controller() {
152-
return new StatusListCredentialController(store, monitor, objectMapper);
154+
return new StatusListCredentialController(store, monitor, () -> objectMapper);
153155
}
154156

155157
private RequestSpecification baseRequest() {

0 commit comments

Comments
 (0)