Skip to content

Commit ff03664

Browse files
authored
chore: fix after subcatalog serialization changes (#264)
1 parent 92d0be7 commit ff03664

File tree

5 files changed

+72
-9
lines changed

5 files changed

+72
-9
lines changed

core/federated-catalog-core/src/main/java/org/eclipse/edc/catalog/transform/JsonObjectToCatalogTransformer.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,11 @@
2525
import org.jetbrains.annotations.NotNull;
2626
import org.jetbrains.annotations.Nullable;
2727

28-
import static org.eclipse.edc.jsonld.spi.PropertyAndTypeNames.DCAT_CATALOG_TYPE;
28+
import static org.eclipse.edc.jsonld.spi.PropertyAndTypeNames.DCAT_CATALOG_ATTRIBUTE;
2929
import static org.eclipse.edc.jsonld.spi.PropertyAndTypeNames.DCAT_DATASET_ATTRIBUTE;
3030
import static org.eclipse.edc.jsonld.spi.PropertyAndTypeNames.DCAT_DATA_SERVICE_ATTRIBUTE;
3131
import static org.eclipse.edc.jsonld.spi.PropertyAndTypeNames.DCAT_DISTRIBUTION_TYPE;
3232
import static org.eclipse.edc.jsonld.spi.PropertyAndTypeNames.DSPACE_PROPERTY_PARTICIPANT_ID_IRI;
33-
import static org.eclipse.edc.jsonld.spi.TypeUtil.nodeType;
3433

3534
/**
3635
* Converts from a DCAT catalog as a {@link JsonObject} in JSON-LD expanded form to a {@link Catalog}.
@@ -52,8 +51,7 @@ public JsonObjectToCatalogTransformer() {
5251
}
5352

5453
private @Nullable Dataset transformDataset(JsonValue datasetJsonObj, TransformerContext context) {
55-
var clazz = DCAT_CATALOG_TYPE.equals(nodeType(datasetJsonObj.asJsonObject())) ? Catalog.class : Dataset.class;
56-
return context.transform(datasetJsonObj.asJsonObject(), clazz);
54+
return transformObject(datasetJsonObj, Dataset.class, context);
5755
}
5856

5957
private void transformProperties(String key, JsonValue value, Catalog.Builder builder, TransformerContext context) {
@@ -65,6 +63,8 @@ private void transformProperties(String key, JsonValue value, Catalog.Builder bu
6563
} else {
6664
builder.dataset(transformDataset(value, context));
6765
}
66+
} else if (DCAT_CATALOG_ATTRIBUTE.equalsIgnoreCase(key)) {
67+
transformArrayOrObject(value, Catalog.class, builder::dataset, context);
6868
} else if (DCAT_DATA_SERVICE_ATTRIBUTE.equalsIgnoreCase(key)) {
6969
transformArrayOrObject(value, DataService.class, builder::dataService, context);
7070
} else if (DSPACE_PROPERTY_PARTICIPANT_ID_IRI.equalsIgnoreCase(key)) {

core/federated-catalog-core/src/test/java/org/eclipse/edc/catalog/transform/JsonObjectToCatalogTransformerTest.java

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import jakarta.json.JsonBuilderFactory;
1919
import jakarta.json.JsonObject;
2020
import jakarta.json.JsonValue;
21+
import org.eclipse.edc.connector.controlplane.catalog.spi.Catalog;
2122
import org.eclipse.edc.connector.controlplane.catalog.spi.DataService;
2223
import org.eclipse.edc.connector.controlplane.catalog.spi.Dataset;
2324
import org.eclipse.edc.connector.controlplane.catalog.spi.Distribution;
@@ -32,6 +33,7 @@
3233
import static org.eclipse.edc.catalog.transform.TestInput.getExpanded;
3334
import static org.eclipse.edc.jsonld.spi.JsonLdKeywords.ID;
3435
import static org.eclipse.edc.jsonld.spi.JsonLdKeywords.TYPE;
36+
import static org.eclipse.edc.jsonld.spi.PropertyAndTypeNames.DCAT_CATALOG_ATTRIBUTE;
3537
import static org.eclipse.edc.jsonld.spi.PropertyAndTypeNames.DCAT_CATALOG_TYPE;
3638
import static org.eclipse.edc.jsonld.spi.PropertyAndTypeNames.DCAT_DATASET_ATTRIBUTE;
3739
import static org.eclipse.edc.jsonld.spi.PropertyAndTypeNames.DCAT_DATA_SERVICE_ATTRIBUTE;
@@ -138,6 +140,65 @@ void transform_filledCatalog_returnCatalog() {
138140
verify(context, times(1)).transform(isA(JsonObject.class), eq(DataService.class));
139141
}
140142

143+
@Test
144+
void transform_subCatalog_returnCatalog() {
145+
var datasetJson = getJsonObject("dataset");
146+
var dataServiceJson = getJsonObject("dataService");
147+
148+
var dataset = Dataset.Builder.newInstance()
149+
.offer("offerId", Policy.Builder.newInstance().build())
150+
.distribution(Distribution.Builder.newInstance()
151+
.format("format")
152+
.dataService(DataService.Builder.newInstance().build())
153+
.build())
154+
.build();
155+
var dataService = DataService.Builder.newInstance().build();
156+
157+
158+
var subCatalog = Catalog.Builder.newInstance()
159+
.id(CATALOG_ID + "-sub")
160+
.dataService(dataService)
161+
.dataset(dataset)
162+
.build();
163+
164+
var subCatalogJson = jsonFactory.createObjectBuilder()
165+
.add(ID, CATALOG_ID + "-sub")
166+
.add(TYPE, DCAT_CATALOG_TYPE)
167+
.add(DCAT_DATASET_ATTRIBUTE, datasetJson)
168+
.add(DCAT_DATA_SERVICE_ATTRIBUTE, dataServiceJson)
169+
.build();
170+
171+
when(context.transform(any(JsonObject.class), eq(Dataset.class)))
172+
.thenReturn(dataset);
173+
when(context.transform(any(JsonObject.class), eq(DataService.class)))
174+
.thenReturn(dataService);
175+
176+
when(context.transform(any(JsonObject.class), eq(Catalog.class)))
177+
.thenAnswer(args -> transformer.transform(args.getArgument(0), context));
178+
179+
var catalog = jsonFactory.createObjectBuilder()
180+
.add(ID, CATALOG_ID)
181+
.add(TYPE, DCAT_CATALOG_TYPE)
182+
.add(DCAT_DATASET_ATTRIBUTE, datasetJson)
183+
.add(DCAT_CATALOG_ATTRIBUTE, subCatalogJson)
184+
.add(DCAT_DATA_SERVICE_ATTRIBUTE, dataServiceJson)
185+
.build();
186+
187+
var result = transformer.transform(getExpanded(catalog), context);
188+
189+
assertThat(result).isNotNull();
190+
assertThat(result.getId()).isEqualTo(CATALOG_ID);
191+
assertThat(result.getDatasets()).hasSize(2);
192+
assertThat(result.getDatasets()).contains(dataset);
193+
assertThat(result.getDatasets()).usingRecursiveFieldByFieldElementComparator().contains(subCatalog);
194+
assertThat(result.getDataServices()).hasSize(1);
195+
assertThat(result.getDataServices().get(0)).isEqualTo(dataService);
196+
197+
verify(context, never()).reportProblem(anyString());
198+
verify(context, times(2)).transform(isA(JsonObject.class), eq(Dataset.class));
199+
verify(context, times(2)).transform(isA(JsonObject.class), eq(DataService.class));
200+
}
201+
141202
@Test
142203
void transform_invalidType_reportProblem() {
143204
var catalog = jsonFactory.createObjectBuilder().add(TYPE, "not-a-catalog").build();

extensions/store/sql/federated-catalog-cache-sql/src/test/java/org/eclipse/edc/catalog/store/sql/SqlFederatedCatalogCacheTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import org.eclipse.edc.connector.controlplane.catalog.spi.Catalog;
2121
import org.eclipse.edc.connector.controlplane.catalog.spi.Dataset;
2222
import org.eclipse.edc.json.JacksonTypeManager;
23-
import org.eclipse.edc.junit.annotations.ComponentTest;
23+
import org.eclipse.edc.junit.annotations.PostgresqlIntegrationTest;
2424
import org.eclipse.edc.junit.testfixtures.TestUtils;
2525
import org.eclipse.edc.sql.QueryExecutor;
2626
import org.eclipse.edc.sql.testfixtures.PostgresqlStoreSetupExtension;
@@ -30,7 +30,7 @@
3030

3131
import java.io.IOException;
3232

33-
@ComponentTest
33+
@PostgresqlIntegrationTest
3434
@ExtendWith(PostgresqlStoreSetupExtension.class)
3535
public class SqlFederatedCatalogCacheTest extends FederatedCatalogCacheTestBase {
3636

extensions/store/sql/target-node-directory-sql/src/test/java/org/eclipse/edc/catalog/store/sql/SqlTargetNodeDirectoryTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import org.eclipse.edc.connector.controlplane.catalog.spi.Dataset;
2121
import org.eclipse.edc.crawler.spi.TargetNodeDirectory;
2222
import org.eclipse.edc.json.JacksonTypeManager;
23-
import org.eclipse.edc.junit.annotations.ComponentTest;
23+
import org.eclipse.edc.junit.annotations.PostgresqlIntegrationTest;
2424
import org.eclipse.edc.junit.testfixtures.TestUtils;
2525
import org.eclipse.edc.sql.QueryExecutor;
2626
import org.eclipse.edc.sql.testfixtures.PostgresqlStoreSetupExtension;
@@ -30,7 +30,7 @@
3030

3131
import java.io.IOException;
3232

33-
@ComponentTest
33+
@PostgresqlIntegrationTest
3434
@ExtendWith(PostgresqlStoreSetupExtension.class)
3535
public class SqlTargetNodeDirectoryTest extends TargetNodeDirectoryTestBase {
3636

system-tests/component-tests/src/test/resources/catalog_of_catalogs.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@
1818
"dcat:distribution": [
1919
],
2020
"id": "normal-asset-a873f2be-295e-4d03-af1c-0e15c1363627"
21-
},
21+
}
22+
],
23+
"dcat:catalog": [
2224
{
2325
"@id": "catalog-asset-5a7482bd-a2a8-4248-a8fa-353cb1d14df7",
2426
"@type": "dcat:Catalog",

0 commit comments

Comments
 (0)