Skip to content

Commit

Permalink
Fix deriving archetype OID from legacy handler URI
Browse files Browse the repository at this point in the history
This should fix NPEs when creating task in GUI.
  • Loading branch information
mederly committed Jul 6, 2021
1 parent da752b9 commit e8d01ed
Show file tree
Hide file tree
Showing 43 changed files with 155 additions and 86 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,11 @@
import com.evolveum.midpoint.gui.api.factory.wrapper.WrapperContext;
import com.evolveum.midpoint.gui.api.prism.wrapper.*;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.api.util.WebPrismUtil;
import com.evolveum.midpoint.gui.impl.prism.panel.ItemPanelSettings;
import com.evolveum.midpoint.gui.impl.prism.panel.ItemPanelSettingsBuilder;
import com.evolveum.midpoint.prism.PrismContainerValue;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.schema.constants.ObjectTypes;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.schema.util.ObjectTypeUtil;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.task.api.TaskHandler;
import com.evolveum.midpoint.util.exception.SchemaException;
Expand Down Expand Up @@ -79,7 +75,8 @@ protected void onUpdatePerformed(AjaxRequestTarget target) {
}

if (!WebComponentUtil.hasAnyArchetypeAssignment(getTask())) {
WebComponentUtil.addNewArchetype(TaskBasicTabPanel.this.getModelObject(), taskHandler.getArchetypeOid(), target, getPageBase());
String archetypeOid = taskHandler.getArchetypeOid(newHandlerUri);
WebComponentUtil.addNewArchetype(TaskBasicTabPanel.this.getModelObject(), archetypeOid, target, getPageBase());
}

PrismObjectWrapperFactory<TaskType> wrapperFactory = TaskBasicTabPanel.this.getPageBase().findObjectWrapperFactory(getTask().asPrismObject().getDefinition());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import com.evolveum.midpoint.xml.ns._public.common.common_3.SystemObjectsType;

import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

Expand Down Expand Up @@ -108,7 +109,7 @@ public String getCategoryName(Task task) {
}

