From 321d63dfb39c79032d8d6c02786b638aea44986c Mon Sep 17 00:00:00 2001
From: Robert von Burg
Date: Fri, 26 Apr 2019 15:49:59 +0200
Subject: [PATCH] [New] Simplified instantiating policy:
tx.getPolicy(PolicyDef)
---
.../persistence/api/AbstractTransaction.java | 8 ++++++++
.../persistence/api/StrolchTransaction.java | 14 ++++++++++++++
.../main/java/li/strolch/policy/PolicyHandler.java | 11 -----------
3 files changed, 22 insertions(+), 11 deletions(-)
diff --git a/li.strolch.agent/src/main/java/li/strolch/persistence/api/AbstractTransaction.java b/li.strolch.agent/src/main/java/li/strolch/persistence/api/AbstractTransaction.java
index b82026b5e..cf8357626 100644
--- a/li.strolch.agent/src/main/java/li/strolch/persistence/api/AbstractTransaction.java
+++ b/li.strolch.agent/src/main/java/li/strolch/persistence/api/AbstractTransaction.java
@@ -39,9 +39,12 @@ import li.strolch.model.audit.Audit;
import li.strolch.model.parameter.Parameter;
import li.strolch.model.parameter.StringListParameter;
import li.strolch.model.parameter.StringParameter;
+import li.strolch.model.policy.PolicyDef;
import li.strolch.model.query.*;
import li.strolch.model.timedstate.StrolchTimedState;
import li.strolch.model.timevalue.IValue;
+import li.strolch.policy.PolicyHandler;
+import li.strolch.policy.StrolchPolicy;
import li.strolch.privilege.base.AccessDeniedException;
import li.strolch.privilege.base.PrivilegeException;
import li.strolch.privilege.base.PrivilegeModelException;
@@ -360,6 +363,11 @@ public abstract class AbstractTransaction implements StrolchTransaction {
return this.container;
}
+ @Override
+ public T getPolicy(PolicyDef policyDef) {
+ return getContainer().getComponent(PolicyHandler.class).getPolicy(policyDef, this);
+ }
+
private void assertQueryAllowed(StrolchQuery query) {
try {
getPrivilegeContext().validateAction(query);
diff --git a/li.strolch.agent/src/main/java/li/strolch/persistence/api/StrolchTransaction.java b/li.strolch.agent/src/main/java/li/strolch/persistence/api/StrolchTransaction.java
index cec307498..4f42d8ee1 100644
--- a/li.strolch.agent/src/main/java/li/strolch/persistence/api/StrolchTransaction.java
+++ b/li.strolch.agent/src/main/java/li/strolch/persistence/api/StrolchTransaction.java
@@ -32,6 +32,7 @@ import li.strolch.model.audit.AuditVisitor;
import li.strolch.model.parameter.Parameter;
import li.strolch.model.parameter.StringListParameter;
import li.strolch.model.parameter.StringParameter;
+import li.strolch.model.policy.PolicyDef;
import li.strolch.model.query.ActivityQuery;
import li.strolch.model.query.AuditQuery;
import li.strolch.model.query.OrderQuery;
@@ -39,6 +40,7 @@ import li.strolch.model.query.ResourceQuery;
import li.strolch.model.visitor.ActivityVisitor;
import li.strolch.model.visitor.OrderVisitor;
import li.strolch.model.visitor.ResourceVisitor;
+import li.strolch.policy.StrolchPolicy;
import li.strolch.privilege.base.AccessDeniedException;
import li.strolch.privilege.model.Certificate;
import li.strolch.privilege.model.PrivilegeContext;
@@ -161,6 +163,18 @@ public interface StrolchTransaction extends AutoCloseable {
*/
ComponentContainer getContainer();
+ /**
+ * Instantiates the policy using the given {@link PolicyDef}
+ *
+ * @param policyDef
+ * the policy definition
+ * @param
+ * the type of policy to return
+ *
+ * @return the policy
+ */
+ T getPolicy(PolicyDef policyDef);
+
/**
* Returns the currently set {@link TransactionCloseStrategy}
*
diff --git a/li.strolch.agent/src/main/java/li/strolch/policy/PolicyHandler.java b/li.strolch.agent/src/main/java/li/strolch/policy/PolicyHandler.java
index a69a5d227..33fd8751b 100644
--- a/li.strolch.agent/src/main/java/li/strolch/policy/PolicyHandler.java
+++ b/li.strolch.agent/src/main/java/li/strolch/policy/PolicyHandler.java
@@ -25,17 +25,6 @@ import li.strolch.persistence.api.StrolchTransaction;
*
*
*
- * Objects which require delegation can use a {@link PolicyConfiguration} element and then retrieve a StrolchPolicy
- * instance from this {@link PolicyHandler}.
- *
- *
- *
- * {@link PolicyConfiguration} have a mapping of a policy type, i.e. an interface for a specific delegation. This
- * interface has concrete implementations which are then returned by the {@link PolicyHandler} depending on the current
- * configuration
- *
- *
- *
* The resolving of a policy instance is handled by a {@link PolicyDefVisitor}
*
*