diff --git a/fake-backend/json/brokerCatalogPage.json b/fake-backend/json/brokerCatalogPage.json index 24e3a2c3b..c567bcefa 100644 --- a/fake-backend/json/brokerCatalogPage.json +++ b/fake-backend/json/brokerCatalogPage.json @@ -79,33 +79,7 @@ "createdAt": "2023-05-26T12:02:41+02:00", "updatedAt": "2023-05-31T12:02:41+02:00", "contractPolicy": { - "legacyPolicy": { - "permissions": [ - { - "edctype": "dataspaceconnector:permission", - "action": { - "type": "USE" - }, - "constraints": [ - { - "edctype": "AtomicConstraint", - "leftExpression": { - "edctype": "dataspaceconnector:literalexpression", - "value": "ALWAYS_TRUE" - }, - "rightExpression": { - "edctype": "dataspaceconnector:literalexpression", - "value": "true" - }, - "operator": "EQ" - } - ] - } - ], - "@type": { - "@policytype": "set" - } - } + "legacyPolicy": "{\n \"permissions\": [\n {\n \"edctype\": \"dataspaceconnector:permission\",\n \"action\": {\n \"type\": \"USE\"\n },\n \"constraints\": [\n {\n \"edctype\": \"AtomicConstraint\",\n \"leftExpression\": {\n \"edctype\": \"dataspaceconnector:literalexpression\",\n \"value\": \"ALWAYS_TRUE\"\n },\n \"rightExpression\": {\n \"edctype\": \"dataspaceconnector:literalexpression\",\n \"value\": \"true\"\n },\n \"operator\": \"EQ\"\n }\n ]\n }\n ],\n \"@type\": {\n \"@policytype\": \"set\"\n }\n }" } } ] @@ -142,33 +116,7 @@ "createdAt": "2023-05-26T12:02:41+02:00", "updatedAt": "2023-05-31T12:02:41+02:00", "contractPolicy": { - "legacyPolicy": { - "permissions": [ - { - "edctype": "dataspaceconnector:permission", - "action": { - "type": "USE" - }, - "constraints": [ - { - "edctype": "AtomicConstraint", - "leftExpression": { - "edctype": "dataspaceconnector:literalexpression", - "value": "ALWAYS_TRUE" - }, - "rightExpression": { - "edctype": "dataspaceconnector:literalexpression", - "value": "true" - }, - "operator": "EQ" - } - ] - } - ], - "@type": { - "@policytype": "set" - } - } + "legacyPolicy": "{\n \"permissions\": [\n {\n \"edctype\": \"dataspaceconnector:permission\",\n \"action\": {\n \"type\": \"USE\"\n },\n \"constraints\": [\n {\n \"edctype\": \"AtomicConstraint\",\n \"leftExpression\": {\n \"edctype\": \"dataspaceconnector:literalexpression\",\n \"value\": \"ALWAYS_TRUE\"\n },\n \"rightExpression\": {\n \"edctype\": \"dataspaceconnector:literalexpression\",\n \"value\": \"true\"\n },\n \"operator\": \"EQ\"\n }\n ]\n }\n ],\n \"@type\": {\n \"@policytype\": \"set\"\n }\n }" } } ] @@ -205,33 +153,7 @@ "createdAt": "2023-05-26T12:02:41+02:00", "updatedAt": "2023-05-31T12:02:41+02:00", "contractPolicy": { - "legacyPolicy": { - "permissions": [ - { - "edctype": "dataspaceconnector:permission", - "action": { - "type": "USE" - }, - "constraints": [ - { - "edctype": "AtomicConstraint", - "leftExpression": { - "edctype": "dataspaceconnector:literalexpression", - "value": "ALWAYS_TRUE" - }, - "rightExpression": { - "edctype": "dataspaceconnector:literalexpression", - "value": "true" - }, - "operator": "EQ" - } - ] - } - ], - "@type": { - "@policytype": "set" - } - } + "legacyPolicy": "{\n \"permissions\": [\n {\n \"edctype\": \"dataspaceconnector:permission\",\n \"action\": {\n \"type\": \"USE\"\n },\n \"constraints\": [\n {\n \"edctype\": \"AtomicConstraint\",\n \"leftExpression\": {\n \"edctype\": \"dataspaceconnector:literalexpression\",\n \"value\": \"ALWAYS_TRUE\"\n },\n \"rightExpression\": {\n \"edctype\": \"dataspaceconnector:literalexpression\",\n \"value\": \"true\"\n },\n \"operator\": \"EQ\"\n }\n ]\n }\n ],\n \"@type\": {\n \"@policytype\": \"set\"\n }\n }" } } ] diff --git a/fake-backend/json/contractAgreementPage.json b/fake-backend/json/contractAgreementPage.json index e9fe699cc..5a2aeadfb 100644 --- a/fake-backend/json/contractAgreementPage.json +++ b/fake-backend/json/contractAgreementPage.json @@ -22,47 +22,7 @@ } }, "contractPolicy": { - "legacyPolicy": { - "permissions": [ - { - "edctype": "dataspaceconnector:permission", - "uid": null, - "target": "urn:artifact:my-own-asset", - "action": { - "type": "USE", - "includedIn": null, - "constraint": null - }, - "assignee": null, - "assigner": null, - "constraints": [ - { - "edctype": "AtomicConstraint", - "leftExpression": { - "edctype": "dataspaceconnector:literalexpression", - "value": "ALWAYS_TRUE" - }, - "rightExpression": { - "edctype": "dataspaceconnector:literalexpression", - "value": "true" - }, - "operator": "EQ" - } - ], - "duties": [] - } - ], - "prohibitions": [], - "obligations": [], - "extensibleProperties": {}, - "inheritsFrom": null, - "assigner": null, - "assignee": null, - "target": "urn:artifact:my-own-asset", - "@type": { - "@policytype": "set" - } - } + "legacyPolicy": "{\n \"permissions\": [\n {\n \"edctype\": \"dataspaceconnector:permission\",\n \"uid\": null,\n \"target\": \"urn:artifact:my-own-asset\",\n \"action\": {\n \"type\": \"USE\",\n \"includedIn\": null,\n \"constraint\": null\n },\n \"assignee\": null,\n \"assigner\": null,\n \"constraints\": [\n {\n \"edctype\": \"AtomicConstraint\",\n \"leftExpression\": {\n \"edctype\": \"dataspaceconnector:literalexpression\",\n \"value\": \"ALWAYS_TRUE\"\n },\n \"rightExpression\": {\n \"edctype\": \"dataspaceconnector:literalexpression\",\n \"value\": \"true\"\n },\n \"operator\": \"EQ\"\n }\n ],\n \"duties\": []\n }\n ],\n \"prohibitions\": [],\n \"obligations\": [],\n \"extensibleProperties\": {},\n \"inheritsFrom\": null,\n \"assigner\": null,\n \"assignee\": null,\n \"target\": \"urn:artifact:my-own-asset\",\n \"@type\": {\n \"@policytype\": \"set\"\n }\n }" }, "transferProcesses": [ { @@ -123,47 +83,7 @@ } }, "contractPolicy": { - "legacyPolicy": { - "permissions": [ - { - "edctype": "dataspaceconnector:permission", - "uid": null, - "target": "urn:artifact:consumed-asset", - "action": { - "type": "USE", - "includedIn": null, - "constraint": null - }, - "assignee": null, - "assigner": null, - "constraints": [ - { - "edctype": "AtomicConstraint", - "leftExpression": { - "edctype": "dataspaceconnector:literalexpression", - "value": "ALWAYS_TRUE" - }, - "rightExpression": { - "edctype": "dataspaceconnector:literalexpression", - "value": "true" - }, - "operator": "EQ" - } - ], - "duties": [] - } - ], - "prohibitions": [], - "obligations": [], - "extensibleProperties": {}, - "inheritsFrom": null, - "assigner": null, - "assignee": null, - "target": "urn:artifact:my-test-asset", - "@type": { - "@policytype": "set" - } - } + "legacyPolicy": "{\n \"permissions\": [\n {\n \"edctype\": \"dataspaceconnector:permission\",\n \"uid\": null,\n \"target\": \"urn:artifact:consumed-asset\",\n \"action\": {\n \"type\": \"USE\",\n \"includedIn\": null,\n \"constraint\": null\n },\n \"assignee\": null,\n \"assigner\": null,\n \"constraints\": [\n {\n \"edctype\": \"AtomicConstraint\",\n \"leftExpression\": {\n \"edctype\": \"dataspaceconnector:literalexpression\",\n \"value\": \"ALWAYS_TRUE\"\n },\n \"rightExpression\": {\n \"edctype\": \"dataspaceconnector:literalexpression\",\n \"value\": \"true\"\n },\n \"operator\": \"EQ\"\n }\n ],\n \"duties\": []\n }\n ],\n \"prohibitions\": [],\n \"obligations\": [],\n \"extensibleProperties\": {},\n \"inheritsFrom\": null,\n \"assigner\": null,\n \"assignee\": null,\n \"target\": \"urn:artifact:my-test-asset\",\n \"@type\": {\n \"@policytype\": \"set\"\n }\n }" }, "transferProcesses": [ { @@ -215,47 +135,7 @@ } }, "contractPolicy": { - "legacyPolicy": { - "permissions": [ - { - "edctype": "dataspaceconnector:permission", - "uid": null, - "target": "urn:artifact:my-test-asset-2", - "action": { - "type": "USE", - "includedIn": null, - "constraint": null - }, - "assignee": null, - "assigner": null, - "constraints": [ - { - "edctype": "AtomicConstraint", - "leftExpression": { - "edctype": "dataspaceconnector:literalexpression", - "value": "ALWAYS_TRUE" - }, - "rightExpression": { - "edctype": "dataspaceconnector:literalexpression", - "value": "true" - }, - "operator": "EQ" - } - ], - "duties": [] - } - ], - "prohibitions": [], - "obligations": [], - "extensibleProperties": {}, - "inheritsFrom": null, - "assigner": null, - "assignee": null, - "target": "urn:artifact:my-test-asset-2", - "@type": { - "@policytype": "set" - } - } + "legacyPolicy": "{\n \"permissions\": [\n {\n \"edctype\": \"dataspaceconnector:permission\",\n \"uid\": null,\n \"target\": \"urn:artifact:my-test-asset-2\",\n \"action\": {\n \"type\": \"USE\",\n \"includedIn\": null,\n \"constraint\": null\n },\n \"assignee\": null,\n \"assigner\": null,\n \"constraints\": [\n {\n \"edctype\": \"AtomicConstraint\",\n \"leftExpression\": {\n \"edctype\": \"dataspaceconnector:literalexpression\",\n \"value\": \"ALWAYS_TRUE\"\n },\n \"rightExpression\": {\n \"edctype\": \"dataspaceconnector:literalexpression\",\n \"value\": \"true\"\n },\n \"operator\": \"EQ\"\n }\n ],\n \"duties\": []\n }\n ],\n \"prohibitions\": [],\n \"obligations\": [],\n \"extensibleProperties\": {},\n \"inheritsFrom\": null,\n \"assigner\": null,\n \"assignee\": null,\n \"target\": \"urn:artifact:my-test-asset-2\",\n \"@type\": {\n \"@policytype\": \"set\"\n }\n }" }, "transferProcesses": [] }, @@ -275,47 +155,7 @@ } }, "contractPolicy": { - "legacyPolicy": { - "permissions": [ - { - "edctype": "dataspaceconnector:permission", - "uid": null, - "target": "urn:artifact:consumed-asset", - "action": { - "type": "USE", - "includedIn": null, - "constraint": null - }, - "assignee": null, - "assigner": null, - "constraints": [ - { - "edctype": "AtomicConstraint", - "leftExpression": { - "edctype": "dataspaceconnector:literalexpression", - "value": "ALWAYS_TRUE" - }, - "rightExpression": { - "edctype": "dataspaceconnector:literalexpression", - "value": "true" - }, - "operator": "EQ" - } - ], - "duties": [] - } - ], - "prohibitions": [], - "obligations": [], - "extensibleProperties": {}, - "inheritsFrom": null, - "assigner": null, - "assignee": null, - "target": "urn:artifact:my-test-asset", - "@type": { - "@policytype": "set" - } - } + "legacyPolicy": "{\n \"permissions\": [\n {\n \"edctype\": \"dataspaceconnector:permission\",\n \"uid\": null,\n \"target\": \"urn:artifact:consumed-asset\",\n \"action\": {\n \"type\": \"USE\",\n \"includedIn\": null,\n \"constraint\": null\n },\n \"assignee\": null,\n \"assigner\": null,\n \"constraints\": [\n {\n \"edctype\": \"AtomicConstraint\",\n \"leftExpression\": {\n \"edctype\": \"dataspaceconnector:literalexpression\",\n \"value\": \"ALWAYS_TRUE\"\n },\n \"rightExpression\": {\n \"edctype\": \"dataspaceconnector:literalexpression\",\n \"value\": \"true\"\n },\n \"operator\": \"EQ\"\n }\n ],\n \"duties\": []\n }\n ],\n \"prohibitions\": [],\n \"obligations\": [],\n \"extensibleProperties\": {},\n \"inheritsFrom\": null,\n \"assigner\": null,\n \"assignee\": null,\n \"target\": \"urn:artifact:my-test-asset\",\n \"@type\": {\n \"@policytype\": \"set\"\n }\n }" }, "transferProcesses": [ { diff --git a/package-lock.json b/package-lock.json index 84ee3504a..248483d8a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,7 +23,7 @@ "@ng-apimock/core": "^3.6.0", "@ngxs/store": "^3.8.1", "@sovity.de/broker-server-client": "0.20230712.71619-main-a4860cff", - "@sovity.de/edc-client": "0.20230706.64046-main-d2fd35a8", + "@sovity.de/edc-client": "0.20230711.54203-main-f9c4b8f7", "clean-deep": "^3.4.0", "date-fns": "^2.29.3", "dotenv": "^16.0.3", @@ -3443,9 +3443,9 @@ "integrity": "sha512-305vHJj38Ma9x9YADM3SJh3sdqePeLcrUB1hHlYsuPdx7wYe9vwgb503KYStJ+5iN/ojP2xu8k6Unt+y+Bu5iQ==" }, "node_modules/@sovity.de/edc-client": { - "version": "0.20230706.64046-main-d2fd35a8", - "resolved": "https://registry.npmjs.org/@sovity.de/edc-client/-/edc-client-0.20230706.64046-main-d2fd35a8.tgz", - "integrity": "sha512-IfOXrR6C+EArXTX0z1XWBx57WVPszVgEmjaJGwyEiX5gh+mHtv/oU+K42rpPBTFhaBOdteK4IUx1pts8J3CoiQ==" + "version": "0.20230711.54203-main-f9c4b8f7", + "resolved": "https://registry.npmjs.org/@sovity.de/edc-client/-/edc-client-0.20230711.54203-main-f9c4b8f7.tgz", + "integrity": "sha512-Ant1q0cYZ4d30b9GoJfDS+B2VRlrfp1jsUfl417nmLiZxibyQw6wQoEsmaJNiFqX4YsDpe0xsZ67uHNApw+mYg==" }, "node_modules/@tootallnate/once": { "version": "2.0.0", diff --git a/package.json b/package.json index 976c960a9..1ff8d394c 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "@ng-apimock/core": "^3.6.0", "@ngxs/store": "^3.8.1", "@sovity.de/broker-server-client": "0.20230712.71619-main-a4860cff", - "@sovity.de/edc-client": "0.20230706.64046-main-d2fd35a8", + "@sovity.de/edc-client": "0.20230711.54203-main-f9c4b8f7", "clean-deep": "^3.4.0", "date-fns": "^2.29.3", "dotenv": "^16.0.3", diff --git a/src/app/component-library/catalog/asset-detail-dialog/asset-detail-dialog-data.service.ts b/src/app/component-library/catalog/asset-detail-dialog/asset-detail-dialog-data.service.ts index 26386f382..ee7e5d03c 100644 --- a/src/app/component-library/catalog/asset-detail-dialog/asset-detail-dialog-data.service.ts +++ b/src/app/component-library/catalog/asset-detail-dialog/asset-detail-dialog-data.service.ts @@ -1,11 +1,11 @@ import {Injectable} from '@angular/core'; -import {Policy} from '../../../core/services/api/legacy-managent-api-client'; import {Asset} from '../../../core/services/models/asset'; import {ContractOffer} from '../../../core/services/models/contract-offer'; import {BrokerDataOffer} from '../../../routes/broker-ui/catalog-page/catalog-page/mapping/broker-data-offer'; import {ContractAgreementCardMapped} from '../../../routes/connector-ui/contract-agreement-page/contract-agreement-cards/contract-agreement-card-mapped'; import {AssetDetailDialogData} from './asset-detail-dialog-data'; import {AssetPropertyGridGroupBuilder} from './asset-property-grid-group-builder'; +import {getLegacyPolicy} from './policy-utils'; @Injectable() export class AssetDetailDialogDataService { @@ -52,8 +52,7 @@ export class AssetDetailDialogDataService { contractAgreement: ContractAgreementCardMapped, ): AssetDetailDialogData { let asset = contractAgreement.asset; - let contractPolicy = contractAgreement.contractPolicy - .legacyPolicy as Policy; + let contractPolicy = getLegacyPolicy(contractAgreement.contractPolicy); const propertyGridGroups = [ this.assetPropertyGridGroupBuilder.buildContractAgreementGroup( diff --git a/src/app/component-library/catalog/asset-detail-dialog/asset-property-grid-group-builder.ts b/src/app/component-library/catalog/asset-detail-dialog/asset-property-grid-group-builder.ts index 5c45068dd..c67aff321 100644 --- a/src/app/component-library/catalog/asset-detail-dialog/asset-property-grid-group-builder.ts +++ b/src/app/component-library/catalog/asset-detail-dialog/asset-property-grid-group-builder.ts @@ -17,6 +17,7 @@ import { getOnlineStatusColor, getOnlineStatusIcon, } from '../icon-with-online-status/online-status-utils'; +import {getLegacyPolicy} from './policy-utils'; @Injectable() export class AssetPropertyGridGroupBuilder { @@ -192,7 +193,7 @@ export class AssetPropertyGridGroupBuilder { this.onShowPolicyDetailsClick( `${groupLabel} Contract Policy)`, asset.name, - contractOffer.contractPolicy.legacyPolicy as Policy, + getLegacyPolicy(contractOffer.contractPolicy), ), }, { diff --git a/src/app/component-library/catalog/asset-detail-dialog/policy-utils.ts b/src/app/component-library/catalog/asset-detail-dialog/policy-utils.ts new file mode 100644 index 000000000..12c57d432 --- /dev/null +++ b/src/app/component-library/catalog/asset-detail-dialog/policy-utils.ts @@ -0,0 +1,17 @@ +import {PolicyDto as BrokerPolicyDto} from '@sovity.de/broker-server-client'; +import {PolicyDto} from '@sovity.de/edc-client'; +import {Policy} from '../../../core/services/api/legacy-managent-api-client'; + +/** + * Maps our API Wrapper Policy to the Core EDC Policy JSON. + * + * {@link PolicyDto} is part of our API wrapper. We want to display the ODRL Policy JSON though, and our JSON dialog only + * accepts objects, so we need to parse it. + * @param policyDto our policy dto + * @returns core edc policy + */ +export function getLegacyPolicy( + policyDto: PolicyDto | BrokerPolicyDto, +): Policy { + return JSON.parse(policyDto.legacyPolicy ?? 'null') as Policy; +}