Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/Evolveum/midpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Feb 28, 2019
2 parents 4351b23 + 89adcf3 commit 3d0e41d
Show file tree
Hide file tree
Showing 9 changed files with 64 additions and 57 deletions.
2 changes: 1 addition & 1 deletion config/initial-objects/070-task-validity.xml
Expand Up @@ -23,7 +23,7 @@
<executionStatus>runnable</executionStatus>

<category>System</category>
<handlerUri>http://midpoint.evolveum.com/xml/ns/public/model/synchronization/task/focus-validation-scanner/handler-3</handlerUri>
<handlerUri>http://midpoint.evolveum.com/xml/ns/public/model/focus-validity-scanner/handler-3</handlerUri>
<recurrence>recurring</recurrence>
<binding>loose</binding>
<schedule>
Expand Down
Expand Up @@ -88,7 +88,7 @@ public <C extends Containerable> ContainerWrapper createContainerWrapper( Object

result = new OperationResult(CREATE_PROPERTIES);

ContainerWrapper<C> cWrapper = new ContainerWrapper(objectWrapper, container, objectWrapper.getStatus(), status, path);
ContainerWrapper<C> cWrapper = new ContainerWrapper(objectWrapper, container, objectWrapper != null ? objectWrapper.getStatus() : status, status, path);

List<ContainerValueWrapper<C>> containerValues = createContainerValues(cWrapper, path, task);
cWrapper.setProperties(containerValues);
Expand Down
Expand Up @@ -26,6 +26,7 @@
import com.evolveum.midpoint.model.api.context.ModelContext;
import com.evolveum.midpoint.model.api.util.ModelContextUtil;
import com.evolveum.midpoint.model.api.visualizer.Scene;
import com.evolveum.midpoint.prism.Item;
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.PrismProperty;
import com.evolveum.midpoint.prism.path.ItemPath;
Expand Down Expand Up @@ -945,8 +946,12 @@ public OperationResult getTaskOperationResult() {
return taskOperationResult;
}

public PrismProperty getExtensionProperty(QName propertyName) {
return taskType.asPrismObject().findProperty(ItemPath.create(TaskType.F_EXTENSION, propertyName));
public Item getExtensionItem(QName itemName) {
return taskType.asPrismObject().findItem(ItemPath.create(TaskType.F_EXTENSION, itemName));
}

public PrismProperty getExtensionProperty(QName itemName) {
return taskType.asPrismObject().findProperty(ItemPath.create(TaskType.F_EXTENSION, itemName));
}

public <T> T getExtensionPropertyRealValue(QName propertyName, Class<T> clazz) {
Expand Down Expand Up @@ -1205,7 +1210,8 @@ public boolean isShadowIntegrityCheck() {
}

public boolean isFocusValidityScanner() {
return getHandlerUriList().contains(ModelPublicConstants.FOCUS_VALIDITY_SCANNER_TASK_HANDLER_URI);
return getHandlerUriList().contains(ModelPublicConstants.FOCUS_VALIDITY_SCANNER_TASK_HANDLER_URI)
|| getHandlerUriList().contains(ModelPublicConstants.DEPRECATED_FOCUS_VALIDITY_SCANNER_TASK_HANDLER_URI);
}

public boolean isJdbcPing() {
Expand Down
Expand Up @@ -29,7 +29,7 @@
import java.util.Collections;

import static com.evolveum.midpoint.schema.constants.SchemaConstants.*;
import static com.evolveum.midpoint.web.page.admin.server.handlers.dto.GenericHandlerDto.item;
import static com.evolveum.midpoint.web.page.admin.server.handlers.dto.GenericHandlerDto.extensionItem;

/**
* @author mederly
Expand Down Expand Up @@ -58,30 +58,30 @@ public HandlerDto createDtoForTask(TaskDto taskDto, PageBase pageBase, Task opTa
return new ExecuteChangesHandlerDto(taskDto);
} else if (taskDto.isShadowIntegrityCheck()) {
return new GenericHandlerDto(taskDto, Arrays.asList(
item(MODEL_EXTENSION_OBJECT_QUERY, QueryType.class),
item(MODEL_EXTENSION_DIAGNOSE, String.class),
item(MODEL_EXTENSION_FIX, String.class),
item(MODEL_EXTENSION_DRY_RUN, Boolean.class),
item(MODEL_EXTENSION_DUPLICATE_SHADOWS_RESOLVER, String.class),
item(MODEL_EXTENSION_CHECK_DUPLICATES_ON_PRIMARY_IDENTIFIERS_ONLY, Boolean.class)), pageBase);
extensionItem(MODEL_EXTENSION_OBJECT_QUERY, QueryType.class),
extensionItem(MODEL_EXTENSION_DIAGNOSE, String.class),
extensionItem(MODEL_EXTENSION_FIX, String.class),
extensionItem(MODEL_EXTENSION_DRY_RUN, Boolean.class),
extensionItem(MODEL_EXTENSION_DUPLICATE_SHADOWS_RESOLVER, String.class),
extensionItem(MODEL_EXTENSION_CHECK_DUPLICATES_ON_PRIMARY_IDENTIFIERS_ONLY, Boolean.class)), pageBase);
} else if (taskDto.isCleanup()) {
return new GenericHandlerDto(taskDto, Collections.singletonList(
item(MODEL_EXTENSION_CLEANUP_POLICIES, CleanupPoliciesType.class)), pageBase);
extensionItem(MODEL_EXTENSION_CLEANUP_POLICIES, CleanupPoliciesType.class)), pageBase);
} else if (taskDto.isNoOp()) {
return new GenericHandlerDto(taskDto, Arrays.asList(
item(SchemaConstants.NOOP_STEPS_QNAME, Integer.class),
item(SchemaConstants.NOOP_DELAY_QNAME, Integer.class)), pageBase);
extensionItem(SchemaConstants.NOOP_STEPS_QNAME, Integer.class),
extensionItem(SchemaConstants.NOOP_DELAY_QNAME, Integer.class)), pageBase);
} else if (taskDto.isReportCreate()) {
return new ReportCreateHandlerDto(taskDto);
} else if (taskDto.isJdbcPing()) {
return new GenericHandlerDto(taskDto, Arrays.asList(
item(SchemaConstants.JDBC_PING_TESTS_QNAME, Integer.class),
item(SchemaConstants.JDBC_PING_INTERVAL_QNAME, Integer.class),
item(SchemaConstants.JDBC_PING_TEST_QUERY_QNAME, String.class),
item(SchemaConstants.JDBC_PING_JDBC_URL_QNAME, String.class),
item(SchemaConstants.JDBC_PING_JDBC_USERNAME_QNAME, String.class),
extensionItem(SchemaConstants.JDBC_PING_TESTS_QNAME, Integer.class),
extensionItem(SchemaConstants.JDBC_PING_INTERVAL_QNAME, Integer.class),
extensionItem(SchemaConstants.JDBC_PING_TEST_QUERY_QNAME, String.class),
extensionItem(SchemaConstants.JDBC_PING_JDBC_URL_QNAME, String.class),
extensionItem(SchemaConstants.JDBC_PING_JDBC_USERNAME_QNAME, String.class),
//item(SchemaConstants.JDBC_PING_JDBC_PASSWORD_QNAME, String.class),
item(SchemaConstants.JDBC_PING_LOG_ON_INFO_LEVEL_QNAME, Boolean.class)
extensionItem(SchemaConstants.JDBC_PING_LOG_ON_INFO_LEVEL_QNAME, Boolean.class)
), pageBase);
} else {
return new HandlerDto(taskDto);
Expand Down
Expand Up @@ -23,78 +23,74 @@
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.util.exception.SystemException;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.prism.*;
import com.evolveum.midpoint.web.page.admin.server.dto.TaskDto;
import org.jetbrains.annotations.NotNull;

import javax.xml.namespace.QName;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
* @author mederly
*/
public class GenericHandlerDto extends HandlerDto {

private static final Trace LOGGER = TraceManager.getTrace(GenericHandlerDto.class);

public static final String F_CONTAINER = "container";

public static class Item implements Serializable {
@NotNull private QName name;
@NotNull private Class<?> type;
public static class ExtensionItem implements Serializable {
@NotNull private final QName name;
@NotNull private final Class<?> type;

public Item(@NotNull QName name, @NotNull Class<?> type) {
public ExtensionItem(@NotNull QName name, @NotNull Class<?> type) {
this.name = name;
this.type = type;
}
}

public static Item item(QName name, Class<?> type) {
return new Item(name, type);
public static ExtensionItem extensionItem(QName name, Class<?> type) {
return new ExtensionItem(name, type);
}

@NotNull private List<Item> items;
private final List<ItemWrapper> propertyWrappers = new ArrayList<>();
private final ContainerWrapper containerWrapper;

public GenericHandlerDto(TaskDto taskDto, @NotNull List<Item> items, PageBase pageBase) {
public GenericHandlerDto(TaskDto taskDto, @NotNull List<ExtensionItem> extensionItems, PageBase pageBase) {
super(taskDto);
this.items = items;
for (Item item : items) {
PrismProperty<?> property = taskDto.getExtensionProperty(item.name);
if (property != null) {
PropertyWrapper propertyWrapper = new PropertyWrapper<>(null, property, true, ValueStatus.NOT_CHANGED, pageBase.getPrismContext());
propertyWrappers.add(propertyWrapper);
} else {
// TODO create empty property?
}
}
PrismContext prismContext = pageBase.getPrismContext();
ContainerWrapperFactory cwf = new ContainerWrapperFactory(pageBase);

final PrismContext prismContext = pageBase.getPrismContext();
PrismContainer container = prismContext.itemFactory().createContainer(new QName("test"));
ComplexTypeDefinition ctd = prismContext.definitionFactory().createComplexTypeDefinition(new QName("Test"));
int displayOrder = 1;
for (Item item : items) {
PrismProperty<?> property = taskDto.getExtensionProperty(item.name);
MutablePrismPropertyDefinition<?> clonedDefinition = null;
if (property != null) {
for (ExtensionItem extensionItem : extensionItems) {
Item<?,?> item = taskDto.getExtensionItem(extensionItem.name);
MutableItemDefinition<?> clonedDefinition = null;
if (item != null) {
try {
PrismProperty<?> clonedProperty = property.clone();
container.add(clonedProperty);
if (clonedProperty.getDefinition() != null) {
clonedDefinition = clonedProperty.getDefinition().clone().toMutable();
clonedProperty.setDefinition((PrismPropertyDefinition) clonedDefinition);
Item<?,?> clonedItem = item.clone();
//noinspection unchecked
container.add(clonedItem);
if (clonedItem.getDefinition() != null) {
clonedDefinition = clonedItem.getDefinition().clone().toMutable();
//noinspection unchecked
((Item) clonedItem).setDefinition(clonedDefinition);
}
} catch (SchemaException e) {
throw new SystemException(e);
}
}
if (clonedDefinition == null) {
clonedDefinition = CloneUtil.clone(prismContext.getSchemaRegistry().findPropertyDefinitionByElementName(item.name)).toMutable();
ItemDefinition definition = prismContext.getSchemaRegistry().findItemDefinitionByElementName(extensionItem.name);
if (definition != null) {
clonedDefinition = CloneUtil.clone(definition).toMutable();
}
}
if (clonedDefinition == null) {
System.out.println("Definition-less property " + item.name); // TODO
LOGGER.warn("Extension item without definition: {} of {}", extensionItem.name, extensionItem.type);
} else {
clonedDefinition.setCanAdd(false);
clonedDefinition.setCanModify(false);
Expand All @@ -104,8 +100,10 @@ public GenericHandlerDto(TaskDto taskDto, @NotNull List<Item> items, PageBase pa
displayOrder++;
}
MutablePrismContainerDefinition<?> containerDefinition = prismContext.definitionFactory().createContainerDefinition(new QName("Handler data"), ctd);
//noinspection unchecked
container.setDefinition(containerDefinition);
Task task = pageBase.createSimpleTask("Adding new container wrapper");
//noinspection unchecked
containerWrapper = cwf.createContainerWrapper(null, container, ContainerStatus.MODIFYING, ItemPath.EMPTY_PATH, true, task);
}

Expand Down
Expand Up @@ -23,7 +23,7 @@
<executionStatus>runnable</executionStatus>

<category>System</category>
<handlerUri>http://midpoint.evolveum.com/xml/ns/public/model/synchronization/task/focus-validation-scanner/handler-3</handlerUri>
<handlerUri>http://midpoint.evolveum.com/xml/ns/public/model/focus-validity-scanner/handler-3</handlerUri>
<recurrence>recurring</recurrence>
<binding>loose</binding>
<schedule>
Expand Down
Expand Up @@ -28,7 +28,7 @@
<ownerRef oid="00000000-0000-0000-0000-000000000002"/>
<executionStatus>runnable</executionStatus>

<handlerUri>http://midpoint.evolveum.com/xml/ns/public/model/synchronization/task/focus-validation-scanner/handler-3</handlerUri>
<handlerUri>http://midpoint.evolveum.com/xml/ns/public/model/focus-validity-scanner/handler-3</handlerUri>
<recurrence>recurring</recurrence>
<binding>tight</binding>
<schedule>
Expand Down
Expand Up @@ -1397,8 +1397,11 @@ private List<?> getSubtasks(Object task, OperationResult result) throws SchemaEx
return ((Task) task).listSubtasks(result);
} else if (task instanceof TaskType) {
return listPersistentSubtasksForTask(((TaskType) task).getTaskIdentifier(), result);
} else if (task instanceof PrismObject<?>) {
//noinspection unchecked
return listPersistentSubtasksForTask(((PrismObject<TaskType>) task).asObjectable().getTaskIdentifier(), result);
} else {
throw new IllegalArgumentException("task: " + task);
throw new IllegalArgumentException("task: " + task + " (of class " + (task != null ? task.getClass() : "null") + ")");
}
}

Expand Down
Expand Up @@ -28,7 +28,7 @@
<ownerRef oid="00000000-0000-0000-0000-000000000002"/>
<executionStatus>runnable</executionStatus>

<handlerUri>http://midpoint.evolveum.com/xml/ns/public/model/synchronization/task/focus-validation-scanner/handler-3</handlerUri>
<handlerUri>http://midpoint.evolveum.com/xml/ns/public/model/focus-validity-scanner/handler-3</handlerUri>
<recurrence>recurring</recurrence>
<binding>tight</binding>
<schedule>
Expand Down

0 comments on commit 3d0e41d

Please sign in to comment.