use of com.evolveum.midpoint.util.exception.CommunicationException in project midpoint by Evolveum.
the class CertHelper method appendStatistics.
public void appendStatistics(StringBuilder sb, AccessCertificationCampaignType campaign, Task task, OperationResult result) {
AccessCertificationCasesStatisticsType stat;
try {
stat = certificationManager.getCampaignStatistics(campaign.getOid(), false, task, result);
} catch (ObjectNotFoundException | SchemaException | SecurityViolationException | ObjectAlreadyExistsException | ExpressionEvaluationException | RuntimeException | CommunicationException | ConfigurationException e) {
LoggingUtils.logUnexpectedException(LOGGER, "Couldn't get campaign statistics", e);
sb.append("Couldn't get campaign statistics because of ").append(e);
return;
}
int all = stat.getMarkedAsAccept() + stat.getMarkedAsRevoke() + stat.getMarkedAsReduce() + stat.getMarkedAsNotDecide() + stat.getWithoutResponse();
sb.append("Number of cases:\t").append(all);
sb.append("\nMarked as ACCEPT:\t").append(stat.getMarkedAsAccept());
sb.append("\nMarked as REVOKE:\t").append(stat.getMarkedAsRevoke()).append(" (remedied: ").append(stat.getMarkedAsRevokeAndRemedied()).append(")");
sb.append("\nMarked as REDUCE:\t").append(stat.getMarkedAsReduce()).append(" (remedied: ").append(stat.getMarkedAsReduceAndRemedied()).append(")");
sb.append("\nMarked as NOT DECIDED:\t").append(stat.getMarkedAsNotDecide());
sb.append("\nNo response:\t\t").append(stat.getWithoutResponse());
}
use of com.evolveum.midpoint.util.exception.CommunicationException in project midpoint by Evolveum.
the class AbstractRequest method executeAndClose.
ServerResponse executeAndClose(String urlPrefix, String urlSuffix, String jsonString) throws CommunicationException, SecurityViolationException {
try {
logRequest(urlPrefix, urlSuffix, jsonString);
HttpRequestBase request = createRequest(urlPrefix, urlSuffix, jsonString);
var response = createHttpClient().execute(request, new ApacheResponseHandler());
logResponse(response);
processCommonExceptions(response);
return response;
} catch (IOException e) {
throw new CommunicationException("Couldn't invoke ID Match service: " + e.getMessage(), e);
} finally {
closeHttpClient();
}
}
use of com.evolveum.midpoint.util.exception.CommunicationException in project midpoint by Evolveum.
the class AssignmentProcessor method evaluateFocusMappings.
private <AH extends AssignmentHolderType> void evaluateFocusMappings(LensContext<AH> context, XMLGregorianCalendar now, LensFocusContext<AH> focusContext, DeltaSetTriple<EvaluatedAssignmentImpl<AH>> evaluatedAssignmentTriple, Task task, OperationResult parentResult) throws SchemaException, ExpressionEvaluationException, PolicyViolationException, ConfigurationException, SecurityViolationException, ObjectNotFoundException, CommunicationException {
OperationResult result = parentResult.subresult(OP_EVALUATE_FOCUS_MAPPINGS).setMinor().build();
try {
LOGGER.trace("Starting evaluation of assignment-held mappings");
ObjectDeltaObject<AH> focusOdoRelative = focusContext.getObjectDeltaObjectRelative();
List<AssignedFocusMappingEvaluationRequest> allRequests = new ArrayList<>();
for (EvaluatedAssignmentImpl<AH> evaluatedAssignment : evaluatedAssignmentTriple.getAllValues()) {
allRequests.addAll(evaluatedAssignment.getFocusMappingEvaluationRequests());
}
FocalMappingSetEvaluation.TripleCustomizer<?, ?> customizer = (triple, abstractRequest) -> {
if (triple == null) {
return null;
}
DeltaSetTriple<ItemValueWithOrigin<PrismValue, ItemDefinition<?>>> rv = prismContext.deltaFactory().createDeltaSetTriple();
AssignedFocusMappingEvaluationRequest request = (AssignedFocusMappingEvaluationRequest) abstractRequest;
// noinspection unchecked
EvaluatedAssignmentImpl<AH> evaluatedAssignment = (EvaluatedAssignmentImpl<AH>) request.getEvaluatedAssignment();
PlusMinusZero relativeMode = request.getRelativeMode();
Set<PlusMinusZero> presence = new HashSet<>();
PlusMinusZero resultingMode = null;
if (evaluatedAssignmentTriple.presentInPlusSet(evaluatedAssignment)) {
resultingMode = PlusMinusZero.compute(PlusMinusZero.PLUS, relativeMode);
presence.add(PlusMinusZero.PLUS);
}
if (evaluatedAssignmentTriple.presentInMinusSet(evaluatedAssignment)) {
resultingMode = PlusMinusZero.compute(PlusMinusZero.MINUS, relativeMode);
presence.add(PlusMinusZero.MINUS);
}
if (evaluatedAssignmentTriple.presentInZeroSet(evaluatedAssignment)) {
resultingMode = PlusMinusZero.compute(PlusMinusZero.ZERO, relativeMode);
presence.add(PlusMinusZero.ZERO);
}
LOGGER.trace("triple customizer: presence = {}, relativeMode = {}, resultingMode = {}", presence, relativeMode, resultingMode);
if (presence.isEmpty()) {
throw new IllegalStateException("Evaluated assignment is not present in any of plus/minus/zero sets " + "of the triple. Assignment = " + evaluatedAssignment + ", triple = " + triple);
} else if (presence.size() > 1) {
// TODO think about this
throw new IllegalStateException("Evaluated assignment is present in more than one plus/minus/zero sets " + "of the triple: " + presence + ". Assignment = " + evaluatedAssignment + ", triple = " + triple);
}
if (resultingMode != null) {
switch(resultingMode) {
case PLUS:
// MID-6403
rv.addAllToPlusSet(triple.getNonNegativeValues());
break;
case MINUS:
// MID-6403
rv.addAllToMinusSet(triple.getNonPositiveValues());
break;
case ZERO:
rv = triple;
break;
}
}
return rv;
};
FocalMappingSetEvaluation.EvaluatedMappingConsumer mappingConsumer = (mapping, abstractRequest) -> {
AssignedFocusMappingEvaluationRequest request = (AssignedFocusMappingEvaluationRequest) abstractRequest;
request.getEvaluatedAssignment().addFocusMapping(mapping);
};
TargetObjectSpecification<AH> targetSpecification = new FixedTargetSpecification<>(focusOdoRelative.getNewObject(), true);
MappingEvaluationEnvironment env = new MappingEvaluationEnvironment("focus mappings in assignments of " + focusContext.getHumanReadableName(), now, task);
FocalMappingSetEvaluation<AH, AH> mappingSetEvaluation = new FocalMappingSetEvaluationBuilder<AH, AH>().context(context).evaluationRequests(allRequests).phase(null).focusOdo(focusOdoRelative).targetSpecification(targetSpecification).tripleCustomizer(customizer).mappingConsumer(mappingConsumer).iteration(focusContext.getIteration()).iterationToken(focusContext.getIterationToken()).beans(beans).env(env).result(result).build();
mappingSetEvaluation.evaluateMappingsToTriples();
PathKeyedMap<DeltaSetTriple<ItemValueWithOrigin<?, ?>>> focusOutputTripleMap = mappingSetEvaluation.getOutputTripleMap();
logOutputTripleMap(focusOutputTripleMap);
DeltaSetTripleMapConsolidation<AH> consolidation = new DeltaSetTripleMapConsolidation<>(focusOutputTripleMap, focusOdoRelative.getNewObject(), focusOdoRelative.getObjectDelta(), context::primaryFocusItemDeltaExists, null, null, focusContext.getObjectDefinition(), env, beans, context, result);
consolidation.computeItemDeltas();
Collection<ItemDelta<?, ?>> focusDeltas = consolidation.getItemDeltas();
LOGGER.trace("Computed focus deltas: {}", focusDeltas);
focusContext.swallowToSecondaryDelta(focusDeltas);
focusContext.recompute();
} catch (Throwable t) {
result.recordFatalError(t.getMessage(), t);
throw t;
} finally {
result.computeStatusIfUnknown();
}
}
use of com.evolveum.midpoint.util.exception.CommunicationException in project midpoint by Evolveum.
the class SynchronizationExpressionsEvaluator method findFocusesByCorrelationRule.
@NotNull
private <F extends FocusType> List<PrismObject<F>> findFocusesByCorrelationRule(Class<F> focusType, ShadowType currentShadow, ConditionalSearchFilterType conditionalFilter, ExpressionProfile expressionProfile, ResourceType resourceType, SystemConfigurationType configurationType, Task task, OperationResult result) throws SchemaException, ObjectNotFoundException, ExpressionEvaluationException, CommunicationException, ConfigurationException, SecurityViolationException {
if (!conditionalFilter.containsFilterClause()) {
LOGGER.warn("Correlation rule for resource '{}' doesn't contain filter clause, " + "returning empty list of users.", resourceType);
return emptyList();
}
ObjectQuery q;
try {
q = prismContext.getQueryConverter().createObjectQuery(focusType, conditionalFilter);
q = updateFilterWithAccountValues(currentShadow, resourceType, configurationType, q, expressionProfile, "Correlation expression", task, result);
} catch (SchemaException ex) {
LoggingUtils.logException(LOGGER, "Couldn't convert query (simplified)\n{}.", ex, SchemaDebugUtil.prettyPrint(conditionalFilter));
throw new SchemaException("Couldn't convert query.", ex);
} catch (ObjectNotFoundException ex) {
LoggingUtils.logException(LOGGER, "Couldn't convert query (simplified)\n{}.", ex, SchemaDebugUtil.prettyPrint(conditionalFilter));
throw new ObjectNotFoundException("Couldn't convert query.", ex);
} catch (ExpressionEvaluationException ex) {
LoggingUtils.logException(LOGGER, "Couldn't convert query (simplified)\n{}.", ex, SchemaDebugUtil.prettyPrint(conditionalFilter));
throw new ExpressionEvaluationException("Couldn't convert query.", ex);
} catch (CommunicationException ex) {
LoggingUtils.logException(LOGGER, "Couldn't convert query (simplified)\n{}.", ex, SchemaDebugUtil.prettyPrint(conditionalFilter));
throw new CommunicationException("Couldn't convert query.", ex);
} catch (ConfigurationException ex) {
LoggingUtils.logException(LOGGER, "Couldn't convert query (simplified)\n{}.", ex, SchemaDebugUtil.prettyPrint(conditionalFilter));
throw new ConfigurationException("Couldn't convert query.", ex);
} catch (SecurityViolationException ex) {
LoggingUtils.logException(LOGGER, "Couldn't convert query (simplified)\n{}.", ex, SchemaDebugUtil.prettyPrint(conditionalFilter));
throw new SecurityViolationException("Couldn't convert query.", ex);
}
try {
LOGGER.trace("SYNCHRONIZATION: CORRELATION: expression for results in filter\n{}", q.debugDumpLazily());
// TODO read-only later
return repositoryService.searchObjects(focusType, q, null, result);
} catch (RuntimeException ex) {
LoggingUtils.logException(LOGGER, "Couldn't search users in repository, based on filter (simplified)\n{}.", ex, q.debugDump());
throw new SystemException("Couldn't search users in repository, based on filter (See logs).", ex);
}
}
use of com.evolveum.midpoint.util.exception.CommunicationException in project midpoint by Evolveum.
the class SynchronizationExpressionsEvaluator method findUserByConfirmationRule.
<F extends FocusType> List<PrismObject<F>> findUserByConfirmationRule(Class<F> focusType, List<PrismObject<F>> users, ShadowType currentShadow, ResourceType resource, SystemConfigurationType configuration, ExpressionType expression, Task task, OperationResult result) throws ExpressionEvaluationException, ObjectNotFoundException, SchemaException, CommunicationException, ConfigurationException, SecurityViolationException {
List<PrismObject<F>> list = new ArrayList<>();
for (PrismObject<F> user : users) {
try {
F userType = user.asObjectable();
boolean confirmedUser = evaluateConfirmationExpression(focusType, userType, currentShadow, resource, configuration, expression, task, result);
if (confirmedUser) {
list.add(user);
}
} catch (RuntimeException ex) {
LoggingUtils.logException(LOGGER, "Couldn't confirm user {}", ex, user.getElementName());
throw new SystemException("Couldn't confirm user " + user.getElementName(), ex);
} catch (ExpressionEvaluationException ex) {
LoggingUtils.logException(LOGGER, "Couldn't confirm user {}", ex, user.getElementName());
throw new ExpressionEvaluationException("Couldn't confirm user " + user.getElementName(), ex);
} catch (ObjectNotFoundException ex) {
LoggingUtils.logException(LOGGER, "Couldn't confirm user {}", ex, user.getElementName());
throw new ObjectNotFoundException("Couldn't confirm user " + user.getElementName(), ex);
} catch (SchemaException ex) {
LoggingUtils.logException(LOGGER, "Couldn't confirm user {}", ex, user.getElementName());
throw new SchemaException("Couldn't confirm user " + user.getElementName(), ex);
} catch (CommunicationException ex) {
LoggingUtils.logException(LOGGER, "Couldn't confirm user {}", ex, user.getElementName());
throw new CommunicationException("Couldn't confirm user " + user.getElementName(), ex);
} catch (ConfigurationException ex) {
LoggingUtils.logException(LOGGER, "Couldn't confirm user {}", ex, user.getElementName());
throw new ConfigurationException("Couldn't confirm user " + user.getElementName(), ex);
} catch (SecurityViolationException ex) {
LoggingUtils.logException(LOGGER, "Couldn't confirm user {}", ex, user.getElementName());
throw new SecurityViolationException("Couldn't confirm user " + user.getElementName(), ex);
}
}
LOGGER.debug("SYNCHRONIZATION: CONFIRMATION: expression for {} matched {} users.", currentShadow, list.size());
return list;
}
Aggregations