Search in sources :

Example 6 with Experimental

use of com.evolveum.midpoint.util.annotation.Experimental in project midpoint by Evolveum.

the class ModelObjectResolver method resolveAllReferences.

@Experimental
@Override
public void resolveAllReferences(Collection<PrismContainerValue<?>> pcvs, Object taskObject, OperationResult result) {
    Session session = openResolutionSession(null);
    Task task = (Task) taskObject;
    ConfigurableVisitor<?> visitor = new ConfigurableVisitor() {

        @Override
        public boolean shouldVisitEmbeddedObjects() {
            // e.g. "resolveAllReferencesDeeply".
            return false;
        }

        @Override
        public void visit(Visitable visitable) {
            if (visitable instanceof PrismReferenceValue) {
                resolveReference((PrismReferenceValue) visitable, "resolving object reference", session, task, result);
            }
        }
    };
    pcvs.forEach(pcv -> pcv.accept(visitor));
}
Also used : Task(com.evolveum.midpoint.task.api.Task) Experimental(com.evolveum.midpoint.util.annotation.Experimental)

Example 7 with Experimental

use of com.evolveum.midpoint.util.annotation.Experimental in project midpoint by Evolveum.

the class MidpointFunctionsImpl method getFocusObjectReference.

@Experimental
@NotNull
public ObjectReferenceType getFocusObjectReference() {
    ObjectType focusObject = getFocusObjectAny();
    String oid = focusObject.getOid();
    if (oid == null) {
        throw new IllegalStateException("No OID in focus object");
    }
    return ObjectTypeUtil.createObjectRef(focusObject, prismContext);
}
Also used : PolyString(com.evolveum.midpoint.prism.polystring.PolyString) Experimental(com.evolveum.midpoint.util.annotation.Experimental) NotNull(org.jetbrains.annotations.NotNull)

Example 8 with Experimental

use of com.evolveum.midpoint.util.annotation.Experimental in project midpoint by Evolveum.

the class LinkedObjectsFunctions method findLinkedTargets.

// Should be used after assignment evaluation!
@Experimental
@NotNull
<T extends AssignmentHolderType> List<T> findLinkedTargets(Class<T> type, String archetypeOid) throws CommunicationException, ObjectNotFoundException, SchemaException, SecurityViolationException, ConfigurationException, ExpressionEvaluationException {
    Set<PrismReferenceValue> membership = getMembership();
    List<PrismReferenceValue> assignedWithMemberRelation = membership.stream().filter(ref -> relationRegistry.isMember(ref.getRelation()) && objectTypeMatches(ref, type)).collect(Collectors.toList());
    // TODO deduplicate w.r.t. member/manager
    // TODO optimize matching
    List<T> objects = new ArrayList<>(assignedWithMemberRelation.size());
    for (PrismReferenceValue reference : assignedWithMemberRelation) {
        ObjectReferenceType ort = new ObjectReferenceType();
        ort.setupReferenceValue(reference);
        T object = midpointFunctions.resolveReferenceInternal(ort, true);
        if (objectMatches(object, type, archetypeOid)) {
            objects.add(object);
        }
    }
    return objects;
}
Also used : java.util(java.util) com.evolveum.midpoint.xml.ns._public.common.common_3(com.evolveum.midpoint.xml.ns._public.common.common_3) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) Autowired(org.springframework.beans.factory.annotation.Autowired) Trace(com.evolveum.midpoint.util.logging.Trace) ModelExpressionThreadLocalHolder(com.evolveum.midpoint.model.common.expression.ModelExpressionThreadLocalHolder) com.evolveum.midpoint.util.exception(com.evolveum.midpoint.util.exception) SchemaRegistry(com.evolveum.midpoint.prism.schema.SchemaRegistry) LensContext(com.evolveum.midpoint.model.impl.lens.LensContext) ObjectTypeUtil(com.evolveum.midpoint.schema.util.ObjectTypeUtil) PrismContext(com.evolveum.midpoint.prism.PrismContext) Qualifier(org.springframework.beans.factory.annotation.Qualifier) RelationRegistry(com.evolveum.midpoint.schema.RelationRegistry) EvaluatedAssignmentImpl(com.evolveum.midpoint.model.impl.lens.assignments.EvaluatedAssignmentImpl) RepositoryService(com.evolveum.midpoint.repo.api.RepositoryService) LinkedSelectorToFilterTranslator(com.evolveum.midpoint.repo.common.query.LinkedSelectorToFilterTranslator) Experimental(com.evolveum.midpoint.util.annotation.Experimental) Collections.emptySet(java.util.Collections.emptySet) Objectable(com.evolveum.midpoint.prism.Objectable) MiscUtil(com.evolveum.midpoint.util.MiscUtil) Task(com.evolveum.midpoint.task.api.Task) Collectors(java.util.stream.Collectors) InvocationTargetException(java.lang.reflect.InvocationTargetException) Objects(java.util.Objects) Component(org.springframework.stereotype.Component) ExpressionFactory(com.evolveum.midpoint.repo.common.expression.ExpressionFactory) Modifier(java.lang.reflect.Modifier) LensFocusContext(com.evolveum.midpoint.model.impl.lens.LensFocusContext) LinkManager(com.evolveum.midpoint.model.common.LinkManager) ObjectQuery(com.evolveum.midpoint.prism.query.ObjectQuery) NotNull(org.jetbrains.annotations.NotNull) TraceManager(com.evolveum.midpoint.util.logging.TraceManager) PrismReferenceValue(com.evolveum.midpoint.prism.PrismReferenceValue) PrismReferenceValue(com.evolveum.midpoint.prism.PrismReferenceValue) Experimental(com.evolveum.midpoint.util.annotation.Experimental) NotNull(org.jetbrains.annotations.NotNull)

