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} *

*