Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master' into feature/forgot-user…
Browse files Browse the repository at this point in the history
…name

* origin/master: (40 commits)
  MID-8842 ninja - fixing compilation + small bugfix
  MID-8842 ninja - activity profiling interval
  MID-8842 ninja - activity tracing processor
  MID-8842 ninja - bugfix in ProcessorMixin
  MID-8842 ninja - use legacy approvers processor
  MID-8842 ninja - boundary processor
  MID-8842 ninja - followOn processor upgrade description added
  MID-8842 ninja - new column added to verification csv (upgrade description) so processors can add more info
  MID-8842 ninja - followOn processor fix
  MID-8842 ninja - logging improvement for processors test
  MID-8842 ninja - followOn processor
  MID-8842 ninja - fixed schema documentation for followOn
  MID-8842 ninja - reconcile affected processor
  MID-8842 ninja - cleanup policies processor
  Fix collecting mark-based policy rules
  Do after-merge fix
  Add profiles for assignment/inducement targetRef
  Improve expression profile tests
  MID-8842 ninja - fixing build
  Fix compilation error
  ...
  • Loading branch information
katkav committed Jul 24, 2023
2 parents 12c7961 + 2c556d6 commit e66b2ad
Show file tree
Hide file tree
Showing 345 changed files with 8,075 additions and 3,952 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2382,9 +2382,11 @@ private static String createSimulationResultIcon() {

public static ObjectFilter evaluateExpressionsInFilter(ObjectFilter objectFilter, VariablesMap variables, OperationResult result, PageBase pageBase) {
try {
return ExpressionUtil.evaluateFilterExpressions(objectFilter, variables, MiscSchemaUtil.getExpressionProfile(),
pageBase.getExpressionFactory(), pageBase.getPrismContext(), "collection filter",
pageBase.createSimpleTask(result.getOperation()), result);
return ExpressionUtil.evaluateFilterExpressions(
objectFilter, variables,
MiscSchemaUtil.getExpressionProfile(),
pageBase.getExpressionFactory(),
"collection filter", pageBase.createSimpleTask(result.getOperation()), result);
} catch (SchemaException | ObjectNotFoundException | ExpressionEvaluationException | CommunicationException |
ConfigurationException | SecurityViolationException ex) {
result.recordPartialError("Unable to evaluate filter exception, ", ex);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -213,9 +213,12 @@ protected void processVariables(VariablesMap variablesMap, T rowValue) {
}

protected <V> Collection<V> evaluate(VariablesMap variablesMap, ExpressionType expression, Task task, OperationResult result) throws SchemaException, ExpressionEvaluationException, CommunicationException, SecurityViolationException, ConfigurationException, ObjectNotFoundException {
return (Collection<V>) ExpressionUtil.evaluateStringExpression(variablesMap, getPageBase().getPrismContext(), expression,
MiscSchemaUtil.getExpressionProfile(), getPageBase().getExpressionFactory(), "evaluate column expression",
task, result);
//noinspection unchecked
return (Collection<V>) ExpressionUtil.evaluateStringExpression(
variablesMap, expression,
MiscSchemaUtil.getExpressionProfile(),
getPageBase().getExpressionFactory(),
"evaluate column expression", task, result);
}

// todo figure out how to improve this, looks horrible
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,7 @@
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
<div wicket:id="valueContainer">
<div class="prism-property-label p-0">
<span wicket:id="valueContainerLabel" />
<button wicket:id="add" class="btn btn-tool text-primary" trigger="hover">
<i class="fa fa-plus-circle pr-1"></i>
<wicket:message key="VerticalFormItemHeaderPanel.addValue"/>
</button>

<button wicket:id="remove" class="btn btn-tool text-danger" trigger="hover">
<i class="fa fa-eraser pr-1"></i>
<wicket:message key="VerticalFormItemHeaderPanel.removeAll"/>
</button>
</div>
<div class="prism-property-value" wicket:id="valueInput"/>
<wicket:child/>
<span wicket:id="feedback"/>
</div>
</wicket:panel>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,35 +7,23 @@
package com.evolveum.midpoint.gui.impl.component.input.expression;

import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.gui.api.model.NonEmptyLoadableModel;
import com.evolveum.midpoint.gui.api.model.NonEmptyModel;
import com.evolveum.midpoint.gui.impl.component.message.FeedbackLabels;
import com.evolveum.midpoint.web.component.form.multivalue.MultiValueTextPanel;
import com.evolveum.midpoint.web.component.input.TextPanel;
import com.evolveum.midpoint.web.component.prism.InputPanel;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ExpressionType;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.behavior.Behavior;
import org.apache.wicket.Component;
import org.apache.wicket.MarkupContainer;
import org.apache.wicket.feedback.ContainerFeedbackMessageFilter;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.IModel;
import org.jetbrains.annotations.NotNull;

import java.util.List;
import java.io.Serializable;

public abstract class EvaluatorExpressionPanel extends BasePanel<ExpressionType> {

private static final long serialVersionUID = 1L;

private static final String ID_VALUE_INPUT = "valueInput";
private static final String ID_VALUE_CONTAINER = "valueContainer";
private static final String ID_VALUE_CONTAINER_LABEL = "valueContainerLabel";
private static final String ID_ADD_BUTTON = "add";
private static final String ID_REMOVE_BUTTON = "remove";
private static final String ID_FEEDBACK = "feedback";

public EvaluatorExpressionPanel(String id, IModel<ExpressionType> model) {
Expand All @@ -45,123 +33,30 @@ public EvaluatorExpressionPanel(String id, IModel<ExpressionType> model) {
@Override
protected void onInitialize() {
super.onInitialize();
initLayout();
}

private void initLayout() {
setOutputMarkupId(true);

WebMarkupContainer valueContainer = new WebMarkupContainer(ID_VALUE_CONTAINER);
valueContainer.setOutputMarkupId(true);
add(valueContainer);

valueContainer.add(new Label(ID_VALUE_CONTAINER_LABEL, getValueContainerLabelModel()));
WebMarkupContainer parent = new WebMarkupContainer(ID_VALUE_CONTAINER);
parent.setOutputMarkupId(true);
add(parent);

FeedbackLabels feedback = new FeedbackLabels(ID_FEEDBACK);
feedback.setFilter(new ContainerFeedbackMessageFilter(valueContainer));
feedback.setFilter(new ContainerFeedbackMessageFilter(parent));
feedback.setOutputMarkupPlaceholderTag(true);
valueContainer.add(feedback);

AjaxLink<Void> addButton = new AjaxLink<>(ID_ADD_BUTTON) {
private static final long serialVersionUID = 1L;

@Override
public void onClick(AjaxRequestTarget target) {
addValue(target);
}
};
valueContainer.add(addButton);
parent.add(feedback);

AjaxLink<Void> removeButton = new AjaxLink<>(ID_REMOVE_BUTTON) {
private static final long serialVersionUID = 1L;

@Override
public void onClick(AjaxRequestTarget target) {
removeItem(target);
}
};
valueContainer.add(removeButton);

valueContainer.add(createDefaultInputPanel());
initLayout(parent);
}

public abstract IModel<String> getValueContainerLabelModel();
protected abstract void initLayout(MarkupContainer valueContainer);

protected WebMarkupContainer createDefaultInputPanel() {

IModel<List<String>> model = new IModel<>() {
@Override
public List<String> getObject() {
return getEvaluatorValues();
}

@Override
public void setObject(List<String> strings) {
updateEvaluatorValue(getModelObject(), strings);
}

@Override
public void detach() {
}
};

NonEmptyModel<Boolean> readOnlyModel = new NonEmptyLoadableModel<>(false) {
@NotNull
@Override
protected Boolean load() {
return false;
}
};
MultiValueTextPanel<String> valueInput = new MultiValueTextPanel<>(EvaluatorExpressionPanel.ID_VALUE_INPUT, model, readOnlyModel, false) {

@Override
protected Behavior getAddButtonVisibleBehavior(NonEmptyModel<Boolean> readOnlyModel) {
return VisibleBehaviour.ALWAYS_INVISIBLE;
}

@Override
protected IModel<String> createEmptyItemPlaceholder() {
return () -> "";
}

@Override
protected InputPanel createTextPanel(String id, IModel<String> model) {
return EvaluatorExpressionPanel.this.createTextPanel(id, model);
}

@Override
protected void modelObjectUpdatePerformed(AjaxRequestTarget target, List<String> strings) {
updateEvaluatorValue(EvaluatorExpressionPanel.this.getModelObject(), strings);
target.add(getFeedback());
}
};
valueInput.setOutputMarkupId(true);
return valueInput;
}

protected InputPanel createTextPanel(String id, IModel<String> model) {
return new TextPanel<>(id, model);
}

private void removeItem(AjaxRequestTarget target) {
getModelObject().getExpressionEvaluator().clear();
target.add(get(ID_VALUE_CONTAINER));
target.add(getFeedback());
}
public abstract IModel<String> getValueContainerLabelModel();

private void addValue(AjaxRequestTarget target) {
List<String> values = getEvaluatorValues();
values.add("");
updateEvaluatorValue(EvaluatorExpressionPanel.this.getModelObject(), values);
target.add(get(ID_VALUE_CONTAINER));
target.add(getFeedback());
protected final Component getValueContainer() {
return get(ID_VALUE_CONTAINER);
}

protected FeedbackLabels getFeedback() {
return (FeedbackLabels) get(createComponentPath(ID_VALUE_CONTAINER, ID_FEEDBACK));
}

protected abstract void updateEvaluatorValue(ExpressionType expression, List<String> values);

protected abstract List<String> getEvaluatorValues();
}

0 comments on commit e66b2ad

Please sign in to comment.