Example 9 with Experimental

use of com.evolveum.midpoint.util.annotation.Experimental in project midpoint by Evolveum.

the class SqlRepositoryServiceImpl method modifyObjectDynamically.

@NotNull
@Override
@Experimental
public <T extends ObjectType> ModifyObjectResult<T> modifyObjectDynamically(@NotNull Class<T> type, @NotNull String oid, @Nullable Collection<SelectorOptions<GetOperationOptions>> getOptions, @NotNull ModificationsSupplier<T> modificationsSupplier, RepoModifyOptions modifyOptions, @NotNull OperationResult parentResult) throws ObjectNotFoundException, SchemaException, ObjectAlreadyExistsException {
    Validate.notNull(type, "Object class in delta must not be null.");
    Validate.notEmpty(oid, "Oid must not null or empty.");
    Validate.notNull(modificationsSupplier, "Modifications supplier must not be null.");
    Validate.notNull(parentResult, "Operation result must not be null.");
    // TODO executeAttempts?
    final String operation = "modifying";
    int attempt = 1;
    int restarts = 0;
    boolean noFetchExtensionValueInsertionForbidden = false;
    SqlPerformanceMonitorImpl pm = getPerformanceMonitor();
    long opHandle = pm.registerOperationStart(OP_MODIFY_OBJECT_DYNAMICALLY, type);
    OperationResult result = parentResult.subresult(MODIFY_OBJECT_DYNAMICALLY).addQualifier(type.getSimpleName()).addParam("type", type.getName()).addParam("oid", oid).build();
    ModifyObjectResult<T> rv = null;
    try {
        while (true) {
            try {
                ModificationsSupplier<T> innerModificationsSupplier = object -> {
                    Collection<? extends ItemDelta<?, ?>> modifications = modificationsSupplier.get(object);
                    checkModifications(modifications);
                    logNameChange(modifications);
                    return modifications;
                };
                rv = objectUpdater.modifyObjectDynamicallyAttempt(type, oid, getOptions, innerModificationsSupplier, modifyOptions, attempt, result, this, noFetchExtensionValueInsertionForbidden);
                invokeConflictWatchers((w) -> w.afterModifyObject(oid));
                rv.setPerformanceRecord(pm.registerOperationFinish(opHandle, attempt));
                return rv;
            } catch (RestartOperationRequestedException ex) {
                // special case: we want to restart but we do not want to count these
                LOGGER.trace("Restarting because of {}", ex.getMessage());
                restarts++;
                if (restarts > RESTART_LIMIT) {
                    throw new IllegalStateException("Too many operation restarts");
                } else if (ex.isForbidNoFetchExtensionValueAddition()) {
                    noFetchExtensionValueInsertionForbidden = true;
                }
            } catch (RuntimeException ex) {
                attempt = baseHelper.logOperationAttempt(oid, operation, attempt, ex, result);
                pm.registerOperationNewAttempt(opHandle, attempt);
            }
        }
    } catch (Throwable t) {
        LOGGER.debug("Got exception while processing dynamic modifications on {}:{}", type.getSimpleName(), oid, t);
        pm.registerOperationFinish(opHandle, attempt);
        throw t;
    } finally {
        OperationLogger.logModifyDynamically(type, oid, rv, modifyOptions, result);
    }
}
Also used : Connection(java.sql.Connection) com.evolveum.midpoint.prism.query(com.evolveum.midpoint.prism.query) Autowired(org.springframework.beans.factory.annotation.Autowired) com.evolveum.midpoint.util.exception(com.evolveum.midpoint.util.exception) InternalsConfig(com.evolveum.midpoint.schema.internals.InternalsConfig) OperationResultStatus(com.evolveum.midpoint.schema.result.OperationResultStatus) PreDestroy(javax.annotation.PreDestroy) ConflictWatcherImpl(com.evolveum.midpoint.repo.sqlbase.ConflictWatcherImpl) SessionFactoryImpl(org.hibernate.internal.SessionFactoryImpl) com.evolveum.midpoint.repo.api(com.evolveum.midpoint.repo.api) com.evolveum.midpoint.prism(com.evolveum.midpoint.prism) ObjectQueryUtil(com.evolveum.midpoint.schema.util.ObjectQueryUtil) XmlTypeConverter(com.evolveum.midpoint.prism.xml.XmlTypeConverter) Experimental(com.evolveum.midpoint.util.annotation.Experimental) OperationLogger(com.evolveum.midpoint.repo.sqlbase.OperationLogger) SessionFactory(org.hibernate.SessionFactory) Collectors(java.util.stream.Collectors) MatchingRuleRegistry(com.evolveum.midpoint.prism.match.MatchingRuleRegistry) Nullable(org.jetbrains.annotations.Nullable) Dialect(org.hibernate.dialect.Dialect) PolyStringType(com.evolveum.prism.xml.ns._public.types_3.PolyStringType) PostConstruct(javax.annotation.PostConstruct) PropertyDelta(com.evolveum.midpoint.prism.delta.PropertyDelta) QName(javax.xml.namespace.QName) CollectionUtils.emptyIfNull(org.apache.commons.collections4.CollectionUtils.emptyIfNull) NotNull(org.jetbrains.annotations.NotNull) FocusTypeUtil(com.evolveum.midpoint.schema.util.FocusTypeUtil) com.evolveum.midpoint.schema(com.evolveum.midpoint.schema) java.util(java.util) com.evolveum.midpoint.xml.ns._public.common.common_3(com.evolveum.midpoint.xml.ns._public.common.common_3) ObjectFilterExpressionEvaluator(com.evolveum.midpoint.repo.api.query.ObjectFilterExpressionEvaluator) CryptoUtil(com.evolveum.midpoint.common.crypto.CryptoUtil) SchemaConstants(com.evolveum.midpoint.schema.constants.SchemaConstants) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) Session(org.hibernate.Session) ItemDeltaCollectionsUtil(com.evolveum.midpoint.prism.delta.ItemDeltaCollectionsUtil) Trace(com.evolveum.midpoint.util.logging.Trace) DebugUtil(com.evolveum.midpoint.util.DebugUtil) PrettyPrinter(com.evolveum.midpoint.util.PrettyPrinter) Supplier(java.util.function.Supplier) ItemDelta(com.evolveum.midpoint.prism.delta.ItemDelta) com.evolveum.midpoint.repo.sql.helpers(com.evolveum.midpoint.repo.sql.helpers) ObjectTypeUtil(com.evolveum.midpoint.schema.util.ObjectTypeUtil) PolyString(com.evolveum.midpoint.prism.polystring.PolyString) InternalMonitor(com.evolveum.midpoint.schema.internals.InternalMonitor) SqlPerformanceMonitorImpl(com.evolveum.midpoint.repo.sqlbase.perfmon.SqlPerformanceMonitorImpl) Consumer(java.util.function.Consumer) Validate(org.apache.commons.lang3.Validate) Driver(java.sql.Driver) SearchFilterType(com.evolveum.prism.xml.ns._public.query_3.SearchFilterType) DriverManager(java.sql.DriverManager) TraceManager(com.evolveum.midpoint.util.logging.TraceManager) SqlPerformanceMonitorImpl(com.evolveum.midpoint.repo.sqlbase.perfmon.SqlPerformanceMonitorImpl) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) ItemDelta(com.evolveum.midpoint.prism.delta.ItemDelta) PolyString(com.evolveum.midpoint.prism.polystring.PolyString) Experimental(com.evolveum.midpoint.util.annotation.Experimental) NotNull(org.jetbrains.annotations.NotNull)

