Skip to content

Commit

Permalink
Fix "ref = ." association mappings
Browse files Browse the repository at this point in the history
  • Loading branch information
mederly committed Apr 15, 2024
1 parent fd2cf35 commit 695dd9e
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,8 @@ public CorrelationDefinitionType getCorrelation() {

@Override
public boolean hasAnyInbounds() {
return itemDefinitionsMap.values().stream()
return associationValueInboundDefinition != null
|| itemDefinitionsMap.values().stream()
.anyMatch(def -> !def.getInboundMappingBeans().isEmpty());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,7 @@
package com.evolveum.midpoint.model.impl.lens.projector.focus.inbounds;

import com.evolveum.midpoint.prism.Containerable;
import com.evolveum.midpoint.schema.processor.ResourceObjectInboundDefinition;
import com.evolveum.midpoint.schema.processor.ResourceObjectTypeDefinition;
import com.evolveum.midpoint.schema.processor.*;

import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
Expand All @@ -19,8 +18,6 @@
import com.evolveum.midpoint.model.impl.lens.LensContext;
import com.evolveum.midpoint.model.impl.sync.SynchronizationContext;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.schema.processor.ResourceObjectDefinition;
import com.evolveum.midpoint.schema.processor.SynchronizationPolicy;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.DebugUtil;
Expand Down Expand Up @@ -52,21 +49,25 @@ public class SimplePreInboundsContextImpl<T extends Containerable>

@NotNull private final ResourceObjectInboundDefinition inboundDefinition;

@Nullable private final ShadowAssociationDefinition owningAssociationDefinition;

public SimplePreInboundsContextImpl(
@NotNull ShadowType shadowedResourceObject,
@NotNull ResourceType resource,
@NotNull T preFocus,
@Nullable SystemConfigurationType systemConfiguration,
@NotNull Task task,
@NotNull ResourceObjectDefinition objectDefinition,
@NotNull ResourceObjectInboundDefinition inboundDefinition) {
@NotNull ResourceObjectInboundDefinition inboundDefinition,
@Nullable ShadowAssociationDefinition owningAssociationDefinition) {
this.shadowedResourceObject = shadowedResourceObject;
this.resource = resource;
this.preFocus = preFocus;
this.systemConfiguration = systemConfiguration;
this.task = task;
this.objectDefinition = objectDefinition;
this.inboundDefinition = inboundDefinition;
this.owningAssociationDefinition = owningAssociationDefinition;
}

@Override
Expand Down Expand Up @@ -107,6 +108,11 @@ public SimplePreInboundsContextImpl(
return inboundDefinition;
}

@Override
public @Nullable ShadowAssociationDefinition getOwningAssociationDefinition() {
return owningAssociationDefinition;
}

@Override
public @Nullable String getArchetypeOid() {
return inboundDefinition.getFocusSpecification().getArchetypeOid();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ class LimitedSource extends MSource {
ctx.getResourceObjectDelta(),
ctx.getObjectDefinitionRequired(),
ctx.getInboundDefinition(),
null);
ctx.getOwningAssociationDefinition());
this.ctx = ctx;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@

package com.evolveum.midpoint.model.impl.sync;

import com.evolveum.midpoint.schema.processor.ShadowAssociationDefinition;

import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.VisibleForTesting;

Expand Down Expand Up @@ -66,7 +68,9 @@ public class PreMappingsEvaluation<T extends Containerable> {
PrismContext.get().createObjectable(focusClass),
ModelBeans.get().systemObjectCache.getSystemConfigurationBean(result),
task,
objectTypeDefinition, objectTypeDefinition);
objectTypeDefinition,
objectTypeDefinition,
null);
new PreMappingsEvaluation<>(preInboundsContext)
.evaluate(result);
return preInboundsContext.getPreFocus();
Expand All @@ -89,7 +93,8 @@ public static <C extends Containerable> void computePreFocusForAssociationValue(
ModelBeans.get().systemObjectCache.getSystemConfigurationBean(result),
task,
associationValue.getAssociatedObjectDefinition(),
inboundDefinition);
inboundDefinition,
(ShadowAssociationDefinition) associationValue.getDefinition());
new PreMappingsEvaluation<>(preInboundsContext)
.evaluate(result);
}
Expand Down

0 comments on commit 695dd9e

Please sign in to comment.