Skip to content

Commit

Permalink
store isCatalog in the properties map
Browse files Browse the repository at this point in the history
  • Loading branch information
paullatzelsperger committed Jun 21, 2024
1 parent 0e4858b commit 4d63b7b
Show file tree
Hide file tree
Showing 7 changed files with 60 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ public JsonObjectToAssetTransformer() {

// the asset is a Catalog Asset, i.e. it links to another catalog
if (EDC_CATALOG_ASSET_TYPE.equals(nodeType(jsonObject))) {
builder.privateProperty(Asset.PROPERTY_IS_CATALOG, true);
builder.property(Asset.PROPERTY_IS_CATALOG, "true");
}

return builderResult(builder::build, context);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ void transform_shouldSetType_whenAssetIsCatalog() {
var dataAddress = DataAddress.Builder.newInstance().type("address-type").build();
var asset = createAssetBuilder()
.dataAddress(dataAddress)
.privateProperty(PROPERTY_IS_CATALOG, true)
.property(PROPERTY_IS_CATALOG, true)
.build();

var jsonObject = transformer.transform(asset, context);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ void shouldExcludeProperties_whenDefinedAtTheRootLevel() {
}

@Test
void shouldSetPrivateProperty_whenTypeIsCatalog() {
void shouldSetProperty_whenTypeIsCatalog() {
var jsonObj = jsonFactory.createObjectBuilder()
.add(CONTEXT, createContextBuilder().build())
.add(TYPE, EDC_CATALOG_ASSET_TYPE)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,8 @@ public String getContentType() {

@JsonIgnore
public boolean isCatalog() {
return ofNullable(getPrivateProperty(PROPERTY_IS_CATALOG))
.map(o -> Boolean.parseBoolean(o.toString()))
return ofNullable(getPropertyAsString(PROPERTY_IS_CATALOG))
.map(Boolean::parseBoolean)
.orElse(false);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,25 +88,25 @@ void isCatalog_whenNotPresent_shouldReturnFalse() {

@Test
void isCatalog_whenFalse_shouldReturnFalse() {
var asset = Asset.Builder.newInstance().privateProperty(Asset.PROPERTY_IS_CATALOG, "false").build();
var asset = Asset.Builder.newInstance().property(Asset.PROPERTY_IS_CATALOG, "false").build();
assertThat(asset.isCatalog()).isFalse();

var asset2 = Asset.Builder.newInstance().privateProperty(Asset.PROPERTY_IS_CATALOG, false).build();
var asset2 = Asset.Builder.newInstance().property(Asset.PROPERTY_IS_CATALOG, false).build();
assertThat(asset2.isCatalog()).isFalse();
}

@Test
void isCatalog_whenTrue_shouldReturnTrue() {
var asset = Asset.Builder.newInstance().privateProperty(Asset.PROPERTY_IS_CATALOG, "true").build();
var asset = Asset.Builder.newInstance().property(Asset.PROPERTY_IS_CATALOG, "true").build();
assertThat(asset.isCatalog()).isTrue();

var asset2 = Asset.Builder.newInstance().privateProperty(Asset.PROPERTY_IS_CATALOG, true).build();
var asset2 = Asset.Builder.newInstance().property(Asset.PROPERTY_IS_CATALOG, true).build();
assertThat(asset2.isCatalog()).isTrue();
}

@Test
void isCatalog_whenInvalidValid_shoudReturnFalse() {
var asset = Asset.Builder.newInstance().privateProperty(Asset.PROPERTY_IS_CATALOG, "foobar").build();
var asset = Asset.Builder.newInstance().property(Asset.PROPERTY_IS_CATALOG, "foobar").build();
assertThat(asset.isCatalog()).isFalse();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ void shouldFail_whenAssetAlreadyExists() {
@Test
void shouldCreate_withPrivateProperty() {
var asset = createAssetBuilder("test-asset").privateProperty("prop1", "val1")
.privateProperty(Asset.PROPERTY_IS_CATALOG, true)
.property(Asset.PROPERTY_IS_CATALOG, true)
.build();

assertThat(getAssetIndex().create(asset).succeeded()).isTrue();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
import org.eclipse.edc.junit.annotations.EndToEndTest;
import org.eclipse.edc.junit.annotations.PostgresqlIntegrationTest;
import org.eclipse.edc.spi.types.domain.DataAddress;
import org.eclipse.edc.transform.spi.TypeTransformerRegistry;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
Expand Down Expand Up @@ -81,9 +80,8 @@ void createAsset_shouldBeStored(ManagementEndToEndTestContext context, AssetInde
.add(CONTEXT, createObjectBuilder().add(EDC_PREFIX, EDC_NAMESPACE))
.add(TYPE, "Asset")
.add(ID, id)
.add("properties", createPropertiesBuilder().build())
.add("properties", createPropertiesBuilder().add("isCatalog", "true").build())
.add("privateProperties", createObjectBuilder()
.add("isCatalog", "true")
.add("anotherProp", "anotherVal")
.build())
.add("dataAddress", createObjectBuilder()
Expand Down Expand Up @@ -193,6 +191,49 @@ void createAsset_whenCatalogAsset_shouldSetProperty(ManagementEndToEndTestContex
assertThat(asset.isCatalog()).isTrue();
}


@Test
void createAsset_whenCatalogInPrivateProps_shouldReturnCatalogType(ManagementEndToEndTestContext context, AssetIndex index) {
var id = UUID.randomUUID().toString();
var assetJson = createObjectBuilder()
.add(CONTEXT, createObjectBuilder().add(EDC_PREFIX, EDC_NAMESPACE))
.add(TYPE, "Asset")
.add(ID, id)
.add("properties", createPropertiesBuilder().add("isCatalog", "true").build())
.add("dataAddress", createObjectBuilder()
.add(TYPE, "DataAddress")
.add("type", "test-type")
.build())
.build();

// create the asset
context.baseRequest()
.contentType(ContentType.JSON)
.body(assetJson)
.post("/v3/assets")
.then()
.log().ifError()
.statusCode(200)
.body(ID, is(id));

// verify the property was set
var asset = index.findById(id);
assertThat(asset.isCatalog()).isTrue();

// query the asset, assert that @type: CatalogAsset
var assets = context.baseRequest()
.contentType(ContentType.JSON)
.body(context.query(criterion("id", "=", id)))
.post("/v3/assets/request")
.then()
.log().ifError()
.statusCode(200)
.extract().body().as(JsonArray.class);

assertThat(assets).isNotNull().hasSize(1);
assertThat(Asset.EDC_CATALOG_ASSET_TYPE).contains(assets.get(0).asJsonObject().getString(TYPE));
}

@Test
void queryAsset_byContentType(ManagementEndToEndTestContext context, AssetIndex assetIndex) {
//insert one asset into the index
Expand Down Expand Up @@ -284,18 +325,20 @@ void queryAsset_byCustomComplexProperty(ManagementEndToEndTestContext context) {
}

@Test
void queryAsset_whenCatalogAsset_shouldSetCorrectType(ManagementEndToEndTestContext context, AssetIndex assetIndex, TypeTransformerRegistry typeTransformerRegistry) {
void queryAsset_byCatalogProperty(ManagementEndToEndTestContext context, AssetIndex assetIndex) {
var id = UUID.randomUUID().toString();
assetIndex.create(Asset.Builder.newInstance()
.privateProperty(Asset.PROPERTY_IS_CATALOG, true)
.property(Asset.PROPERTY_IS_CATALOG, "true")
.id(id)
.contentType("application/octet-stream")
.dataAddress(createDataAddress().build())
.build());

var assets = context.baseRequest()
.contentType(ContentType.JSON)
.body(context.query(criterion("id", "=", id)))
.body(context.query(
criterion(EDC_NAMESPACE + "isCatalog", "=", "true"),
criterion("id", "=", id)))
.post("/v3/assets/request")
.then()
.log().ifError()
Expand Down

0 comments on commit 4d63b7b

Please sign in to comment.