Search in sources :

Example 91 with CommunicationException

use of com.evolveum.midpoint.util.exception.CommunicationException in project midpoint by Evolveum.

the class ProvisioningServiceImpl method listResourceObjects.

@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public List<PrismObject<? extends ShadowType>> listResourceObjects(String resourceOid, QName objectClass, ObjectPaging paging, Task task, OperationResult parentResult) throws SchemaException, ObjectNotFoundException, CommunicationException, ConfigurationException, SecurityViolationException, ExpressionEvaluationException {
    final OperationResult result = parentResult.createSubresult(ProvisioningService.class.getName() + ".listResourceObjects");
    result.addParam("resourceOid", resourceOid);
    result.addParam("objectClass", objectClass);
    result.addParam("paging", paging);
    result.addContext(OperationResult.CONTEXT_IMPLEMENTATION_CLASS, ProvisioningServiceImpl.class);
    if (resourceOid == null) {
        throw new IllegalArgumentException("Resource not defined in a search query");
    }
    if (objectClass == null) {
        throw new IllegalArgumentException("Objectclass not defined in a search query");
    }
    ObjectQuery query = ObjectQueryUtil.createResourceAndObjectClassQuery(resourceOid, objectClass, prismContext);
    final List<PrismObject<? extends ShadowType>> objectList = new ArrayList<PrismObject<? extends ShadowType>>();
    final ShadowHandler shadowHandler = new ShadowHandler() {

        @Override
        public boolean handle(ShadowType shadow) {
            if (LOGGER.isTraceEnabled()) {
                LOGGER.trace("listResourceObjects: processing shadow: {}", SchemaDebugUtil.prettyPrint(shadow));
            }
            objectList.add(shadow.asPrismObject());
            return true;
        }
    };
    try {
        getShadowCache(Mode.STANDARD).searchObjectsIterative(query, null, shadowHandler, false, task, result);
    } catch (SchemaException | ObjectNotFoundException | CommunicationException | ConfigurationException | SecurityViolationException | ExpressionEvaluationException | RuntimeException | Error ex) {
        result.recordFatalError(ex.getMessage(), ex);
        result.cleanupResult(ex);
        throw ex;
    }
    result.cleanupResult();
    return objectList;
}
Also used : SchemaException(com.evolveum.midpoint.util.exception.SchemaException) ExpressionEvaluationException(com.evolveum.midpoint.util.exception.ExpressionEvaluationException) CommunicationException(com.evolveum.midpoint.util.exception.CommunicationException) SecurityViolationException(com.evolveum.midpoint.util.exception.SecurityViolationException) ShadowType(com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType) ArrayList(java.util.ArrayList) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) ObjectQuery(com.evolveum.midpoint.prism.query.ObjectQuery) PrismObject(com.evolveum.midpoint.prism.PrismObject) ConfigurationException(com.evolveum.midpoint.util.exception.ConfigurationException) ObjectNotFoundException(com.evolveum.midpoint.util.exception.ObjectNotFoundException)

Example 92 with CommunicationException

use of com.evolveum.midpoint.util.exception.CommunicationException in project midpoint by Evolveum.

the class ProvisioningServiceImpl method refreshShadow.

