use of com.evolveum.midpoint.util.exception.ObjectNotFoundException in project midpoint by Evolveum.
the class PrimaryChangeAspectHelper method evaluateApplicabilityCondition.
//endregion
//region ========================================================================== Expression evaluation
public boolean evaluateApplicabilityCondition(PcpAspectConfigurationType config, ModelContext modelContext, Serializable itemToApprove, ExpressionVariables additionalVariables, PrimaryChangeAspect aspect, Task task, OperationResult result) {
if (config == null || config.getApplicabilityCondition() == null) {
return true;
}
ExpressionType expressionType = config.getApplicabilityCondition();
QName resultName = new QName(SchemaConstants.NS_C, "result");
PrismPropertyDefinition<Boolean> resultDef = new PrismPropertyDefinitionImpl(resultName, DOMUtil.XSD_BOOLEAN, prismContext);
ExpressionVariables expressionVariables = new ExpressionVariables();
expressionVariables.addVariableDefinition(SchemaConstants.C_MODEL_CONTEXT, modelContext);
expressionVariables.addVariableDefinition(SchemaConstants.C_ITEM_TO_APPROVE, itemToApprove);
if (additionalVariables != null) {
expressionVariables.addVariableDefinitions(additionalVariables);
}
PrismValueDeltaSetTriple<PrismPropertyValue<Boolean>> exprResultTriple;
try {
Expression<PrismPropertyValue<Boolean>, PrismPropertyDefinition<Boolean>> expression = expressionFactory.makeExpression(expressionType, resultDef, "applicability condition expression", task, result);
ExpressionEvaluationContext params = new ExpressionEvaluationContext(null, expressionVariables, "applicability condition expression", task, result);
exprResultTriple = ModelExpressionThreadLocalHolder.evaluateExpressionInContext(expression, params, task, result);
} catch (SchemaException | ExpressionEvaluationException | ObjectNotFoundException | RuntimeException e) {
// TODO report as a specific exception?
throw new SystemException("Couldn't evaluate applicability condition in aspect " + aspect.getClass().getSimpleName() + ": " + e.getMessage(), e);
}
Collection<PrismPropertyValue<Boolean>> exprResult = exprResultTriple.getZeroSet();
if (exprResult.size() == 0) {
return false;
} else if (exprResult.size() > 1) {
throw new IllegalStateException("Applicability condition expression should return exactly one boolean value; it returned " + exprResult.size() + " ones");
}
Boolean boolResult = exprResult.iterator().next().getValue();
return boolResult != null ? boolResult : false;
}
use of com.evolveum.midpoint.util.exception.ObjectNotFoundException in project midpoint by Evolveum.
the class WfExpressionEvaluationHelper method evaluateExpression.
@SuppressWarnings("unchecked")
@NotNull
public <T> List<T> evaluateExpression(ExpressionType expressionType, ExpressionVariables variables, String contextDescription, Class<T> clazz, QName typeName, Function<Object, Object> additionalConvertor, Task task, OperationResult result) throws ObjectNotFoundException, SchemaException, ExpressionEvaluationException {
ExpressionFactory expressionFactory = getExpressionFactory();
PrismContext prismContext = expressionFactory.getPrismContext();
PrismPropertyDefinition<String> resultDef = new PrismPropertyDefinitionImpl<>(new QName(SchemaConstants.NS_C, "result"), typeName, prismContext);
Expression<PrismPropertyValue<String>, PrismPropertyDefinition<String>> expression = expressionFactory.makeExpression(expressionType, resultDef, contextDescription, task, result);
ExpressionEvaluationContext context = new ExpressionEvaluationContext(null, variables, contextDescription, task, result);
context.setAdditionalConvertor(additionalConvertor);
PrismValueDeltaSetTriple<PrismPropertyValue<String>> exprResultTriple = ModelExpressionThreadLocalHolder.evaluateExpressionInContext(expression, context, task, result);
return exprResultTriple.getZeroSet().stream().map(ppv -> (T) ppv.getRealValue()).collect(Collectors.toList());
}
use of com.evolveum.midpoint.util.exception.ObjectNotFoundException in project midpoint by Evolveum.
the class ApprovalSchemaHelper method prepareStage.
public void prepareStage(ApprovalStageDefinitionType stageDef, RelationResolver relationResolver, ReferenceResolver referenceResolver) {
try {
// resolves filters in approvers
List<ObjectReferenceType> resolvedApprovers = new ArrayList<>();
for (ObjectReferenceType ref : stageDef.getApproverRef()) {
resolvedApprovers.addAll(referenceResolver.resolveReference(ref, "approver ref"));
}
// resolves approver relations
resolvedApprovers.addAll(relationResolver.getApprovers(stageDef.getApproverRelation()));
stageDef.getApproverRef().clear();
stageDef.getApproverRef().addAll(resolvedApprovers);
stageDef.getApproverRelation().clear();
// default values
if (stageDef.getOutcomeIfNoApprovers() == null) {
stageDef.setOutcomeIfNoApprovers(ApprovalLevelOutcomeType.REJECT);
}
if (stageDef.getGroupExpansion() == null) {
stageDef.setGroupExpansion(GroupExpansionType.BY_CLAIMING_WORK_ITEMS);
}
} catch (ExpressionEvaluationException | ObjectNotFoundException | SchemaException e) {
// todo propagate these exceptions?
throw new SystemException("Couldn't prepare approval schema for execution: " + e.getMessage(), e);
}
}
use of com.evolveum.midpoint.util.exception.ObjectNotFoundException in project midpoint by Evolveum.
the class UserProfileServiceMock method getPrincipal.
@Override
public MidPointPrincipal getPrincipal(String username) throws ObjectNotFoundException {
OperationResult result = new OperationResult(OPERATION_GET_PRINCIPAL);
PrismObject<UserType> user = null;
try {
user = findByUsername(username, result);
} catch (ObjectNotFoundException ex) {
LOGGER.trace("Couldn't find user with name '{}', reason: {}.", new Object[] { username, ex.getMessage(), ex });
throw ex;
} catch (Exception ex) {
LOGGER.warn("Error getting user with name '{}', reason: {}.", new Object[] { username, ex.getMessage(), ex });
throw new SystemException(ex.getMessage(), ex);
}
return createPrincipal(user, result);
}
use of com.evolveum.midpoint.util.exception.ObjectNotFoundException in project midpoint by Evolveum.
the class AbstractIntegrationTest method getSystemConfiguration.
protected SystemConfigurationType getSystemConfiguration() throws ObjectNotFoundException, SchemaException {
OperationResult result = new OperationResult(AbstractIntegrationTest.class.getName() + ".getSystemConfiguration");
try {
PrismObject<SystemConfigurationType> sysConf = repositoryService.getObject(SystemConfigurationType.class, SystemObjectsType.SYSTEM_CONFIGURATION.value(), null, result);
result.computeStatus();
TestUtil.assertSuccess("getObject(systemConfig) not success", result);
return sysConf.asObjectable();
} catch (ObjectNotFoundException e) {
// No big deal
return null;
}
}
Aggregations