public ObjectType fetchResult(OperationResultType value) { setFetchResult(value); return this; }
private <T extends ObjectType> boolean handleRepoObject(final Class<T> type, PrismObject<T> object, final Collection<SelectorOptions<GetOperationOptions>> options, final ResultHandler<T> handler, Task task, final OperationResult objResult) { PrismObject<T> completeObject; try { completeObject = completeObject(type, object, options, task, objResult); } catch (Throwable e) { LOGGER.error("Error while completing {}: {}-{}. Using non-complete object.", object, e.getMessage(), e); objResult.recordFatalError(e); object.asObjectable().setFetchResult(objResult.createOperationResultType()); completeObject = object; } objResult.computeStatus(); objResult.recordSuccessIfUnknown(); if (!objResult.isSuccess()) { OperationResultType resultType = objResult.createOperationResultType(); completeObject.asObjectable().setFetchResult(resultType); } return handler.handle(completeObject, objResult); }
private <T extends ObjectType> void applySchemaAndSecurityToObject(PrismObject<T> object, GetOperationOptions rootOptions, Collection<SelectorOptions<GetOperationOptions>> options, AuthorizationPhaseType phase, Task task, OperationResult result) throws SecurityViolationException { OperationResult subresult = new OperationResult(SchemaTransformer.class.getName()+".applySchemasAndSecurityToObjects"); try { applySchemasAndSecurity(object, rootOptions, options, phase, task, subresult); } catch (IllegalArgumentException | IllegalStateException | SchemaException |ConfigurationException |ObjectNotFoundException | ExpressionEvaluationException | CommunicationException e) { LOGGER.error("Error post-processing object {}: {}", object, e.getMessage(), e); OperationResultType fetchResult = object.asObjectable().getFetchResult(); if (fetchResult == null) { fetchResult = subresult.createOperationResultType(); object.asObjectable().setFetchResult(fetchResult); } else { fetchResult.getPartialResults().add(subresult.createOperationResultType()); } fetchResult.setStatus(OperationResultStatusType.FATAL_ERROR); } catch (SecurityViolationException e) { // We cannot go on and leave this object in the result set. The object was not post-processed. // Leaving it in the result set may leak information. result.recordFatalError(e); throw e; } }
@NotNull private <T extends ObjectType> List<PrismObject<T>> queryResultToPrismObjects(List<GetObjectResult> objects, Class<T> type, Collection<SelectorOptions<GetOperationOptions>> options, Session session, OperationResult result) throws SchemaException { List<PrismObject<T>> rv = new ArrayList<>(); if (objects != null) { for (GetObjectResult object : objects) { String oid = object.getOid(); Holder<PrismObject<T>> partialValueHolder = new Holder<>(); PrismObject<T> prismObject; try { prismObject = updateLoadedObject(object, type, oid, options, partialValueHolder, session, result); } catch (Throwable t) { if (!partialValueHolder.isEmpty()) { prismObject = partialValueHolder.getValue(); } else { prismObject = prismContext.createObject(type); prismObject.setOid(oid); prismObject.asObjectable().setName(PolyStringType.fromOrig("Unreadable object")); } result.recordFatalError("Couldn't retrieve " + type + " " + oid + ": " + t.getMessage(), t); prismObject.asObjectable().setFetchResult(result.createOperationResultType()); } rv.add(prismObject); } } return rv; }
objResult.computeStatusIfUnknown(); if (!objResult.isSuccess()) { completeResource.asObjectable().setFetchResult(objResult.createOperationResultType()); // necessary e.g. to skip validation for resources that had issues when checked result.addSubresult(objResult); repoObject, e.getMessage(), e }); objResult.recordFatalError(e); repoObject.asObjectable().setFetchResult(objResult.createOperationResultType()); newObjListType.add(repoObject); result.addSubresult(objResult); repoObject, e.getMessage(), e }); objResult.recordFatalError(e); repoObject.asObjectable().setFetchResult(objResult.createOperationResultType()); newObjListType.add(repoObject); result.addSubresult(objResult);
if (!GetOperationOptions.isRaw(rootOptions)) { resultingObject = resultingObject.cloneIfImmutable(); resultingObject.asObjectable().setFetchResult(result.createOperationResultType());