Skip to content

Commit

Permalink
adding test for merging system configuration from initial objects
Browse files Browse the repository at this point in the history
  • Loading branch information
skublik committed Sep 11, 2023
1 parent 209f2dd commit 16aaeef
Show file tree
Hide file tree
Showing 7 changed files with 4,531 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,89 @@ static Map<Class<?>, Supplier<ItemMerger>> createStandardTypeSpecificMergersMap(
() -> new GenericItemMerger(marker, DefaultNaturalKeyImpl.of(AbstractAuthenticationModuleType.F_IDENTIFIER))),
entry(
AuthenticationSequenceType.class,
() -> new GenericItemMerger(marker, DefaultNaturalKeyImpl.of(AuthenticationSequenceType.F_IDENTIFIER)))
() -> new GenericItemMerger(marker, DefaultNaturalKeyImpl.of(AuthenticationSequenceType.F_IDENTIFIER))),
entry(
ClassLoggerConfigurationType.class,
() -> new GenericItemMerger(marker, DefaultNaturalKeyImpl.of(ClassLoggerConfigurationType.F_PACKAGE))),
entry(
AppenderConfigurationType.class,
() -> new GenericItemMerger(marker, DefaultNaturalKeyImpl.of(AppenderConfigurationType.F_NAME))),
entry(
TracingProfileType.class,
() -> new GenericItemMerger(marker, DefaultNaturalKeyImpl.of(TracingProfileType.F_NAME))),
entry(
HomePageType.class,
() -> new GenericItemMerger(marker, DefaultNaturalKeyImpl.of(HomePageType.F_IDENTIFIER))),
entry(
PreviewContainerPanelConfigurationType.class,
() -> new GenericItemMerger(marker, DefaultNaturalKeyImpl.of(PreviewContainerPanelConfigurationType.F_IDENTIFIER))),
entry(
UserInterfaceFeatureType.class,
() -> new GenericItemMerger(marker, DefaultNaturalKeyImpl.of(UserInterfaceFeatureType.F_IDENTIFIER))),
entry(
SearchItemType.class,
() -> new GenericItemMerger(
marker,
DefaultNaturalKeyImpl.of(
SearchItemType.F_PATH, SearchItemType.F_FILTER, SearchItemType.F_FILTER_EXPRESSION))),
entry(
GuiObjectDetailsPageType.class,
() -> new GenericItemMerger(marker, DefaultNaturalKeyImpl.of(GuiObjectDetailsPageType.F_TYPE))),
entry(
VirtualContainerItemSpecificationType.class,
() -> new GenericItemMerger(
marker,
DefaultNaturalKeyImpl.of(VirtualContainerItemSpecificationType.F_PATH))),
entry(
GuiResourceDetailsPageType.class,
() -> new GenericItemMerger(
marker,
DefaultNaturalKeyImpl.of(GuiResourceDetailsPageType.F_CONNECTOR_REF))),
entry(
RoleCollectionViewType.class,
() -> new GenericItemMerger(marker, DefaultNaturalKeyImpl.of(RoleCollectionViewType.F_IDENTIFIER))),
entry(
RichHyperlinkType.class,
() -> new GenericItemMerger(marker, DefaultNaturalKeyImpl.of(RichHyperlinkType.F_TARGET_URL))),
entry(
ExpressionProfileType.class,
() -> new GenericItemMerger(marker, DefaultNaturalKeyImpl.of(ExpressionProfileType.F_IDENTIFIER))),
entry(
ExpressionEvaluatorProfileType.class,
() -> new GenericItemMerger(marker, DefaultNaturalKeyImpl.of(ExpressionEvaluatorProfileType.F_TYPE))),
entry(
ScriptLanguageExpressionProfileType.class,
() -> new GenericItemMerger(
marker, DefaultNaturalKeyImpl.of(ScriptLanguageExpressionProfileType.F_LANGUAGE))),
entry(
ExpressionPermissionProfileType.class,
() -> new GenericItemMerger(
marker,
DefaultNaturalKeyImpl.of(ExpressionPermissionProfileType.F_IDENTIFIER))),
entry(
ExpressionPermissionPackageProfileType.class,
() -> new GenericItemMerger(
marker,
DefaultNaturalKeyImpl.of(ExpressionPermissionPackageProfileType.F_NAME))),
entry(
ExpressionPermissionClassProfileType.class,
() -> new GenericItemMerger(
marker,
DefaultNaturalKeyImpl.of(ExpressionPermissionClassProfileType.F_NAME))),
entry(
ExpressionPermissionMethodProfileType.class,
() -> new GenericItemMerger(
marker,
DefaultNaturalKeyImpl.of(ExpressionPermissionMethodProfileType.F_NAME))),
entry(
TracingTypeProfileType.class,
() -> new GenericItemMerger(
marker,
DefaultNaturalKeyImpl.of(
TracingTypeProfileType.F_LEVEL, TracingTypeProfileType.F_OPERATION_TYPE))),
entry(
ClassLoggerLevelOverrideType.class,
() -> new GenericItemMerger(marker, DefaultNaturalKeyImpl.of(ClassLoggerLevelOverrideType.F_LOGGER)))
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.SecurityPolicyType;