@Override
public void refreshShadow(PrismObject<ShadowType> shadow, ProvisioningOperationOptions options, Task task, OperationResult parentResult) throws SchemaException, ObjectNotFoundException, CommunicationException, ConfigurationException, ObjectAlreadyExistsException, SecurityViolationException, ExpressionEvaluationException {
    Validate.notNull(shadow, "Shadow for refresh must not be null.");
    OperationResult result = parentResult.createSubresult(ProvisioningServiceImpl.class.getName() + ".finishOperation");
    LOGGER.debug("Refreshing shadow {}", shadow);
    try {
        getShadowCache(Mode.RECON).refreshShadow(shadow, task, result);
        refreshShadowLegacy(shadow, options, task, result);
    } catch (GenericFrameworkException e) {
        ProvisioningUtil.recordFatalError(LOGGER, result, "Couldn't refresh shadow: " + e.getClass().getSimpleName() + ": " + e.getMessage(), e);
        throw new CommunicationException(e.getMessage(), e);
    } catch (CommunicationException | SchemaException | ObjectNotFoundException | ConfigurationException | SecurityViolationException | ObjectAlreadyExistsException | ExpressionEvaluationException | RuntimeException | Error e) {
        ProvisioningUtil.recordFatalError(LOGGER, result, "Couldn't refresh shadow: " + e.getClass().getSimpleName() + ": " + e.getMessage(), e);
        throw e;
    }
    result.computeStatus();
    result.cleanupResult();
    LOGGER.debug("Finished refreshing shadow {}: ", shadow, result);
}
Also used : SchemaException(com.evolveum.midpoint.util.exception.SchemaException) ExpressionEvaluationException(com.evolveum.midpoint.util.exception.ExpressionEvaluationException) GenericFrameworkException(com.evolveum.midpoint.provisioning.ucf.api.GenericFrameworkException) CommunicationException(com.evolveum.midpoint.util.exception.CommunicationException) SecurityViolationException(com.evolveum.midpoint.util.exception.SecurityViolationException) ConfigurationException(com.evolveum.midpoint.util.exception.ConfigurationException) ObjectNotFoundException(com.evolveum.midpoint.util.exception.ObjectNotFoundException) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) ObjectAlreadyExistsException(com.evolveum.midpoint.util.exception.ObjectAlreadyExistsException)

Example 93 with CommunicationException

use of com.evolveum.midpoint.util.exception.CommunicationException in project midpoint by Evolveum.

the class ProvisioningServiceImpl method modifyObject.