Example 10 with Experimental

use of com.evolveum.midpoint.util.annotation.Experimental in project midpoint by Evolveum.

the class LocalActivityRun method setTaskObjectRef.

/**
 * Updates task objectRef. This is e.g. to allow displaying of all tasks related to given resource.
 * Conditions:
 *
 * 1. task.objectRef has no value yet,
 * 2. the value provided by {@link #getDesiredTaskObjectRef()} is non-null.
 *
 * The method does this recursively towards the root of the task tree.
 */
@Experimental
final void setTaskObjectRef(OperationResult result) throws CommonException {
    RunningTask task = getRunningTask();
    if (task.getObjectOid() != null) {
        LOGGER.trace("Task.objectRef is already set for the current task. We assume it is also set for parent tasks.");
        return;
    }
    ObjectReferenceType desiredObjectRef = getDesiredTaskObjectRef();
    LOGGER.trace("Desired task object ref: {}", desiredObjectRef);
    if (desiredObjectRef == null) {
        return;
    }
    setObjectRefRecursivelyUpwards(task, desiredObjectRef, result);
}
Also used : ObjectReferenceType(com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType) RunningTask(com.evolveum.midpoint.task.api.RunningTask) Experimental(com.evolveum.midpoint.util.annotation.Experimental)

Aggregations