import com.evolveum.midpoint.xml.ns._public.common.common_3.SystemConfigurationType;

import org.apache.commons.lang3.Validate;

import java.lang.reflect.InvocationTargetException;
Expand All @@ -27,7 +29,8 @@ public class ObjectMergeOperation {

public static final Map<Class<? extends ObjectType>, Class<? extends BaseMergeOperation>> MERGE_OPERATIONS = Map.ofEntries(
entry(LookupTableType.class, LookupTableMergeOperation.class),
entry(SecurityPolicyType.class, SecurityPolicyMergeOperation.class)
entry(SecurityPolicyType.class, SecurityPolicyMergeOperation.class),
entry(SystemConfigurationType.class, SystemConfigurationMergeOperation.class)
);

public static <O extends ObjectType> boolean hasMergeOperationFor(PrismObject<O> target) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/*
* Copyright (C) 2010-2023 Evolveum and contributors
*
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
*/

package com.evolveum.midpoint.schema.merger.object;

import com.evolveum.midpoint.schema.merger.BaseMergeOperation;
import com.evolveum.midpoint.schema.merger.GenericItemMerger;
import com.evolveum.midpoint.schema.merger.OriginMarker;
import com.evolveum.midpoint.xml.ns._public.common.common_3.SecurityPolicyType;

import com.evolveum.midpoint.xml.ns._public.common.common_3.SystemConfigurationType;

import org.apache.commons.configuration2.SystemConfiguration;
import org.jetbrains.annotations.NotNull;

import java.util.Map;

public class SystemConfigurationMergeOperation extends BaseMergeOperation<SystemConfigurationType> {

public SystemConfigurationMergeOperation(
@NotNull SystemConfigurationType target,
@NotNull SystemConfigurationType source) {

super(target,
source,
new GenericItemMerger(
OriginMarker.forOid(source.getOid(), SystemConfigurationType.COMPLEX_TYPE),
createPathMap(Map.of())));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,11 @@ public void test20SecurityPolicyMergeOperation() throws Exception {
testMergeOperation("security-policy");
}

@Test
public void test30SystemConfigurationMergeOperation() throws Exception {
testMergeOperation("system-configuration");
}

private void testMergeOperation(String fileNamePrefix) throws IOException, SchemaException, ConfigurationException {
PrismObject<LookupTableType> source = getPrismContext().parseObject(new File(TEST_ROOT_DIR, fileNamePrefix + "-source.xml"));
PrismObject<LookupTableType> target = getPrismContext().parseObject(new File(TEST_ROOT_DIR, fileNamePrefix + "-target.xml"));
Expand Down

0 comments on commit 16aaeef

Please sign in to comment.