@SuppressWarnings("rawtypes")
@Override
public <T extends ObjectType> String modifyObject(Class<T> type, String oid, Collection<? extends ItemDelta> modifications, OperationProvisioningScriptsType scripts, ProvisioningOperationOptions options, Task task, OperationResult parentResult) throws ObjectNotFoundException, SchemaException, CommunicationException, ConfigurationException, SecurityViolationException, ObjectAlreadyExistsException, ExpressionEvaluationException {
    Validate.notNull(oid, "OID must not be null.");
    Validate.notNull(modifications, "Modifications must not be null.");
    Validate.notNull(parentResult, "Operation result must not be null.");
    if (InternalsConfig.encryptionChecks) {
        CryptoUtil.checkEncrypted(modifications);
    }
    if (InternalsConfig.consistencyChecks) {
        ItemDelta.checkConsistence(modifications);
    }
    OperationResult result = parentResult.createSubresult(ProvisioningService.class.getName() + ".modifyObject");
    result.addCollectionOfSerializablesAsParam("modifications", modifications);
    result.addParam(OperationResult.PARAM_OID, oid);
    result.addParam("scripts", scripts);
    result.addParam("options", options);
    result.addContext(OperationResult.CONTEXT_IMPLEMENTATION_CLASS, ProvisioningServiceImpl.class);
    if (LOGGER.isTraceEnabled()) {
        LOGGER.trace("*PROVISIONING: modifyObject: object modifications:\n{}", DebugUtil.debugDump(modifications));
    }
    // getting object to modify
    PrismObject<T> repoShadow = getRepoObject(type, oid, null, result);
    if (LOGGER.isTraceEnabled()) {
        LOGGER.trace("**PROVISIONING: modifyObject: object to modify (repository):\n{}.", repoShadow.debugDump());
    }
    try {
        if (ShadowType.class.isAssignableFrom(type)) {
            // calling shadow cache to modify object
            oid = getShadowCache(Mode.STANDARD).modifyShadow((PrismObject<ShadowType>) repoShadow, oid, modifications, scripts, options, task, result);
        } else {
            cacheRepositoryService.modifyObject(type, oid, modifications, result);
        }
        result.computeStatus();
    } catch (CommunicationException e) {
        ProvisioningUtil.recordFatalError(LOGGER, result, "Couldn't modify object: communication problem: " + e.getMessage(), e);
        throw e;
    } catch (GenericFrameworkException e) {
        ProvisioningUtil.recordFatalError(LOGGER, result, "Couldn't modify object: generic error in the connector: " + e.getMessage(), e);
        throw new CommunicationException(e.getMessage(), e);
    } catch (SchemaException e) {
        ProvisioningUtil.recordFatalError(LOGGER, result, "Couldn't modify object: schema problem: " + e.getMessage(), e);
        throw e;
    } catch (ObjectNotFoundException e) {
        ProvisioningUtil.recordFatalError(LOGGER, result, "Couldn't modify object: object doesn't exist: " + e.getMessage(), e);
        throw e;
    } catch (RuntimeException e) {
        ProvisioningUtil.recordFatalError(LOGGER, result, "Couldn't modify object: unexpected problem: " + e.getMessage(), e);
        throw new SystemException("Internal error: " + e.getMessage(), e);
    } catch (ConfigurationException e) {
        ProvisioningUtil.recordFatalError(LOGGER, result, "Couldn't modify object: configuration problem: " + e.getMessage(), e);
        throw e;
    } catch (SecurityViolationException e) {
        ProvisioningUtil.recordFatalError(LOGGER, result, "Couldn't modify object: security violation: " + e.getMessage(), e);
        throw e;
    } catch (ObjectAlreadyExistsException e) {
        ProvisioningUtil.recordFatalError(LOGGER, result, "Couldn't modify object: object after modification would conflict with another existing object: " + e.getMessage(), e);
        throw e;
    } catch (ExpressionEvaluationException e) {
        ProvisioningUtil.recordFatalError(LOGGER, result, "Couldn't modify object: expression errror: " + e.getMessage(), e);
        throw e;
    }
    result.cleanupResult();
    return oid;
}
Also used : SchemaException(com.evolveum.midpoint.util.exception.SchemaException) ExpressionEvaluationException(com.evolveum.midpoint.util.exception.ExpressionEvaluationException) CommunicationException(com.evolveum.midpoint.util.exception.CommunicationException) GenericFrameworkException(com.evolveum.midpoint.provisioning.ucf.api.GenericFrameworkException) SecurityViolationException(com.evolveum.midpoint.util.exception.SecurityViolationException) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) PrismObject(com.evolveum.midpoint.prism.PrismObject) SystemException(com.evolveum.midpoint.util.exception.SystemException) ConfigurationException(com.evolveum.midpoint.util.exception.ConfigurationException) ObjectNotFoundException(com.evolveum.midpoint.util.exception.ObjectNotFoundException) ObjectAlreadyExistsException(com.evolveum.midpoint.util.exception.ObjectAlreadyExistsException)

Example 94 with CommunicationException

use of com.evolveum.midpoint.util.exception.CommunicationException in project midpoint by Evolveum.

the class ProvisioningServiceImpl method searchObjects.

