Skip to content

Commit

Permalink
Merge remote-tracking branch 'refs/remotes/origin/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
skublik committed Nov 25, 2022
2 parents 9c82947 + c416f82 commit dabbde0
Show file tree
Hide file tree
Showing 341 changed files with 13,791 additions and 8,890 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ node_modules/

# IDEA files
/.idea/
/.run/
*.iml

# Eclipse files
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,7 @@ public ObjectReferenceType convertToObject(String value, Locale locale) throws C
type, query, new OperationResult("searchObjects"), pageBase);
if (CollectionUtils.isNotEmpty(objectsList)) {
if (objectsList.size() == 1) {
return ObjectTypeUtil.createObjectRefWithFullObject(
objectsList.get(0), pageBase.getPrismContext());
return ObjectTypeUtil.createObjectRefWithFullObject(objectsList.get(0));
}
pageBase.error("Couldn't specify one object by name '" + value + "' and type " + type.getSimpleName() + ". Please will try specific type of object.");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
*/
package com.evolveum.midpoint.gui.api.component.delta;

import com.evolveum.midpoint.model.api.visualizer.Visualization;

import org.apache.wicket.AttributeModifier;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
Expand All @@ -18,8 +20,6 @@
import com.evolveum.midpoint.gui.api.component.result.OperationResultPopupPanel;
import com.evolveum.midpoint.gui.api.model.ReadOnlyModel;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.model.api.visualizer.Scene;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.schema.DeltaConvertor;
import com.evolveum.midpoint.schema.result.OperationResult;
Expand Down Expand Up @@ -164,7 +164,7 @@ private String getBoxCssClass() {
}

private SceneDto loadSceneForDelta() throws SchemaException, ExpressionEvaluationException {
Scene scene;
Visualization scene;

ObjectDelta<? extends ObjectType> delta;
ObjectDeltaType deltaType = getModel().getObject().getObjectDelta();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@
import com.evolveum.midpoint.model.api.authentication.CompiledObjectCollectionView;
import com.evolveum.midpoint.model.api.authentication.GuiProfiledPrincipal;
import com.evolveum.midpoint.model.api.util.ResourceUtils;
import com.evolveum.midpoint.model.api.visualizer.Scene;
import com.evolveum.midpoint.model.api.visualizer.Visualization;
import com.evolveum.midpoint.prism.*;
import com.evolveum.midpoint.prism.crypto.EncryptionException;
import com.evolveum.midpoint.prism.crypto.Protector;
Expand Down Expand Up @@ -4450,7 +4450,7 @@ public static SceneDto createSceneDto(CaseType caseObject, PageBase pageBase, St
OperationResult result = new OperationResult(operation);
Task task = pageBase.createSimpleTask(operation);
try {
Scene deltasScene = SceneUtil.visualizeObjectTreeDeltas(caseObject.getApprovalContext().getDeltasToApprove(),
Visualization deltasScene = SceneUtil.visualizeObjectTreeDeltas(caseObject.getApprovalContext().getDeltasToApprove(),
CaseTypeUtil.isClosed(caseObject) ? "pageWorkItem.changesApplied" : "pageWorkItem.delta",
pageBase.getPrismContext(), pageBase.getModelInteractionService(), objectRef, task, result);
return new SceneDto(deltasScene);
Expand All @@ -4469,7 +4469,7 @@ public static SceneDto createSceneDtoForManualCase(CaseType caseObject, PageBase
OperationResult result = new OperationResult(operation);
Task task = pageBase.createSimpleTask(operation);
try {
Scene deltasScene = SceneUtil.visualizeObjectDeltaType(caseObject.getManualProvisioningContext().getPendingOperation().getDelta(),
Visualization deltasScene = SceneUtil.visualizeObjectDeltaType(caseObject.getManualProvisioningContext().getPendingOperation().getDelta(),
CaseTypeUtil.isClosed(caseObject) ? "pageWorkItem.changesApplied" : "pageWorkItem.changesToBeApplied", pageBase.getPrismContext(), pageBase.getModelInteractionService(), objectRef, task, result);
return new SceneDto(deltasScene);
} catch (SchemaException | ExpressionEvaluationException ex) {
Expand Down Expand Up @@ -4653,7 +4653,7 @@ public static List<SceneDto> computeChangesCategorizationList(ChangesByState cha
private static SceneDto createTaskChangesDto(String titleKey, String boxClassOverride, ObjectTreeDeltas deltas, ModelInteractionService modelInteractionService,
PrismContext prismContext, ObjectReferenceType objectRef, Task opTask, OperationResult result) throws SchemaException, ExpressionEvaluationException {
ObjectTreeDeltasType deltasType = ObjectTreeDeltas.toObjectTreeDeltasType(deltas);
Scene scene = SceneUtil.visualizeObjectTreeDeltas(deltasType, titleKey, prismContext, modelInteractionService, objectRef, opTask, result);
Visualization scene = SceneUtil.visualizeObjectTreeDeltas(deltasType, titleKey, prismContext, modelInteractionService, objectRef, opTask, result);
SceneDto sceneDto = new SceneDto(scene);
sceneDto.setBoxClassOverride(boxClassOverride);
return sceneDto;
Expand Down Expand Up @@ -5431,4 +5431,17 @@ private static void createToastForResource(AjaxRequestTarget target, Component p
.delay(5_000)
.body(panel.getString(key + ".text")).show(target);
}

public static String translateMessage(LocalizableMessage msg) {
if (msg == null) {
return null;
}

MidPointApplication application = MidPointApplication.get();
if (application == null) {
return msg.getFallbackMessage();
}

return application.getLocalizationService().translate(msg, getCurrentLocale());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,20 @@
*/
package com.evolveum.midpoint.gui.impl.page.admin.component.preview;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;

import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.impl.page.admin.focus.PageFocusPreviewChanges;
import com.evolveum.midpoint.model.api.context.ModelContext;
import com.evolveum.midpoint.model.api.context.ModelProjectionContext;
import com.evolveum.midpoint.model.api.visualizer.Scene;
import com.evolveum.midpoint.prism.ItemDefinition;
import com.evolveum.midpoint.prism.delta.ItemDelta;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.prism.util.CloneUtil;
import com.evolveum.midpoint.model.api.visualizer.ModelContextVisualization;
import com.evolveum.midpoint.model.api.visualizer.Visualization;
import com.evolveum.midpoint.repo.common.ObjectResolver;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.task.api.Task;
Expand All @@ -38,17 +42,6 @@
import com.evolveum.midpoint.xml.ns._public.common.common_3.ApprovalSchemaExecutionInformationType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.PolicyRuleEnforcerPreviewOutputType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType;

import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import static org.apache.commons.collections4.CollectionUtils.addIgnoreNull;

public class PreviewChangesTabPanel<O extends ObjectType> extends BasePanel<ModelContext<O>> {
private static final long serialVersionUID = 1L;
Expand Down Expand Up @@ -80,41 +73,21 @@ protected void onInitialize() {
}

private void initModels() {
final List<ObjectDelta<? extends ObjectType>> primaryDeltas = new ArrayList<>();
final List<ObjectDelta<? extends ObjectType>> secondaryDeltas = new ArrayList<>();
final List<? extends Scene> primaryScenes;
final List<? extends Scene> secondaryScenes;
ModelContextVisualization modelScene;

ModelContext<O> modelContext = getModelObject();
try {
if (modelContext != null) {
if (modelContext.getFocusContext() != null) {
addIgnoreNull(primaryDeltas, CloneUtil.clone(modelContext.getFocusContext().getPrimaryDelta()));
ObjectDelta<O> summarySecondaryDelta = CloneUtil.clone(modelContext.getFocusContext().getSummarySecondaryDelta());
if (summarySecondaryDelta != null && !summarySecondaryDelta.getModifications().isEmpty()) {
secondaryDeltas.add(summarySecondaryDelta);
}
}

for (ModelProjectionContext projCtx : modelContext.getProjectionContexts()) {
ObjectDelta<ShadowType> primaryDelta = CloneUtil.clone(projCtx.getPrimaryDelta());
addIgnoreNull(primaryDeltas, primaryDelta);
if (!isEquivalentWithoutOperationAttr(primaryDelta, CloneUtil.clone(projCtx.getExecutableDelta()))) {
addIgnoreNull(secondaryDeltas, CloneUtil.clone(projCtx.getExecutableDelta()));
}
}
}
if (LOGGER.isTraceEnabled()) {
LOGGER.trace("Primary deltas:\n{}", DebugUtil.debugDump(primaryDeltas));
LOGGER.trace("Secondary deltas:\n{}", DebugUtil.debugDump(secondaryDeltas));
}

Task task = getPageBase().createSimpleTask("visualize");
primaryScenes = getPageBase().getModelInteractionService().visualizeDeltas(primaryDeltas, task, task.getResult());
secondaryScenes = getPageBase().getModelInteractionService().visualizeDeltas(secondaryDeltas, task, task.getResult());
OperationResult result = task.getResult();

modelScene = getPageBase().getModelInteractionService().visualizeModelContext(modelContext, task, result);
} catch (SchemaException | ExpressionEvaluationException | ConfigurationException e) {
throw new SystemException(e); // TODO
}

final List<? extends Visualization> primaryScenes = modelScene.getPrimary();
final List<? extends Visualization> secondaryScenes = modelScene.getSecondary();

if (LOGGER.isTraceEnabled()) {
LOGGER.trace("Creating context DTO for primary deltas:\n{}", DebugUtil.debugDump(primaryScenes));
LOGGER.trace("Creating context DTO for secondary deltas:\n{}", DebugUtil.debugDump(secondaryScenes));
Expand All @@ -124,10 +97,12 @@ private void initModels() {
primaryScenes.size() != 1 ? "PagePreviewChanges.primaryChangesMore" : "PagePreviewChanges.primaryChangesOne", primaryScenes.size());
final WrapperScene secondaryScene = new WrapperScene(secondaryScenes,
secondaryScenes.size() != 1 ? "PagePreviewChanges.secondaryChangesMore" : "PagePreviewChanges.secondaryChangesOne", secondaryScenes.size());

final SceneDto primarySceneDto = new SceneDto(primaryScene);
final SceneDto secondarySceneDto = new SceneDto(secondaryScene);
primaryDeltasModel = (IModel<SceneDto>) () -> primarySceneDto;
secondaryDeltasModel = (IModel<SceneDto>) () -> secondarySceneDto;

primaryDeltasModel = () -> primarySceneDto;
secondaryDeltasModel = () -> secondarySceneDto;

PolicyRuleEnforcerPreviewOutputType enforcements = modelContext != null
? modelContext.getPolicyRuleEnforcerPreviewOutput()
Expand Down Expand Up @@ -163,21 +138,6 @@ private void initModels() {
approvalsModel = Model.ofList(approvals);
}

private boolean isEquivalentWithoutOperationAttr(ObjectDelta<ShadowType> primaryDelta, ObjectDelta<ShadowType> secondaryDelta) {
if (primaryDelta == null || secondaryDelta == null) {
return false;
}
List<ItemDelta> modifications = new ArrayList<ItemDelta>();
modifications.addAll(secondaryDelta.getModifications());
for (ItemDelta secondaryModification : modifications){
ItemDefinition def = secondaryModification.getDefinition();
if (def != null && def.isOperational()) {
secondaryDelta.removeModification(secondaryModification);
}
}
return primaryDelta.equivalent(secondaryDelta);
}

private void initLayout() {
add(new ScenePanel(ID_PRIMARY_DELTAS_SCENE, primaryDeltasModel));
add(new ScenePanel(ID_SECONDARY_DELTAS_SCENE, secondaryDeltasModel));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
import java.util.stream.Collectors;
import javax.xml.namespace.QName;

import com.evolveum.midpoint.provisioning.api.Resource;
import com.evolveum.midpoint.schema.util.Resource;

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -486,7 +486,7 @@ private <O extends ObjectType> String generateNonce(NonceCredentialsPolicyType n
noncePolicy.getValuePolicyRef().getOid(), PageSelfRegistration.this, task, result);
if (valuePolicy == null) {
LOGGER.error("Nonce cannot be generated, as value policy {} cannot be fetched", noncePolicy.getValuePolicyRef().getOid());
throw new ObjectNotFoundException("Nonce cannot be generated"); // no more information (security); TODO implement more correctly
throw new ObjectNotFoundException("Nonce cannot be generated"); // no more information (security); TODO implement more correctly
}
policy = valuePolicy.asObjectable();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,27 @@
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.xml.ns._public.common.common_3.RichHyperlinkType;

import org.apache.commons.lang3.StringUtils;

/**
* Created by Kate on 19.09.2016.
*/
public class AdditionalMenuItem extends MainMenuItem {

private String targetUrl;

public AdditionalMenuItem(RichHyperlinkType link, Class<? extends PageBase> page) {
super(link.getLabel(), link.getIcon() == null ? BaseMenuItem.DEFAULT_ICON : link.getIcon().getCssClass(), page);

this.targetUrl = link.getTargetUrl();
}


public String getTargetUrl() {
return targetUrl;
}

@Override
protected boolean isNotEmpty() {
return super.isNotEmpty() || StringUtils.isNotEmpty(targetUrl);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ public void addCollectionMenuItem(MenuItem menuItem) {
}
}

private boolean isNotEmpty() {
protected boolean isNotEmpty() {
// If pageClass is not null, we can check page authorization
// otherwise, empty items means that no sub-items were authorized
if (getPageClass() != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,14 @@ public Object getValue() {
return value;
}

public String getAttribute() {
return attribute;
}

public String getChangeType() {
return changeType;
}

public static Collection<? extends ModificationDto> createModificationDtoList(PropertyDelta delta) {

String attribute = getItemName(delta);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,18 @@

package com.evolveum.midpoint.web.component.model.delta;

import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
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.Model;
import org.apache.wicket.model.PropertyModel;

import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.prism.polystring.PolyString;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;

public class ModificationsPanel extends BasePanel<DeltaDto> {

private static final Trace LOGGER = TraceManager.getTrace(ModificationsPanel.class);
Expand All @@ -36,12 +38,20 @@ protected void initLayout() {
add(new ListView<ModificationDto>(ID_MODIFICATION, new PropertyModel(getModel(), DeltaDto.F_MODIFICATIONS)) {
@Override
protected void populateItem(ListItem<ModificationDto> item) {
item.add(new Label(ID_ATTRIBUTE, new PropertyModel(item.getModel(), ModificationDto.F_ATTRIBUTE)));
item.add(new Label(ID_CHANGE_TYPE, new PropertyModel(item.getModel(), ModificationDto.F_CHANGE_TYPE)));
item.add(new Label(ID_ATTRIBUTE, () -> item.getModelObject().getAttribute()));
item.add(new Label(ID_CHANGE_TYPE, () -> item.getModelObject().getChangeType()));

if (item.getModelObject().getValue() instanceof ContainerValueDto) {
item.add(new ContainerValuePanel(ID_VALUE, new Model((ContainerValueDto) item.getModelObject().getValue())));
item.add(new ContainerValuePanel(ID_VALUE, () -> (ContainerValueDto) item.getModelObject().getValue()));
} else { // should be String
item.add(new Label(ID_VALUE, new PropertyModel(item.getModel(), ModificationDto.F_VALUE)));
item.add(new Label(ID_VALUE, () -> {
Object value = item.getModelObject().getValue();
if (value instanceof PolyString) {
return WebComponentUtil.getTranslatedPolyString((PolyString) value);
}

return value;
}));
}
}
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
import com.evolveum.midpoint.model.api.context.ModelContext;
import com.evolveum.midpoint.model.api.context.ModelProjectionContext;
import com.evolveum.midpoint.model.api.context.ModelState;
import com.evolveum.midpoint.model.api.visualizer.Scene;
import com.evolveum.midpoint.model.api.visualizer.Visualization;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.schema.result.OperationResult;
Expand Down Expand Up @@ -60,7 +60,7 @@ public ModelOperationStatusDto(ModelContext<?> modelContext, ModelInteractionSer
// primaryDelta
final List<ObjectDelta<? extends ObjectType>> primaryDeltas = new ArrayList<>();
// final List<ObjectDelta<? extends ObjectType>> secondaryDeltas = new ArrayList<>();
final List<? extends Scene> primaryScenes;
final List<? extends Visualization> primaryScenes;
// final List<? extends Scene> secondaryScenes;
try {
addIgnoreNull(primaryDeltas, modelContext.getFocusContext().getPrimaryDelta());
Expand Down

0 comments on commit dabbde0

Please sign in to comment.