From 88dfee8e2d0ba2170c228a59b13634f7af588694 Mon Sep 17 00:00:00 2001 From: ppel Date: Wed, 15 Jan 2025 16:21:19 +0100 Subject: [PATCH] Upgrade EDC version to 0.10.1 --- .../services/AlwaysTruePolicyService.java | 3 ++- .../build.gradle.kts | 2 ++ ...ReferringConnectorValidationExtension.java | 18 +++++++++--------- .../AbstractReferringConnectorValidation.java | 6 +++--- .../ReferringConnectorDutyFunction.java | 19 +++++++++++++++---- .../ReferringConnectorPermissionFunction.java | 19 +++++++++++++++---- ...ReferringConnectorProhibitionFunction.java | 19 +++++++++++++++---- .../policy/PolicyEvaluationTimeExtension.java | 3 ++- .../SharedApiConfigurationExtension.java | 3 +++ gradle/libs.versions.toml | 10 +++++++--- launchers/connector/build.gradle.kts | 2 ++ 11 files changed, 75 insertions(+), 29 deletions(-) diff --git a/extensions/policy-always-true/src/main/java/org/upm/inesdata/edc/extension/policy/services/AlwaysTruePolicyService.java b/extensions/policy-always-true/src/main/java/org/upm/inesdata/edc/extension/policy/services/AlwaysTruePolicyService.java index 310b76d..5f6244f 100644 --- a/extensions/policy-always-true/src/main/java/org/upm/inesdata/edc/extension/policy/services/AlwaysTruePolicyService.java +++ b/extensions/policy-always-true/src/main/java/org/upm/inesdata/edc/extension/policy/services/AlwaysTruePolicyService.java @@ -14,6 +14,7 @@ package org.upm.inesdata.edc.extension.policy.services; +import org.eclipse.edc.policy.engine.spi.PolicyContext; import org.upm.inesdata.edc.extension.policy.AlwaysTruePolicyConstants; import org.eclipse.edc.policy.engine.spi.PolicyEngine; import org.eclipse.edc.policy.engine.spi.RuleBindingRegistry; @@ -41,7 +42,7 @@ public void registerPolicy() { ruleBindingRegistry.bind("USE", ALL_SCOPES); ruleBindingRegistry.bind(AlwaysTruePolicyConstants.EXPRESSION_LEFT_VALUE, ALL_SCOPES); policyEngine.registerFunction( - ALL_SCOPES, + PolicyContext.class, Permission.class, AlwaysTruePolicyConstants.EXPRESSION_LEFT_VALUE, (operator, rightValue, rule, context1) -> operator.equals(Operator.EQ) && diff --git a/extensions/policy-referring-connector/build.gradle.kts b/extensions/policy-referring-connector/build.gradle.kts index ce2c85d..aca24cd 100644 --- a/extensions/policy-referring-connector/build.gradle.kts +++ b/extensions/policy-referring-connector/build.gradle.kts @@ -7,5 +7,7 @@ dependencies { api(libs.edc.auth.spi) api(libs.edc.policy.engine.spi) api(libs.edc.contract.spi) + api(libs.edc.catalog.spi) + api(libs.edc.participant.spi) testImplementation(libs.edc.core.junit) } diff --git a/extensions/policy-referring-connector/src/main/java/org/upm/inesdata/edc/extension/policy/ReferringConnectorValidationExtension.java b/extensions/policy-referring-connector/src/main/java/org/upm/inesdata/edc/extension/policy/ReferringConnectorValidationExtension.java index 0e6cd18..a289f9b 100644 --- a/extensions/policy-referring-connector/src/main/java/org/upm/inesdata/edc/extension/policy/ReferringConnectorValidationExtension.java +++ b/extensions/policy-referring-connector/src/main/java/org/upm/inesdata/edc/extension/policy/ReferringConnectorValidationExtension.java @@ -1,11 +1,12 @@ package org.upm.inesdata.edc.extension.policy; +import org.eclipse.edc.connector.controlplane.catalog.spi.policy.CatalogPolicyContext; +import org.eclipse.edc.connector.controlplane.contract.spi.policy.ContractNegotiationPolicyContext; +import org.eclipse.edc.participant.spi.ParticipantAgentPolicyContext; +import org.eclipse.edc.policy.engine.spi.AtomicConstraintRuleFunction; import org.upm.inesdata.edc.extension.policy.functions.ReferringConnectorDutyFunction; import org.upm.inesdata.edc.extension.policy.functions.ReferringConnectorPermissionFunction; import org.upm.inesdata.edc.extension.policy.functions.ReferringConnectorProhibitionFunction; -import org.eclipse.edc.connector.controlplane.contract.spi.offer.ContractDefinitionResolver; -import org.eclipse.edc.connector.controlplane.contract.spi.validation.ContractValidationService; -import org.eclipse.edc.policy.engine.spi.AtomicConstraintFunction; import org.eclipse.edc.policy.engine.spi.PolicyEngine; import org.eclipse.edc.policy.engine.spi.RuleBindingRegistry; import org.eclipse.edc.policy.model.Duty; @@ -15,8 +16,7 @@ import org.eclipse.edc.runtime.metamodel.annotation.Inject; import org.eclipse.edc.spi.system.ServiceExtension; import org.eclipse.edc.spi.system.ServiceExtensionContext; - -import static org.eclipse.edc.policy.engine.spi.PolicyEngine.ALL_SCOPES; +import org.eclipse.edc.policy.engine.spi.PolicyContext; public class ReferringConnectorValidationExtension implements ServiceExtension { @@ -77,8 +77,8 @@ public String name() { @Override public void initialize(ServiceExtensionContext context) { - ruleBindingRegistry.bind(REFERRING_CONNECTOR_CONSTRAINT_KEY, ContractValidationService.NEGOTIATION_SCOPE); - ruleBindingRegistry.bind(REFERRING_CONNECTOR_CONSTRAINT_KEY, ContractDefinitionResolver.CATALOGING_SCOPE); + ruleBindingRegistry.bind(REFERRING_CONNECTOR_CONSTRAINT_KEY, ContractNegotiationPolicyContext.NEGOTIATION_SCOPE); + ruleBindingRegistry.bind(REFERRING_CONNECTOR_CONSTRAINT_KEY, CatalogPolicyContext.CATALOG_SCOPE); var monitor = context.getMonitor(); registerPolicyFunction(Duty.class, new ReferringConnectorDutyFunction(monitor)); @@ -86,7 +86,7 @@ public void initialize(ServiceExtensionContext context) { registerPolicyFunction(Prohibition.class, new ReferringConnectorProhibitionFunction(monitor)); } - private void registerPolicyFunction(Class type, AtomicConstraintFunction function) { - policyEngine.registerFunction(ALL_SCOPES, type, REFERRING_CONNECTOR_CONSTRAINT_KEY, function); + private void registerPolicyFunction(Class type, AtomicConstraintRuleFunction function) { + policyEngine.registerFunction((Class) ParticipantAgentPolicyContext.class, type, REFERRING_CONNECTOR_CONSTRAINT_KEY, function); } } diff --git a/extensions/policy-referring-connector/src/main/java/org/upm/inesdata/edc/extension/policy/functions/AbstractReferringConnectorValidation.java b/extensions/policy-referring-connector/src/main/java/org/upm/inesdata/edc/extension/policy/functions/AbstractReferringConnectorValidation.java index de874e5..943fa0a 100644 --- a/extensions/policy-referring-connector/src/main/java/org/upm/inesdata/edc/extension/policy/functions/AbstractReferringConnectorValidation.java +++ b/extensions/policy-referring-connector/src/main/java/org/upm/inesdata/edc/extension/policy/functions/AbstractReferringConnectorValidation.java @@ -1,8 +1,8 @@ package org.upm.inesdata.edc.extension.policy.functions; +import org.eclipse.edc.participant.spi.ParticipantAgentPolicyContext; import org.eclipse.edc.policy.engine.spi.PolicyContext; import org.eclipse.edc.policy.model.Operator; -import org.eclipse.edc.spi.agent.ParticipantAgent; import org.eclipse.edc.spi.monitor.Monitor; import java.util.Arrays; @@ -35,7 +35,7 @@ protected AbstractReferringConnectorValidation(Monitor monitor) { * @param policyContext context of the policy with claims * @return true if claims are from the constrained referring connector */ - protected boolean evaluate(final Operator operator, final Object rightValue, final PolicyContext policyContext) { + protected boolean evaluate(final Operator operator, final Object rightValue, final ParticipantAgentPolicyContext policyContext) { if (policyContext.hasProblems() && !policyContext.getProblems().isEmpty()) { var problems = String.join(", ", policyContext.getProblems()); var message = @@ -46,7 +46,7 @@ protected boolean evaluate(final Operator operator, final Object rightValue, fin return false; } - final var claims = policyContext.getContextData(ParticipantAgent.class).getClaims(); + final var claims = policyContext.participantAgent().getClaims(); if (!claims.containsKey(REFERRING_CONNECTOR_CLAIM)) { return false; diff --git a/extensions/policy-referring-connector/src/main/java/org/upm/inesdata/edc/extension/policy/functions/ReferringConnectorDutyFunction.java b/extensions/policy-referring-connector/src/main/java/org/upm/inesdata/edc/extension/policy/functions/ReferringConnectorDutyFunction.java index d015500..cb667df 100644 --- a/extensions/policy-referring-connector/src/main/java/org/upm/inesdata/edc/extension/policy/functions/ReferringConnectorDutyFunction.java +++ b/extensions/policy-referring-connector/src/main/java/org/upm/inesdata/edc/extension/policy/functions/ReferringConnectorDutyFunction.java @@ -1,21 +1,32 @@ package org.upm.inesdata.edc.extension.policy.functions; -import org.eclipse.edc.policy.engine.spi.AtomicConstraintFunction; -import org.eclipse.edc.policy.engine.spi.PolicyContext; +import org.eclipse.edc.participant.spi.ParticipantAgentPolicyContext; +import org.eclipse.edc.policy.engine.spi.AtomicConstraintRuleFunction; import org.eclipse.edc.policy.model.Duty; import org.eclipse.edc.policy.model.Operator; import org.eclipse.edc.spi.monitor.Monitor; +import org.eclipse.edc.spi.result.Result; /** AtomicConstraintFunction to validate the referring connector claim for edc duties. */ public class ReferringConnectorDutyFunction extends AbstractReferringConnectorValidation - implements AtomicConstraintFunction { + implements AtomicConstraintRuleFunction { public ReferringConnectorDutyFunction(Monitor monitor) { super(monitor); } @Override - public boolean evaluate(Operator operator, Object rightValue, Duty rule, PolicyContext context) { + public boolean evaluate(Operator operator, Object rightValue, Duty rule, ParticipantAgentPolicyContext context) { return evaluate(operator, rightValue, context); } + + @Override + public Result validate(Operator operator, Object rightValue, Duty rule) { + return AtomicConstraintRuleFunction.super.validate(operator, rightValue, rule); + } + + @Override + public String name() { + return AtomicConstraintRuleFunction.super.name(); + } } \ No newline at end of file diff --git a/extensions/policy-referring-connector/src/main/java/org/upm/inesdata/edc/extension/policy/functions/ReferringConnectorPermissionFunction.java b/extensions/policy-referring-connector/src/main/java/org/upm/inesdata/edc/extension/policy/functions/ReferringConnectorPermissionFunction.java index e398c10..04f755d 100644 --- a/extensions/policy-referring-connector/src/main/java/org/upm/inesdata/edc/extension/policy/functions/ReferringConnectorPermissionFunction.java +++ b/extensions/policy-referring-connector/src/main/java/org/upm/inesdata/edc/extension/policy/functions/ReferringConnectorPermissionFunction.java @@ -1,21 +1,32 @@ package org.upm.inesdata.edc.extension.policy.functions; -import org.eclipse.edc.policy.engine.spi.AtomicConstraintFunction; -import org.eclipse.edc.policy.engine.spi.PolicyContext; +import org.eclipse.edc.participant.spi.ParticipantAgentPolicyContext; +import org.eclipse.edc.policy.engine.spi.AtomicConstraintRuleFunction; import org.eclipse.edc.policy.model.Operator; import org.eclipse.edc.policy.model.Permission; import org.eclipse.edc.spi.monitor.Monitor; +import org.eclipse.edc.spi.result.Result; /** AtomicConstraintFunction to validate the referring connector claim for edc permissions. */ public class ReferringConnectorPermissionFunction extends AbstractReferringConnectorValidation - implements AtomicConstraintFunction { + implements AtomicConstraintRuleFunction { public ReferringConnectorPermissionFunction(Monitor monitor) { super(monitor); } @Override - public boolean evaluate(Operator operator, Object rightValue, Permission rule, PolicyContext context) { + public boolean evaluate(Operator operator, Object rightValue, Permission rule, ParticipantAgentPolicyContext context) { return evaluate(operator, rightValue, context); } + + @Override + public Result validate(Operator operator, Object rightValue, Permission rule) { + return AtomicConstraintRuleFunction.super.validate(operator, rightValue, rule); + } + + @Override + public String name() { + return AtomicConstraintRuleFunction.super.name(); + } } \ No newline at end of file diff --git a/extensions/policy-referring-connector/src/main/java/org/upm/inesdata/edc/extension/policy/functions/ReferringConnectorProhibitionFunction.java b/extensions/policy-referring-connector/src/main/java/org/upm/inesdata/edc/extension/policy/functions/ReferringConnectorProhibitionFunction.java index 7744623..ff5d2ad 100644 --- a/extensions/policy-referring-connector/src/main/java/org/upm/inesdata/edc/extension/policy/functions/ReferringConnectorProhibitionFunction.java +++ b/extensions/policy-referring-connector/src/main/java/org/upm/inesdata/edc/extension/policy/functions/ReferringConnectorProhibitionFunction.java @@ -1,21 +1,32 @@ package org.upm.inesdata.edc.extension.policy.functions; -import org.eclipse.edc.policy.engine.spi.AtomicConstraintFunction; -import org.eclipse.edc.policy.engine.spi.PolicyContext; +import org.eclipse.edc.participant.spi.ParticipantAgentPolicyContext; +import org.eclipse.edc.policy.engine.spi.AtomicConstraintRuleFunction; import org.eclipse.edc.policy.model.Operator; import org.eclipse.edc.policy.model.Prohibition; import org.eclipse.edc.spi.monitor.Monitor; +import org.eclipse.edc.spi.result.Result; /** AtomicConstraintFunction to validate the referring connector claim edc prohibitions. */ public class ReferringConnectorProhibitionFunction extends AbstractReferringConnectorValidation - implements AtomicConstraintFunction { + implements AtomicConstraintRuleFunction { public ReferringConnectorProhibitionFunction(Monitor monitor) { super(monitor); } @Override - public boolean evaluate(Operator operator, Object rightValue, Prohibition rule, PolicyContext context) { + public boolean evaluate(Operator operator, Object rightValue, Prohibition rule, ParticipantAgentPolicyContext context) { return evaluate(operator, rightValue, context); } + + @Override + public Result validate(Operator operator, Object rightValue, Prohibition rule) { + return AtomicConstraintRuleFunction.super.validate(operator, rightValue, rule); + } + + @Override + public String name() { + return AtomicConstraintRuleFunction.super.name(); + } } \ No newline at end of file diff --git a/extensions/policy-time-interval/src/main/java/org/upm/inesdata/edc/extension/policy/PolicyEvaluationTimeExtension.java b/extensions/policy-time-interval/src/main/java/org/upm/inesdata/edc/extension/policy/PolicyEvaluationTimeExtension.java index 3c8127b..4d320b8 100644 --- a/extensions/policy-time-interval/src/main/java/org/upm/inesdata/edc/extension/policy/PolicyEvaluationTimeExtension.java +++ b/extensions/policy-time-interval/src/main/java/org/upm/inesdata/edc/extension/policy/PolicyEvaluationTimeExtension.java @@ -14,6 +14,7 @@ package org.upm.inesdata.edc.extension.policy; +import org.eclipse.edc.policy.engine.spi.PolicyContext; import org.eclipse.edc.policy.engine.spi.PolicyEngine; import org.eclipse.edc.policy.engine.spi.RuleBindingRegistry; import org.eclipse.edc.policy.model.Permission; @@ -46,7 +47,7 @@ public void initialize(ServiceExtensionContext context) { ruleBindingRegistry.bind("USE", ALL_SCOPES); ruleBindingRegistry.bind(KEY_POLICY_EVALUATION_TIME, ALL_SCOPES); policyEngine.registerFunction( - ALL_SCOPES, + PolicyContext.class, Permission.class, KEY_POLICY_EVALUATION_TIME, new PolicyEvaluationTimeFunction(monitor)); diff --git a/extensions/shared-api-configuration/src/main/java/org/upm/inesdata/api/shared/configuration/SharedApiConfigurationExtension.java b/extensions/shared-api-configuration/src/main/java/org/upm/inesdata/api/shared/configuration/SharedApiConfigurationExtension.java index 294decc..dfdf4b3 100644 --- a/extensions/shared-api-configuration/src/main/java/org/upm/inesdata/api/shared/configuration/SharedApiConfigurationExtension.java +++ b/extensions/shared-api-configuration/src/main/java/org/upm/inesdata/api/shared/configuration/SharedApiConfigurationExtension.java @@ -26,8 +26,10 @@ import java.net.URI; import static java.lang.String.format; +import static org.eclipse.edc.jsonld.spi.JsonLdKeywords.VOCAB; import static org.eclipse.edc.policy.model.OdrlNamespace.ODRL_PREFIX; import static org.eclipse.edc.policy.model.OdrlNamespace.ODRL_SCHEMA; +import static org.eclipse.edc.spi.constants.CoreConstants.EDC_NAMESPACE; import static org.eclipse.edc.spi.constants.CoreConstants.JSON_LD; /** @@ -93,6 +95,7 @@ public void initialize(ServiceExtensionContext context) { webService.registerResource("shared", authenticationFilter); jsonLd.registerNamespace(ODRL_PREFIX, ODRL_SCHEMA, SHARED_SCOPE); + jsonLd.registerNamespace(VOCAB, EDC_NAMESPACE, SHARED_SCOPE); var jsonLdMapper = typeManager.getMapper(JSON_LD); webService.registerResource("shared", new ObjectMapperProvider(jsonLdMapper)); webService.registerResource("shared", new JerseyJsonLdInterceptor(jsonLd, jsonLdMapper, SHARED_SCOPE)); diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 38a10f8..29235eb 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,8 +3,8 @@ format.version = "1.1" [versions] awaitility = "4.2.2" -edc = "0.9.1" -jupiter = "5.11.0" +edc = "0.10.1" +jupiter = "5.11.3" restAssured = "5.5.0" rsApi = "4.0.0" @@ -18,7 +18,7 @@ lombok = "1.18.30" parsson = "1.1.6" rseeApi = "10.0.0" jersey = "3.1.8" -aws = "2.26.7" +aws = "2.29.1" [libraries] @@ -75,14 +75,18 @@ restAssured = { module = "io.rest-assured:rest-assured", version.ref = "restAssu azure-storage-blob = { module = "com.azure:azure-storage-blob", version = "12.27.1" } minio-io = { module = "io.minio:minio", version = "8.5.12" } +edc-core-token = { module = "org.eclipse.edc:token-core", version.ref = "edc" } +edc-spi-jwt = { module = "org.eclipse.edc:jwt-spi", version.ref = "edc" } edc-auth-spi = { module = "org.eclipse.edc:auth-spi", version.ref = "edc" } edc-iam-oauth2-core = { module = "org.eclipse.edc:oauth2-core", version.ref = "edc" } edc-iam-oauth2-service = { module = "org.eclipse.edc:oauth2-service", version.ref = "edc"} assertj = { module = "org.assertj:assertj-core", version.ref = "assertj" } mockito-core = { module = "org.mockito:mockito-core", version.ref = "mockito" } edc-core-junit = { module = "org.eclipse.edc:junit", version.ref = "edc" } +edc-catalog-spi = { module = "org.eclipse.edc:catalog-spi", version.ref = "edc" } edc-contract-spi = { module = "org.eclipse.edc:contract-spi", version.ref = "edc" } edc-transfer-spi = { module = "org.eclipse.edc:transfer-spi", version.ref = "edc" } +edc-participant-spi = { module = "org.eclipse.edc:participant-spi", version.ref = "edc" } # EDC Federated Catalog edc-federated-catalog-api = { module = "org.eclipse.edc:federated-catalog-api", version.ref = "edc" } diff --git a/launchers/connector/build.gradle.kts b/launchers/connector/build.gradle.kts index a0f6417..da76b8c 100644 --- a/launchers/connector/build.gradle.kts +++ b/launchers/connector/build.gradle.kts @@ -42,6 +42,8 @@ dependencies { // IAM Identity and authorization implementation(libs.edc.iam.oauth2.service) implementation(project(":extensions:auth-oauth2-jwt")) + implementation(libs.edc.core.token) + implementation(libs.edc.spi.jwt) // Secretos implementation(libs.edc.vault.hashicorp) // Federated Catalog