@Override
public <T extends ObjectType> SearchResultList<PrismObject<T>> searchObjects(Class<T> type, ObjectQuery query, Collection<SelectorOptions<GetOperationOptions>> options, Task task, OperationResult parentResult) throws SchemaException, ObjectNotFoundException, CommunicationException, ConfigurationException, SecurityViolationException, ExpressionEvaluationException {
    OperationResult result = parentResult.createSubresult(ProvisioningService.class.getName() + ".searchObjects");
    result.addParam("objectType", type);
    result.addParam("query", query);
    result.addContext(OperationResult.CONTEXT_IMPLEMENTATION_CLASS, ProvisioningServiceImpl.class);
    final SearchResultList<PrismObject<T>> objListType = new SearchResultList<>(new ArrayList<PrismObject<T>>());
    SearchResultMetadata metadata;
    try {
        if (!ShadowType.class.isAssignableFrom(type)) {
            SearchResultList<PrismObject<T>> objects = searchRepoObjects(type, query, options, task, result);
            result.computeStatus();
            result.recordSuccessIfUnknown();
            result.cleanupResult();
            //				validateObjects(objects);
            return objects;
        }
        final ResultHandler<T> handler = (object, parentResult1) -> objListType.add(object);
        metadata = searchObjectsIterative(type, query, options, handler, task, result);
    } catch (ConfigurationException | SecurityViolationException | CommunicationException | ObjectNotFoundException | SchemaException | ExpressionEvaluationException | RuntimeException | Error e) {
        ProvisioningUtil.recordFatalError(LOGGER, result, "Could not search objects: " + e.getMessage(), e);
        throw e;
    }
    result.computeStatus();
    result.cleanupResult();
    //		validateObjects(objListType);
    objListType.setMetadata(metadata);
    return objListType;
}
Also used : Primary(org.springframework.context.annotation.Primary) ObjectType(com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType) Autowired(org.springframework.beans.factory.annotation.Autowired) ConfigurationException(com.evolveum.midpoint.util.exception.ConfigurationException) SchemaException(com.evolveum.midpoint.util.exception.SchemaException) InternalsConfig(com.evolveum.midpoint.schema.internals.InternalsConfig) OperationResultType(com.evolveum.midpoint.xml.ns._public.common.common_3.OperationResultType) ConnectorTestOperation(com.evolveum.midpoint.schema.constants.ConnectorTestOperation) PreDestroy(javax.annotation.PreDestroy) CachingMetadataType(com.evolveum.midpoint.xml.ns._public.common.common_3.CachingMetadataType) ObjectQueryUtil(com.evolveum.midpoint.schema.util.ObjectQueryUtil) ResultHandler(com.evolveum.midpoint.schema.ResultHandler) SelectorOptions(com.evolveum.midpoint.schema.SelectorOptions) ObjectDelta(com.evolveum.midpoint.prism.delta.ObjectDelta) PrismProperty(com.evolveum.midpoint.prism.PrismProperty) ObjectNotFoundException(com.evolveum.midpoint.util.exception.ObjectNotFoundException) Collection(java.util.Collection) Objectable(com.evolveum.midpoint.prism.Objectable) Set(java.util.Set) ProvisioningDiag(com.evolveum.midpoint.schema.ProvisioningDiag) ObjectAlreadyExistsException(com.evolveum.midpoint.util.exception.ObjectAlreadyExistsException) NoneFilter(com.evolveum.midpoint.prism.query.NoneFilter) Task(com.evolveum.midpoint.task.api.Task) GenericFrameworkException(com.evolveum.midpoint.provisioning.ucf.api.GenericFrameworkException) ResourceShadowDiscriminator(com.evolveum.midpoint.schema.ResourceShadowDiscriminator) List(java.util.List) SystemException(com.evolveum.midpoint.util.exception.SystemException) ConstraintViolationConfirmer(com.evolveum.midpoint.provisioning.api.ConstraintViolationConfirmer) ProvisioningService(com.evolveum.midpoint.provisioning.api.ProvisioningService) PropertyDelta(com.evolveum.midpoint.prism.delta.PropertyDelta) CommunicationException(com.evolveum.midpoint.util.exception.CommunicationException) SearchResultMetadata(com.evolveum.midpoint.schema.SearchResultMetadata) QName(javax.xml.namespace.QName) Validate(org.apache.commons.lang.Validate) LabeledString(com.evolveum.midpoint.schema.LabeledString) ShadowType(com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType) CryptoUtil(com.evolveum.midpoint.common.crypto.CryptoUtil) Mode(com.evolveum.midpoint.provisioning.impl.ShadowCacheFactory.Mode) SchemaConstants(com.evolveum.midpoint.schema.constants.SchemaConstants) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) Trace(com.evolveum.midpoint.util.logging.Trace) DebugUtil(com.evolveum.midpoint.util.DebugUtil) ObjectFilter(com.evolveum.midpoint.prism.query.ObjectFilter) ExpressionEvaluationException(com.evolveum.midpoint.util.exception.ExpressionEvaluationException) ArrayList(java.util.ArrayList) PrismObjectDefinition(com.evolveum.midpoint.prism.PrismObjectDefinition) ItemDelta(com.evolveum.midpoint.prism.delta.ItemDelta) GenericConnectorException(com.evolveum.midpoint.provisioning.api.GenericConnectorException) SecurityViolationException(com.evolveum.midpoint.util.exception.SecurityViolationException) ObjectTypeUtil(com.evolveum.midpoint.schema.util.ObjectTypeUtil) SchemaDebugUtil(com.evolveum.midpoint.schema.util.SchemaDebugUtil) Service(org.springframework.stereotype.Service) PrismContext(com.evolveum.midpoint.prism.PrismContext) Qualifier(org.springframework.beans.factory.annotation.Qualifier) ConnectorOperationalStatus(com.evolveum.midpoint.schema.statistics.ConnectorOperationalStatus) FailedOperationTypeType(com.evolveum.midpoint.xml.ns._public.common.common_3.FailedOperationTypeType) ConstraintsCheckingResult(com.evolveum.midpoint.provisioning.api.ConstraintsCheckingResult) RepositoryService(com.evolveum.midpoint.repo.api.RepositoryService) ProvisioningOperationOptions(com.evolveum.midpoint.provisioning.api.ProvisioningOperationOptions) ConnectorType(com.evolveum.midpoint.xml.ns._public.common.common_3.ConnectorType) OperationProvisioningScriptsType(com.evolveum.midpoint.xml.ns._public.common.common_3.OperationProvisioningScriptsType) PrismObject(com.evolveum.midpoint.prism.PrismObject) RefinedObjectClassDefinition(com.evolveum.midpoint.common.refinery.RefinedObjectClassDefinition) ConnectorHostType(com.evolveum.midpoint.xml.ns._public.common.common_3.ConnectorHostType) RepoAddOptions(com.evolveum.midpoint.repo.api.RepoAddOptions) ProvisioningUtil(com.evolveum.midpoint.provisioning.util.ProvisioningUtil) SearchResultList(com.evolveum.midpoint.schema.SearchResultList) ResourceType(com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType) GetOperationOptions(com.evolveum.midpoint.schema.GetOperationOptions) ObjectQuery(com.evolveum.midpoint.prism.query.ObjectQuery) ObjectPaging(com.evolveum.midpoint.prism.query.ObjectPaging) TraceManager(com.evolveum.midpoint.util.logging.TraceManager) ProvisioningScriptType(com.evolveum.midpoint.xml.ns._public.common.common_3.ProvisioningScriptType) SchemaException(com.evolveum.midpoint.util.exception.SchemaException) ExpressionEvaluationException(com.evolveum.midpoint.util.exception.ExpressionEvaluationException) SecurityViolationException(com.evolveum.midpoint.util.exception.SecurityViolationException) CommunicationException(com.evolveum.midpoint.util.exception.CommunicationException) ShadowType(com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType) SearchResultMetadata(com.evolveum.midpoint.schema.SearchResultMetadata) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) SearchResultList(com.evolveum.midpoint.schema.SearchResultList) PrismObject(com.evolveum.midpoint.prism.PrismObject) ConfigurationException(com.evolveum.midpoint.util.exception.ConfigurationException) ObjectNotFoundException(com.evolveum.midpoint.util.exception.ObjectNotFoundException)

