Skip to content

Commit

Permalink
MID-8842 ninja, moved upgrade validator to schema module, since it co…
Browse files Browse the repository at this point in the history
…uld be used in different places as well (e.g. tasks or gui)
  • Loading branch information
1azyman committed Jun 28, 2023
1 parent 79d3276 commit bfd54fe
Show file tree
Hide file tree
Showing 18 changed files with 212 additions and 176 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package com.evolveum.midpoint.schema.validator;

import org.jetbrains.annotations.NotNull;

import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;

public class ObjectUpgradeValidator {

private final ObjectValidator validator;

public ObjectUpgradeValidator(@NotNull PrismContext prismContext) {

this.validator = new ObjectValidator(prismContext);
}

public void setWarnDeprecated(boolean value) {
this.validator.setWarnDeprecated(value);
}

public void setWarnPlannedRemoval(boolean value) {
this.validator.setWarnPlannedRemoval(value);
}

public void setWarnPlannedRemovalVersion(String value) {
this.validator.setWarnPlannedRemovalVersion(value);
}

public void setWarnIncorrectOids(boolean value) {
this.validator.setWarnIncorrectOids(value);
}

public void showAllWarnings() {
this.validator.setAllWarnings();
}

public <O extends ObjectType> UpgradeValidationResult validate(PrismObject<O> object) {
ValidationResult result = validator.validate(object);

UpgradeObjectsHandler handler = new UpgradeObjectsHandler();
return handler.verify(object, result);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,13 @@
* and European Union Public License. See LICENSE file for details.
*/

package com.evolveum.midpoint.ninja.action.upgrade;
package com.evolveum.midpoint.schema.validator;

import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.schema.validator.UpgradePhase;
import com.evolveum.midpoint.schema.validator.UpgradePriority;
import com.evolveum.midpoint.schema.validator.UpgradeType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;

public interface UpgradeObjectProcessor<T extends ObjectType> {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,16 @@
package com.evolveum.midpoint.ninja.action.upgrade;
package com.evolveum.midpoint.schema.validator;

import java.lang.reflect.Modifier;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

import com.evolveum.midpoint.ninja.Main;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.schema.validator.ValidationItem;
import com.evolveum.midpoint.schema.validator.ValidationResult;
import com.evolveum.midpoint.util.ClassPathUtil;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;

public class UpgradeObjectsHandler {

Expand All @@ -23,7 +21,7 @@ public class UpgradeObjectsHandler {
}

private static List<UpgradeObjectProcessor<?>> initProcessors() {
Set<Class<?>> processors = ClassPathUtil.listClasses(Main.class.getPackageName())
Set<Class<?>> processors = ClassPathUtil.listClasses("com.evolveum.midpoint")
.stream()
.filter(UpgradeObjectProcessor.class::isAssignableFrom)
.filter(c -> !Modifier.isAbstract(c.getModifiers()))
Expand All @@ -42,8 +40,10 @@ private static List<UpgradeObjectProcessor<?>> initProcessors() {
.collect(Collectors.toUnmodifiableList());
}

public UpgradeObjectResult upgrade(PrismObject<?> object, ItemPath path) {
PrismObject cloned = object.clone();
public <T extends ObjectType> UpgradeValidationItem verify(PrismObject<T> object, ValidationItem item) {
ItemPath path = item.getItemPath();

PrismObject<T> cloned = object.clone();

UpgradeObjectProcessor<?> processor = null;
for (UpgradeObjectProcessor<?> p : PROCESSORS) {
Expand All @@ -57,9 +57,9 @@ public UpgradeObjectResult upgrade(PrismObject<?> object, ItemPath path) {
return null;
}

boolean changed = processor.process(cloned);
boolean changed = processor.process((PrismObject) cloned);

UpgradeObjectResult result = new UpgradeObjectResult();
UpgradeValidationItem result = new UpgradeValidationItem(item);
result.setChanged(changed);
result.setIdentifier(processor.getIdentifier());
result.setPhase(processor.getPhase());
Expand All @@ -72,17 +72,16 @@ public UpgradeObjectResult upgrade(PrismObject<?> object, ItemPath path) {
return result;
}

public VerificationResult verify(PrismObject<?> object, ValidationResult result) {
VerificationResult verificationResult = new VerificationResult(result);
public <T extends ObjectType> UpgradeValidationResult verify(PrismObject<T> object, ValidationResult result) {
UpgradeValidationResult verificationResult = new UpgradeValidationResult(result);

for (ValidationItem item : result.getItems()) {
UpgradeObjectResult upgrade = upgrade(object, item.getItemPath());
VerificationResultItem vi = new VerificationResultItem(item, upgrade);

verificationResult.getItems().add(vi);
UpgradeValidationItem upgrade = verify(object, item);
if (upgrade != null) {
verificationResult.getItems().add(upgrade);
}
}

// todo implement
return verificationResult;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.evolveum.midpoint.schema.validator;

public enum UpgradePhase {

BEFORE, AFTER
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.evolveum.midpoint.ninja.action.upgrade;
package com.evolveum.midpoint.schema.validator;

public enum UpgradePriority {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.evolveum.midpoint.ninja.action.upgrade;
package com.evolveum.midpoint.schema.validator;

public enum UpgradeType {

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
package com.evolveum.midpoint.schema.validator;

import com.evolveum.midpoint.prism.delta.ObjectDelta;

public class UpgradeValidationItem {

private final ValidationItem item;

private boolean changed;

private String identifier;

private UpgradePhase phase;

private UpgradePriority priority;

private UpgradeType type;

private ObjectDelta<?> delta;

public UpgradeValidationItem(ValidationItem item) {
this.item = item;
}

public boolean isChanged() {
return changed;
}

public void setChanged(boolean changed) {
this.changed = changed;
}

public String getIdentifier() {
return identifier;
}

public void setIdentifier(String identifier) {
this.identifier = identifier;
}

public UpgradePhase getPhase() {
return phase;
}

public void setPhase(UpgradePhase phase) {
this.phase = phase;
}

public UpgradePriority getPriority() {
return priority;
}

public void setPriority(UpgradePriority priority) {
this.priority = priority;
}

public UpgradeType getType() {
return type;
}

public void setType(UpgradeType type) {
this.type = type;
}

public ObjectDelta<?> getDelta() {
return delta;
}

public void setDelta(ObjectDelta<?> delta) {
this.delta = delta;
}

public ValidationItem getItem() {
return item;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.evolveum.midpoint.schema.validator;

import java.util.ArrayList;
import java.util.List;

import org.jetbrains.annotations.NotNull;

public class UpgradeValidationResult {

private ValidationResult result;

private final List<UpgradeValidationItem> items = new ArrayList<>();

public UpgradeValidationResult(@NotNull ValidationResult result) {
this.result = result;
}

public @NotNull ValidationResult getResult() {
return result;
}

public @NotNull List<UpgradeValidationItem> getItems() {
return items;
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.evolveum.midpoint.ninja.action.upgrade.processor;
package com.evolveum.midpoint.schema.validator.processor;

import com.evolveum.midpoint.ninja.action.upgrade.UpgradePhase;
import com.evolveum.midpoint.ninja.action.upgrade.UpgradePriority;
import com.evolveum.midpoint.ninja.action.upgrade.UpgradeType;
import com.evolveum.midpoint.schema.validator.UpgradePhase;
import com.evolveum.midpoint.schema.validator.UpgradePriority;
import com.evolveum.midpoint.schema.validator.UpgradeType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;

public abstract class RemovedElementProcessor<T extends ObjectType> {//implements UpgradeObjectProcessor<T> {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package com.evolveum.midpoint.ninja.action.upgrade.processor;
package com.evolveum.midpoint.schema.validator.processor;

import java.util.List;

import com.evolveum.midpoint.ninja.action.upgrade.UpgradeObjectProcessor;
import com.evolveum.midpoint.ninja.action.upgrade.UpgradePhase;
import com.evolveum.midpoint.ninja.action.upgrade.UpgradePriority;
import com.evolveum.midpoint.ninja.action.upgrade.UpgradeType;
import com.evolveum.midpoint.schema.validator.UpgradeObjectProcessor;
import com.evolveum.midpoint.schema.validator.UpgradePhase;
import com.evolveum.midpoint.schema.validator.UpgradePriority;
import com.evolveum.midpoint.schema.validator.UpgradeType;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
import java.util.List;
import java.util.concurrent.BlockingQueue;

import com.evolveum.midpoint.prism.*;

import org.apache.commons.io.FileUtils;
import org.jetbrains.annotations.NotNull;

Expand All @@ -21,10 +23,6 @@
import com.evolveum.midpoint.ninja.impl.NinjaApplicationContextLevel;
import com.evolveum.midpoint.ninja.util.NinjaUtils;
import com.evolveum.midpoint.ninja.util.OperationStatus;
import com.evolveum.midpoint.prism.ParsingContext;
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.PrismParser;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;

/**
Expand Down Expand Up @@ -103,8 +101,8 @@ private void verifyFile(File file, VerificationReporter reporter, Writer writer)
PrismParser parser = prismContext.parserFor(file).language(PrismContext.LANG_XML).context(parsingContext);

try {
List<PrismObject<?>> objects = parser.parseObjects();
for (PrismObject<?> object : objects) {
List<PrismObject<? extends Objectable>> objects = parser.parseObjects();
for (PrismObject<? extends Objectable> object : objects) {
reporter.verify(writer, object);
}
} catch (Exception ex) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package com.evolveum.midpoint.ninja.action.upgrade;

import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.schema.validator.UpgradePhase;
import com.evolveum.midpoint.schema.validator.UpgradePriority;
import com.evolveum.midpoint.schema.validator.UpgradeType;

public class UpgradeObjectResult {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.repo.api.RepositoryService;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.schema.validator.UpgradeObjectsHandler;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;

public class UpgradeObjectsConsumerWorker<T extends ObjectType> extends BaseWorker<UpgradeObjectsOptions, T> {
Expand All @@ -38,7 +39,6 @@ public UpgradeObjectsConsumerWorker(
@Override
public void run() {
RepositoryService repository = context.getRepository();
// todo implement

try {
while (!shouldConsumerStop()) {
Expand Down

This file was deleted.

This file was deleted.

0 comments on commit bfd54fe

Please sign in to comment.