@Override
public String getArchetypeOid() {
public String getArchetypeOid(@Nullable String handlerUri) {
return SystemObjectsType.ARCHETYPE_CERTIFICATION_TASK.value();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
import com.evolveum.prism.xml.ns._public.types_3.PolyStringType;
import org.apache.commons.lang.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
Expand Down Expand Up @@ -243,7 +244,7 @@ public String getCategoryName(Task task) {
}

@Override
public String getArchetypeOid() {
public String getArchetypeOid(@Nullable String handlerUri) {
return SystemObjectsType.ARCHETYPE_CERTIFICATION_TASK.value();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType;
import com.evolveum.prism.xml.ns._public.types_3.PolyStringType;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
Expand Down Expand Up @@ -158,7 +159,7 @@ public String getCategoryName(Task task) {
}

@Override
public String getArchetypeOid() {
public String getArchetypeOid(@Nullable String handlerUri) {
return SystemObjectsType.ARCHETYPE_CERTIFICATION_TASK.value();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
import com.evolveum.midpoint.model.api.AccessCertificationService;
import com.evolveum.midpoint.model.api.ModelPublicConstants;
import com.evolveum.midpoint.model.impl.tasks.ModelActivityHandler;
import com.evolveum.midpoint.repo.api.RepositoryService;
import com.evolveum.midpoint.repo.common.activity.Activity;
import com.evolveum.midpoint.repo.common.activity.EmbeddedActivity;
import com.evolveum.midpoint.repo.common.activity.execution.ExecutionInstantiationContext;
Expand All @@ -40,9 +39,9 @@ public class CleanupActivityHandler
extends ModelActivityHandler<CleanupWorkDefinition, CleanupActivityHandler> {

public static final String LEGACY_HANDLER_URI = ModelPublicConstants.CLEANUP_TASK_HANDLER_URI;
private static final String ARCHETYPE_OID = SystemObjectsType.ARCHETYPE_CLEANUP_TASK.value();

@Autowired private TaskManager taskManager;
@Autowired private RepositoryService repositoryService;
@Autowired private AuditService auditService;
@Autowired(required = false) private WorkflowManager workflowManager;
@Autowired private AccessCertificationService certificationService;
Expand All @@ -51,7 +50,7 @@ public class CleanupActivityHandler
@PostConstruct
public void register() {
handlerRegistry.register(CleanupWorkDefinitionType.COMPLEX_TYPE, LEGACY_HANDLER_URI,
CleanupWorkDefinition.class, CleanupWorkDefinition::new, this);
CleanupWorkDefinition.class, CleanupWorkDefinition::new, this, ARCHETYPE_OID);
}

@PreDestroy
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,12 @@ public class ShadowRefreshActivityHandler
extends ModelActivityHandler<ShadowRefreshActivityHandler.MyWorkDefinition, ShadowRefreshActivityHandler> {

public static final String LEGACY_HANDLER_URI = ModelPublicConstants.SHADOW_REFRESH_TASK_HANDLER_URI;
private static final String ARCHETYPE_OID = SystemObjectsType.ARCHETYPE_UTILITY_TASK.value();

@PostConstruct
public void register() {
handlerRegistry.register(ShadowRefreshWorkDefinitionType.COMPLEX_TYPE, LEGACY_HANDLER_URI,
MyWorkDefinition.class, MyWorkDefinition::new, this);
MyWorkDefinition.class, MyWorkDefinition::new, this, ARCHETYPE_OID);
}

@PreDestroy
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ private void initialize() {
}

@Override
public String getArchetypeOid() {
public String getArchetypeOid(@Nullable String handlerUri) {
return SystemObjectsType.ARCHETYPE_UTILITY_TASK.value(); // todo reconsider
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
import java.util.Map;
import javax.xml.namespace.QName;

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

import com.google.common.base.MoreObjects;
import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Component;
Expand Down Expand Up @@ -87,6 +89,11 @@ public class ObjectIntegrityCheckActivityHandler
return LEGACY_HANDLER_URI;
}

@Override
public String getArchetypeOid() {
return SystemObjectsType.ARCHETYPE_UTILITY_TASK.value();
}

@Override
protected @NotNull String getShortName() {
return "Object integrity check";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,8 @@
import com.evolveum.midpoint.model.impl.tasks.ModelActivityHandler;
import com.evolveum.midpoint.repo.common.activity.execution.ExecutionInstantiationContext;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowIntegrityCheckWorkDefinitionType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.SystemObjectsType;

/**
* Task handler for "Shadow integrity check" task.
Expand All @@ -40,12 +39,13 @@ public class ShadowIntegrityCheckActivityHandler
extends ModelActivityHandler<ShadowIntegrityCheckWorkDefinition, ShadowIntegrityCheckActivityHandler> {

private static final String LEGACY_HANDLER_URI = ModelPublicConstants.SHADOW_INTEGRITY_CHECK_TASK_HANDLER_URI;
private static final Trace LOGGER = TraceManager.getTrace(ShadowIntegrityCheckActivityHandler.class);
private static final String ARCHETYPE_OID = SystemObjectsType.ARCHETYPE_UTILITY_TASK.value();


@PostConstruct
public void register() {
handlerRegistry.register(ShadowIntegrityCheckWorkDefinitionType.COMPLEX_TYPE, LEGACY_HANDLER_URI,
ShadowIntegrityCheckWorkDefinition.class, ShadowIntegrityCheckWorkDefinition::new, this);
ShadowIntegrityCheckWorkDefinition.class, ShadowIntegrityCheckWorkDefinition::new, this, ARCHETYPE_OID);
}

@PreDestroy
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@

import javax.xml.namespace.QName;

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

import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Component;

Expand Down Expand Up @@ -69,6 +71,11 @@ public class IterativeScriptingActivityHandler
return LEGACY_HANDLER_URI;
}

@Override
public String getArchetypeOid() {
return SystemObjectsType.ARCHETYPE_ITERATIVE_BULK_ACTION_TASK.value();
}

@Override
protected @NotNull String getShortName() {
return "Iterative scripting";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import com.evolveum.midpoint.xml.ns._public.common.common_3.SystemObjectsType;
import com.evolveum.midpoint.xml.ns._public.model.scripting_3.ExecuteScriptType;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

Expand Down Expand Up @@ -102,7 +103,7 @@ private void initialize() {
}

@Override
public String getArchetypeOid() {
public String getArchetypeOid(@Nullable String handlerUri) {
return SystemObjectsType.ARCHETYPE_SINGLE_BULK_ACTION_TASK.value();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,12 @@ public class AsyncUpdateActivityHandler

private static final String LEGACY_HANDLER_URI = ModelConstants.NS_SYNCHRONIZATION_TASK_PREFIX + "/async-update/handler-3";
private static final Trace LOGGER = TraceManager.getTrace(AsyncUpdateActivityHandler.class);
private static final String ARCHETYPE_OID = SystemObjectsType.ARCHETYPE_ASYNC_UPDATE_TASK.value(); // TODO
private static final String ARCHETYPE_OID = SystemObjectsType.ARCHETYPE_ASYNC_UPDATE_TASK.value();

@PostConstruct
public void register() {
handlerRegistry.register(AsyncUpdateWorkDefinitionType.COMPLEX_TYPE, LEGACY_HANDLER_URI,
AsyncUpdateWorkDefinition.class, AsyncUpdateWorkDefinition::new, this);
AsyncUpdateWorkDefinition.class, AsyncUpdateWorkDefinition::new, this, ARCHETYPE_OID);
}

@PreDestroy
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.xml.namespace.QName;

import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Component;
Expand All @@ -17,8 +16,6 @@
import com.evolveum.midpoint.model.impl.tasks.ModelActivityHandler;
import com.evolveum.midpoint.repo.common.activity.execution.ExecutionInstantiationContext;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ImportWorkDefinitionType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.SystemObjectsType;

Expand All @@ -27,13 +24,12 @@ public class ImportActivityHandler
extends ModelActivityHandler<ImportWorkDefinition, ImportActivityHandler> {

private static final String LEGACY_HANDLER_URI = ModelConstants.NS_SYNCHRONIZATION_TASK_PREFIX + "/import/handler-3";
private static final Trace LOGGER = TraceManager.getTrace(ImportActivityHandler.class);
private static final String ARCHETYPE_OID = SystemObjectsType.ARCHETYPE_RECOMPUTATION_TASK.value(); // TODO
private static final String ARCHETYPE_OID = SystemObjectsType.ARCHETYPE_IMPORT_TASK.value();

@PostConstruct
public void register() {
handlerRegistry.register(ImportWorkDefinitionType.COMPLEX_TYPE, LEGACY_HANDLER_URI,
ImportWorkDefinition.class, ImportWorkDefinition::new, this);
ImportWorkDefinition.class, ImportWorkDefinition::new, this, ARCHETYPE_OID);
}

@PreDestroy
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public class ReconciliationActivityHandler
private static final Trace LOGGER = TraceManager.getTrace(ReconciliationActivityHandler.class);

private static final String LEGACY_HANDLER_URI = ModelPublicConstants.RECONCILIATION_TASK_HANDLER_URI;
private static final String ARCHETYPE_OID = SystemObjectsType.ARCHETYPE_RECOMPUTATION_TASK.value(); // TODO
private static final String ARCHETYPE_OID = SystemObjectsType.ARCHETYPE_RECONCILIATION_TASK.value();

/**
* Just for testability. Used in tests. Injected by explicit call to a
Expand All @@ -53,7 +53,7 @@ public class ReconciliationActivityHandler
@PostConstruct
public void register() {
handlerRegistry.register(ReconciliationWorkDefinitionType.COMPLEX_TYPE, LEGACY_HANDLER_URI,
ReconciliationWorkDefinition.class, ReconciliationWorkDefinition::new, this);
ReconciliationWorkDefinition.class, ReconciliationWorkDefinition::new, this, ARCHETYPE_OID);
}

@PreDestroy
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,21 +10,16 @@
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

import com.evolveum.midpoint.repo.common.activity.ActivityStateDefinition;

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

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

import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Component;

import com.evolveum.midpoint.model.impl.ModelConstants;
import com.evolveum.midpoint.model.impl.tasks.ModelActivityHandler;
import com.evolveum.midpoint.repo.common.activity.ActivityStateDefinition;
import com.evolveum.midpoint.repo.common.activity.execution.ExecutionInstantiationContext;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.xml.ns._public.common.common_3.LiveSyncWorkDefinitionType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.LiveSyncWorkStateType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.SystemObjectsType;

/**
Expand All @@ -35,13 +30,12 @@ public class LiveSyncActivityHandler
extends ModelActivityHandler<LiveSyncWorkDefinition, LiveSyncActivityHandler> {

private static final String LEGACY_HANDLER_URI = ModelConstants.NS_SYNCHRONIZATION_TASK_PREFIX + "/live-sync/handler-3";
private static final Trace LOGGER = TraceManager.getTrace(LiveSyncActivityHandler.class);
private static final String ARCHETYPE_OID = SystemObjectsType.ARCHETYPE_LIVE_SYNC_TASK.value(); // TODO
private static final String ARCHETYPE_OID = SystemObjectsType.ARCHETYPE_LIVE_SYNC_TASK.value();

@PostConstruct
public void register() {
handlerRegistry.register(LiveSyncWorkDefinitionType.COMPLEX_TYPE, LEGACY_HANDLER_URI,
LiveSyncWorkDefinition.class, LiveSyncWorkDefinition::new, this);
LiveSyncWorkDefinition.class, LiveSyncWorkDefinition::new, this, ARCHETYPE_OID);
}

@PreDestroy
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@

import com.evolveum.midpoint.schema.util.task.work.ObjectSetUtil;

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

import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Component;

Expand Down Expand Up @@ -79,6 +81,11 @@ public class ChangeExecutionActivityHandler
return LEGACY_HANDLER_URI;
}

@Override
public String getArchetypeOid() {
return SystemObjectsType.ARCHETYPE_UTILITY_TASK.value();
}

@Override
protected @NotNull String getShortName() {
return "Change execution";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,11 @@ public class RecomputationActivityHandler
return LEGACY_HANDLER_URI;
}

@Override
public String getArchetypeOid() {
return SystemObjectsType.ARCHETYPE_RECOMPUTATION_TASK.value();
}

@Override
protected @NotNull String getShortName() {
return "Recomputation";
Expand Down

0 comments on commit e8d01ed

Please sign in to comment.