Skip to content

Commit

Permalink
MID-9104: fix activation message for vizualization panel
Browse files Browse the repository at this point in the history
  • Loading branch information
skublik committed Sep 21, 2023
1 parent 77f132f commit 867143b
Show file tree
Hide file tree
Showing 7 changed files with 60 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,14 @@

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

import com.evolveum.midpoint.prism.ItemDefinition;
import com.evolveum.midpoint.prism.PrismValue;
import com.evolveum.midpoint.prism.delta.ItemDelta;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.prism.path.ItemPath;

import com.evolveum.midpoint.util.exception.SchemaException;

import org.springframework.stereotype.Component;

import com.evolveum.midpoint.model.impl.visualizer.output.VisualizationImpl;
Expand All @@ -27,12 +35,25 @@
public class ActivationDescriptionHandler implements VisualizationDescriptionHandler {

@Override
public boolean match(VisualizationImpl visualization) {
public boolean match(VisualizationImpl visualization, VisualizationImpl parentVisualization) {

PrismContainerValue<?> value = visualization.getSourceValue();
if (value == null) {
return false;
}

if (parentVisualization != null && parentVisualization.getSourceDelta() != null) {
ItemDelta<PrismValue, ItemDefinition<?>> deltaItem = parentVisualization.getSourceDelta().findItemDelta(ItemPath.create(
visualization.getSourceRelPath(), ActivationType.F_EFFECTIVE_STATUS));
try {
if(deltaItem != null && deltaItem.getItemNew() != null && deltaItem.getItemNew().getRealValue() != null) {
return true;
}
} catch (SchemaException e) {
//ignore it and try sourceValue
}
}

if (ActivationType.class.equals(value.getCompileTimeClass())) {
// if there's password
return value.findProperty(ActivationType.F_EFFECTIVE_STATUS) != null;
Expand All @@ -43,10 +64,26 @@ public boolean match(VisualizationImpl visualization) {
}

@Override
public void apply(VisualizationImpl visualization, Task task, OperationResult result) {
public void apply(VisualizationImpl visualization, VisualizationImpl parentVisualization, Task task, OperationResult result) {
ActivationStatusType status = null;
if (parentVisualization != null && parentVisualization.getSourceDelta() != null) {
ItemDelta<PrismValue, ItemDefinition<?>> deltaItem = parentVisualization.getSourceDelta().findItemDelta(ItemPath.create(
visualization.getSourceRelPath(), ActivationType.F_EFFECTIVE_STATUS));
try {
if(deltaItem != null && deltaItem.getItemNew() != null) {
status = (ActivationStatusType) deltaItem.getItemNew().getRealValue();
}
} catch (SchemaException e) {
//ignore it and try sourceValue
}
}

PrismContainerValue<?> value = visualization.getSourceValue();
PrismProperty<ActivationStatusType> effectiveStatus = value.findProperty(ActivationType.F_EFFECTIVE_STATUS);
ActivationStatusType status = effectiveStatus.getRealValue();

if (status == null) {
PrismProperty<ActivationStatusType> effectiveStatus = value.findProperty(ActivationType.F_EFFECTIVE_STATUS);
status = effectiveStatus.getRealValue();
}

if (status == null) {
return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public class AssignmentDescriptionHandler implements VisualizationDescriptionHan
private Resolver resolver;

@Override
public boolean match(VisualizationImpl visualization) {
public boolean match(VisualizationImpl visualization, VisualizationImpl parentVisualization) {
PrismContainerValue<?> value = visualization.getSourceValue();
if (value == null) {
return false;
Expand All @@ -44,7 +44,7 @@ public boolean match(VisualizationImpl visualization) {
}

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

AssignmentType a = (AssignmentType) value.asContainerable();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public class ClassLoggerDescriptionHandler implements VisualizationDescriptionHa
private static final ItemPath PATH_CLASS_LOGGER = ItemPath.create(SystemConfigurationType.F_LOGGING, LoggingConfigurationType.F_CLASS_LOGGER);

@Override
public boolean match(VisualizationImpl visualization) {
public boolean match(VisualizationImpl visualization, VisualizationImpl parentVisualization) {
PrismContainerValue<?> value = visualization.getSourceValue();
if (value == null) {
return false;
Expand All @@ -39,7 +39,7 @@ public boolean match(VisualizationImpl visualization) {
}

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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public class PasswordDescriptionHandler implements VisualizationDescriptionHandl
private static final ItemPath PATH_PASSWORD = ItemPath.create(FocusType.F_CREDENTIALS, CredentialsType.F_PASSWORD);

@Override
public boolean match(VisualizationImpl visualization) {
public boolean match(VisualizationImpl visualization, VisualizationImpl parentVisualization) {
PrismContainerValue<?> value = visualization.getSourceValue();
if (value == null) {
return false;
Expand All @@ -47,7 +47,7 @@ public boolean match(VisualizationImpl visualization) {
}

@Override
public void apply(VisualizationImpl visualization, Task task, OperationResult result) {
public void apply(VisualizationImpl visualization, VisualizationImpl parentVisualization, Task task, OperationResult result) {
ChangeType change = visualization.getChangeType();

VisualizationItemImpl item = visualization.getItems().stream()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,13 @@ public class ShadowDescriptionHandler implements VisualizationDescriptionHandler
private Resolver resolver;

@Override
public boolean match(VisualizationImpl visualization) {
public boolean match(VisualizationImpl visualization, VisualizationImpl parentVisualization) {
PrismContainerValue<?> value = visualization.getSourceValue();
return value != null && ShadowType.class.equals(value.getCompileTimeClass());
}

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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
*/
public interface VisualizationDescriptionHandler {

boolean match(VisualizationImpl visualization);
boolean match(VisualizationImpl visualization, VisualizationImpl parentVisualization);

void apply(VisualizationImpl visualization, Task task, OperationResult result);
void apply(VisualizationImpl visualization, VisualizationImpl parentVisualization, Task task, OperationResult result);
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
import java.util.*;

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
Expand Down Expand Up @@ -105,7 +104,7 @@ private VisualizationImpl visualize(PrismObject<? extends ObjectType> object, Vi
visualization.setSourceDelta(null);
visualizeItems(visualization, object.getValue().getItems(), false, context, task, result);

evaluateDescriptionHandlers(visualization, task, result);
evaluateDescriptionHandlers(visualization, visualization, task, result);

return visualization;
}
Expand Down Expand Up @@ -283,7 +282,7 @@ private VisualizationImpl visualizeDelta(ObjectDelta<? extends ObjectType> objec
throw new IllegalStateException("Object delta that is neither ADD, nor MODIFY nor DELETE: " + objectDelta);
}

evaluateDescriptionHandlers(visualization, task, result);
evaluateDescriptionHandlers(visualization, visualization, task, result);

return visualization;
}
Expand Down Expand Up @@ -379,7 +378,7 @@ private void visualizeItems(VisualizationImpl visualization, Collection<Item<?,
}
visualizeItems(currentVisualization, pcv.getItems(), descriptive, context, task, result);

evaluateDescriptionHandlers(currentVisualization, task, result);
evaluateDescriptionHandlers(currentVisualization, visualization, task, result);
}
} else {
throw new IllegalStateException("Not a property nor reference nor container: " + item);
Expand Down Expand Up @@ -515,13 +514,14 @@ private <C extends Containerable> void visualizeContainerDeltaValue(PrismContain

parentVisualization.addPartialVisualization(visualization);

evaluateDescriptionHandlers(visualization, task, result);
evaluateDescriptionHandlers(visualization, visualization, task, result);
}

private void evaluateDescriptionHandlers(VisualizationImpl visualization, Task task, OperationResult result) {
private void evaluateDescriptionHandlers(
VisualizationImpl visualization, VisualizationImpl parentVisualization, Task task, OperationResult result) {
for (VisualizationDescriptionHandler handler : descriptionHandlers) {
if (handler.match(visualization)) {
handler.apply(visualization, task, result);
if (handler.match(visualization, parentVisualization)) {
handler.apply(visualization, parentVisualization, task, result);
}
}
}
Expand Down Expand Up @@ -631,7 +631,7 @@ private void visualizeAtomicDelta(ItemDelta<?, ?> delta, VisualizationImpl visua
}
visualizeAtomicItemDelta(visualizationForItem, delta, context, task, result);

evaluateDescriptionHandlers(visualizationForItem, task, result);
evaluateDescriptionHandlers(visualizationForItem, visualization, task, result);
}

private void addDescriptiveItems(VisualizationImpl visualization, PrismContainerValue<?> sourceValue, VisualizationContext context, Task task, OperationResult result) {
Expand Down

0 comments on commit 867143b

Please sign in to comment.