From 01b942077d8130b71d928ae284dbf11a6037ec51 Mon Sep 17 00:00:00 2001 From: Radovan Semancik Date: Fri, 12 May 2017 13:49:39 +0200 Subject: [PATCH] Moving expression classes to new repo-common component --- gui/admin-gui/pom.xml | 7 +- .../midpoint/gui/api/page/PageBase.java | 2 +- .../configuration/PageRepositoryQuery.java | 4 +- .../web/security/MidPointApplication.java | 2 +- model/certification-impl/pom.xml | 10 +- .../impl/AccCertExpressionHelper.java | 8 +- .../impl/AccCertReviewersHelper.java | 2 +- .../impl/AccCertUpdateHelper.java | 2 +- .../DirectAssignmentCertificationHandler.java | 2 +- model/model-common/pom.xml | 11 +- .../AbstractSearchExpressionEvaluator.java | 14 +- ...alueTransformationExpressionEvaluator.java | 11 +- ...gnmentTargetSearchExpressionEvaluator.java | 18 +-- ...argetSearchExpressionEvaluatorFactory.java | 6 +- ...ssociationFromLinkExpressionEvaluator.java | 6 +- ...ionFromLinkExpressionEvaluatorFactory.java | 6 +- ...iationTargetSearchExpressionEvaluator.java | 4 +- ...argetSearchExpressionEvaluatorFactory.java | 6 +- .../GenerateExpressionEvaluator.java | 10 +- .../GenerateExpressionEvaluatorFactory.java | 4 +- .../evaluator/PathExpressionEvaluator.java | 12 +- .../PathExpressionEvaluatorFactory.java | 18 +-- .../ReferenceSearchExpressionEvaluator.java | 7 +- ...renceSearchExpressionEvaluatorFactory.java | 6 +- ...bstractSearchExpressionEvaluatorCache.java | 4 +- ...ciationSearchExpressionEvaluatorCache.java | 4 +- .../caching/AssociationSearchQueryKey.java | 4 +- .../functions/FunctionLibraryUtil.java | 48 +++++++ .../expression/script/ScriptEvaluator.java | 6 +- .../expression/script/ScriptExpression.java | 4 +- .../ScriptExpressionEvaluationContext.java | 4 +- .../script/ScriptExpressionEvaluator.java | 6 +- .../ScriptExpressionEvaluatorFactory.java | 6 +- .../script/ScriptExpressionFactory.java | 4 +- .../script/ScriptExpressionUtil.java | 66 +++++++++ .../script/jsr223/Jsr223ScriptEvaluator.java | 9 +- .../velocity/VelocityScriptEvaluator.java | 11 +- .../xpath/LazyXPathVariableResolver.java | 4 +- .../script/xpath/XPathScriptEvaluator.java | 4 +- .../model/common/mapping/Mapping.java | 20 +-- .../model/common/mapping/MappingFactory.java | 6 +- .../stringpolicy/ValuePolicyProcessor.java | 6 +- .../common/expression/ExpressionTestUtil.java | 12 +- .../common/expression/TestExpression.java | 6 +- .../common/expression/TestExpressionUtil.java | 6 +- .../expression/script/AbstractScriptTest.java | 9 +- .../script/TestGroovyExpressions.java | 2 +- .../expression/script/TestScriptCaching.java | 8 +- .../script/TestVelocityExpressions.java | 4 +- .../common/mapping/MappingTestEvaluator.java | 10 +- model/model-impl/pom.xml | 7 +- .../impl/controller/MappingDiagEvaluator.java | 2 +- .../model/impl/controller/ObjectMerger.java | 8 +- .../model/impl/expr/ExpressionHandler.java | 8 +- .../ModelExpressionThreadLocalHolder.java | 4 +- .../SequentialValueExpressionEvaluator.java | 6 +- ...entialValueExpressionEvaluatorFactory.java | 4 +- .../model/impl/lens/AbstractConstruction.java | 55 +------- .../model/impl/lens/AssignmentEvaluator.java | 8 +- .../impl/lens/AssignmentPathSegmentImpl.java | 2 +- .../impl/lens/AssignmentPathVariables.java | 4 +- .../model/impl/lens/ChangeExecutor.java | 10 +- .../midpoint/model/impl/lens/Clockwork.java | 2 +- .../model/impl/lens/Construction.java | 4 +- .../impl/lens/EvaluatedAssignmentImpl.java | 4 +- .../model/impl/lens/LensElementContext.java | 2 +- .../model/impl/lens/LensFocusContext.java | 2 +- .../impl/lens/LensProjectionContext.java | 2 +- .../midpoint/model/impl/lens/LensUtil.java | 7 +- .../model/impl/lens/PersonaProcessor.java | 5 +- .../lens/projector/ActivationProcessor.java | 7 +- .../lens/projector/AssignmentProcessor.java | 3 +- .../projector/AssignmentTripleEvaluator.java | 2 +- .../impl/lens/projector/FocusProcessor.java | 4 +- .../impl/lens/projector/InboundProcessor.java | 7 +- .../impl/lens/projector/MappingEvaluator.java | 12 +- .../projector/MappingEvaluatorParams.java | 2 +- .../projector/ObjectTemplateProcessor.java | 2 +- .../lens/projector/OutboundProcessor.java | 4 +- .../lens/projector/PolicyRuleProcessor.java | 4 +- .../projector/ProjectionValuesProcessor.java | 4 +- .../ProjectionCredentialsProcessor.java | 64 +++++---- .../scripting/actions/ScriptExecutor.java | 6 +- .../impl/security/UserProfileServiceImpl.java | 4 +- .../CorrelationConfirmationEvaluator.java | 12 +- .../impl/sync/SynchronizationServiceImpl.java | 6 +- .../AbstractSearchIterativeTaskHandler.java | 6 +- .../midpoint/model/impl/util/Utils.java | 2 +- .../src/main/resources/ctx-model.xml | 6 +- .../model/impl/expr/TestFilterExpression.java | 6 +- .../model/impl/expr/TestModelExpressions.java | 15 +- .../lens/TestAbstractAssignmentEvaluator.java | 21 ++- model/notifications-impl/pom.xml | 8 +- .../impl/api/transports/CustomTransport.java | 8 +- .../api/transports/SimpleSmsTransport.java | 8 +- .../impl/handlers/BaseHandler.java | 8 +- .../impl/helpers/BaseHelper.java | 8 +- .../impl/notifiers/ConfirmationNotifier.java | 4 - .../impl/notifiers/CustomNotifier.java | 6 +- .../impl/notifiers/GeneralNotifier.java | 2 +- model/report-impl/pom.xml | 5 + .../report/impl/ReportServiceImpl.java | 6 +- .../evolveum/midpoint/report/TestReport.java | 17 ++- model/workflow-impl/pom.xml | 5 + .../SpringApplicationContextHolder.java | 2 +- .../common/WfExpressionEvaluationHelper.java | 6 +- .../common/WfTimedActionTriggerHandler.java | 2 +- ...InitializeLoopThroughApproversInStage.java | 2 +- .../itemApproval/PrepareForTaskCreation.java | 2 +- .../general/GcpExpressionHelper.java | 8 +- .../aspect/BasePrimaryChangeAspect.java | 4 +- .../aspect/PrimaryChangeAspectHelper.java | 8 +- .../entitlements/AddAssociationAspect.java | 2 +- provisioning/provisioning-impl/pom.xml | 10 +- .../provisioning/impl/ResourceManager.java | 8 +- .../resources/ctx-provisioning-test-main.xml | 1 + repo/pom.xml | 3 +- repo/repo-common/pom.xml | 132 ++++++++++++++++++ .../repo}/common/expression/Expression.java | 2 +- .../ExpressionEvaluationContext.java | 2 +- .../expression/ExpressionEvaluator.java | 2 +- .../ExpressionEvaluatorFactory.java | 2 +- .../common/expression/ExpressionFactory.java | 2 +- .../expression/ExpressionSyntaxException.java | 2 +- .../common/expression/ExpressionUtil.java | 52 +------ .../expression/ExpressionVariables.java | 2 +- .../common/expression/ItemDeltaItem.java | 2 +- .../common/expression/ObjectDeltaObject.java | 2 +- .../repo}/common/expression/Source.java | 2 +- .../repo}/common/expression/SourceTriple.java | 2 +- .../expression/StringPolicyResolver.java | 2 +- .../common/expression/ValueSetDefinition.java | 2 +- .../evaluator/AsIsExpressionEvaluator.java | 10 +- .../AsIsExpressionEvaluatorFactory.java | 4 +- .../evaluator/LiteralExpressionEvaluator.java | 6 +- .../LiteralExpressionEvaluatorFactory.java | 6 +- repo/repo-common/testng-integration.xml | 19 +++ repo/repo-common/testng-unit.xml | 20 +++ .../midpoint/test/RepoObjectResolver.java | 92 ++++++++++++ .../main/resources/ctx-expression-test.xml | 68 +++++++++ .../midpoint/testing/story/TestUuid.java | 2 +- .../midpoint/testing/story/TestVillage.java | 2 +- 142 files changed, 884 insertions(+), 494 deletions(-) create mode 100644 model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/functions/FunctionLibraryUtil.java create mode 100644 model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/ScriptExpressionUtil.java create mode 100644 repo/repo-common/pom.xml rename {model/model-common/src/main/java/com/evolveum/midpoint/model => repo/repo-common/src/main/java/com/evolveum/midpoint/repo}/common/expression/Expression.java (99%) rename {model/model-common/src/main/java/com/evolveum/midpoint/model => repo/repo-common/src/main/java/com/evolveum/midpoint/repo}/common/expression/ExpressionEvaluationContext.java (98%) rename {model/model-common/src/main/java/com/evolveum/midpoint/model => repo/repo-common/src/main/java/com/evolveum/midpoint/repo}/common/expression/ExpressionEvaluator.java (95%) rename {model/model-common/src/main/java/com/evolveum/midpoint/model => repo/repo-common/src/main/java/com/evolveum/midpoint/repo}/common/expression/ExpressionEvaluatorFactory.java (96%) rename {model/model-common/src/main/java/com/evolveum/midpoint/model => repo/repo-common/src/main/java/com/evolveum/midpoint/repo}/common/expression/ExpressionFactory.java (99%) rename {model/model-common/src/main/java/com/evolveum/midpoint/model => repo/repo-common/src/main/java/com/evolveum/midpoint/repo}/common/expression/ExpressionSyntaxException.java (95%) rename {model/model-common/src/main/java/com/evolveum/midpoint/model => repo/repo-common/src/main/java/com/evolveum/midpoint/repo}/common/expression/ExpressionUtil.java (93%) rename {model/model-common/src/main/java/com/evolveum/midpoint/model => repo/repo-common/src/main/java/com/evolveum/midpoint/repo}/common/expression/ExpressionVariables.java (99%) rename {model/model-common/src/main/java/com/evolveum/midpoint/model => repo/repo-common/src/main/java/com/evolveum/midpoint/repo}/common/expression/ItemDeltaItem.java (99%) rename {model/model-common/src/main/java/com/evolveum/midpoint/model => repo/repo-common/src/main/java/com/evolveum/midpoint/repo}/common/expression/ObjectDeltaObject.java (99%) rename {model/model-common/src/main/java/com/evolveum/midpoint/model => repo/repo-common/src/main/java/com/evolveum/midpoint/repo}/common/expression/Source.java (97%) rename {model/model-common/src/main/java/com/evolveum/midpoint/model => repo/repo-common/src/main/java/com/evolveum/midpoint/repo}/common/expression/SourceTriple.java (96%) rename {model/model-common/src/main/java/com/evolveum/midpoint/model => repo/repo-common/src/main/java/com/evolveum/midpoint/repo}/common/expression/StringPolicyResolver.java (94%) rename {model/model-common/src/main/java/com/evolveum/midpoint/model => repo/repo-common/src/main/java/com/evolveum/midpoint/repo}/common/expression/ValueSetDefinition.java (98%) rename {model/model-common/src/main/java/com/evolveum/midpoint/model => repo/repo-common/src/main/java/com/evolveum/midpoint/repo}/common/expression/evaluator/AsIsExpressionEvaluator.java (90%) rename {model/model-common/src/main/java/com/evolveum/midpoint/model => repo/repo-common/src/main/java/com/evolveum/midpoint/repo}/common/expression/evaluator/AsIsExpressionEvaluatorFactory.java (95%) rename {model/model-common/src/main/java/com/evolveum/midpoint/model => repo/repo-common/src/main/java/com/evolveum/midpoint/repo}/common/expression/evaluator/LiteralExpressionEvaluator.java (90%) rename {model/model-common/src/main/java/com/evolveum/midpoint/model => repo/repo-common/src/main/java/com/evolveum/midpoint/repo}/common/expression/evaluator/LiteralExpressionEvaluatorFactory.java (92%) create mode 100644 repo/repo-common/testng-integration.xml create mode 100644 repo/repo-common/testng-unit.xml create mode 100644 repo/repo-test-util/src/main/java/com/evolveum/midpoint/test/RepoObjectResolver.java create mode 100644 repo/repo-test-util/src/main/resources/ctx-expression-test.xml diff --git a/gui/admin-gui/pom.xml b/gui/admin-gui/pom.xml index e3dab46753f..29f60d20fb1 100644 --- a/gui/admin-gui/pom.xml +++ b/gui/admin-gui/pom.xml @@ -1,5 +1,5 @@ commons-lang commons-lang diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AbstractSearchExpressionEvaluator.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AbstractSearchExpressionEvaluator.java index 2df9ecc7137..7db5b9efcbf 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AbstractSearchExpressionEvaluator.java +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AbstractSearchExpressionEvaluator.java @@ -24,18 +24,10 @@ import org.apache.commons.lang.BooleanUtils; import com.evolveum.midpoint.model.api.ModelService; -import com.evolveum.midpoint.model.common.expression.Expression; -import com.evolveum.midpoint.model.common.expression.ExpressionEvaluationContext; -import com.evolveum.midpoint.model.common.expression.ExpressionFactory; -import com.evolveum.midpoint.model.common.expression.ExpressionUtil; -import com.evolveum.midpoint.model.common.expression.ExpressionVariables; import com.evolveum.midpoint.model.common.expression.evaluator.caching.AbstractSearchExpressionEvaluatorCache; import com.evolveum.midpoint.prism.Containerable; -import com.evolveum.midpoint.prism.Definition; import com.evolveum.midpoint.prism.ItemDefinition; -import com.evolveum.midpoint.prism.PrismContainer; import com.evolveum.midpoint.prism.PrismContainerDefinition; -import com.evolveum.midpoint.prism.PrismContainerValue; import com.evolveum.midpoint.prism.PrismContext; import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.prism.PrismObjectDefinition; @@ -50,6 +42,11 @@ import com.evolveum.midpoint.prism.query.ObjectQuery; import com.evolveum.midpoint.prism.query.QueryJaxbConvertor; import com.evolveum.midpoint.prism.util.CloneUtil; +import com.evolveum.midpoint.repo.common.expression.Expression; +import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluationContext; +import com.evolveum.midpoint.repo.common.expression.ExpressionFactory; +import com.evolveum.midpoint.repo.common.expression.ExpressionUtil; +import com.evolveum.midpoint.repo.common.expression.ExpressionVariables; import com.evolveum.midpoint.schema.GetOperationOptions; import com.evolveum.midpoint.schema.ResultHandler; import com.evolveum.midpoint.schema.SelectorOptions; @@ -71,7 +68,6 @@ import com.evolveum.midpoint.util.exception.SystemException; import com.evolveum.midpoint.util.logging.Trace; import com.evolveum.midpoint.util.logging.TraceManager; -import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ExpressionType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType; import com.evolveum.midpoint.xml.ns._public.common.common_3.VariableBindingDefinitionType; diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AbstractValueTransformationExpressionEvaluator.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AbstractValueTransformationExpressionEvaluator.java index 69115e90056..b1ba512aa8b 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AbstractValueTransformationExpressionEvaluator.java +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AbstractValueTransformationExpressionEvaluator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2015 Evolveum + * Copyright (c) 2010-2017 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,7 +15,6 @@ */ package com.evolveum.midpoint.model.common.expression.evaluator; -import com.evolveum.midpoint.model.common.expression.*; import com.evolveum.midpoint.prism.Item; import com.evolveum.midpoint.prism.ItemDefinition; import com.evolveum.midpoint.prism.PrismPropertyValue; @@ -26,6 +25,14 @@ import com.evolveum.midpoint.prism.delta.PrismValueDeltaSetTriple; import com.evolveum.midpoint.prism.path.ItemPath; import com.evolveum.midpoint.prism.polystring.PolyString; +import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluationContext; +import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluator; +import com.evolveum.midpoint.repo.common.expression.ExpressionSyntaxException; +import com.evolveum.midpoint.repo.common.expression.ExpressionVariables; +import com.evolveum.midpoint.repo.common.expression.ItemDeltaItem; +import com.evolveum.midpoint.repo.common.expression.ObjectDeltaObject; +import com.evolveum.midpoint.repo.common.expression.Source; +import com.evolveum.midpoint.repo.common.expression.SourceTriple; import com.evolveum.midpoint.schema.constants.ExpressionConstants; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.security.api.SecurityEnforcer; diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AssignmentTargetSearchExpressionEvaluator.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AssignmentTargetSearchExpressionEvaluator.java index fcbd0e8a5d2..584aec9177d 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AssignmentTargetSearchExpressionEvaluator.java +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AssignmentTargetSearchExpressionEvaluator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2015 Evolveum + * Copyright (c) 2010-2017 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,37 +20,23 @@ import javax.xml.namespace.QName; import com.evolveum.midpoint.model.api.ModelService; -import com.evolveum.midpoint.model.common.expression.ExpressionEvaluationContext; -import com.evolveum.midpoint.model.common.expression.ExpressionVariables; -import com.evolveum.midpoint.prism.Definition; -import com.evolveum.midpoint.prism.ItemDefinition; import com.evolveum.midpoint.prism.PrismContainerDefinition; import com.evolveum.midpoint.prism.PrismContainerValue; import com.evolveum.midpoint.prism.PrismContext; -import com.evolveum.midpoint.prism.PrismValue; import com.evolveum.midpoint.prism.crypto.Protector; import com.evolveum.midpoint.prism.delta.ItemDelta; import com.evolveum.midpoint.prism.path.ItemPath; +import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluationContext; import com.evolveum.midpoint.schema.internals.InternalsConfig; -import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.schema.util.ObjectResolver; import com.evolveum.midpoint.security.api.SecurityEnforcer; -import com.evolveum.midpoint.task.api.Task; -import com.evolveum.midpoint.util.exception.CommunicationException; -import com.evolveum.midpoint.util.exception.ConfigurationException; -import com.evolveum.midpoint.util.exception.ExpressionEvaluationException; -import com.evolveum.midpoint.util.exception.ObjectAlreadyExistsException; -import com.evolveum.midpoint.util.exception.PolicyViolationException; import com.evolveum.midpoint.util.exception.SchemaException; -import com.evolveum.midpoint.util.exception.SecurityViolationException; import com.evolveum.midpoint.util.exception.SystemException; import com.evolveum.midpoint.util.logging.Trace; import com.evolveum.midpoint.util.logging.TraceManager; import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentType; import com.evolveum.midpoint.xml.ns._public.common.common_3.FocusType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.PopulateItemType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.PopulateType; import com.evolveum.midpoint.xml.ns._public.common.common_3.SearchObjectRefExpressionEvaluatorType; /** diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AssignmentTargetSearchExpressionEvaluatorFactory.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AssignmentTargetSearchExpressionEvaluatorFactory.java index 37e8ed33ebb..690180b5183 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AssignmentTargetSearchExpressionEvaluatorFactory.java +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AssignmentTargetSearchExpressionEvaluatorFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014-2015 Evolveum + * Copyright (c) 2014-2017 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,13 +21,13 @@ import javax.xml.namespace.QName; import com.evolveum.midpoint.model.api.ModelService; -import com.evolveum.midpoint.model.common.expression.ExpressionEvaluator; -import com.evolveum.midpoint.model.common.expression.ExpressionEvaluatorFactory; import com.evolveum.midpoint.prism.ItemDefinition; import com.evolveum.midpoint.prism.PrismContainerDefinition; import com.evolveum.midpoint.prism.PrismContext; import com.evolveum.midpoint.prism.PrismValue; import com.evolveum.midpoint.prism.crypto.Protector; +import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluator; +import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluatorFactory; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.schema.util.ObjectResolver; import com.evolveum.midpoint.security.api.SecurityEnforcer; diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AssociationFromLinkExpressionEvaluator.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AssociationFromLinkExpressionEvaluator.java index 7d8c954382b..aa7dd275181 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AssociationFromLinkExpressionEvaluator.java +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AssociationFromLinkExpressionEvaluator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014-2016 Evolveum + * Copyright (c) 2014-2017 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,13 +20,13 @@ import javax.xml.namespace.QName; import com.evolveum.midpoint.common.refinery.RefinedObjectClassDefinition; -import com.evolveum.midpoint.model.common.expression.ExpressionEvaluationContext; -import com.evolveum.midpoint.model.common.expression.ExpressionEvaluator; import com.evolveum.midpoint.prism.PrismContainer; import com.evolveum.midpoint.prism.PrismContainerDefinition; import com.evolveum.midpoint.prism.PrismContainerValue; import com.evolveum.midpoint.prism.PrismContext; import com.evolveum.midpoint.prism.delta.PrismValueDeltaSetTriple; +import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluationContext; +import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluator; import com.evolveum.midpoint.prism.delta.ItemDelta; import com.evolveum.midpoint.schema.GetOperationOptions; import com.evolveum.midpoint.schema.SelectorOptions; diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AssociationFromLinkExpressionEvaluatorFactory.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AssociationFromLinkExpressionEvaluatorFactory.java index 2b1a9488645..30ba271e49d 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AssociationFromLinkExpressionEvaluatorFactory.java +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AssociationFromLinkExpressionEvaluatorFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014-2016 Evolveum + * Copyright (c) 2014-2017 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,13 +21,13 @@ import javax.xml.namespace.QName; import com.evolveum.midpoint.model.api.ModelService; -import com.evolveum.midpoint.model.common.expression.ExpressionEvaluator; -import com.evolveum.midpoint.model.common.expression.ExpressionEvaluatorFactory; import com.evolveum.midpoint.prism.ItemDefinition; import com.evolveum.midpoint.prism.PrismContainerDefinition; import com.evolveum.midpoint.prism.PrismContext; import com.evolveum.midpoint.prism.PrismValue; import com.evolveum.midpoint.prism.crypto.Protector; +import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluator; +import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluatorFactory; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.schema.util.ObjectResolver; import com.evolveum.midpoint.task.api.Task; diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AssociationTargetSearchExpressionEvaluator.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AssociationTargetSearchExpressionEvaluator.java index 79158c2b33b..5beb28c2a1a 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AssociationTargetSearchExpressionEvaluator.java +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AssociationTargetSearchExpressionEvaluator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2016 Evolveum + * Copyright (c) 2010-2017 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,7 +22,6 @@ import com.evolveum.midpoint.common.refinery.RefinedObjectClassDefinition; import com.evolveum.midpoint.model.api.ModelService; -import com.evolveum.midpoint.model.common.expression.ExpressionEvaluationContext; import com.evolveum.midpoint.model.common.expression.evaluator.caching.AbstractSearchExpressionEvaluatorCache; import com.evolveum.midpoint.model.common.expression.evaluator.caching.AssociationSearchExpressionEvaluatorCache; import com.evolveum.midpoint.prism.PrismContainerDefinition; @@ -34,6 +33,7 @@ import com.evolveum.midpoint.prism.query.AndFilter; import com.evolveum.midpoint.prism.query.ObjectFilter; import com.evolveum.midpoint.prism.query.ObjectQuery; +import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluationContext; import com.evolveum.midpoint.schema.GetOperationOptions; import com.evolveum.midpoint.schema.SelectorOptions; import com.evolveum.midpoint.schema.constants.ExpressionConstants; diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AssociationTargetSearchExpressionEvaluatorFactory.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AssociationTargetSearchExpressionEvaluatorFactory.java index 79743229bd0..4a79cfa867a 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AssociationTargetSearchExpressionEvaluatorFactory.java +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AssociationTargetSearchExpressionEvaluatorFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014-2015 Evolveum + * Copyright (c) 2014-2017 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,13 +21,13 @@ import javax.xml.namespace.QName; import com.evolveum.midpoint.model.api.ModelService; -import com.evolveum.midpoint.model.common.expression.ExpressionEvaluator; -import com.evolveum.midpoint.model.common.expression.ExpressionEvaluatorFactory; import com.evolveum.midpoint.prism.ItemDefinition; import com.evolveum.midpoint.prism.PrismContainerDefinition; import com.evolveum.midpoint.prism.PrismContext; import com.evolveum.midpoint.prism.PrismValue; import com.evolveum.midpoint.prism.crypto.Protector; +import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluator; +import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluatorFactory; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.schema.util.ObjectResolver; import com.evolveum.midpoint.security.api.SecurityEnforcer; diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/GenerateExpressionEvaluator.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/GenerateExpressionEvaluator.java index 24b3611892c..c9f20092510 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/GenerateExpressionEvaluator.java +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/GenerateExpressionEvaluator.java @@ -19,11 +19,6 @@ import org.apache.commons.lang.StringUtils; -import com.evolveum.midpoint.model.common.expression.ExpressionEvaluationContext; -import com.evolveum.midpoint.model.common.expression.ExpressionEvaluator; -import com.evolveum.midpoint.model.common.expression.ExpressionUtil; -import com.evolveum.midpoint.model.common.expression.ExpressionVariables; -import com.evolveum.midpoint.model.common.expression.StringPolicyResolver; import com.evolveum.midpoint.model.common.stringpolicy.ValuePolicyProcessor; import com.evolveum.midpoint.prism.Item; import com.evolveum.midpoint.prism.ItemDefinition; @@ -34,6 +29,11 @@ import com.evolveum.midpoint.prism.PrismPropertyValue; import com.evolveum.midpoint.prism.crypto.Protector; import com.evolveum.midpoint.prism.delta.PrismValueDeltaSetTriple; +import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluationContext; +import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluator; +import com.evolveum.midpoint.repo.common.expression.ExpressionUtil; +import com.evolveum.midpoint.repo.common.expression.ExpressionVariables; +import com.evolveum.midpoint.repo.common.expression.StringPolicyResolver; import com.evolveum.midpoint.prism.delta.ItemDelta; import com.evolveum.midpoint.schema.constants.ExpressionConstants; import com.evolveum.midpoint.schema.util.ObjectResolver; diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/GenerateExpressionEvaluatorFactory.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/GenerateExpressionEvaluatorFactory.java index 186116bd9c6..edd0cf51066 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/GenerateExpressionEvaluatorFactory.java +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/GenerateExpressionEvaluatorFactory.java @@ -23,13 +23,13 @@ import com.evolveum.midpoint.task.api.Task; import org.apache.commons.lang.Validate; -import com.evolveum.midpoint.model.common.expression.ExpressionEvaluator; -import com.evolveum.midpoint.model.common.expression.ExpressionEvaluatorFactory; import com.evolveum.midpoint.model.common.stringpolicy.ValuePolicyProcessor; import com.evolveum.midpoint.prism.ItemDefinition; import com.evolveum.midpoint.prism.PrismContext; import com.evolveum.midpoint.prism.PrismValue; import com.evolveum.midpoint.prism.crypto.Protector; +import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluator; +import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluatorFactory; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.schema.util.ObjectResolver; import com.evolveum.midpoint.util.exception.ObjectNotFoundException; diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/PathExpressionEvaluator.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/PathExpressionEvaluator.java index aa7e46fbbb9..00e03312d3e 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/PathExpressionEvaluator.java +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/PathExpressionEvaluator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2013 Evolveum + * Copyright (c) 2010-2017 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,11 +19,6 @@ import javax.xml.namespace.QName; -import com.evolveum.midpoint.model.common.expression.ExpressionEvaluationContext; -import com.evolveum.midpoint.model.common.expression.ExpressionEvaluator; -import com.evolveum.midpoint.model.common.expression.ExpressionUtil; -import com.evolveum.midpoint.model.common.expression.ItemDeltaItem; -import com.evolveum.midpoint.model.common.expression.Source; import com.evolveum.midpoint.prism.Item; import com.evolveum.midpoint.prism.ItemDefinition; import com.evolveum.midpoint.prism.PrismContext; @@ -36,6 +31,11 @@ import com.evolveum.midpoint.prism.path.ItemPath; import com.evolveum.midpoint.prism.path.ItemPathSegment; import com.evolveum.midpoint.prism.path.NameItemPathSegment; +import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluationContext; +import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluator; +import com.evolveum.midpoint.repo.common.expression.ExpressionUtil; +import com.evolveum.midpoint.repo.common.expression.ItemDeltaItem; +import com.evolveum.midpoint.repo.common.expression.Source; import com.evolveum.midpoint.schema.util.ObjectResolver; import com.evolveum.midpoint.util.QNameUtil; import com.evolveum.midpoint.util.exception.ExpressionEvaluationException; diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/PathExpressionEvaluatorFactory.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/PathExpressionEvaluatorFactory.java index 09400686917..66553947719 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/PathExpressionEvaluatorFactory.java +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/PathExpressionEvaluatorFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2013 Evolveum + * Copyright (c) 2010-2017 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,13 +23,13 @@ import com.evolveum.midpoint.task.api.Task; import org.apache.commons.lang.Validate; -import com.evolveum.midpoint.model.common.expression.ExpressionEvaluator; -import com.evolveum.midpoint.model.common.expression.ExpressionEvaluatorFactory; import com.evolveum.midpoint.prism.ItemDefinition; import com.evolveum.midpoint.prism.PrismContext; import com.evolveum.midpoint.prism.PrismValue; import com.evolveum.midpoint.prism.crypto.Protector; import com.evolveum.midpoint.prism.path.ItemPath; +import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluator; +import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluatorFactory; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.schema.util.ObjectResolver; import com.evolveum.midpoint.util.exception.SchemaException; @@ -75,15 +75,9 @@ public ExpressionEvaluator Object evaluatorElementObject = evaluatorElement.getValue(); if (!(evaluatorElementObject instanceof ItemPathType)) { - throw new IllegalArgumentException("Path expression cannot handle elements of type " - + evaluatorElementObject.getClass().getName()+" in "+contextDescription); - } -// if (!(evaluatorElementObject instanceof Element)) { -// throw new IllegalArgumentException("Path expression cannot handle elements of type " -// + evaluatorElementObject.getClass().getName()+" in "+contextDescription); -// } - -// XPathHolder xpath = new XPathHolder((Element)evaluatorElementObject); + throw new IllegalArgumentException("Path expression cannot handle elements of type " + + evaluatorElementObject.getClass().getName()+" in "+contextDescription); + } ItemPath path = ((ItemPathType)evaluatorElementObject).getItemPath(); return new PathExpressionEvaluator<>(path, objectResolver, outputDefinition, protector, prismContext); diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/ReferenceSearchExpressionEvaluator.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/ReferenceSearchExpressionEvaluator.java index 2c42807f222..77aadb05012 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/ReferenceSearchExpressionEvaluator.java +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/ReferenceSearchExpressionEvaluator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2015 Evolveum + * Copyright (c) 2010-2017 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,17 +20,14 @@ import javax.xml.namespace.QName; import com.evolveum.midpoint.model.api.ModelService; -import com.evolveum.midpoint.model.common.expression.ExpressionEvaluationContext; -import com.evolveum.midpoint.model.common.expression.ExpressionVariables; import com.evolveum.midpoint.prism.PrismContext; import com.evolveum.midpoint.prism.PrismReferenceDefinition; import com.evolveum.midpoint.prism.PrismReferenceValue; import com.evolveum.midpoint.prism.crypto.Protector; import com.evolveum.midpoint.prism.delta.ItemDelta; -import com.evolveum.midpoint.schema.result.OperationResult; +import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluationContext; import com.evolveum.midpoint.schema.util.ObjectResolver; import com.evolveum.midpoint.security.api.SecurityEnforcer; -import com.evolveum.midpoint.task.api.Task; import com.evolveum.midpoint.util.logging.Trace; import com.evolveum.midpoint.util.logging.TraceManager; import com.evolveum.midpoint.xml.ns._public.common.common_3.SearchObjectRefExpressionEvaluatorType; diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/ReferenceSearchExpressionEvaluatorFactory.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/ReferenceSearchExpressionEvaluatorFactory.java index cffcfe51d61..b9832ea2ffc 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/ReferenceSearchExpressionEvaluatorFactory.java +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/ReferenceSearchExpressionEvaluatorFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014-2015 Evolveum + * Copyright (c) 2014-2017 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,13 +21,13 @@ import javax.xml.namespace.QName; import com.evolveum.midpoint.model.api.ModelService; -import com.evolveum.midpoint.model.common.expression.ExpressionEvaluator; -import com.evolveum.midpoint.model.common.expression.ExpressionEvaluatorFactory; import com.evolveum.midpoint.prism.ItemDefinition; import com.evolveum.midpoint.prism.PrismContext; import com.evolveum.midpoint.prism.PrismReferenceDefinition; import com.evolveum.midpoint.prism.PrismValue; import com.evolveum.midpoint.prism.crypto.Protector; +import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluator; +import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluatorFactory; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.schema.util.ObjectResolver; import com.evolveum.midpoint.security.api.SecurityEnforcer; diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/caching/AbstractSearchExpressionEvaluatorCache.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/caching/AbstractSearchExpressionEvaluatorCache.java index 88218c0184b..50a9701d26b 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/caching/AbstractSearchExpressionEvaluatorCache.java +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/caching/AbstractSearchExpressionEvaluatorCache.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2015 Evolveum + * Copyright (c) 2010-2017 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,11 +16,11 @@ package com.evolveum.midpoint.model.common.expression.evaluator.caching; -import com.evolveum.midpoint.model.common.expression.ExpressionEvaluationContext; import com.evolveum.midpoint.prism.PrismContext; import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.prism.PrismValue; import com.evolveum.midpoint.prism.query.ObjectQuery; +import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluationContext; import com.evolveum.midpoint.util.caching.AbstractCache; import com.evolveum.midpoint.util.logging.Trace; import com.evolveum.midpoint.util.logging.TraceManager; diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/caching/AssociationSearchExpressionEvaluatorCache.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/caching/AssociationSearchExpressionEvaluatorCache.java index eca8c344eba..c7ef7ea111e 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/caching/AssociationSearchExpressionEvaluatorCache.java +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/caching/AssociationSearchExpressionEvaluatorCache.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2015 Evolveum + * Copyright (c) 2010-2017 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,11 +16,11 @@ package com.evolveum.midpoint.model.common.expression.evaluator.caching; -import com.evolveum.midpoint.model.common.expression.ExpressionEvaluationContext; import com.evolveum.midpoint.prism.PrismContainerValue; import com.evolveum.midpoint.prism.PrismContext; import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.prism.query.ObjectQuery; +import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluationContext; import com.evolveum.midpoint.util.logging.LoggingUtils; import com.evolveum.midpoint.util.logging.Trace; import com.evolveum.midpoint.util.logging.TraceManager; diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/caching/AssociationSearchQueryKey.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/caching/AssociationSearchQueryKey.java index 3c9ae02616c..3d6720c83f7 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/caching/AssociationSearchQueryKey.java +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/caching/AssociationSearchQueryKey.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2015 Evolveum + * Copyright (c) 2010-2017 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,9 +16,9 @@ package com.evolveum.midpoint.model.common.expression.evaluator.caching; -import com.evolveum.midpoint.model.common.expression.ExpressionEvaluationContext; import com.evolveum.midpoint.prism.PrismContext; import com.evolveum.midpoint.prism.query.ObjectQuery; +import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluationContext; import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectSearchStrategyType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/functions/FunctionLibraryUtil.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/functions/FunctionLibraryUtil.java new file mode 100644 index 00000000000..244c0f132b6 --- /dev/null +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/functions/FunctionLibraryUtil.java @@ -0,0 +1,48 @@ +/** + * Copyright (c) 2010-2017 Evolveum + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.evolveum.midpoint.model.common.expression.functions; + +import com.evolveum.midpoint.prism.PrismContext; +import com.evolveum.midpoint.prism.crypto.Protector; +import com.evolveum.midpoint.schema.constants.MidPointConstants; + +/** + * @author semancik + * + */ +public class FunctionLibraryUtil { + + public static FunctionLibrary createBasicFunctionLibrary(PrismContext prismContext, Protector protector) { + FunctionLibrary lib = new FunctionLibrary(); + lib.setVariableName(MidPointConstants.FUNCTION_LIBRARY_BASIC_VARIABLE_NAME); + lib.setNamespace(MidPointConstants.NS_FUNC_BASIC); + BasicExpressionFunctions func = new BasicExpressionFunctions(prismContext, protector); + lib.setGenericFunctions(func); + BasicExpressionFunctionsXPath funcXPath = new BasicExpressionFunctionsXPath(func); + lib.setXmlFunctions(funcXPath); + return lib; + } + + public static FunctionLibrary createLogFunctionLibrary(PrismContext prismContext) { + FunctionLibrary lib = new FunctionLibrary(); + lib.setVariableName(MidPointConstants.FUNCTION_LIBRARY_LOG_VARIABLE_NAME); + lib.setNamespace(MidPointConstants.NS_FUNC_LOG); + LogExpressionFunctions func = new LogExpressionFunctions(prismContext); + lib.setGenericFunctions(func); + return lib; + } + +} diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/ScriptEvaluator.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/ScriptEvaluator.java index 9e96fbe2858..54688878449 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/ScriptEvaluator.java +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/ScriptEvaluator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2013 Evolveum + * Copyright (c) 2010-2017 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,11 +15,11 @@ */ package com.evolveum.midpoint.model.common.expression.script; -import com.evolveum.midpoint.model.common.expression.ExpressionSyntaxException; -import com.evolveum.midpoint.model.common.expression.ExpressionVariables; import com.evolveum.midpoint.model.common.expression.functions.FunctionLibrary; import com.evolveum.midpoint.prism.ItemDefinition; import com.evolveum.midpoint.prism.PrismValue; +import com.evolveum.midpoint.repo.common.expression.ExpressionSyntaxException; +import com.evolveum.midpoint.repo.common.expression.ExpressionVariables; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.schema.util.ObjectResolver; import com.evolveum.midpoint.task.api.Task; diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/ScriptExpression.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/ScriptExpression.java index 1277ffae3d8..77080e0ad8e 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/ScriptExpression.java +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/ScriptExpression.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2016 Evolveum + * Copyright (c) 2010-2017 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,11 +19,11 @@ import java.util.List; import java.util.function.Function; -import com.evolveum.midpoint.model.common.expression.ExpressionVariables; import com.evolveum.midpoint.model.common.expression.functions.FunctionLibrary; import com.evolveum.midpoint.prism.ItemDefinition; import com.evolveum.midpoint.prism.PrismValue; import com.evolveum.midpoint.prism.path.ItemPath; +import com.evolveum.midpoint.repo.common.expression.ExpressionVariables; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.schema.util.ObjectResolver; import com.evolveum.midpoint.schema.util.SchemaDebugUtil; diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/ScriptExpressionEvaluationContext.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/ScriptExpressionEvaluationContext.java index 8bbfdf26bff..aa876edaa58 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/ScriptExpressionEvaluationContext.java +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/ScriptExpressionEvaluationContext.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2013 Evolveum + * Copyright (c) 2010-2017 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,7 +15,7 @@ */ package com.evolveum.midpoint.model.common.expression.script; -import com.evolveum.midpoint.model.common.expression.ExpressionVariables; +import com.evolveum.midpoint.repo.common.expression.ExpressionVariables; import com.evolveum.midpoint.schema.result.OperationResult; /** diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/ScriptExpressionEvaluator.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/ScriptExpressionEvaluator.java index f81c0283bb3..765bb598d8b 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/ScriptExpressionEvaluator.java +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/ScriptExpressionEvaluator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2015 Evolveum + * Copyright (c) 2010-2017 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,12 +17,12 @@ import java.util.List; -import com.evolveum.midpoint.model.common.expression.ExpressionEvaluationContext; -import com.evolveum.midpoint.model.common.expression.ExpressionVariables; import com.evolveum.midpoint.model.common.expression.evaluator.AbstractValueTransformationExpressionEvaluator; import com.evolveum.midpoint.prism.ItemDefinition; import com.evolveum.midpoint.prism.PrismValue; import com.evolveum.midpoint.prism.delta.PlusMinusZero; +import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluationContext; +import com.evolveum.midpoint.repo.common.expression.ExpressionVariables; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.security.api.SecurityEnforcer; import com.evolveum.midpoint.task.api.Task; diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/ScriptExpressionEvaluatorFactory.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/ScriptExpressionEvaluatorFactory.java index a6e5dcf2822..8e3f887a23c 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/ScriptExpressionEvaluatorFactory.java +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/ScriptExpressionEvaluatorFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2015 Evolveum + * Copyright (c) 2010-2017 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,10 +20,10 @@ import javax.xml.bind.JAXBElement; import javax.xml.namespace.QName; -import com.evolveum.midpoint.model.common.expression.ExpressionEvaluator; -import com.evolveum.midpoint.model.common.expression.ExpressionEvaluatorFactory; import com.evolveum.midpoint.prism.ItemDefinition; import com.evolveum.midpoint.prism.PrismValue; +import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluator; +import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluatorFactory; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.security.api.SecurityEnforcer; import com.evolveum.midpoint.task.api.Task; diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/ScriptExpressionFactory.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/ScriptExpressionFactory.java index c9a8986df2e..bee0e2c4798 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/ScriptExpressionFactory.java +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/ScriptExpressionFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2013 Evolveum + * Copyright (c) 2010-2017 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,11 +19,11 @@ import java.util.HashMap; import java.util.Map; -import com.evolveum.midpoint.model.common.expression.ExpressionSyntaxException; import com.evolveum.midpoint.model.common.expression.functions.FunctionLibrary; import com.evolveum.midpoint.prism.ItemDefinition; import com.evolveum.midpoint.prism.PrismContext; import com.evolveum.midpoint.prism.crypto.Protector; +import com.evolveum.midpoint.repo.common.expression.ExpressionSyntaxException; import com.evolveum.midpoint.schema.util.ObjectResolver; import com.evolveum.midpoint.xml.ns._public.common.common_3.ScriptExpressionEvaluatorType; diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/ScriptExpressionUtil.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/ScriptExpressionUtil.java new file mode 100644 index 00000000000..cbe3e7233b6 --- /dev/null +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/ScriptExpressionUtil.java @@ -0,0 +1,66 @@ +/** + * Copyright (c) 2010-2017 Evolveum + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.evolveum.midpoint.model.common.expression.script; + +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; + +import javax.xml.namespace.QName; + +import com.evolveum.midpoint.model.common.expression.functions.FunctionLibrary; +import com.evolveum.midpoint.prism.PrismContext; +import com.evolveum.midpoint.repo.common.expression.ExpressionSyntaxException; +import com.evolveum.midpoint.repo.common.expression.ExpressionUtil; +import com.evolveum.midpoint.repo.common.expression.ExpressionVariables; +import com.evolveum.midpoint.schema.result.OperationResult; +import com.evolveum.midpoint.schema.util.ObjectResolver; +import com.evolveum.midpoint.task.api.Task; +import com.evolveum.midpoint.util.exception.ObjectNotFoundException; + +/** + * @author semancik + * + */ +public class ScriptExpressionUtil { + + public static Map prepareScriptVariables(ExpressionVariables variables, ObjectResolver objectResolver, + Collection functions, + String contextDescription, PrismContext prismContext, Task task, OperationResult result) throws ExpressionSyntaxException, ObjectNotFoundException { + Map scriptVariables = new HashMap<>(); + // Functions + if (functions != null) { + for (FunctionLibrary funcLib: functions) { + scriptVariables.put(funcLib.getVariableName(), funcLib.getGenericFunctions()); + } + } + // Variables + if (variables != null) { + for (Entry variableEntry: variables.entrySet()) { + if (variableEntry.getKey() == null) { + // This is the "root" node. We have no use for it in JSR223, just skip it + continue; + } + String variableName = variableEntry.getKey().getLocalPart(); + Object variableValue = ExpressionUtil.convertVariableValue(variableEntry.getValue(), variableName, objectResolver, contextDescription, prismContext, task, result); + scriptVariables.put(variableName, variableValue); + } + } + return scriptVariables; + } + +} diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/jsr223/Jsr223ScriptEvaluator.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/jsr223/Jsr223ScriptEvaluator.java index 2d9831740b5..77a3f7caac5 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/jsr223/Jsr223ScriptEvaluator.java +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/jsr223/Jsr223ScriptEvaluator.java @@ -30,11 +30,9 @@ import javax.script.ScriptException; import javax.xml.namespace.QName; -import com.evolveum.midpoint.model.common.expression.ExpressionSyntaxException; -import com.evolveum.midpoint.model.common.expression.ExpressionUtil; -import com.evolveum.midpoint.model.common.expression.ExpressionVariables; import com.evolveum.midpoint.model.common.expression.functions.FunctionLibrary; import com.evolveum.midpoint.model.common.expression.script.ScriptEvaluator; +import com.evolveum.midpoint.model.common.expression.script.ScriptExpressionUtil; import com.evolveum.midpoint.prism.ItemDefinition; import com.evolveum.midpoint.prism.PrismContext; import com.evolveum.midpoint.prism.PrismProperty; @@ -42,6 +40,9 @@ import com.evolveum.midpoint.prism.PrismValue; import com.evolveum.midpoint.prism.crypto.Protector; import com.evolveum.midpoint.prism.xml.XsdTypeMapper; +import com.evolveum.midpoint.repo.common.expression.ExpressionSyntaxException; +import com.evolveum.midpoint.repo.common.expression.ExpressionUtil; +import com.evolveum.midpoint.repo.common.expression.ExpressionVariables; import com.evolveum.midpoint.schema.constants.MidPointConstants; import com.evolveum.midpoint.schema.internals.InternalMonitor; import com.evolveum.midpoint.schema.result.OperationResult; @@ -212,7 +213,7 @@ private Bindings convertToBindings(ExpressionVariables variables, ObjectResolver Collection functions, String contextDescription, Task task, OperationResult result) throws ExpressionSyntaxException, ObjectNotFoundException { Bindings bindings = scriptEngine.createBindings(); - bindings.putAll(ExpressionUtil.prepareScriptVariables(variables, objectResolver, functions, contextDescription, prismContext, task, result)); + bindings.putAll(ScriptExpressionUtil.prepareScriptVariables(variables, objectResolver, functions, contextDescription, prismContext, task, result)); return bindings; } diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/velocity/VelocityScriptEvaluator.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/velocity/VelocityScriptEvaluator.java index 214701c9daa..efc92ea13ac 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/velocity/VelocityScriptEvaluator.java +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/velocity/VelocityScriptEvaluator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2016 Evolveum + * Copyright (c) 2010-2017 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,16 +15,17 @@ */ package com.evolveum.midpoint.model.common.expression.script.velocity; -import com.evolveum.midpoint.model.common.expression.ExpressionSyntaxException; -import com.evolveum.midpoint.model.common.expression.ExpressionUtil; -import com.evolveum.midpoint.model.common.expression.ExpressionVariables; import com.evolveum.midpoint.model.common.expression.functions.FunctionLibrary; import com.evolveum.midpoint.model.common.expression.script.ScriptEvaluator; +import com.evolveum.midpoint.model.common.expression.script.ScriptExpressionUtil; import com.evolveum.midpoint.prism.ItemDefinition; import com.evolveum.midpoint.prism.PrismContext; import com.evolveum.midpoint.prism.PrismValue; import com.evolveum.midpoint.prism.crypto.Protector; import com.evolveum.midpoint.prism.xml.XsdTypeMapper; +import com.evolveum.midpoint.repo.common.expression.ExpressionSyntaxException; +import com.evolveum.midpoint.repo.common.expression.ExpressionUtil; +import com.evolveum.midpoint.repo.common.expression.ExpressionVariables; import com.evolveum.midpoint.schema.constants.MidPointConstants; import com.evolveum.midpoint.schema.internals.InternalMonitor; import com.evolveum.midpoint.schema.result.OperationResult; @@ -128,7 +129,7 @@ private VelocityContext createVelocityContext(ExpressionVariables variables, Obj Collection functions, String contextDescription, Task task, OperationResult result) throws ExpressionSyntaxException, ObjectNotFoundException { VelocityContext context = new VelocityContext(); - Map scriptVariables = ExpressionUtil.prepareScriptVariables(variables, objectResolver, functions, contextDescription, + Map scriptVariables = ScriptExpressionUtil.prepareScriptVariables(variables, objectResolver, functions, contextDescription, prismContext, task, result); for (Map.Entry scriptVariable : scriptVariables.entrySet()) { context.put(scriptVariable.getKey(), scriptVariable.getValue()); diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/xpath/LazyXPathVariableResolver.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/xpath/LazyXPathVariableResolver.java index 684352c763f..e3f6c3c2229 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/xpath/LazyXPathVariableResolver.java +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/xpath/LazyXPathVariableResolver.java @@ -27,8 +27,6 @@ import org.w3c.dom.Node; import org.w3c.dom.NodeList; -import com.evolveum.midpoint.model.common.expression.ExpressionSyntaxException; -import com.evolveum.midpoint.model.common.expression.ExpressionVariables; import com.evolveum.midpoint.prism.ItemDefinition; import com.evolveum.midpoint.prism.Itemable; import com.evolveum.midpoint.prism.Objectable; @@ -38,6 +36,8 @@ import com.evolveum.midpoint.prism.PrismPropertyValue; import com.evolveum.midpoint.prism.PrismValue; import com.evolveum.midpoint.prism.path.ItemPath; +import com.evolveum.midpoint.repo.common.expression.ExpressionSyntaxException; +import com.evolveum.midpoint.repo.common.expression.ExpressionVariables; import com.evolveum.midpoint.schema.constants.SchemaConstants; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.schema.util.ObjectResolver; diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/xpath/XPathScriptEvaluator.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/xpath/XPathScriptEvaluator.java index fc5e4bc25c4..5a9197e4ece 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/xpath/XPathScriptEvaluator.java +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/script/xpath/XPathScriptEvaluator.java @@ -15,8 +15,6 @@ */ package com.evolveum.midpoint.model.common.expression.script.xpath; -import com.evolveum.midpoint.model.common.expression.ExpressionSyntaxException; -import com.evolveum.midpoint.model.common.expression.ExpressionVariables; import com.evolveum.midpoint.model.common.expression.functions.FunctionLibrary; import com.evolveum.midpoint.model.common.expression.script.ScriptEvaluator; import com.evolveum.midpoint.prism.ItemDefinition; @@ -28,6 +26,8 @@ import com.evolveum.midpoint.prism.util.PrismUtil; import com.evolveum.midpoint.prism.xml.XmlTypeConverter; import com.evolveum.midpoint.prism.xml.XsdTypeMapper; +import com.evolveum.midpoint.repo.common.expression.ExpressionSyntaxException; +import com.evolveum.midpoint.repo.common.expression.ExpressionVariables; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.schema.util.ExceptionUtil; import com.evolveum.midpoint.schema.util.ObjectResolver; diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/mapping/Mapping.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/mapping/Mapping.java index 1e9051088f7..74a9e8c6759 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/mapping/Mapping.java +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/mapping/Mapping.java @@ -39,19 +39,19 @@ import com.evolveum.midpoint.common.filter.Filter; import com.evolveum.midpoint.common.filter.FilterManager; import com.evolveum.midpoint.common.refinery.RefinedObjectClassDefinition; -import com.evolveum.midpoint.model.common.expression.Expression; -import com.evolveum.midpoint.model.common.expression.ExpressionEvaluationContext; -import com.evolveum.midpoint.model.common.expression.ExpressionFactory; -import com.evolveum.midpoint.model.common.expression.ExpressionUtil; -import com.evolveum.midpoint.model.common.expression.ExpressionVariables; -import com.evolveum.midpoint.model.common.expression.ItemDeltaItem; -import com.evolveum.midpoint.model.common.expression.ObjectDeltaObject; -import com.evolveum.midpoint.model.common.expression.Source; -import com.evolveum.midpoint.model.common.expression.StringPolicyResolver; -import com.evolveum.midpoint.model.common.expression.ValueSetDefinition; import com.evolveum.midpoint.prism.delta.PrismValueDeltaSetTriple; import com.evolveum.midpoint.prism.delta.ItemDelta; import com.evolveum.midpoint.prism.path.ItemPath; +import com.evolveum.midpoint.repo.common.expression.Expression; +import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluationContext; +import com.evolveum.midpoint.repo.common.expression.ExpressionFactory; +import com.evolveum.midpoint.repo.common.expression.ExpressionUtil; +import com.evolveum.midpoint.repo.common.expression.ExpressionVariables; +import com.evolveum.midpoint.repo.common.expression.ItemDeltaItem; +import com.evolveum.midpoint.repo.common.expression.ObjectDeltaObject; +import com.evolveum.midpoint.repo.common.expression.Source; +import com.evolveum.midpoint.repo.common.expression.StringPolicyResolver; +import com.evolveum.midpoint.repo.common.expression.ValueSetDefinition; import com.evolveum.midpoint.schema.internals.InternalsConfig; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.schema.util.SchemaDebugUtil; diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/mapping/MappingFactory.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/mapping/MappingFactory.java index 6227b432bd9..a3daca890d4 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/mapping/MappingFactory.java +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/mapping/MappingFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2015 Evolveum + * Copyright (c) 2010-2017 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,12 +17,12 @@ import com.evolveum.midpoint.common.filter.Filter; import com.evolveum.midpoint.common.filter.FilterManager; -import com.evolveum.midpoint.model.common.expression.ExpressionFactory; -import com.evolveum.midpoint.model.common.expression.ExpressionVariables; import com.evolveum.midpoint.prism.ItemDefinition; import com.evolveum.midpoint.prism.PrismContext; import com.evolveum.midpoint.prism.PrismValue; import com.evolveum.midpoint.prism.crypto.Protector; +import com.evolveum.midpoint.repo.common.expression.ExpressionFactory; +import com.evolveum.midpoint.repo.common.expression.ExpressionVariables; import com.evolveum.midpoint.schema.util.ObjectResolver; import com.evolveum.midpoint.security.api.SecurityEnforcer; import com.evolveum.midpoint.xml.ns._public.common.common_3.MappingType; diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/stringpolicy/ValuePolicyProcessor.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/stringpolicy/ValuePolicyProcessor.java index eb293915750..1c43a910637 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/stringpolicy/ValuePolicyProcessor.java +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/stringpolicy/ValuePolicyProcessor.java @@ -44,13 +44,13 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import com.evolveum.midpoint.model.common.expression.ExpressionFactory; -import com.evolveum.midpoint.model.common.expression.ExpressionUtil; -import com.evolveum.midpoint.model.common.expression.ExpressionVariables; import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.prism.PrismPropertyValue; import com.evolveum.midpoint.prism.path.ItemPath; import com.evolveum.midpoint.prism.xml.XsdTypeMapper; +import com.evolveum.midpoint.repo.common.expression.ExpressionFactory; +import com.evolveum.midpoint.repo.common.expression.ExpressionUtil; +import com.evolveum.midpoint.repo.common.expression.ExpressionVariables; import com.evolveum.midpoint.schema.constants.ExpressionConstants; import com.evolveum.midpoint.schema.constants.SchemaConstants; import com.evolveum.midpoint.schema.result.OperationResult; diff --git a/model/model-common/src/test/java/com/evolveum/midpoint/model/common/expression/ExpressionTestUtil.java b/model/model-common/src/test/java/com/evolveum/midpoint/model/common/expression/ExpressionTestUtil.java index 1091e1d3e71..d28c2dc1155 100644 --- a/model/model-common/src/test/java/com/evolveum/midpoint/model/common/expression/ExpressionTestUtil.java +++ b/model/model-common/src/test/java/com/evolveum/midpoint/model/common/expression/ExpressionTestUtil.java @@ -18,13 +18,13 @@ import java.util.ArrayList; import java.util.Collection; -import com.evolveum.midpoint.model.common.expression.ExpressionFactory; -import com.evolveum.midpoint.model.common.expression.ExpressionUtil; -import com.evolveum.midpoint.model.common.expression.evaluator.AsIsExpressionEvaluatorFactory; +import com.evolveum.midpoint.repo.common.expression.ExpressionFactory; +import com.evolveum.midpoint.repo.common.expression.evaluator.AsIsExpressionEvaluatorFactory; +import com.evolveum.midpoint.repo.common.expression.evaluator.LiteralExpressionEvaluatorFactory; import com.evolveum.midpoint.model.common.expression.evaluator.GenerateExpressionEvaluatorFactory; -import com.evolveum.midpoint.model.common.expression.evaluator.LiteralExpressionEvaluatorFactory; import com.evolveum.midpoint.model.common.expression.evaluator.PathExpressionEvaluatorFactory; import com.evolveum.midpoint.model.common.expression.functions.FunctionLibrary; +import com.evolveum.midpoint.model.common.expression.functions.FunctionLibraryUtil; import com.evolveum.midpoint.model.common.expression.script.ScriptExpressionEvaluatorFactory; import com.evolveum.midpoint.model.common.expression.script.ScriptExpressionFactory; import com.evolveum.midpoint.model.common.expression.script.jsr223.Jsr223ScriptEvaluator; @@ -76,8 +76,8 @@ public static ExpressionFactory createInitializedExpressionFactory(ObjectResolve // script Collection functions = new ArrayList(); - functions.add(ExpressionUtil.createBasicFunctionLibrary(prismContext, protector)); - functions.add(ExpressionUtil.createLogFunctionLibrary(prismContext)); + functions.add(FunctionLibraryUtil.createBasicFunctionLibrary(prismContext, protector)); + functions.add(FunctionLibraryUtil.createLogFunctionLibrary(prismContext)); ScriptExpressionFactory scriptExpressionFactory = new ScriptExpressionFactory(resolver, prismContext, protector); scriptExpressionFactory.setFunctions(functions); XPathScriptEvaluator xpathEvaluator = new XPathScriptEvaluator(prismContext); diff --git a/model/model-common/src/test/java/com/evolveum/midpoint/model/common/expression/TestExpression.java b/model/model-common/src/test/java/com/evolveum/midpoint/model/common/expression/TestExpression.java index 37558b35b8a..bbc88464986 100644 --- a/model/model-common/src/test/java/com/evolveum/midpoint/model/common/expression/TestExpression.java +++ b/model/model-common/src/test/java/com/evolveum/midpoint/model/common/expression/TestExpression.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2016 Evolveum + * Copyright (c) 2013-2017 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,6 +21,10 @@ import java.io.File; import java.io.IOException; +import com.evolveum.midpoint.repo.common.expression.Expression; +import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluationContext; +import com.evolveum.midpoint.repo.common.expression.ExpressionFactory; +import com.evolveum.midpoint.repo.common.expression.ExpressionVariables; import com.evolveum.midpoint.prism.*; import org.testng.annotations.BeforeSuite; import org.testng.annotations.Test; diff --git a/model/model-common/src/test/java/com/evolveum/midpoint/model/common/expression/TestExpressionUtil.java b/model/model-common/src/test/java/com/evolveum/midpoint/model/common/expression/TestExpressionUtil.java index f1fbdf70248..8a632dda4a1 100644 --- a/model/model-common/src/test/java/com/evolveum/midpoint/model/common/expression/TestExpressionUtil.java +++ b/model/model-common/src/test/java/com/evolveum/midpoint/model/common/expression/TestExpressionUtil.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2015 Evolveum + * Copyright (c) 2010-2017 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,6 +30,10 @@ import org.w3c.dom.Element; import org.xml.sax.SAXException; +import com.evolveum.midpoint.repo.common.expression.ExpressionUtil; +import com.evolveum.midpoint.repo.common.expression.ExpressionVariables; +import com.evolveum.midpoint.repo.common.expression.ItemDeltaItem; +import com.evolveum.midpoint.repo.common.expression.ObjectDeltaObject; import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.prism.PrismProperty; import com.evolveum.midpoint.prism.PrismPropertyDefinition; diff --git a/model/model-common/src/test/java/com/evolveum/midpoint/model/common/expression/script/AbstractScriptTest.java b/model/model-common/src/test/java/com/evolveum/midpoint/model/common/expression/script/AbstractScriptTest.java index 2680c88ecf0..6228e1b3109 100644 --- a/model/model-common/src/test/java/com/evolveum/midpoint/model/common/expression/script/AbstractScriptTest.java +++ b/model/model-common/src/test/java/com/evolveum/midpoint/model/common/expression/script/AbstractScriptTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2016 Evolveum + * Copyright (c) 2010-2017 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,13 +17,12 @@ import static org.testng.AssertJUnit.assertNotNull; -import com.evolveum.midpoint.model.common.expression.ExpressionUtil; -import com.evolveum.midpoint.model.common.expression.ExpressionVariables; +import com.evolveum.midpoint.repo.common.expression.ExpressionVariables; import com.evolveum.midpoint.model.common.expression.functions.FunctionLibrary; +import com.evolveum.midpoint.model.common.expression.functions.FunctionLibraryUtil; import com.evolveum.midpoint.prism.*; import com.evolveum.midpoint.prism.ItemDefinition; import com.evolveum.midpoint.prism.PrismContext; -import com.evolveum.midpoint.prism.PrismPropertyDefinition; import com.evolveum.midpoint.prism.PrismPropertyValue; import com.evolveum.midpoint.prism.crypto.ProtectorImpl; import com.evolveum.midpoint.prism.crypto.Protector; @@ -92,7 +91,7 @@ public void setupFactory() { ObjectResolver resolver = new DirectoryFileObjectResolver(OBJECTS_DIR); Protector protector = new ProtectorImpl(); Collection functions = new ArrayList(); - functions.add(ExpressionUtil.createBasicFunctionLibrary(prismContext, protector)); + functions.add(FunctionLibraryUtil.createBasicFunctionLibrary(prismContext, protector)); scriptExpressionfactory = new ScriptExpressionFactory(resolver, prismContext, protector); scriptExpressionfactory.setFunctions(functions); evaluator = createEvaluator(prismContext, protector); diff --git a/model/model-common/src/test/java/com/evolveum/midpoint/model/common/expression/script/TestGroovyExpressions.java b/model/model-common/src/test/java/com/evolveum/midpoint/model/common/expression/script/TestGroovyExpressions.java index 017f8056494..b0da6e77a9b 100644 --- a/model/model-common/src/test/java/com/evolveum/midpoint/model/common/expression/script/TestGroovyExpressions.java +++ b/model/model-common/src/test/java/com/evolveum/midpoint/model/common/expression/script/TestGroovyExpressions.java @@ -15,7 +15,7 @@ */ package com.evolveum.midpoint.model.common.expression.script; -import com.evolveum.midpoint.model.common.expression.ExpressionVariables; +import com.evolveum.midpoint.repo.common.expression.ExpressionVariables; import com.evolveum.midpoint.model.common.expression.script.ScriptEvaluator; import com.evolveum.midpoint.model.common.expression.script.jsr223.Jsr223ScriptEvaluator; import com.evolveum.midpoint.prism.PrismContext; diff --git a/model/model-common/src/test/java/com/evolveum/midpoint/model/common/expression/script/TestScriptCaching.java b/model/model-common/src/test/java/com/evolveum/midpoint/model/common/expression/script/TestScriptCaching.java index 2461d3c9dd3..247d6baaba2 100644 --- a/model/model-common/src/test/java/com/evolveum/midpoint/model/common/expression/script/TestScriptCaching.java +++ b/model/model-common/src/test/java/com/evolveum/midpoint/model/common/expression/script/TestScriptCaching.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2013 Evolveum + * Copyright (c) 2010-2017 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,9 +15,9 @@ */ package com.evolveum.midpoint.model.common.expression.script; -import com.evolveum.midpoint.model.common.expression.ExpressionUtil; -import com.evolveum.midpoint.model.common.expression.ExpressionVariables; +import com.evolveum.midpoint.repo.common.expression.ExpressionVariables; import com.evolveum.midpoint.model.common.expression.functions.FunctionLibrary; +import com.evolveum.midpoint.model.common.expression.functions.FunctionLibraryUtil; import com.evolveum.midpoint.model.common.expression.script.jsr223.Jsr223ScriptEvaluator; import com.evolveum.midpoint.prism.*; import com.evolveum.midpoint.prism.crypto.ProtectorImpl; @@ -81,7 +81,7 @@ public void setupFactory() { ObjectResolver resolver = new DirectoryFileObjectResolver(OBJECTS_DIR); Protector protector = new ProtectorImpl(); Collection functions = new ArrayList(); - functions.add(ExpressionUtil.createBasicFunctionLibrary(prismContext, protector)); + functions.add(FunctionLibraryUtil.createBasicFunctionLibrary(prismContext, protector)); scriptExpressionfactory = new ScriptExpressionFactory(resolver, prismContext, protector); scriptExpressionfactory.setFunctions(functions); evaluator = new Jsr223ScriptEvaluator("groovy", prismContext, protector); diff --git a/model/model-common/src/test/java/com/evolveum/midpoint/model/common/expression/script/TestVelocityExpressions.java b/model/model-common/src/test/java/com/evolveum/midpoint/model/common/expression/script/TestVelocityExpressions.java index 54e640056ce..b6dae54a7a4 100644 --- a/model/model-common/src/test/java/com/evolveum/midpoint/model/common/expression/script/TestVelocityExpressions.java +++ b/model/model-common/src/test/java/com/evolveum/midpoint/model/common/expression/script/TestVelocityExpressions.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2016 Evolveum + * Copyright (c) 2010-2017 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,7 +15,7 @@ */ package com.evolveum.midpoint.model.common.expression.script; -import com.evolveum.midpoint.model.common.expression.ExpressionVariables; +import com.evolveum.midpoint.repo.common.expression.ExpressionVariables; import com.evolveum.midpoint.model.common.expression.script.velocity.VelocityScriptEvaluator; import com.evolveum.midpoint.prism.PrismContext; import com.evolveum.midpoint.prism.crypto.Protector; diff --git a/model/model-common/src/test/java/com/evolveum/midpoint/model/common/mapping/MappingTestEvaluator.java b/model/model-common/src/test/java/com/evolveum/midpoint/model/common/mapping/MappingTestEvaluator.java index 0fe06eb1bab..a39e9b8164f 100644 --- a/model/model-common/src/test/java/com/evolveum/midpoint/model/common/mapping/MappingTestEvaluator.java +++ b/model/model-common/src/test/java/com/evolveum/midpoint/model/common/mapping/MappingTestEvaluator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2016 Evolveum + * Copyright (c) 2010-2017 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,11 +28,11 @@ import org.xml.sax.SAXException; -import com.evolveum.midpoint.model.common.expression.ExpressionFactory; +import com.evolveum.midpoint.repo.common.expression.ExpressionFactory; +import com.evolveum.midpoint.repo.common.expression.ObjectDeltaObject; +import com.evolveum.midpoint.repo.common.expression.Source; +import com.evolveum.midpoint.repo.common.expression.StringPolicyResolver; import com.evolveum.midpoint.model.common.expression.ExpressionTestUtil; -import com.evolveum.midpoint.model.common.expression.ObjectDeltaObject; -import com.evolveum.midpoint.model.common.expression.Source; -import com.evolveum.midpoint.model.common.expression.StringPolicyResolver; import com.evolveum.midpoint.prism.ItemDefinition; import com.evolveum.midpoint.prism.OriginType; import com.evolveum.midpoint.prism.PrismContext; diff --git a/model/model-impl/pom.xml b/model/model-impl/pom.xml index 2d24ecf007b..8e3f7050ffb 100644 --- a/model/model-impl/pom.xml +++ b/model/model-impl/pom.xml @@ -1,6 +1,6 @@ - com.evolveum.midpoint.model - model-common + com.evolveum.midpoint.repo + repo-common 3.6-SNAPSHOT diff --git a/provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ResourceManager.java b/provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ResourceManager.java index de3aa5fb015..ffee9dea2aa 100644 --- a/provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ResourceManager.java +++ b/provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ResourceManager.java @@ -26,10 +26,6 @@ import javax.xml.namespace.QName; import com.evolveum.midpoint.common.refinery.RefinedResourceSchemaImpl; -import com.evolveum.midpoint.model.common.expression.Expression; -import com.evolveum.midpoint.model.common.expression.ExpressionEvaluationContext; -import com.evolveum.midpoint.model.common.expression.ExpressionFactory; -import com.evolveum.midpoint.model.common.expression.ExpressionVariables; import com.evolveum.midpoint.prism.*; import com.evolveum.midpoint.prism.schema.PrismSchemaImpl; import com.evolveum.midpoint.schema.processor.*; @@ -59,6 +55,10 @@ import com.evolveum.midpoint.provisioning.ucf.api.GenericFrameworkException; import com.evolveum.midpoint.provisioning.util.ProvisioningUtil; import com.evolveum.midpoint.repo.api.RepositoryService; +import com.evolveum.midpoint.repo.common.expression.Expression; +import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluationContext; +import com.evolveum.midpoint.repo.common.expression.ExpressionFactory; +import com.evolveum.midpoint.repo.common.expression.ExpressionVariables; import com.evolveum.midpoint.schema.CapabilityUtil; import com.evolveum.midpoint.schema.GetOperationOptions; import com.evolveum.midpoint.schema.SelectorOptions; diff --git a/provisioning/provisioning-impl/src/test/resources/ctx-provisioning-test-main.xml b/provisioning/provisioning-impl/src/test/resources/ctx-provisioning-test-main.xml index 0b9083c6671..5c26be365b5 100644 --- a/provisioning/provisioning-impl/src/test/resources/ctx-provisioning-test-main.xml +++ b/provisioning/provisioning-impl/src/test/resources/ctx-provisioning-test-main.xml @@ -45,5 +45,6 @@ + diff --git a/repo/pom.xml b/repo/pom.xml index 7a45d39ac2b..326425c1c6b 100644 --- a/repo/pom.xml +++ b/repo/pom.xml @@ -1,6 +1,6 @@ + + + 4.0.0 + midPoint Repo Commons + com.evolveum.midpoint.repo + repo-common + jar + + repo + com.evolveum.midpoint + 3.6-SNAPSHOT + + + Evolveum + http://www.evolveum.com + + + + Apache License v2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + Atlassian JIRA + http://jira.evolveum.com/ + + + https://github.com/Evolveum/midpoint.git + git@github.com:Evolveum/midpoint.git + https://fisheye.evolveum.com/browse/midPoint + + + + com.evolveum.midpoint.infra + util + 3.6-SNAPSHOT + + + com.evolveum.midpoint.infra + prism + 3.6-SNAPSHOT + + + com.evolveum.midpoint.infra + schema + 3.6-SNAPSHOT + + + com.evolveum.midpoint.infra + common + 3.6-SNAPSHOT + + + com.evolveum.midpoint.repo + task-api + 3.6-SNAPSHOT + + + com.evolveum.midpoint.repo + security-api + 3.6-SNAPSHOT + + + org.jetbrains + annotations-java5 + + + commons-lang + commons-lang + + + org.springframework + spring-context + + + org.springframework + spring-beans + + + javax.xml.bind + jaxb-api + + + + + org.testng + testng + test + + + com.evolveum.midpoint.infra + test-util + 3.6-SNAPSHOT + test + + + com.evolveum.midpoint.repo + repo-test-util + 3.6-SNAPSHOT + test + + + com.evolveum.midpoint.tools + test-ng + 3.6-SNAPSHOT + test + + + com.evolveum.midpoint.repo + repo-test-util + 3.6-SNAPSHOT + test + + + diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/Expression.java b/repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/expression/Expression.java similarity index 99% rename from model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/Expression.java rename to repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/expression/Expression.java index aa104964a9f..0a697c40aab 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/Expression.java +++ b/repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/expression/Expression.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.evolveum.midpoint.model.common.expression; +package com.evolveum.midpoint.repo.common.expression; import java.util.ArrayList; import java.util.Collection; diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/ExpressionEvaluationContext.java b/repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/expression/ExpressionEvaluationContext.java similarity index 98% rename from model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/ExpressionEvaluationContext.java rename to repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/expression/ExpressionEvaluationContext.java index 993f1a93108..afba93d3e3a 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/ExpressionEvaluationContext.java +++ b/repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/expression/ExpressionEvaluationContext.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.evolveum.midpoint.model.common.expression; +package com.evolveum.midpoint.repo.common.expression; import java.util.Collection; import java.util.function.Function; diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/ExpressionEvaluator.java b/repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/expression/ExpressionEvaluator.java similarity index 95% rename from model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/ExpressionEvaluator.java rename to repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/expression/ExpressionEvaluator.java index 60b5e84fe97..fff90b145b5 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/ExpressionEvaluator.java +++ b/repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/expression/ExpressionEvaluator.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.evolveum.midpoint.model.common.expression; +package com.evolveum.midpoint.repo.common.expression; import com.evolveum.midpoint.prism.ItemDefinition; import com.evolveum.midpoint.prism.PrismValue; diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/ExpressionEvaluatorFactory.java b/repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/expression/ExpressionEvaluatorFactory.java similarity index 96% rename from model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/ExpressionEvaluatorFactory.java rename to repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/expression/ExpressionEvaluatorFactory.java index 09af4455d8c..9a0bd453690 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/ExpressionEvaluatorFactory.java +++ b/repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/expression/ExpressionEvaluatorFactory.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.evolveum.midpoint.model.common.expression; +package com.evolveum.midpoint.repo.common.expression; import java.util.Collection; diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/ExpressionFactory.java b/repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/expression/ExpressionFactory.java similarity index 99% rename from model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/ExpressionFactory.java rename to repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/expression/ExpressionFactory.java index 9180afb9617..1054304fbaf 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/ExpressionFactory.java +++ b/repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/expression/ExpressionFactory.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.evolveum.midpoint.model.common.expression; +package com.evolveum.midpoint.repo.common.expression; import java.util.Collection; import java.util.HashMap; diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/ExpressionSyntaxException.java b/repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/expression/ExpressionSyntaxException.java similarity index 95% rename from model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/ExpressionSyntaxException.java rename to repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/expression/ExpressionSyntaxException.java index ed5134fd694..30531f5dcdb 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/ExpressionSyntaxException.java +++ b/repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/expression/ExpressionSyntaxException.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.evolveum.midpoint.model.common.expression; +package com.evolveum.midpoint.repo.common.expression; import javax.xml.namespace.QName; diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/ExpressionUtil.java b/repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/expression/ExpressionUtil.java similarity index 93% rename from model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/ExpressionUtil.java rename to repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/expression/ExpressionUtil.java index 462d620dc55..4d1cff1ff1f 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/ExpressionUtil.java +++ b/repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/expression/ExpressionUtil.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.evolveum.midpoint.model.common.expression; +package com.evolveum.midpoint.repo.common.expression; import java.util.Collection; import java.util.HashMap; @@ -24,10 +24,6 @@ import javax.xml.namespace.QName; -import com.evolveum.midpoint.model.common.expression.functions.BasicExpressionFunctions; -import com.evolveum.midpoint.model.common.expression.functions.BasicExpressionFunctionsXPath; -import com.evolveum.midpoint.model.common.expression.functions.FunctionLibrary; -import com.evolveum.midpoint.model.common.expression.functions.LogExpressionFunctions; import com.evolveum.midpoint.prism.*; import com.evolveum.midpoint.prism.Visitor; import com.evolveum.midpoint.prism.crypto.EncryptionException; @@ -297,32 +293,6 @@ public static Object convertVariableValue(Object originalValue, String variableN return originalValue; } - public static Map prepareScriptVariables(ExpressionVariables variables, ObjectResolver objectResolver, - Collection functions, - String contextDescription, PrismContext prismContext, Task task, OperationResult result) throws ExpressionSyntaxException, ObjectNotFoundException { - Map scriptVariables = new HashMap<>(); - // Functions - if (functions != null) { - for (FunctionLibrary funcLib: functions) { - scriptVariables.put(funcLib.getVariableName(), funcLib.getGenericFunctions()); - } - } - // Variables - if (variables != null) { - for (Entry variableEntry: variables.entrySet()) { - if (variableEntry.getKey() == null) { - // This is the "root" node. We have no use for it in JSR223, just skip it - continue; - } - String variableName = variableEntry.getKey().getLocalPart(); - Object variableValue = ExpressionUtil.convertVariableValue(variableEntry.getValue(), variableName, objectResolver, contextDescription, prismContext, task, result); - scriptVariables.put(variableName, variableValue); - } - } - return scriptVariables; - } - - private static PrismObject resolveReference(ObjectReferenceType ref, ObjectResolver objectResolver, String varDesc, String contextDescription, Task task, OperationResult result) throws SchemaException, ObjectNotFoundException { @@ -427,26 +397,6 @@ public static ItemDeltaItem + + + + diff --git a/repo/repo-common/testng-unit.xml b/repo/repo-common/testng-unit.xml new file mode 100644 index 00000000000..aca21da9f81 --- /dev/null +++ b/repo/repo-common/testng-unit.xml @@ -0,0 +1,20 @@ + + + + + + diff --git a/repo/repo-test-util/src/main/java/com/evolveum/midpoint/test/RepoObjectResolver.java b/repo/repo-test-util/src/main/java/com/evolveum/midpoint/test/RepoObjectResolver.java new file mode 100644 index 00000000000..ad477280254 --- /dev/null +++ b/repo/repo-test-util/src/main/java/com/evolveum/midpoint/test/RepoObjectResolver.java @@ -0,0 +1,92 @@ +/** + * Copyright (c) 2017 Evolveum + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.evolveum.midpoint.test; + +import java.util.Collection; + +import javax.xml.namespace.QName; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; + +import com.evolveum.midpoint.prism.PrismContext; +import com.evolveum.midpoint.prism.query.ObjectQuery; +import com.evolveum.midpoint.repo.api.RepositoryService; +import com.evolveum.midpoint.schema.GetOperationOptions; +import com.evolveum.midpoint.schema.ResultHandler; +import com.evolveum.midpoint.schema.SelectorOptions; +import com.evolveum.midpoint.schema.result.OperationResult; +import com.evolveum.midpoint.schema.util.ObjectResolver; +import com.evolveum.midpoint.util.exception.CommonException; +import com.evolveum.midpoint.util.exception.CommunicationException; +import com.evolveum.midpoint.util.exception.ConfigurationException; +import com.evolveum.midpoint.util.exception.ExpressionEvaluationException; +import com.evolveum.midpoint.util.exception.ObjectNotFoundException; +import com.evolveum.midpoint.util.exception.SchemaException; +import com.evolveum.midpoint.util.exception.SecurityViolationException; +import com.evolveum.midpoint.util.exception.SystemException; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; + +/** + * @author semancik + * + */ +public class RepoObjectResolver implements ObjectResolver { + + @Autowired(required = true) + private transient PrismContext prismContext; + + @Autowired(required = true) + @Qualifier("cacheRepositoryService") + private transient RepositoryService cacheRepositoryService; + + @Override + public O resolve(ObjectReferenceType ref, Class expectedType, + Collection> options, String contextDescription, Object task, + OperationResult result) throws ObjectNotFoundException, SchemaException { + String oid = ref.getOid(); + Class typeClass = null; + QName typeQName = ref.getType(); + if (typeQName != null) { + typeClass = prismContext.getSchemaRegistry().determineCompileTimeClass(typeQName); + } + if (typeClass != null && expectedType.isAssignableFrom(typeClass)) { + expectedType = (Class) typeClass; + } + try { + return cacheRepositoryService.getObject(expectedType, oid, options, result).asObjectable(); + } catch (SystemException ex) { + throw ex; + } catch (ObjectNotFoundException ex) { + throw ex; + } catch (CommonException ex) { + throw new SystemException("Error resolving object with oid '" + oid + "': "+ex.getMessage(), ex); + } + } + + @Override + public void searchIterative(Class type, ObjectQuery query, + Collection> options, ResultHandler handler, Object task, + OperationResult parentResult) + throws SchemaException, ObjectNotFoundException, CommunicationException, ConfigurationException, + SecurityViolationException, ExpressionEvaluationException { + + cacheRepositoryService.searchObjectsIterative(type, query, handler, options, false, parentResult); + + } + +} diff --git a/repo/repo-test-util/src/main/resources/ctx-expression-test.xml b/repo/repo-test-util/src/main/resources/ctx-expression-test.xml new file mode 100644 index 00000000000..0c1ec3bd1ea --- /dev/null +++ b/repo/repo-test-util/src/main/resources/ctx-expression-test.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestUuid.java b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestUuid.java index 38bd3eee421..b95a109957d 100644 --- a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestUuid.java +++ b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestUuid.java @@ -51,12 +51,12 @@ import com.evolveum.icf.dummy.resource.DummyObjectClass; import com.evolveum.icf.dummy.resource.DummyResource; import com.evolveum.icf.dummy.resource.DummySyncStyle; +import com.evolveum.midpoint.common.expression.evaluator.LiteralExpressionEvaluatorFactory; import com.evolveum.midpoint.common.refinery.RefinedObjectClassDefinition; import com.evolveum.midpoint.common.refinery.RefinedResourceSchema; import com.evolveum.midpoint.common.refinery.ShadowDiscriminatorObjectDelta; import com.evolveum.midpoint.model.api.ModelExecuteOptions; import com.evolveum.midpoint.model.api.context.ModelContext; -import com.evolveum.midpoint.model.common.expression.evaluator.LiteralExpressionEvaluatorFactory; import com.evolveum.midpoint.model.test.AbstractModelIntegrationTest; import com.evolveum.midpoint.prism.Containerable; import com.evolveum.midpoint.prism.PrismContainer; diff --git a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestVillage.java b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestVillage.java index 3e4ddff9358..c868c3e49fe 100644 --- a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestVillage.java +++ b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestVillage.java @@ -53,12 +53,12 @@ import com.evolveum.icf.dummy.resource.DummyObjectClass; import com.evolveum.icf.dummy.resource.DummyResource; import com.evolveum.icf.dummy.resource.DummySyncStyle; +import com.evolveum.midpoint.common.expression.evaluator.LiteralExpressionEvaluatorFactory; import com.evolveum.midpoint.common.refinery.RefinedObjectClassDefinition; import com.evolveum.midpoint.common.refinery.RefinedResourceSchema; import com.evolveum.midpoint.common.refinery.ShadowDiscriminatorObjectDelta; import com.evolveum.midpoint.model.api.ModelExecuteOptions; import com.evolveum.midpoint.model.api.context.ModelContext; -import com.evolveum.midpoint.model.common.expression.evaluator.LiteralExpressionEvaluatorFactory; import com.evolveum.midpoint.model.test.AbstractModelIntegrationTest; import com.evolveum.midpoint.prism.delta.ChangeType; import com.evolveum.midpoint.prism.delta.ItemDelta;