Skip to content

Commit

Permalink
MID-8842 copied ninja code to support-4.4 (2eb437f)
Browse files Browse the repository at this point in the history
  • Loading branch information
1azyman committed Jun 20, 2023
1 parent 8d9ac99 commit ad942dc
Show file tree
Hide file tree
Showing 18 changed files with 149 additions and 306 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -89,9 +89,13 @@ protected <T> void run(String[] args) {

context = new NinjaContext(allOptions, action.getApplicationContextLevel(allOptions));

action.init(context, options);
try {
action.init(context, options);

action.execute();
action.execute();
} finally {
action.destroy();
}
} catch (Exception ex) {
handleException(base, ex);
} finally {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,10 @@ public void init(NinjaContext context, O options) {
this.context.setLog(log);
}

public void destroy() {

}

private Log.LogLevel getLogLevel(NinjaContext context) {
BaseOptions base = context.getOptions(BaseOptions.class);
if (base == null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,6 @@ public class ExportOptions extends BaseImportExportOptions implements BasicExpor
public static final String P_OVERWRITE = "-O";
public static final String P_OVERWRITE_LONG = "--overwrite";

// TODO not supported yet
public static final String P_SPLIT = "-n";
public static final String P_SPLIT_LONG = "-split";

public static final String P_NO_IDS = "-ni";
public static final String P_NO_IDS_LONG = "--no-container-ids";

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,7 @@ public Void execute() throws Exception {

setScriptsDefaults(mode, options);

ConnectionOptions opts = context.getOptions(ConnectionOptions.class);
if (mode == RunSqlOptions.Mode.RAW || opts == null || StringUtils.isEmpty(opts.getMidpointHome())) {
if (mode == RunSqlOptions.Mode.RAW || preferCustomJdbcConnection(context.getAllOptions())) {
log.info("Running scripts in raw mode using custom JDBC url/username/password options.");

if (options.getScripts().isEmpty()) {
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,28 +1,21 @@
package com.evolveum.midpoint.ninja.action;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Writer;
import java.util.Collection;
import java.util.List;

import com.evolveum.midpoint.ninja.impl.NinjaApplicationContextLevel;

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

import com.evolveum.midpoint.ninja.action.verify.VerificationReporter;
import com.evolveum.midpoint.ninja.impl.NinjaApplicationContextLevel;
import com.evolveum.midpoint.ninja.util.NinjaUtils;
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.schema.validator.ObjectValidator;
import com.evolveum.midpoint.schema.validator.ValidationItem;
import com.evolveum.midpoint.schema.validator.ValidationResult;
import com.evolveum.midpoint.util.LocalizableMessage;

import org.jetbrains.annotations.NotNull;

// todo finish
public class VerifyFilesAction extends Action<VerifyFilesOptions, Void> {

@Override
Expand All @@ -32,70 +25,51 @@ public class VerifyFilesAction extends Action<VerifyFilesOptions, Void> {

@Override
public Void execute() throws Exception {
for (File file : options.getFiles()) {
if (!file.isDirectory()) {
validateFile(file);
} else {
Collection<File> children = FileUtils.listFiles(file, new String[] { "xml" }, true);
for (File child : children) {
if (child.isDirectory()) {
continue;
}
VerificationReporter reporter = new VerificationReporter(options, context.getPrismContext());

try (Writer writer = NinjaUtils.createWriter(options.getOutput(), context.getCharset(), options.isZip(), options.isOverwrite())) {
String prolog = reporter.getProlog();
if (prolog != null) {
writer.write(prolog);
}

validateFile(child);
for (File file : options.getFiles()) {
if (!file.isDirectory()) {
validateFile(file, reporter, writer);
} else {
Collection<File> children = FileUtils.listFiles(file, new String[] { "xml" }, true);
for (File child : children) {
if (child.isDirectory()) {
continue;
}

validateFile(child, reporter, writer);
}
}
}

String epilog = reporter.getEpilog();
if (epilog != null) {
writer.write(epilog);
}
}

return null;
}

private void validateFile(File file) {
private void validateFile(File file, VerificationReporter reporter, Writer writer) {
PrismContext prismContext = context.getPrismContext();
ParsingContext parsingContext = prismContext.createParsingContextForCompatibilityMode();
PrismParser parser = prismContext.parserFor(file).language(PrismContext.LANG_XML).context(parsingContext);

ObjectValidator validator = new ObjectValidator(context.getPrismContext());
validator.setAllWarnings();

try (Writer writer = new PrintWriter(System.out)) {
try {
List<PrismObject<?>> objects = parser.parseObjects();

for (PrismObject<?> object : objects) {
ValidationResult validationResult = validator.validate(object);

for (ValidationItem validationItem : validationResult.getItems()) {
writeValidationItem(writer, object, validationItem);
}
reporter.verify(writer, object);
}
} catch (Exception ex) {
// todo handle error
ex.printStackTrace();
}
}

private void writeValidationItem(Writer writer, PrismObject<?> object, ValidationItem validationItem) throws IOException {
if (validationItem.getStatus() != null) {
writer.append(validationItem.getStatus().toString());
writer.append(" ");
} else {
writer.append("INFO ");
}
writer.append(object.toString());
writer.append(" ");
if (validationItem.getItemPath() != null) {
writer.append(validationItem.getItemPath().toString());
writer.append(" ");
}
writeMessage(writer, validationItem.getMessage());
writer.append("\n");
}

private void writeMessage(Writer writer, LocalizableMessage message) throws IOException {
if (message == null) {
return;
}
// TODO: localization?
writer.append(message.getFallbackMessage());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,38 +9,72 @@
import com.beust.jcommander.Parameter;
import com.beust.jcommander.Parameters;

import java.io.File;
import com.evolveum.midpoint.ninja.util.EnumConverterValidator;

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

/**
* @author semancik
*/
@Parameters(resourceBundle = "messages", commandDescriptionKey = "verify")
public class VerifyOptions extends ExportOptions {

public static final String P_WARN = "-w";
public static final String P_WARN_LONG = "--warn";
public enum ReportStyle {
PLAIN,

CSV
}

static class ReportStyleConverter extends EnumConverterValidator<ReportStyle> {

public ReportStyleConverter() {
super(VerifyOptions.ReportStyle.class);
}
}

public enum VerificationCategory {

DEPRECATED,

PLANNED_REMOVAL,

INCORRECT_OIDS
}

static class VerificationCategoryConverter extends EnumConverterValidator<VerificationCategory> {

public VerificationCategoryConverter() {
super(VerificationCategory.class);
}
}

public static final String P_VERIFICATION_CATEGORY_LONG = "--verification-category";

public static final String P_CREATE_REPORT = "--report";
public static final String P_REPORT_STYLE = "--report-style";

@Parameter(names = { P_WARN, P_WARN_LONG }, descriptionKey = "verify.warn")
private String warn;
@Parameter(names = { P_VERIFICATION_CATEGORY_LONG }, descriptionKey = "verify.verificationCategory",
converter = VerificationCategoryConverter.class, validateWith = VerificationCategoryConverter.class,
variableArity = true)
private List<VerificationCategory> verificationCategories = new ArrayList<>();

@Parameter(names = { P_CREATE_REPORT }, descriptionKey = "verify.report")
private File report;
@Parameter(names = { P_REPORT_STYLE }, descriptionKey = "verify.reportStyle",
converter = ReportStyleConverter.class, validateWith = ReportStyleConverter.class)
private ReportStyle reportStyle = ReportStyle.PLAIN;

public String getWarn() {
return warn;
public List<VerificationCategory> getVerificationCategories() {
return verificationCategories;
}

public void setWarn(String warn) {
this.warn = warn;
public void setVerificationCategories(List<VerificationCategory> verificationCategories) {
this.verificationCategories = verificationCategories;
}

public File getReport() {
return report;
public ReportStyle getReportStyle() {
return reportStyle;
}

public void setReport(File report) {
this.report = report;
public void setReportStyle(ReportStyle reportStyle) {
this.reportStyle = reportStyle;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,14 @@
package com.evolveum.midpoint.ninja.action.mining;

import static com.evolveum.midpoint.common.RoleMiningExportUtils.*;
import static com.evolveum.midpoint.repo.api.RepositoryService.LOGGER;
import static com.evolveum.midpoint.security.api.MidPointPrincipalManager.DOT_CLASS;

import java.io.IOException;
import java.io.Writer;
import java.util.List;
import java.util.concurrent.BlockingQueue;

import com.evolveum.midpoint.util.logging.Trace;

import com.evolveum.midpoint.util.logging.TraceManager;

import org.jetbrains.annotations.NotNull;

import com.evolveum.midpoint.common.RoleMiningExportUtils;
Expand All @@ -43,8 +40,6 @@

public class ExportMiningConsumerWorker extends AbstractWriterConsumerWorker<ExportMiningOptions, FocusType> {

public static final Trace LOGGER = TraceManager.getTrace(ExportMiningConsumerWorker.class);

OperationResult operationResult = new OperationResult(DOT_CLASS + "searchObjectByCondition");

private PrismSerializer<String> serializer;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.evolveum.midpoint.ninja.action.upgrade;

import java.io.File;
import java.util.stream.Collectors;

import org.apache.commons.io.FileUtils;

Expand Down Expand Up @@ -53,7 +52,7 @@ public Void execute() throws Exception {
upgradeRepositoryOpts.setMode(RunSqlOptions.Mode.REPOSITORY);
upgradeRepositoryOpts.setScripts(RunSqlOptions.Mode.REPOSITORY.updateScripts.stream()
.map(f -> new File(installationDirectory, f.getPath()))
.collect(Collectors.toList()));
.toList());

RunSqlAction upgradeRepositoryAction = new RunSqlAction();
upgradeRepositoryAction.init(context, upgradeRepositoryOpts);
Expand All @@ -64,7 +63,7 @@ public Void execute() throws Exception {
upgradeAuditOpts.setMode(RunSqlOptions.Mode.AUDIT);
upgradeRepositoryOpts.setScripts(RunSqlOptions.Mode.AUDIT.updateScripts.stream()
.map(f -> new File(installationDirectory, f.getPath()))
.collect(Collectors.toList()));
.toList());

RunSqlAction upgradeAuditAction = new RunSqlAction();
upgradeAuditAction.init(context, upgradeAuditOpts);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@

public interface UpgradeObjectProcessor<T extends ObjectType> {

// todo implement
// String getIdentifier();

UpgradePhase getPhase();

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

0 comments on commit ad942dc

Please sign in to comment.