Experimental (com.evolveum.midpoint.util.annotation.Experimental)10 OperationResult (com.evolveum.midpoint.schema.result.OperationResult)6 Task (com.evolveum.midpoint.task.api.Task)4 NotNull (org.jetbrains.annotations.NotNull)4 LensFocusContext (com.evolveum.midpoint.model.impl.lens.LensFocusContext)3 PrismContext (com.evolveum.midpoint.prism.PrismContext)3 SchemaRegistry (com.evolveum.midpoint.prism.schema.SchemaRegistry)3 ObjectTypeUtil (com.evolveum.midpoint.schema.util.ObjectTypeUtil)3 com.evolveum.midpoint.util.exception (com.evolveum.midpoint.util.exception)3 Trace (com.evolveum.midpoint.util.logging.Trace)3 TraceManager (com.evolveum.midpoint.util.logging.TraceManager)3 com.evolveum.midpoint.xml.ns._public.common.common_3 (com.evolveum.midpoint.xml.ns._public.common.common_3)3 java.util (java.util)3 Collectors (java.util.stream.Collectors)3 Autowired (org.springframework.beans.factory.annotation.Autowired)3 LinkManager (com.evolveum.midpoint.model.common.LinkManager)2 ModelExpressionThreadLocalHolder (com.evolveum.midpoint.model.common.expression.ModelExpressionThreadLocalHolder)2 LensContext (com.evolveum.midpoint.model.impl.lens.LensContext)2 EvaluatedAssignmentImpl (com.evolveum.midpoint.model.impl.lens.assignments.EvaluatedAssignmentImpl)2 Objectable (com.evolveum.midpoint.prism.Objectable)2