Skip to content

Commit

Permalink
MID-8842 upgrade objects step, object processor added
Browse files Browse the repository at this point in the history
  • Loading branch information
1azyman committed May 31, 2023
1 parent f4f45ba commit a9c915c
Show file tree
Hide file tree
Showing 8 changed files with 82 additions and 27 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/*
* 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.ninja.action.upgrade;

import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;

public interface UpgradeObjectProcessor<T extends ObjectType> {

UpgradePhase getPhase();

<O extends ObjectType> boolean isApplicable(Class<O> type);

/**
* Updates object to correct form
*
* @param object
* @param result
* @return true if object needs to be updated (saved) in midpoint repository, false otherwise
*/
boolean processObject(PrismObject<T> object, OperationResult result);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.evolveum.midpoint.ninja.action.upgrade;

public enum UpgradePhase {

BEFORE, AFTER;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.evolveum.midpoint.ninja.action.upgrade.handler;

import com.evolveum.midpoint.ninja.action.upgrade.UpgradePhase;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType;

public class AddRemoveAttributeValuesProcessor extends RemovedElementProcessor<ResourceType> {

@Override
public UpgradePhase getPhase() {
return UpgradePhase.BEFORE;
}

@Override
public <O extends ObjectType> boolean isApplicable(Class<O> type) {
return ResourceType.class.isAssignableFrom(type);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.evolveum.midpoint.ninja.action.upgrade.handler;

import com.evolveum.midpoint.ninja.action.upgrade.UpgradeObjectProcessor;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;

public abstract class RemovedElementProcessor<T extends ObjectType> implements UpgradeObjectProcessor<T> {

@Override
public boolean processObject(PrismObject<T> object, OperationResult result) {
return true;
}
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,12 +1,19 @@
package com.evolveum.midpoint.ninja.action.upgrade.step;

import com.evolveum.midpoint.ninja.Main;
import com.evolveum.midpoint.ninja.action.upgrade.StepResult;
import com.evolveum.midpoint.ninja.action.upgrade.UpgradeObjectProcessor;
import com.evolveum.midpoint.ninja.action.upgrade.UpgradeStep;
import com.evolveum.midpoint.ninja.action.upgrade.UpgradeStepsContext;

import com.evolveum.midpoint.util.ClassPathUtil;

import org.jetbrains.annotations.NotNull;

import java.io.File;
import java.lang.reflect.Modifier;
import java.util.Set;
import java.util.stream.Collectors;

public abstract class UpgradeObjectsStep implements UpgradeStep<StepResult> {

Expand All @@ -26,6 +33,14 @@ public StepResult execute() throws Exception {
// go through all oids that need to be updated
// if csv not available go through all

Set<Class<?>> classes = ClassPathUtil.listClasses(Main.class.getPackageName());
Set<Class<?>> processors = classes.stream()
.filter(UpgradeObjectProcessor.class::isAssignableFrom)
.filter(c -> !Modifier.isAbstract(c.getModifiers()))
.collect(Collectors.toUnmodifiableSet());

System.out.println("Found " + processors.size() + " upgrade rules");

return null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
public class JansiTest {

@Test//(enabled = false)
public void testJANSI() throws Exception{
public void testJANSI() throws Exception {
AnsiConsole.systemInstall();

// System.out.print(Ansi.ansi().a("vilko\n"));
Expand Down

0 comments on commit a9c915c

Please sign in to comment.