Example 95 with CommunicationException

use of com.evolveum.midpoint.util.exception.CommunicationException in project midpoint by Evolveum.

the class ProvisioningServiceImpl method searchRepoObjects.

@SuppressWarnings("unchecked")
private <T extends ObjectType> SearchResultList<PrismObject<T>> searchRepoObjects(Class<T> type, ObjectQuery query, Collection<SelectorOptions<GetOperationOptions>> options, Task task, OperationResult result) throws SchemaException {
    List<PrismObject<T>> repoObjects = null;
    // TODO: should searching connectors trigger rediscovery?
    Collection<SelectorOptions<GetOperationOptions>> repoOptions = null;
    if (GetOperationOptions.isReadOnly(SelectorOptions.findRootOptions(options))) {
        repoOptions = SelectorOptions.createCollection(GetOperationOptions.createReadOnly());
    }
    repoObjects = getCacheRepositoryService().searchObjects(type, query, repoOptions, result);
    SearchResultList<PrismObject<T>> newObjListType = new SearchResultList(new ArrayList<PrismObject<T>>());
    for (PrismObject<T> repoObject : repoObjects) {
        OperationResult objResult = new OperationResult(ProvisioningService.class.getName() + ".searchObjects.object");
        try {
            PrismObject<T> completeResource = completeObject(type, repoObject, options, task, objResult);
            validateObject(completeResource);
            objResult.computeStatusIfUnknown();
            if (!objResult.isSuccess()) {
                // necessary e.g. to skip validation for resources that had issues when checked
                completeResource.asObjectable().setFetchResult(objResult.createOperationResultType());
                result.addSubresult(objResult);
            }
            newObjListType.add((PrismObject<T>) completeResource);
        // TODO: what else do to with objResult??
        } catch (ObjectNotFoundException | SchemaException | CommunicationException | ConfigurationException | ExpressionEvaluationException e) {
            LOGGER.error("Error while completing {}: {}. Using non-complete object.", new Object[] { repoObject, e.getMessage(), e });
            objResult.recordFatalError(e);
            repoObject.asObjectable().setFetchResult(objResult.createOperationResultType());
            newObjListType.add(repoObject);
            result.addSubresult(objResult);
            result.recordPartialError(e);
        } catch (RuntimeException e) {
            // FIXME: Strictly speaking, the runtime exception should
            // not be handled here.
            // The runtime exceptions should be considered fatal anyway
            // ... but some of the
            // ICF exceptions are still translated to system exceptions.
            // So this provides
            // a better robustness now.
            LOGGER.error("System error while completing {}: {}. Using non-complete object.", new Object[] { repoObject, e.getMessage(), e });
            objResult.recordFatalError(e);
            repoObject.asObjectable().setFetchResult(objResult.createOperationResultType());
            newObjListType.add(repoObject);
            result.addSubresult(objResult);
            result.recordPartialError(e);
        }
    }
    return newObjListType;
}
Also used : SchemaException(com.evolveum.midpoint.util.exception.SchemaException) ExpressionEvaluationException(com.evolveum.midpoint.util.exception.ExpressionEvaluationException) CommunicationException(com.evolveum.midpoint.util.exception.CommunicationException) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) PrismObject(com.evolveum.midpoint.prism.PrismObject) SearchResultList(com.evolveum.midpoint.schema.SearchResultList) SelectorOptions(com.evolveum.midpoint.schema.SelectorOptions) ConfigurationException(com.evolveum.midpoint.util.exception.ConfigurationException) ObjectNotFoundException(com.evolveum.midpoint.util.exception.ObjectNotFoundException) PrismObject(com.evolveum.midpoint.prism.PrismObject)

