Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
mederly committed Feb 27, 2023
2 parents 8584cc2 + 9b43a37 commit 89532b9
Show file tree
Hide file tree
Showing 15 changed files with 126 additions and 79 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
import java.util.List;
import java.util.Objects;

import com.evolveum.midpoint.gui.api.model.LoadableModel;

import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.Component;
import org.apache.wicket.RestartResponseException;
Expand Down Expand Up @@ -274,7 +276,7 @@ protected String load() {
}
};

changesModel = new LoadableDetachableModel<>() {
changesModel = new LoadableModel<>(false) {

@Override
protected VisualizationDto load() {
Expand Down Expand Up @@ -367,6 +369,7 @@ protected String getPaginationCssClass() {
add(details);

ChangesPanel changesNew = new ChangesPanel(ID_CHANGES_NEW, () -> Arrays.asList(objectModel.getObject().getDelta()), null);
changesNew.setShowOperationalItems(true);
changesNew.add(new VisibleBehaviour(() -> WebComponentUtil.isEnabledExperimentalFeatures()));
add(changesNew);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,6 @@
*/
package com.evolveum.midpoint.web.page.admin.reports;

import java.util.*;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.util.string.StringValue;

import com.evolveum.midpoint.authentication.api.authorization.AuthorizationAction;
import com.evolveum.midpoint.authentication.api.authorization.PageDescriptor;
import com.evolveum.midpoint.authentication.api.authorization.Url;
Expand Down Expand Up @@ -53,6 +41,18 @@
import com.evolveum.prism.xml.ns._public.types_3.ItemDeltaType;
import com.evolveum.prism.xml.ns._public.types_3.PolyStringType;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.util.string.StringValue;

import java.util.*;

@PageDescriptor(
urls = {
@Url(mountUrl = "/admin/auditLogDetails")
Expand Down Expand Up @@ -406,14 +406,8 @@ private void initDeltasPanel(WebMarkupContainer eventPanel) {

@Override
protected void populateItem(ListItem<ObjectDeltaOperationType> item) {
// ObjectDeltaOperationPanel deltaPanel = new ObjectDeltaOperationPanel(ID_DELTA_PANEL, item.getModel(), PageAuditLogDetails.this) {
// @Override
// public boolean getIncludeOriginalObject() {
// return false;
// }
// };
// deltaPanel.setOutputMarkupId(true);
AuditChangesPanel deltaPanel = new AuditChangesPanel(ID_DELTA_PANEL, item.getModel(), PageAuditLogDetails.this);
item.add(new VisibleBehaviour(() -> item.getModelObject() != null));
item.add(deltaPanel);
}
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,15 @@

import javax.xml.namespace.QName;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.evolveum.midpoint.model.api.ModelService;
import com.evolveum.midpoint.model.impl.visualizer.output.VisualizationImpl;
import com.evolveum.midpoint.prism.PrismContainerValue;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.delta.ChangeType;
import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.constants.ObjectTypes;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.task.api.Task;
Expand All @@ -31,10 +35,13 @@
@Component
public class AssignmentDescriptionHandler implements VisualizationDescriptionHandler {

@Autowired
private ModelService modelService;

@Override
public boolean match(VisualizationImpl visualization) {
PrismContainerValue value = visualization.getSourceValue();
if (value == null || value.getPath() == null) {
PrismContainerValue<?> value = visualization.getSourceValue();
if (value == null) {
return false;
}

Expand All @@ -43,7 +50,7 @@ public boolean match(VisualizationImpl visualization) {

@Override
public void apply(VisualizationImpl visualization, Task task, OperationResult result) {
PrismContainerValue value = visualization.getSourceValue();
PrismContainerValue<?> value = visualization.getSourceValue();
ChangeType changeType = visualization.getChangeType();

AssignmentType a = (AssignmentType) value.asContainerable();
Expand All @@ -55,11 +62,51 @@ public void apply(VisualizationImpl visualization, Task task, OperationResult re
QName type = targetRef.getType() != null ? targetRef.getType() : ObjectType.COMPLEX_TYPE;
ObjectTypes ot = ObjectTypes.getObjectTypeFromTypeQName(type);

String targetName = resolveReferenceName(targetRef, task, result);

visualization.getName().setOverview(
new SingleLocalizableMessage("AssignmentDescriptionHandler.assignment", new Object[] {
new SingleLocalizableMessage("ObjectTypes." + ot.name()),
targetRef.getTargetName() != null ? targetRef.getTargetName() : targetRef.getOid(),
targetName,
changeType == ADD ? "assigned" : "unassigned"
}, (String) null));
}

private String resolveReferenceName(ObjectReferenceType ref, Task task, OperationResult result) {
if (ref == null) {
return null;
}

if (ref.getTargetName() != null) {
return ref.getTargetName().getOrig();
}

if (ref.getObject() != null) {
PrismObject<?> object = ref.getObject();
if (object.getName() == null) {
return ref.getOid();
}

return object.getName().getOrig();
}

String oid = ref.getOid();
if (oid == null) {
return null;
}

try {
ObjectTypes type = getTypeFromReference(ref);

PrismObject<?> object = modelService.getObject(type.getClassDefinition(), ref.getOid(), GetOperationOptions.createRawCollection(), task, result);
return object.getName().getOrig();
} catch (Exception ex) {
return ref.getOid();
}
}

private ObjectTypes getTypeFromReference(ObjectReferenceType ref) {
QName typeName = ref.getType() != null ? ref.getType() : ObjectType.COMPLEX_TYPE;
return ObjectTypes.getObjectTypeFromTypeQName(typeName);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,18 @@

package com.evolveum.midpoint.model.impl.visualizer;

import org.springframework.stereotype.Component;

import com.evolveum.midpoint.model.impl.visualizer.output.VisualizationImpl;
import com.evolveum.midpoint.prism.PrismContainerValue;
import com.evolveum.midpoint.prism.delta.ChangeType;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.schema.constants.ObjectTypes;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.SingleLocalizableMessage;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

import org.springframework.stereotype.Component;

import javax.xml.namespace.QName;

import static com.evolveum.midpoint.prism.delta.ChangeType.ADD;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ClassLoggerConfigurationType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.LoggingConfigurationType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.SystemConfigurationType;

/**
* Created by Viliam Repan (lazyman).
Expand All @@ -33,8 +30,8 @@ public class ClassLoggerDescriptionHandler implements VisualizationDescriptionHa

@Override
public boolean match(VisualizationImpl visualization) {
PrismContainerValue value = visualization.getSourceValue();
if (value == null || value.getPath() == null) {
PrismContainerValue<?> value = visualization.getSourceValue();
if (value == null) {
return false;
}

Expand All @@ -43,7 +40,7 @@ public boolean match(VisualizationImpl visualization) {

@Override
public void apply(VisualizationImpl visualization, Task task, OperationResult result) {
PrismContainerValue value = visualization.getSourceValue();
PrismContainerValue<?> value = visualization.getSourceValue();
ChangeType changeType = visualization.getChangeType();

ClassLoggerConfigurationType logger = (ClassLoggerConfigurationType) value.asContainerable();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@

package com.evolveum.midpoint.model.impl.visualizer;

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

import org.springframework.stereotype.Component;

import com.evolveum.midpoint.model.impl.visualizer.output.VisualizationDeltaItemImpl;
Expand All @@ -22,6 +20,7 @@
import com.evolveum.midpoint.util.SingleLocalizableMessage;
import com.evolveum.midpoint.xml.ns._public.common.common_3.CredentialsType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.FocusType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.PasswordType;

/**
* Created by Viliam Repan (lazyman).
Expand All @@ -31,7 +30,7 @@ public class PasswordDescriptionHandler implements VisualizationDescriptionHandl

@Override
public boolean match(VisualizationImpl visualization) {
PrismContainerValue value = visualization.getSourceValue();
PrismContainerValue<?> value = visualization.getSourceValue();
if (value == null) {
return false;
}
Expand All @@ -41,12 +40,8 @@ public boolean match(VisualizationImpl visualization) {
return value.findContainer(CredentialsType.F_PASSWORD) != null;
}

if (ItemPath.create(FocusType.F_CREDENTIALS, CredentialsType.F_PASSWORD).equivalent(value.getPath())) {
// we're modifying/deleting password
return true;
}

return false;
// we're modifying/deleting password
return ItemPath.create(FocusType.F_CREDENTIALS, CredentialsType.F_PASSWORD).equivalent(value.getPath());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,22 +41,18 @@ public class ShadowDescriptionHandler implements VisualizationDescriptionHandler

@Override
public boolean match(VisualizationImpl visualization) {
PrismContainerValue value = visualization.getSourceValue();
if (value == null || !(value.asContainerable() instanceof ShadowType)) {
return false;
}

return true;
PrismContainerValue<?> value = visualization.getSourceValue();
return value != null && value.asContainerable() instanceof ShadowType;
}

@Override
public void apply(VisualizationImpl visualization, Task task, OperationResult result) {
PrismContainerValue value = visualization.getSourceValue();
PrismContainerValue<?> value = visualization.getSourceValue();
ShadowType shadow = (ShadowType) value.asContainerable();

ShadowKindType kind = shadow.getKind() != null ? shadow.getKind() : ShadowKindType.UNKNOWN;

ResourceAttribute namingAttribute = ShadowUtil.getNamingAttribute(shadow);
ResourceAttribute<?> namingAttribute = ShadowUtil.getNamingAttribute(shadow);
Object realName = namingAttribute != null ? namingAttribute.getRealValue() : null;
String name = realName != null ? realName.toString() : "";
ChangeType change = visualization.getChangeType();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,10 @@
import static com.evolveum.midpoint.schema.SelectorOptions.createCollection;

import java.util.*;
import javax.annotation.PostConstruct;

import org.apache.commons.collections4.CollectionUtils;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;

import com.evolveum.midpoint.model.api.ModelService;
Expand Down Expand Up @@ -48,10 +46,11 @@
public class Visualizer {

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

public static final String CLASS_DOT = Visualizer.class.getName() + ".";

@Autowired
private ApplicationContext applicationContext;
private List<VisualizationDescriptionHandler> descriptionHandlers;
@Autowired
private PrismContext prismContext;
@Autowired
Expand All @@ -61,8 +60,6 @@ public class Visualizer {

private static final Map<Class<?>, List<ItemPath>> DESCRIPTIVE_ITEMS = new HashMap<>();

private static final List<VisualizationDescriptionHandler> DESCRIPTION_HANDLERS = new ArrayList<>();

static {
DESCRIPTIVE_ITEMS.put(AssignmentType.class, Arrays.asList(
AssignmentType.F_TARGET_REF,
Expand All @@ -78,17 +75,6 @@ public class Visualizer {
ShadowType.F_INTENT));
}

@PostConstruct
public void init() {
Map<String, VisualizationDescriptionHandler> beans = applicationContext.getBeansOfType(VisualizationDescriptionHandler.class);
DESCRIPTION_HANDLERS.addAll(beans.values());
}

@PostConstruct
public void destroy() {
DESCRIPTION_HANDLERS.clear();
}

public VisualizationImpl visualize(PrismObject<? extends ObjectType> object, Task task, OperationResult parentResult) throws SchemaException, ExpressionEvaluationException {
return visualize(object, new VisualizationContext(), task, parentResult);
}
Expand Down Expand Up @@ -531,7 +517,7 @@ private <C extends Containerable> void visualizeContainerDeltaValue(PrismContain
}

private void evaluateDescriptionHandlers(VisualizationImpl visualization, Task task, OperationResult result) {
for (VisualizationDescriptionHandler handler : DESCRIPTION_HANDLERS) {
for (VisualizationDescriptionHandler handler : descriptionHandlers) {
if (handler.match(visualization)) {
handler.apply(visualization, task, result);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -204,11 +204,6 @@ public void initSystem(Task initTask, OperationResult initResult) throws Excepti
// Archetypes
repoAddObjectFromFile(ARCHETYPE_TASK_RECONCILIATION_FILE, initResult);

if (areMarksSupported()) {
repoAdd(CommonInitialObjects.ARCHETYPE_OBJECT_MARK, initResult);
repoAdd(CommonInitialObjects.MARK_PROTECTED_SHADOW, initResult);
}

// User Templates
repoAddObjectFromFile(USER_TEMPLATE_FILENAME, initResult);
repoAddObjectFromFile(USER_TEMPLATE_COMPLEX_FILE, initResult);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@

import com.evolveum.icf.dummy.resource.DummyAccount;
import com.evolveum.midpoint.model.intest.AbstractInitializedModelIntegrationTest;
import com.evolveum.midpoint.model.test.CommonInitialObjects;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.util.PrismAsserts;
import com.evolveum.midpoint.prism.util.PrismTestUtil;
Expand Down Expand Up @@ -59,10 +60,15 @@ public abstract class AbstractInboundSyncTest extends AbstractInitializedModelIn
public void initSystem(Task initTask, OperationResult initResult) throws Exception {
super.initSystem(initTask, initResult);

if (areMarksSupported()) {
repoAdd(CommonInitialObjects.ARCHETYPE_OBJECT_MARK, initResult);
repoAdd(CommonInitialObjects.MARK_PROTECTED_SHADOW, initResult);
}
assumeAssignmentPolicy(AssignmentPolicyEnforcementType.NONE);

}

@Override
protected File getResourceDummyEmeraldFile() {
return RESOURCE_DUMMY_EMERALD_FILE;
}
Expand Down

0 comments on commit 89532b9

Please sign in to comment.