Skip to content

Commit

Permalink
Fix new resource definitions
Browse files Browse the repository at this point in the history
Just a couple of minor fixes that make model-impl tests running.

Work in progress.
  • Loading branch information
mederly committed Mar 26, 2024
1 parent 01f2f78 commit bc4540f
Show file tree
Hide file tree
Showing 10 changed files with 26 additions and 165 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -517,7 +517,7 @@ private void assertAttributeDef(Collection<? extends ResourceAttributeDefinition
assertEquals("Attribute " + name + " (" + sourceLayer + ") maxOccurs mismatch", maxOccurs, def.getMaxOccurs());
if (validationLayer == LayerType.MODEL || validationLayer == LayerType.PRESENTATION) {
assertEquals("Attribute " + name + " (" + sourceLayer + ") displayOrder mismatch", displayOrder, def.getDisplayOrder());
assertEquals("Attribute " + name + " (" + sourceLayer + ") outbound mismatch", hasOutbound, def.getOutboundMappingBean() != null);
assertEquals("Attribute " + name + " (" + sourceLayer + ") outbound mismatch", hasOutbound, def.hasOutboundMapping());
}
assertEquals("Attribute " + name + " (" + sourceLayer + ") ignored flag mismatch", ignore, def.isIgnored());
assertEquals("Attribute " + name + " (" + sourceLayer + ") canCreate mismatch", canCreate, def.canAdd());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import org.jetbrains.annotations.Nullable;

import javax.xml.namespace.QName;
import java.io.Serializable;

/**
* Getter interface to "UCF" part of resource object class definition.
Expand Down Expand Up @@ -198,7 +199,7 @@ default void setSecondaryIdentifierName(QName value) {

class Data
extends AbstractFreezable
implements NativeObjectClassUcfDefinition, NativeObjectClassUcfDefinition.Mutable, DebugDumpable {
implements NativeObjectClassUcfDefinition, NativeObjectClassUcfDefinition.Mutable, Serializable, DebugDumpable {

private String nativeObjectClassName;
private boolean auxiliary;
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -284,14 +284,6 @@ private ResourceObjectTypeDefinition createEmptyObjectTypeDefinition(
"No definition found for object class '%s' referenced in %s", objectClassName, DESC);
}

private @NotNull ResourceObjectTypeDefinition getObjectTypeDefinitionRequired(
@NotNull ResourceObjectTypeIdentification identification, @NotNull ConfigurationItem<?> contextCI)
throws ConfigurationException {
return contextCI.configNonNull(
resourceSchema.getObjectTypeDefinition(identification),
"No definition found for object type '%s' referenced in %s", identification, DESC);
}

/** Merges "source" (super-type) into "target" (sub-type). */
private void merge(
@NotNull ResourceObjectTypeDefinitionType target,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,10 @@

package com.evolveum.midpoint.schema.processor;

import java.util.List;

import com.evolveum.midpoint.prism.PrismContainerDefinition;
import com.evolveum.midpoint.prism.delta.ContainerDelta;
import com.evolveum.midpoint.prism.query.ObjectFilter;

import com.evolveum.midpoint.schema.config.InboundMappingConfigItem;
import com.evolveum.midpoint.schema.config.MappingConfigItem;

import com.evolveum.midpoint.util.exception.ConfigurationException;

import com.evolveum.midpoint.prism.*;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowAssociationValueType;

/**
* Definition of an association item, e.g., `ri:group`.
Expand Down Expand Up @@ -46,8 +38,4 @@ public interface ShadowAssociationDefinition
ShadowAssociationClassDefinition getAssociationClassDefinition();

boolean isEntitlement();

// TODO move the following methods to ShadowItemDefinition
MappingConfigItem getOutboundMapping() throws ConfigurationException;
List<InboundMappingConfigItem> getInboundMappings() throws ConfigurationException;
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,7 @@
import com.evolveum.midpoint.prism.query.OrFilter;
import com.evolveum.midpoint.prism.query.builder.S_FilterEntryOrEmpty;
import com.evolveum.midpoint.prism.util.CloneUtil;
import com.evolveum.midpoint.schema.config.InboundMappingConfigItem;
import com.evolveum.midpoint.schema.config.MappingConfigItem;
import com.evolveum.midpoint.schema.config.ResourceObjectAssociationConfigItem;
import com.evolveum.midpoint.schema.config.ShadowAssociationTypeDefinitionConfigItem;
import com.evolveum.midpoint.util.MiscUtil;
import com.evolveum.midpoint.util.QNameUtil;
import com.evolveum.midpoint.util.exception.ConfigurationException;
Expand Down Expand Up @@ -83,27 +80,14 @@ private ShadowAssociationDefinitionImpl(
@NotNull ResourceObjectAssociationType customizationBean,
@NotNull Map<LayerType, PropertyLimitations> limitationsMap,
@NotNull PropertyAccessType accessOverride,
@Nullable ShadowAssociationClassDefinition associationClassDefinition,
@NotNull ShadowAssociationClassDefinition associationClassDefinition,
Integer maxOccurs) {
super(layer, nativeDefinition, customizationBean, limitationsMap, accessOverride);
this.associationClassDefinition = associationClassDefinition;
this.complexTypeDefinition = getComplexTypeDefinition();
this.maxOccurs = maxOccurs;
}

static ShadowAssociationDefinitionImpl parseAssociationType(
@NotNull ItemName associationItemName,
@NotNull ShadowAssociationClassDefinition associationTypeDefinition,
@Nullable NativeShadowAssociationDefinition rawDefinition,
@NotNull ShadowAssociationTypeDefinitionConfigItem definitionCI) {
// try {
// return new ShadowAssociationDefinitionImpl(associationItemName, associationTypeDefinition, rawDefinition, definitionCI);
// } catch (SchemaException e) {
// throw SystemException.unexpected(e, "TEMPORARY");
// }
throw new UnsupportedOperationException();
}

static ShadowAssociationDefinitionImpl parseLegacy(
@NotNull ShadowAssociationClassDefinition associationTypeDefinition,
@NotNull ResourceObjectAssociationConfigItem definitionCI) throws ConfigurationException {
Expand Down Expand Up @@ -163,17 +147,6 @@ public boolean isEntitlement() {
return getAssociationClassDefinition().isEntitlement();
}

public @Nullable MappingConfigItem getOutboundMapping() throws ConfigurationException {
// return configItem.getOutboundMapping();
throw new UnsupportedOperationException();
}

public @NotNull List<InboundMappingConfigItem> getInboundMappings() throws ConfigurationException {
// return configItem.getInboundMappings();
throw new UnsupportedOperationException();

}

@Override
public @NotNull ShadowAssociationDefinitionImpl forLayer(@NotNull LayerType layer) {
if (layer == currentLayer) {
Expand All @@ -190,19 +163,6 @@ public boolean isEntitlement() {
}
}

// public boolean isExclusiveStrong() {
// return configItem.isExclusiveStrong();
// }

// @Override
// public boolean isDeprecated() {
// try {
// return configItem.isDeprecated();
// } catch (ConfigurationException e) {
// throw alreadyChecked(e);
// }
// }

/**
* We assume that the checks during the definition parsing were good enough to discover any problems
* related to broken configuration.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -477,7 +477,7 @@ public String toString() {
if (getDescription() != null) {
sb.append(",Desc");
}
if (getOutboundMappingBean() != null) {
if (hasOutboundMapping()) {
sb.append(",OUT");
}
if (!getInboundMappingBeans().isEmpty()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -134,9 +134,9 @@ private void processResourceMappings(DataModel model, List<PrismObject<ResourceT
LOGGER.debug("Processing refined association definition for {}", associationDefinition.getItemName());
ResourceDataItem assocItem = model.findResourceItem(resource.getOid(), kind, intent, getObjectClassName(refinedDefinition),
ItemPath.create(associationDefinition.getItemName()));
var outboundMapping = associationDefinition.getOutboundMapping();
var outboundMapping = associationDefinition.getOutboundMappingBean();
if (outboundMapping != null) {
processOutboundMapping(model, assocItem, outboundMapping.value(), null);
processOutboundMapping(model, assocItem, outboundMapping, null);
}
// if (associationDefinition.getAssociationTarget() != null) {
// ResourceObjectTypeDefinition target = associationDefinition.getAssociationTarget();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@

import com.evolveum.midpoint.schema.config.MappingConfigItem;

import com.evolveum.midpoint.util.exception.ConfigurationException;

import org.jetbrains.annotations.NotNull;

import com.evolveum.midpoint.model.impl.lens.LensProjectionContext;
Expand Down Expand Up @@ -95,14 +93,13 @@ protected void initializeProjectionContext() {
}

@Override
List<AssociationEvaluation<AH>> getAssociationsToEvaluate(ConstructionEvaluation<AH, ?> constructionEvaluation)
throws ConfigurationException {
List<AssociationEvaluation<AH>> getAssociationsToEvaluate(ConstructionEvaluation<AH, ?> constructionEvaluation) {
List<AssociationEvaluation<AH>> associationsToEvaluate = new ArrayList<>();

ResourceObjectDefinition objectDefinition = construction.getResourceObjectDefinitionRequired();
for (var associationDefinition : objectDefinition.getAssociationDefinitions()) {
var outboundMapping = associationDefinition.getOutboundMapping();
if (outboundMapping == null) {
var outboundMappingBean = associationDefinition.getOutboundMappingBean();
if (outboundMappingBean == null) {
continue;
}
if (!associationDefinition.isVisible(constructionEvaluation.task)) {
Expand All @@ -111,10 +108,12 @@ List<AssociationEvaluation<AH>> getAssociationsToEvaluate(ConstructionEvaluation
continue;
}

var origin = ConfigurationItemOrigin.inResourceOrAncestor(construction.getResource());

associationsToEvaluate.add(
new AssociationEvaluation<>(
constructionEvaluation, associationDefinition,
outboundMapping,
MappingConfigItem.of(outboundMappingBean, origin),
OriginType.OUTBOUND, MappingKindType.OUTBOUND));
}
return associationsToEvaluate;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,15 +115,10 @@ private <T> void createMappedItemForAttribute(ResourceAttributeDefinition<T> att
return;
}

var inboundMappings = InboundMappingConfigItem.ofList(
inboundMappingBeans,
item -> ConfigurationItemOrigin.inResourceOrAncestor(source.getResource()),
InboundMappingConfigItem.class);

var attributeName = attributeDefinition.getItemName();
List<InboundMappingConfigItem> applicableMappings = // [EP:M:IM] DONE beans are really from the resource
source.selectMappingBeansForEvaluationPhase(
inboundMappings,
createMappingCIs(inboundMappingBeans),
attributeDefinition.getCorrelatorDefinition() != null,
context.getCorrelationItemPaths());
if (applicableMappings.isEmpty()) {
Expand Down Expand Up @@ -182,8 +177,8 @@ private void createMappedItemForAssociation(ShadowAssociationDefinition associat

// 1. Definitions

List<InboundMappingConfigItem> inboundMappings = associationDefinition.getInboundMappings();
if (inboundMappings.isEmpty()) {
var inboundMappingBeans = associationDefinition.getInboundMappingBeans();
if (inboundMappingBeans.isEmpty()) {
return;
}

Expand All @@ -192,7 +187,7 @@ private void createMappedItemForAssociation(ShadowAssociationDefinition associat
String itemDescription = "association " + associationName;
List<InboundMappingConfigItem> applicableMappings =
source.selectMappingBeansForEvaluationPhase(
inboundMappings,
createMappingCIs(inboundMappingBeans),
false,
Set.of()); // Associations are not evaluated before clockwork anyway
if (applicableMappings.isEmpty()) {
Expand Down Expand Up @@ -249,6 +244,13 @@ private void createMappedItemForAssociation(ShadowAssociationDefinition associat
processingMode));
}

private List<InboundMappingConfigItem> createMappingCIs(List<InboundMappingType> inboundMappingBeans) {
return InboundMappingConfigItem.ofList(
inboundMappingBeans,
item -> ConfigurationItemOrigin.inResourceOrAncestor(source.getResource()),
InboundMappingConfigItem.class);
}

/**
* Creates a {@link MappedItem} for "auxiliary object classes" property.
*
Expand Down

0 comments on commit bc4540f

Please sign in to comment.