Aggregations

CommunicationException (com.evolveum.midpoint.util.exception.CommunicationException)108 OperationResult (com.evolveum.midpoint.schema.result.OperationResult)87 SchemaException (com.evolveum.midpoint.util.exception.SchemaException)87 ConfigurationException (com.evolveum.midpoint.util.exception.ConfigurationException)86 ObjectNotFoundException (com.evolveum.midpoint.util.exception.ObjectNotFoundException)82 ExpressionEvaluationException (com.evolveum.midpoint.util.exception.ExpressionEvaluationException)69 SecurityViolationException (com.evolveum.midpoint.util.exception.SecurityViolationException)67 ObjectAlreadyExistsException (com.evolveum.midpoint.util.exception.ObjectAlreadyExistsException)39 SystemException (com.evolveum.midpoint.util.exception.SystemException)38 GenericFrameworkException (com.evolveum.midpoint.provisioning.ucf.api.GenericFrameworkException)36 Task (com.evolveum.midpoint.task.api.Task)30 PrismObject (com.evolveum.midpoint.prism.PrismObject)29 PolicyViolationException (com.evolveum.midpoint.util.exception.PolicyViolationException)24 ResourceType (com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType)21 ShadowType (com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType)21 AsynchronousOperationResult (com.evolveum.midpoint.schema.result.AsynchronousOperationResult)19 ObjectDelta (com.evolveum.midpoint.prism.delta.ObjectDelta)18 QName (javax.xml.namespace.QName)18 ObjectType (com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType)14 ObjectQuery (com.evolveum.midpoint.prism.query.ObjectQuery)13