Skip to content

Commit 8cd7cc2

Browse files
authored
refactor: Refactor dsp messages validations into libs (#4547)
* refactor: extract dsp catalog validation lib * refactor: extract dsp negotiation validation lib * refactor: extract dsp transfer process validation lib * chore: copyright fix * chore: removed not needed deps
1 parent 6ea6dbd commit 8cd7cc2

File tree

96 files changed

+614
-462
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

96 files changed

+614
-462
lines changed

data-protocols/dsp/dsp-catalog/build.gradle.kts

+1
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,5 @@ dependencies {
2121
api(project(":data-protocols:dsp:dsp-catalog:dsp-catalog-http-api"))
2222
api(project(":data-protocols:dsp:dsp-catalog:dsp-catalog-http-dispatcher"))
2323
api(project(":data-protocols:dsp:dsp-catalog:dsp-catalog-transform"))
24+
api(project(":data-protocols:dsp:dsp-catalog:lib:dsp-catalog-validation-lib"))
2425
}

data-protocols/dsp/dsp-catalog/dsp-catalog-http-api/build.gradle.kts

+3-1
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,11 @@ dependencies {
2222
api(project(":data-protocols:dsp:dsp-http-spi"))
2323
api(project(":spi:common:core-spi"))
2424
api(project(":spi:common:web-spi"))
25+
api(project(":spi:common:json-ld-spi"))
26+
2527
api(project(":spi:control-plane:control-plane-spi"))
2628

27-
implementation(project(":core:common:lib:validator-lib"))
29+
implementation(project(":data-protocols:dsp:dsp-catalog:lib:dsp-catalog-validation-lib"))
2830

2931
implementation(libs.jakarta.rsApi)
3032

data-protocols/dsp/dsp-catalog/dsp-catalog-http-api/src/main/java/org/eclipse/edc/protocol/dsp/catalog/http/api/DspCatalogApiExtension.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import org.eclipse.edc.protocol.dsp.catalog.http.api.controller.DspCatalogApiController20241;
2424
import org.eclipse.edc.protocol.dsp.catalog.http.api.decorator.Base64continuationTokenSerDes;
2525
import org.eclipse.edc.protocol.dsp.catalog.http.api.decorator.ContinuationTokenManagerImpl;
26-
import org.eclipse.edc.protocol.dsp.catalog.http.api.validation.CatalogRequestMessageValidator;
26+
import org.eclipse.edc.protocol.dsp.catalog.validation.CatalogRequestMessageValidator;
2727
import org.eclipse.edc.protocol.dsp.http.spi.message.ContinuationTokenManager;
2828
import org.eclipse.edc.protocol.dsp.http.spi.message.DspRequestHandler;
2929
import org.eclipse.edc.runtime.metamodel.annotation.Extension;
@@ -38,7 +38,7 @@
3838
import org.eclipse.edc.web.spi.WebService;
3939
import org.eclipse.edc.web.spi.configuration.ApiContext;
4040

41-
import static org.eclipse.edc.protocol.dsp.spi.type.DspCatalogPropertyAndTypeNames.DSPACE_TYPE_CATALOG_REQUEST_MESSAGE;
41+
import static org.eclipse.edc.protocol.dsp.spi.type.DspCatalogPropertyAndTypeNames.DSPACE_TYPE_CATALOG_REQUEST_MESSAGE_IRI;
4242
import static org.eclipse.edc.protocol.dsp.spi.type.DspConstants.DSP_TRANSFORMER_CONTEXT_V_08;
4343
import static org.eclipse.edc.protocol.dsp.spi.type.DspConstants.DSP_TRANSFORMER_CONTEXT_V_2024_1;
4444
import static org.eclipse.edc.protocol.dsp.spi.version.DspVersions.V_08;
@@ -83,7 +83,7 @@ public String name() {
8383

8484
@Override
8585
public void initialize(ServiceExtensionContext context) {
86-
validatorRegistry.register(DSPACE_TYPE_CATALOG_REQUEST_MESSAGE, CatalogRequestMessageValidator.instance(criterionOperatorRegistry));
86+
validatorRegistry.register(DSPACE_TYPE_CATALOG_REQUEST_MESSAGE_IRI, CatalogRequestMessageValidator.instance(criterionOperatorRegistry));
8787

8888

8989
webService.registerResource(ApiContext.PROTOCOL, new DspCatalogApiController(service, dspRequestHandler, continuationTokenManager(monitor, DSP_TRANSFORMER_CONTEXT_V_08)));

data-protocols/dsp/dsp-catalog/dsp-catalog-http-api/src/main/java/org/eclipse/edc/protocol/dsp/catalog/http/api/controller/DspCatalogApiController.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
import static org.eclipse.edc.protocol.dsp.catalog.http.api.CatalogApiPaths.CATALOG_REQUEST;
4444
import static org.eclipse.edc.protocol.dsp.catalog.http.api.CatalogApiPaths.DATASET_REQUEST;
4545
import static org.eclipse.edc.protocol.dsp.http.spi.types.HttpMessageProtocol.DATASPACE_PROTOCOL_HTTP;
46-
import static org.eclipse.edc.protocol.dsp.spi.type.DspCatalogPropertyAndTypeNames.DSPACE_TYPE_CATALOG_REQUEST_MESSAGE;
46+
import static org.eclipse.edc.protocol.dsp.spi.type.DspCatalogPropertyAndTypeNames.DSPACE_TYPE_CATALOG_REQUEST_MESSAGE_IRI;
4747

4848
/**
4949
* Provides the HTTP endpoint for receiving catalog requests.
@@ -83,7 +83,7 @@ public Response requestCatalog(JsonObject jsonObject, @HeaderParam(AUTHORIZATION
8383

8484
var request = PostDspRequest.Builder.newInstance(CatalogRequestMessage.class, Catalog.class, CatalogError.class)
8585
.token(token)
86-
.expectedMessageType(DSPACE_TYPE_CATALOG_REQUEST_MESSAGE)
86+
.expectedMessageType(DSPACE_TYPE_CATALOG_REQUEST_MESSAGE_IRI)
8787
.message(messageJson)
8888
.serviceCall(service::getCatalog)
8989
.errorProvider(CatalogError.Builder::newInstance)

data-protocols/dsp/dsp-catalog/dsp-catalog-http-api/src/main/java/org/eclipse/edc/protocol/dsp/catalog/http/api/decorator/ContinuationTokenManagerImpl.java

+7-7
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import org.eclipse.edc.spi.monitor.Monitor;
2525
import org.eclipse.edc.spi.result.Result;
2626

27-
import static org.eclipse.edc.protocol.dsp.spi.type.DspCatalogPropertyAndTypeNames.DSPACE_PROPERTY_FILTER;
27+
import static org.eclipse.edc.protocol.dsp.spi.type.DspCatalogPropertyAndTypeNames.DSPACE_PROPERTY_FILTER_IRI;
2828

2929
public class ContinuationTokenManagerImpl implements ContinuationTokenManager {
3030

@@ -36,16 +36,16 @@ public ContinuationTokenManagerImpl(Base64continuationTokenSerDes continuationTo
3636
this.monitor = monitor;
3737
}
3838

39-
@Override
40-
public ResponseDecorator<CatalogRequestMessage, Catalog> createResponseDecorator(String requestUrl) {
41-
return new CatalogPaginationResponseDecorator(requestUrl, continuationTokenSerDes, monitor);
42-
}
43-
4439
@Override
4540
public Result<JsonObject> applyQueryFromToken(JsonObject requestMessage, String continuationToken) {
4641
return continuationTokenSerDes.deserialize(continuationToken)
4742
.map(query -> Json.createArrayBuilder().add(query))
48-
.map(filter -> Json.createObjectBuilder(requestMessage).add(DSPACE_PROPERTY_FILTER, filter))
43+
.map(filter -> Json.createObjectBuilder(requestMessage).add(DSPACE_PROPERTY_FILTER_IRI, filter))
4944
.map(JsonObjectBuilder::build);
5045
}
46+
47+
@Override
48+
public ResponseDecorator<CatalogRequestMessage, Catalog> createResponseDecorator(String requestUrl) {
49+
return new CatalogPaginationResponseDecorator(requestUrl, continuationTokenSerDes, monitor);
50+
}
5151
}

data-protocols/dsp/dsp-catalog/dsp-catalog-http-api/src/test/java/org/eclipse/edc/protocol/dsp/catalog/http/api/DspCatalogApiExtensionTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import org.junit.jupiter.api.Test;
2525
import org.junit.jupiter.api.extension.ExtendWith;
2626

27-
import static org.eclipse.edc.protocol.dsp.spi.type.DspCatalogPropertyAndTypeNames.DSPACE_TYPE_CATALOG_REQUEST_MESSAGE;
27+
import static org.eclipse.edc.protocol.dsp.spi.type.DspCatalogPropertyAndTypeNames.DSPACE_TYPE_CATALOG_REQUEST_MESSAGE_IRI;
2828
import static org.eclipse.edc.protocol.dsp.spi.version.DspVersions.V_08;
2929
import static org.eclipse.edc.protocol.dsp.spi.version.DspVersions.V_2024_1;
3030
import static org.mockito.ArgumentMatchers.any;
@@ -53,7 +53,7 @@ void setUp(ServiceExtensionContext context) {
5353
void shouldRegisterMessageValidator(DspCatalogApiExtension extension, ServiceExtensionContext context) {
5454
extension.initialize(context);
5555

56-
verify(validatorRegistry).register(eq(DSPACE_TYPE_CATALOG_REQUEST_MESSAGE), any());
56+
verify(validatorRegistry).register(eq(DSPACE_TYPE_CATALOG_REQUEST_MESSAGE_IRI), any());
5757
}
5858

5959
@Test

data-protocols/dsp/dsp-catalog/dsp-catalog-http-api/src/test/java/org/eclipse/edc/protocol/dsp/catalog/http/api/controller/DspCatalogApiControllerTest.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
import static org.eclipse.edc.protocol.dsp.catalog.http.api.CatalogApiPaths.BASE_PATH;
4848
import static org.eclipse.edc.protocol.dsp.catalog.http.api.CatalogApiPaths.CATALOG_REQUEST;
4949
import static org.eclipse.edc.protocol.dsp.catalog.http.api.CatalogApiPaths.DATASET_REQUEST;
50-
import static org.eclipse.edc.protocol.dsp.spi.type.DspCatalogPropertyAndTypeNames.DSPACE_TYPE_CATALOG_REQUEST_MESSAGE;
50+
import static org.eclipse.edc.protocol.dsp.spi.type.DspCatalogPropertyAndTypeNames.DSPACE_TYPE_CATALOG_REQUEST_MESSAGE_IRI;
5151
import static org.mockito.ArgumentMatchers.any;
5252
import static org.mockito.ArgumentMatchers.eq;
5353
import static org.mockito.ArgumentMatchers.isA;
@@ -100,7 +100,7 @@ class RequestCatalog {
100100

101101
@Test
102102
void shouldCreateResource() {
103-
var requestBody = createObjectBuilder().add(TYPE, DSPACE_TYPE_CATALOG_REQUEST_MESSAGE).build();
103+
var requestBody = createObjectBuilder().add(TYPE, DSPACE_TYPE_CATALOG_REQUEST_MESSAGE_IRI).build();
104104
var catalog = createObjectBuilder().add(JsonLdKeywords.TYPE, "catalog").build();
105105
when(transformerRegistry.transform(any(Catalog.class), eq(JsonObject.class))).thenReturn(Result.success(catalog));
106106
when(dspRequestHandler.createResource(any(), any())).thenReturn(Response.ok().type(APPLICATION_JSON_TYPE).build());
@@ -119,7 +119,7 @@ void shouldCreateResource() {
119119
var request = captor.getValue();
120120
assertThat(request.getInputClass()).isEqualTo(CatalogRequestMessage.class);
121121
assertThat(request.getResultClass()).isEqualTo(Catalog.class);
122-
assertThat(request.getExpectedMessageType()).isEqualTo(DSPACE_TYPE_CATALOG_REQUEST_MESSAGE);
122+
assertThat(request.getExpectedMessageType()).isEqualTo(DSPACE_TYPE_CATALOG_REQUEST_MESSAGE_IRI);
123123
assertThat(request.getProcessId()).isNull();
124124
assertThat(request.getToken()).isEqualTo("auth");
125125
assertThat(request.getMessage()).isEqualTo(requestBody);
@@ -128,7 +128,7 @@ void shouldCreateResource() {
128128

129129
@Test
130130
void shouldApplyContinuationToken_whenPassed() {
131-
var requestBody = createObjectBuilder().add(TYPE, DSPACE_TYPE_CATALOG_REQUEST_MESSAGE).build();
131+
var requestBody = createObjectBuilder().add(TYPE, DSPACE_TYPE_CATALOG_REQUEST_MESSAGE_IRI).build();
132132
var catalog = createObjectBuilder().add(JsonLdKeywords.TYPE, "catalog").build();
133133
when(transformerRegistry.transform(any(Catalog.class), eq(JsonObject.class))).thenReturn(Result.success(catalog));
134134
when(dspRequestHandler.createResource(any(), any())).thenReturn(Response.ok().type(APPLICATION_JSON_TYPE).build());
@@ -153,7 +153,7 @@ void shouldApplyContinuationToken_whenPassed() {
153153

154154
@Test
155155
void shouldReturnBadRequest_whenContinuationTokenIsNotValid() {
156-
var requestBody = createObjectBuilder().add(TYPE, DSPACE_TYPE_CATALOG_REQUEST_MESSAGE).build();
156+
var requestBody = createObjectBuilder().add(TYPE, DSPACE_TYPE_CATALOG_REQUEST_MESSAGE_IRI).build();
157157
when(continuationTokenManager.applyQueryFromToken(any(), any())).thenReturn(Result.failure("error"));
158158

159159
baseRequest()

data-protocols/dsp/dsp-catalog/dsp-catalog-http-api/src/test/java/org/eclipse/edc/protocol/dsp/catalog/http/api/decorator/ContinuationTokenManagerImplTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
import static org.assertj.core.api.Assertions.assertThat;
2222
import static org.eclipse.edc.junit.assertions.AbstractResultAssert.assertThat;
23-
import static org.eclipse.edc.protocol.dsp.spi.type.DspCatalogPropertyAndTypeNames.DSPACE_PROPERTY_FILTER;
23+
import static org.eclipse.edc.protocol.dsp.spi.type.DspCatalogPropertyAndTypeNames.DSPACE_PROPERTY_FILTER_IRI;
2424
import static org.mockito.ArgumentMatchers.any;
2525
import static org.mockito.Mockito.mock;
2626
import static org.mockito.Mockito.when;
@@ -38,7 +38,7 @@ void apply_shouldReplaceQueryWithTheOnePassedInTheToken() {
3838
var result = continuationTokenManager.applyQueryFromToken(Json.createObjectBuilder().build(), "token");
3939

4040
assertThat(result).isSucceeded().satisfies(jsonObject -> {
41-
assertThat(jsonObject.getJsonArray(DSPACE_PROPERTY_FILTER)).hasSize(1).first().isEqualTo(filter);
41+
assertThat(jsonObject.getJsonArray(DSPACE_PROPERTY_FILTER_IRI)).hasSize(1).first().isEqualTo(filter);
4242
});
4343
}
4444

data-protocols/dsp/dsp-catalog/dsp-catalog-transform/src/main/java/org/eclipse/edc/protocol/dsp/catalog/transform/from/JsonObjectFromCatalogRequestMessageTransformer.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@
2323
import org.jetbrains.annotations.Nullable;
2424

2525
import static org.eclipse.edc.jsonld.spi.JsonLdKeywords.TYPE;
26-
import static org.eclipse.edc.protocol.dsp.spi.type.DspCatalogPropertyAndTypeNames.DSPACE_PROPERTY_FILTER;
27-
import static org.eclipse.edc.protocol.dsp.spi.type.DspCatalogPropertyAndTypeNames.DSPACE_TYPE_CATALOG_REQUEST_MESSAGE;
26+
import static org.eclipse.edc.protocol.dsp.spi.type.DspCatalogPropertyAndTypeNames.DSPACE_PROPERTY_FILTER_IRI;
27+
import static org.eclipse.edc.protocol.dsp.spi.type.DspCatalogPropertyAndTypeNames.DSPACE_TYPE_CATALOG_REQUEST_MESSAGE_IRI;
2828

2929
/**
3030
* Transforms a {@link CatalogRequestMessage} to a {@link JsonObject} in JSON-LD expanded form.
@@ -41,10 +41,10 @@ public JsonObjectFromCatalogRequestMessageTransformer(JsonBuilderFactory jsonFac
4141
@Override
4242
public @Nullable JsonObject transform(@NotNull CatalogRequestMessage message, @NotNull TransformerContext context) {
4343
var builder = jsonFactory.createObjectBuilder();
44-
builder.add(TYPE, DSPACE_TYPE_CATALOG_REQUEST_MESSAGE);
44+
builder.add(TYPE, DSPACE_TYPE_CATALOG_REQUEST_MESSAGE_IRI);
4545

4646
if (message.getQuerySpec() != null) {
47-
builder.add(DSPACE_PROPERTY_FILTER, context.transform(message.getQuerySpec(), JsonObject.class));
47+
builder.add(DSPACE_PROPERTY_FILTER_IRI, context.transform(message.getQuerySpec(), JsonObject.class));
4848
}
4949

5050
return builder.build();

data-protocols/dsp/dsp-catalog/dsp-catalog-transform/src/main/java/org/eclipse/edc/protocol/dsp/catalog/transform/to/JsonObjectToCatalogRequestMessageTransformer.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
import java.util.Optional;
2626

27-
import static org.eclipse.edc.protocol.dsp.spi.type.DspCatalogPropertyAndTypeNames.DSPACE_PROPERTY_FILTER;
27+
import static org.eclipse.edc.protocol.dsp.spi.type.DspCatalogPropertyAndTypeNames.DSPACE_PROPERTY_FILTER_IRI;
2828

2929
/**
3030
* Transforms a {@link JsonObject} in JSON-LD expanded form to a {@link CatalogRequestMessage}.
@@ -40,7 +40,7 @@ public JsonObjectToCatalogRequestMessageTransformer() {
4040
var builder = CatalogRequestMessage.Builder.newInstance();
4141

4242
Optional.of(object)
43-
.map(it -> it.get(DSPACE_PROPERTY_FILTER))
43+
.map(it -> it.get(DSPACE_PROPERTY_FILTER_IRI))
4444
.map(it -> transformObject(it, QuerySpec.class, context))
4545
.ifPresent(builder::querySpec);
4646

data-protocols/dsp/dsp-catalog/dsp-catalog-transform/src/test/java/org/eclipse/edc/protocol/dsp/catalog/transform/from/JsonObjectFromCatalogRequestMessageTransformerTest.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@
2727

2828
import static org.assertj.core.api.Assertions.assertThat;
2929
import static org.eclipse.edc.jsonld.spi.JsonLdKeywords.TYPE;
30-
import static org.eclipse.edc.protocol.dsp.spi.type.DspCatalogPropertyAndTypeNames.DSPACE_PROPERTY_FILTER;
31-
import static org.eclipse.edc.protocol.dsp.spi.type.DspCatalogPropertyAndTypeNames.DSPACE_TYPE_CATALOG_REQUEST_MESSAGE;
30+
import static org.eclipse.edc.protocol.dsp.spi.type.DspCatalogPropertyAndTypeNames.DSPACE_PROPERTY_FILTER_IRI;
31+
import static org.eclipse.edc.protocol.dsp.spi.type.DspCatalogPropertyAndTypeNames.DSPACE_TYPE_CATALOG_REQUEST_MESSAGE_IRI;
3232
import static org.mockito.ArgumentMatchers.anyString;
3333
import static org.mockito.Mockito.mock;
3434
import static org.mockito.Mockito.never;
@@ -61,8 +61,8 @@ void transform_returnJsonObject() {
6161
var result = transformer.transform(message, context);
6262

6363
assertThat(result).isNotNull();
64-
assertThat(result.getJsonString(TYPE).getString()).isEqualTo(DSPACE_TYPE_CATALOG_REQUEST_MESSAGE);
65-
assertThat(result.get(DSPACE_PROPERTY_FILTER)).isEqualTo(querySpecJson);
64+
assertThat(result.getJsonString(TYPE).getString()).isEqualTo(DSPACE_TYPE_CATALOG_REQUEST_MESSAGE_IRI);
65+
assertThat(result.get(DSPACE_PROPERTY_FILTER_IRI)).isEqualTo(querySpecJson);
6666
verify(context, never()).reportProblem(anyString());
6767
}
6868
}

data-protocols/dsp/dsp-catalog/dsp-catalog-transform/src/test/java/org/eclipse/edc/protocol/dsp/catalog/transform/to/JsonObjectToCatalogRequestMessageTransformerTest.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@
2525

2626
import static org.assertj.core.api.Assertions.assertThat;
2727
import static org.eclipse.edc.jsonld.spi.JsonLdKeywords.TYPE;
28-
import static org.eclipse.edc.protocol.dsp.spi.type.DspCatalogPropertyAndTypeNames.DSPACE_PROPERTY_FILTER;
29-
import static org.eclipse.edc.protocol.dsp.spi.type.DspCatalogPropertyAndTypeNames.DSPACE_TYPE_CATALOG_REQUEST_MESSAGE;
28+
import static org.eclipse.edc.protocol.dsp.spi.type.DspCatalogPropertyAndTypeNames.DSPACE_PROPERTY_FILTER_IRI;
29+
import static org.eclipse.edc.protocol.dsp.spi.type.DspCatalogPropertyAndTypeNames.DSPACE_TYPE_CATALOG_REQUEST_MESSAGE_IRI;
3030
import static org.mockito.ArgumentMatchers.anyString;
3131
import static org.mockito.Mockito.mock;
3232
import static org.mockito.Mockito.never;
@@ -52,8 +52,8 @@ void transform_returnCatalogRequestMessage() {
5252
when(context.transform(querySpecJson, QuerySpec.class)).thenReturn(querySpec);
5353

5454
var message = jsonFactory.createObjectBuilder()
55-
.add(TYPE, DSPACE_TYPE_CATALOG_REQUEST_MESSAGE)
56-
.add(DSPACE_PROPERTY_FILTER, querySpecJson)
55+
.add(TYPE, DSPACE_TYPE_CATALOG_REQUEST_MESSAGE_IRI)
56+
.add(DSPACE_PROPERTY_FILTER_IRI, querySpecJson)
5757
.build();
5858

5959
var result = transformer.transform(message, context);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/*
2+
* Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG)
3+
*
4+
* This program and the accompanying materials are made available under the
5+
* terms of the Apache License, Version 2.0 which is available at
6+
* https://www.apache.org/licenses/LICENSE-2.0
7+
*
8+
* SPDX-License-Identifier: Apache-2.0
9+
*
10+
* Contributors:
11+
* Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation
12+
*
13+
*/
14+
15+
plugins {
16+
`java-library`
17+
}
18+
19+
dependencies {
20+
api(project(":data-protocols:dsp:dsp-spi"))
21+
implementation(project(":core:common:lib:validator-lib"))
22+
23+
testImplementation(project(":core:common:junit"))
24+
}
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
*
1313
*/
1414

15-
package org.eclipse.edc.protocol.dsp.catalog.http.api.validation;
15+
package org.eclipse.edc.protocol.dsp.catalog.validation;
1616

1717
import jakarta.json.JsonObject;
1818
import org.eclipse.edc.spi.query.CriterionOperatorRegistry;
@@ -21,17 +21,22 @@
2121
import org.eclipse.edc.validator.jsonobject.validators.model.QuerySpecValidator;
2222
import org.eclipse.edc.validator.spi.Validator;
2323

24-
import static org.eclipse.edc.protocol.dsp.spi.type.DspCatalogPropertyAndTypeNames.DSPACE_PROPERTY_FILTER;
25-
import static org.eclipse.edc.protocol.dsp.spi.type.DspCatalogPropertyAndTypeNames.DSPACE_TYPE_CATALOG_REQUEST_MESSAGE;
24+
import static org.eclipse.edc.jsonld.spi.Namespaces.DSPACE_SCHEMA;
25+
import static org.eclipse.edc.protocol.dsp.spi.type.DspCatalogPropertyAndTypeNames.DSPACE_PROPERTY_FILTER_TERM;
26+
import static org.eclipse.edc.protocol.dsp.spi.type.DspCatalogPropertyAndTypeNames.DSPACE_TYPE_CATALOG_REQUEST_MESSAGE_TERM;
2627

2728
/**
2829
* Validator for {@link CatalogRequestMessageValidator} Json-LD representation
2930
*/
3031
public class CatalogRequestMessageValidator {
3132
public static Validator<JsonObject> instance(CriterionOperatorRegistry criterionOperatorRegistry) {
33+
return instance(criterionOperatorRegistry, DSPACE_SCHEMA);
34+
}
35+
36+
public static Validator<JsonObject> instance(CriterionOperatorRegistry criterionOperatorRegistry, String schema) {
3237
return JsonObjectValidator.newValidator()
33-
.verify(path -> new TypeIs(path, DSPACE_TYPE_CATALOG_REQUEST_MESSAGE))
34-
.verifyObject(DSPACE_PROPERTY_FILTER, path -> QuerySpecValidator.instance(path, criterionOperatorRegistry))
38+
.verify(path -> new TypeIs(path, schema + DSPACE_TYPE_CATALOG_REQUEST_MESSAGE_TERM))
39+
.verifyObject(schema + DSPACE_PROPERTY_FILTER_TERM, path -> QuerySpecValidator.instance(path, criterionOperatorRegistry))
3540
.build();
3641
}
3742
}
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,20 @@
1212
*
1313
*/
1414

15-
package org.eclipse.edc.protocol.dsp.catalog.http.api.validation;
15+
package org.eclipse.edc.protocol.dsp.catalog.validation;
1616

1717
import jakarta.json.Json;
1818
import jakarta.json.JsonObject;
19+
import org.assertj.core.api.Assertions;
20+
import org.eclipse.edc.protocol.dsp.spi.type.DspCatalogPropertyAndTypeNames;
1921
import org.eclipse.edc.validator.spi.ValidationFailure;
2022
import org.eclipse.edc.validator.spi.Validator;
2123
import org.eclipse.edc.validator.spi.Violation;
2224
import org.junit.jupiter.api.Test;
2325

24-
import static org.assertj.core.api.Assertions.assertThat;
2526
import static org.assertj.core.api.InstanceOfAssertFactories.list;
2627
import static org.eclipse.edc.jsonld.spi.JsonLdKeywords.TYPE;
2728
import static org.eclipse.edc.junit.assertions.AbstractResultAssert.assertThat;
28-
import static org.eclipse.edc.protocol.dsp.spi.type.DspCatalogPropertyAndTypeNames.DSPACE_TYPE_CATALOG_REQUEST_MESSAGE;
2929
import static org.mockito.Mockito.mock;
3030

3131
class CatalogRequestMessageValidatorTest {
@@ -35,7 +35,7 @@ class CatalogRequestMessageValidatorTest {
3535
@Test
3636
void shouldSucceed_whenObjectIsValid() {
3737
var input = Json.createObjectBuilder()
38-
.add(TYPE, Json.createArrayBuilder().add(DSPACE_TYPE_CATALOG_REQUEST_MESSAGE))
38+
.add(TYPE, Json.createArrayBuilder().add(DspCatalogPropertyAndTypeNames.DSPACE_TYPE_CATALOG_REQUEST_MESSAGE_IRI))
3939
.build();
4040

4141
var result = validator.validate(input);
@@ -52,6 +52,6 @@ void shouldFail_whenMandatoryFieldsAreMissing() {
5252

5353
assertThat(result).isFailed().extracting(ValidationFailure::getViolations).asInstanceOf(list(Violation.class))
5454
.hasSize(1)
55-
.anySatisfy(violation -> assertThat(violation.path()).isEqualTo(TYPE));
55+
.anySatisfy(violation -> Assertions.assertThat(violation.path()).isEqualTo(TYPE));
5656
}
5757
}

0 commit comments

Comments
 (0)