Skip to content

Commit

Permalink
Merge branch 'support-4.4' of github.com:Evolveum/midpoint into suppo…
Browse files Browse the repository at this point in the history
…rt-4.4

* 'support-4.4' of github.com:Evolveum/midpoint:
  MID-7765 mixed force preview flag handling (previously both save and preview button were shown)
  MID-7758 NPE when prismcontainerwrapper can't get child container wrapper model on assignments panel
  MID-7751:adding authorization for service detail page
  MID-7606 task name and ownerRef now handled via archetype weak focusMapping
  native-repo: removed double perf-monitor registration + bad setVersion
  • Loading branch information
katkav committed Mar 23, 2022
2 parents 021f69f + bfb731e commit 7d90fbc
Show file tree
Hide file tree
Showing 36 changed files with 1,278 additions and 152 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,10 @@ public AbstractAssignmentTypePanel(String id, IModel<PrismContainerWrapper<Assig
this.model = model;
}

protected void setModel(IModel<PrismContainerWrapper<AssignmentType>> model) {
this.model = model;
}

@Override
protected void onInitialize() {
super.onInitialize();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,29 +8,9 @@

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import javax.xml.namespace.QName;

import com.evolveum.midpoint.gui.impl.page.admin.assignmentholder.component.assignmentType.AbstractAssignmentTypePanel;
import com.evolveum.midpoint.prism.PrismConstants;
import com.evolveum.midpoint.prism.PrismContainerDefinition;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.prism.query.RefFilter;
import com.evolveum.midpoint.schema.constants.ObjectTypes;
import com.evolveum.midpoint.util.logging.Trace;

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

import com.evolveum.midpoint.web.component.search.SearchFactory;
import com.evolveum.midpoint.web.component.search.SearchItemDefinition;
import com.evolveum.midpoint.web.session.SessionStorage;

import com.evolveum.midpoint.web.session.UserProfileStorage;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.model.IModel;
import org.jetbrains.annotations.NotNull;
Expand All @@ -40,21 +20,37 @@
import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper;
import com.evolveum.midpoint.gui.api.prism.wrapper.PrismObjectWrapper;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.impl.page.admin.assignmentholder.component.assignmentType.AbstractAssignmentTypePanel;
import com.evolveum.midpoint.model.api.AssignmentCandidatesSpecification;
import com.evolveum.midpoint.model.api.AssignmentObjectRelation;
import com.evolveum.midpoint.prism.PrismConstants;
import com.evolveum.midpoint.prism.PrismContainerDefinition;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.prism.query.RefFilter;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.util.QNameUtil;
import com.evolveum.midpoint.util.exception.ConfigurationException;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.search.SearchFactory;
import com.evolveum.midpoint.web.component.search.SearchItemDefinition;
import com.evolveum.midpoint.web.model.PrismContainerWrapperModel;
import com.evolveum.midpoint.web.session.SessionStorage;
import com.evolveum.midpoint.web.session.UserProfileStorage;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

public abstract class AbstractAssignmentPanel<AH extends AssignmentHolderType> extends AbstractAssignmentTypePanel {

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

public AbstractAssignmentPanel(String id, IModel<PrismObjectWrapper<AH>> model, ContainerPanelConfigurationType config) {
super(id, PrismContainerWrapperModel.fromContainerWrapper(model, AssignmentHolderType.F_ASSIGNMENT), config);
super(id, null, config);

setModel(PrismContainerWrapperModel.fromContainerWrapper(model, AssignmentHolderType.F_ASSIGNMENT, () -> getPageBase()));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,36 +6,36 @@
*/
package com.evolveum.midpoint.gui.impl.page.admin.assignmentholder.component.assignmentType.inducement;

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

import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.model.IModel;
import org.jetbrains.annotations.NotNull;

import com.evolveum.midpoint.gui.api.component.AssignmentPopupDto;
import com.evolveum.midpoint.gui.api.model.LoadableModel;
import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper;
import com.evolveum.midpoint.gui.api.prism.wrapper.PrismObjectWrapper;
import com.evolveum.midpoint.gui.impl.page.admin.assignmentholder.component.assignmentType.AbstractAssignmentTypePanel;
import com.evolveum.midpoint.model.api.AssignmentObjectRelation;
import com.evolveum.midpoint.prism.PrismConstants;
import com.evolveum.midpoint.prism.PrismContainerDefinition;
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.prism.query.RefFilter;
import com.evolveum.midpoint.web.component.search.SearchItemDefinition;
import com.evolveum.midpoint.web.model.PrismContainerWrapperModel;
import com.evolveum.midpoint.web.session.SessionStorage;
import com.evolveum.midpoint.web.session.UserProfileStorage;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.model.IModel;
import org.jetbrains.annotations.NotNull;

import javax.xml.namespace.QName;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AbstractRoleType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ContainerPanelConfigurationType;

public class AbstractInducementPanel<AR extends AbstractRoleType> extends AbstractAssignmentTypePanel {

public AbstractInducementPanel(String id, IModel<PrismObjectWrapper<AR>> model, ContainerPanelConfigurationType config) {
super(id, PrismContainerWrapperModel.fromContainerWrapper(model, AbstractRoleType.F_INDUCEMENT), config);
super(id, null, config);

setModel(PrismContainerWrapperModel.fromContainerWrapper(model, AbstractRoleType.F_INDUCEMENT, () -> getPageBase()));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -174,8 +174,8 @@ protected void onError(AjaxRequestTarget target) {
target.add(getPageBase().getFeedbackPanel());
}
};
save.add(new VisibleBehaviour(this::isSaveButtonVisible));
save.add(new EnableBehaviour(this::isSavePreviewButtonEnabled));
save.add(new VisibleBehaviour(this::isSaveButtonVisible));
save.titleAsLabel(true);
save.setOutputMarkupId(true);
save.add(AttributeAppender.append("class", "btn btn-success btn-sm"));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,8 +102,7 @@ protected void newObjectPerformed(AjaxRequestTarget target, AssignmentObjectRela

List<ObjectReferenceType> archetypeRef = ObjectCollectionViewUtil.getArchetypeReferencesList(collectionView);
try {
String taskNamePrefix = createTaskPrefix(collectionView);
TaskType newTask = createResourceTask(getPrismContext(), taskNamePrefix, ResourceTasksPanel.this.getObjectWrapper().getObject(), archetypeRef);
TaskType newTask = createResourceTask(getPrismContext(), ResourceTasksPanel.this.getObjectWrapper().getObject(), archetypeRef);

WebComponentUtil.initNewObjectWithReference(getPageBase(), newTask, archetypeRef);
} catch (SchemaException ex) {
Expand Down Expand Up @@ -187,7 +186,7 @@ public void onClick(AjaxRequestTarget target) {
add(suspend);
}

public static TaskType createResourceTask(PrismContext prismContext, String taskNamePrefix, PrismObject<ResourceType> resource,
public static TaskType createResourceTask(PrismContext prismContext, PrismObject<ResourceType> resource,
List<ObjectReferenceType> archetypeRefs) throws SchemaException {

PrismObjectDefinition<TaskType> def = prismContext.getSchemaRegistry().findObjectDefinitionByType(TaskType.COMPLEX_TYPE);
Expand All @@ -200,9 +199,6 @@ public static TaskType createResourceTask(PrismContext prismContext, String task
resourceRef.setTargetName(new PolyStringType(resource.getName()));
newTask.setObjectRef(resourceRef);

String name = createNewTaskName(taskNamePrefix, resource);
newTask.setName(new PolyStringType(name));

prepopulateTask(newTask, resource, archetypeRefs);

return newTask;
Expand Down Expand Up @@ -311,32 +307,6 @@ private static boolean hasArchetype(List<ObjectReferenceType> archetypeRefs, Str
return false;
}

private String createTaskPrefix(CompiledObjectCollectionView view) {
DisplayType display = view.getDisplay();
if (display != null && display.getLabel() != null) {
return display.getLabel().getOrig();
}

return null;
}

private static String createNewTaskName(String taskNamePrefix, PrismObject<ResourceType> resource) {
StringBuilder sb = new StringBuilder();
if (StringUtils.isNotEmpty(taskNamePrefix)) {
sb.append(taskNamePrefix);
sb.append(": ");
} else {
sb.append("Task: ");
}

PolyString name = resource.getName();
if (name != null) {
sb.append(name.getOrig());
}

return sb.toString();
}

private ObjectQuery createResourceTasksQuery() {
return getPageBase().getPrismContext().queryFor(TaskType.class)
.item(TaskType.F_OBJECT_REF).ref(getObjectWrapper().getOid())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@

import com.evolveum.midpoint.gui.api.model.LoadableModel;
import com.evolveum.midpoint.gui.api.prism.wrapper.PrismObjectWrapper;
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.gui.impl.page.admin.assignmentholder.PageAssignmentHolderDetails;
import com.evolveum.midpoint.gui.impl.page.admin.component.TaskOperationalButtonsPanel;
import com.evolveum.midpoint.prism.PrismObject;
Expand All @@ -25,9 +24,8 @@
import com.evolveum.midpoint.web.application.Url;
import com.evolveum.midpoint.web.page.admin.server.TaskSummaryPanel;
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

import com.evolveum.prism.xml.ns._public.types_3.PolyStringType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskType;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.panel.Panel;
Expand Down Expand Up @@ -70,59 +68,9 @@ public Class<TaskType> getType() {

@Override
protected TaskDetailsModel createObjectDetailsModels(PrismObject<TaskType> object) {
if (object != null && object.getOid() == null) {
// we're adding task, let's see what we can prepare for use beforehand (not very nice in here, but so far there's no other place)
prepopulateTask(object);
}
return new TaskDetailsModel(createPrismObjectModel(object), PageTask.this);
}

@Deprecated
private void prepopulateTask(PrismObject<TaskType> object) {
TaskType task = object.asObjectable();
if (task.getOwnerRef() == null) {
try {
FocusType focus = getSecurityContextManager().getPrincipal().getFocus();
ObjectReferenceType ownerRef = new ObjectReferenceType();
ownerRef.setOid(getSecurityContextManager().getPrincipalOid());
ownerRef.setType(focus.asPrismObject().getDefinition().getTypeName());
ownerRef.setTargetName(focus.getName());
task.ownerRef(ownerRef);
} catch (SecurityViolationException e) {
// we can ignore it here probably
}
}

if (task.getName() == null) {
task.setName(createDefaultTaskName(task));
}
}

private PolyStringType createDefaultTaskName(TaskType task) {
String archetypeOid = null;
for (AssignmentType a : task.getAssignment()) {
ObjectReferenceType targetRef = a.getTargetRef();
if (targetRef == null || !ArchetypeType.COMPLEX_TYPE.equals(targetRef.getType())) {
continue;
}

archetypeOid = targetRef.getOid();
break;
}

if (archetypeOid == null) {
return new PolyStringType(getString("PageTask.newTaskDefaultName"));
}

Task t = createSimpleTask("Load archetype");
PrismObject<ArchetypeType> archetype = WebModelServiceUtils.loadObject(ArchetypeType.class, archetypeOid, this, t, t.getResult());
if (archetype != null) {
return new PolyStringType(archetype.getName().getOrig());
}

return new PolyStringType(getString("PageTask.newTaskDefaultName"));
}

@Override
protected Panel createSummaryPanel(String id, IModel<TaskType> summaryModel) {
return new TaskSummaryPanel(id, summaryModel, getObjectDetailsModels().getRootTaskModel(), getSummaryPanelSpecification());
Expand Down

0 comments on commit 7d90fbc

Please sign in to comment.