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 23, 2022
2 parents 9a600b3 + 30f121c commit 1092957
Show file tree
Hide file tree
Showing 105 changed files with 1,950 additions and 1,211 deletions.
3 changes: 0 additions & 3 deletions config/sql/native-new/postgres-new-upgrade-audit.sql
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,6 @@
-- SCHEMA-COMMIT is a commit which should be used to initialize the DB for testing changes below it.
-- Check out that commit and initialize a fresh DB with postgres-new-audit.sql to test upgrades.

-- Initializing the last change number used in postgres-new-upgrade.sql.
call apply_audit_change(0, $$ SELECT 1 $$, true);

-- SCHEMA-COMMIT 4.0: commit 69e8c29b

-- changes for 4.4.1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,6 @@

package com.evolveum.midpoint.gui.api;

import java.lang.annotation.Annotation;
import java.lang.reflect.InvocationTargetException;
import java.util.*;
import javax.annotation.PostConstruct;
import javax.xml.namespace.QName;

import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.markup.html.panel.Panel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.evolveum.midpoint.gui.impl.util.GuiImplUtil;
import com.evolveum.midpoint.model.api.AdminGuiConfigurationMergeManager;
import com.evolveum.midpoint.model.api.authentication.CompiledGuiProfile;
Expand All @@ -41,6 +29,18 @@
import com.evolveum.prism.xml.ns._public.types_3.PolyStringTranslationType;
import com.evolveum.prism.xml.ns._public.types_3.PolyStringType;

import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.markup.html.panel.Panel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.xml.namespace.QName;
import java.lang.annotation.Annotation;
import java.lang.reflect.InvocationTargetException;
import java.util.*;

@Component
public class DefaultGuiConfigurationCompiler implements GuiProfileCompilable {

Expand Down Expand Up @@ -264,7 +264,7 @@ private Set<Class<? extends Containerable>> findSupportedContainerables() {
for (Class<?> clazz : panelInstanceClasses) {
PanelInstances pis = clazz.getAnnotation(PanelInstances.class);
if (pis != null) {
Arrays.asList(pis.instances()).forEach(pi -> addSupportedContainerable(containerables, pi));
Arrays.asList(pis.value()).forEach(pi -> addSupportedContainerable(containerables, pi));
}

PanelInstance pi = clazz.getAnnotation(PanelInstance.class);
Expand Down Expand Up @@ -322,7 +322,7 @@ private List<ContainerPanelConfigurationType> getPanelsFor(Class<? extends Conta
for (Class<?> clazz : panelInstanceClasses) {
PanelInstances pis = clazz.getAnnotation(PanelInstances.class);
if (pis != null) {
Arrays.asList(pis.instances()).forEach(pi -> addPanelsFor(panels, containerable, clazz, pi));
Arrays.asList(pis.value()).forEach(pi -> addPanelsFor(panels, containerable, clazz, pi));
}

PanelInstance pi = clazz.getAnnotation(PanelInstance.class);
Expand Down Expand Up @@ -417,16 +417,32 @@ private ContainerPanelConfigurationType compileContainerPanelConfiguration(Class
config.setApplicableForOperation(panelInstance.applicableForOperation()[0]);
}

if (StringUtils.isNotEmpty(panelInstance.containerPath())) {
config.setPath(prismContext.itemPathParser().asItemPathType(panelInstance.containerPath()));
}
createDefaultVirtualContainer(config, panelInstance.containerPath(), panelInstance.expanded());

if (StringUtils.isNotEmpty(panelInstance.type())) {
config.setType(QNameUtil.uriToQName(panelInstance.type(), SchemaConstantsGenerated.NS_COMMON));
}

return config;
}

private void createDefaultVirtualContainer(ContainerPanelConfigurationType config, String path, Boolean expanded) {
if (StringUtils.isEmpty(path)) {
return;
}

VirtualContainersSpecificationType container = new VirtualContainersSpecificationType();
if ("empty".equals(path)) {
container.setPath(new ItemPathType(ItemPath.EMPTY_PATH));
} else {
ItemPathType itemPath = prismContext.itemPathParser().asItemPathType(path);
container.setPath(itemPath);
}
container.setDisplayOrder(10);
container.setExpanded(expanded);
config.getContainer().add(container);
}

private void addPanelTypeConfiguration(Class<?> clazz, ContainerPanelConfigurationType config) {
PanelType panelType = clazz.getAnnotation(PanelType.class);
if (panelType == null) {
Expand All @@ -439,28 +455,13 @@ private void addPanelTypeConfiguration(Class<?> clazz, ContainerPanelConfigurati
config.setType(def.getTypeName());
}
}
compileDefaultContainerSpecification(panelType, config);
createDefaultVirtualContainer(config, panelType.defaultContainerPath(), false);

if (panelType.experimental() && BooleanUtils.isNotTrue(experimentalFeaturesEnabled)) {
config.setVisibility(UserInterfaceElementVisibilityType.HIDDEN);
}
}

private void compileDefaultContainerSpecification(PanelType panelType, ContainerPanelConfigurationType config) {
if (panelType.defaultContainerPath().isBlank()) {
return;
}
VirtualContainersSpecificationType defaultContainer = new VirtualContainersSpecificationType();
if ("empty".equals(panelType.defaultContainerPath())) {
defaultContainer.setPath(new ItemPathType(ItemPath.EMPTY_PATH));
} else {
ItemPathType path = prismContext.itemPathParser().asItemPathType(panelType.defaultContainerPath());
defaultContainer.setPath(path);
}
defaultContainer.setDisplayOrder(10);
config.getContainer().add(defaultContainer);
}

private void compileDisplay(PanelInstance panelInstance, ContainerPanelConfigurationType config) {
PanelDisplay display = panelInstance.display();
if (display != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,11 @@ public interface PrismContainerWrapper<C extends Containerable> extends ItemWrap

boolean isExpanded();


ItemStatus getStatus();

void setVirtual(boolean virtual);
boolean isVirtual();

boolean isVirtual();

<T extends Containerable> PrismContainerWrapper<T> findContainer(ItemPath path) throws SchemaException;
<T extends Containerable> PrismContainerWrapper<T> findContainer(String identifier);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
import java.util.Map;
import javax.xml.namespace.QName;

import com.evolveum.midpoint.gui.impl.page.admin.systemconfiguration.page.PageBaseSystemConfiguration;

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
Expand Down Expand Up @@ -629,6 +631,16 @@ private boolean isObjectCollectionMenuActive(CompiledObjectCollectionView object


private void createSystemConfigurationMenu(SideBarMenuItem item) {
MainMenuItem system = createMainMenuItem("PageAdmin.menu.top.configuration.basic", "fa fa-cog", com.evolveum.midpoint.gui.impl.page.admin.systemconfiguration.PageSystemConfiguration.class);
PageBase page = getPageBase();
if (page != null && PageBaseSystemConfiguration.class.isAssignableFrom(page.getClass())) {

// title key is not nice - model should be sent there...
MenuItem menuItem = new MenuItem(page.getClass().getSimpleName() + ".title", page.getClass(), new PageParameters());
system.addMenuItem(menuItem);
}
item.addMainMenuItem(system);

MainMenuItem systemConfigMenu = createMainMenuItem("PageAdmin.menu.top.configuration.basic", "fa fa-cog");
createSystemConfigurationTabMebu(systemConfigMenu);
item.addMainMenuItem(systemConfigMenu);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@
import java.io.Serializable;
import javax.annotation.PostConstruct;

import com.evolveum.midpoint.web.page.admin.reports.component.SimpleAceEditorPanel;

import org.apache.wicket.markup.html.panel.Panel;
import org.springframework.stereotype.Component;

Expand All @@ -19,7 +17,7 @@
import com.evolveum.midpoint.util.QNameUtil;
import com.evolveum.midpoint.web.page.admin.configuration.component.EmptyOnBlurAjaxFormUpdatingBehaviour;
import com.evolveum.midpoint.web.page.admin.configuration.component.EmptyOnChangeAjaxFormUpdatingBehavior;
import com.evolveum.midpoint.web.page.admin.reports.component.AceEditorPanel;
import com.evolveum.midpoint.web.page.admin.reports.component.SimpleAceEditorPanel;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ExpressionType;

@Component
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,11 @@

<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<div class="details-panel">
<div class="details-panel-navigation">
<div wicket:id="navigation"></div>
</div>
<wicket:enclosure child="navigation">
<div class="details-panel-navigation">
<div wicket:id="navigation"></div>
</div>
</wicket:enclosure>
<div class="details-panel-details-form">
<div wicket:id="mainPanel"></div>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -388,8 +388,8 @@ private boolean isApplicableForOperation(ContainerPanelConfigurationType configu

private void initMainPanel(ContainerPanelConfigurationType panelConfig, MidpointForm form) {
if (panelConfig == null) {
// form.addOrReplace(new Label(ID_MAIN_PANEL, Model.of("No panels defined"))); // todo - create nicer panel
WebMarkupContainer panel = new MessagePanel(ID_MAIN_PANEL, MessagePanel.MessagePanelType.WARN, createStringResource("AbstractPageObjectDetails.noPanels"), false);
WebMarkupContainer panel = new MessagePanel(ID_MAIN_PANEL, MessagePanel.MessagePanelType.WARN,
createStringResource("AbstractPageObjectDetails.noPanels"), false);
panel.add(AttributeAppender.append("style", "margin-top: 20px;"));

form.addOrReplace(panel);
Expand All @@ -413,13 +413,16 @@ private DetailsNavigationPanel initNavigation() {
}

private DetailsNavigationPanel<O> createNavigationPanel(IModel<List<ContainerPanelConfigurationType>> panels) {
return new DetailsNavigationPanel<>(AbstractPageObjectDetails.ID_NAVIGATION, objectDetailsModels, panels) {
DetailsNavigationPanel panel = new DetailsNavigationPanel<>(AbstractPageObjectDetails.ID_NAVIGATION, objectDetailsModels, panels) {

@Override
protected void onClickPerformed(ContainerPanelConfigurationType config, AjaxRequestTarget target) {
replacePanel(config, target);
}
};
panel.add(new VisibleBehaviour(() -> panels.getObject() != null && panels.getObject().size() > 1));

return panel;
}

public void replacePanel(ContainerPanelConfigurationType config, AjaxRequestTarget target) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,34 @@
*/
package com.evolveum.midpoint.gui.impl.page.admin.abstractrole.component;

import java.util.*;
import javax.xml.namespace.QName;

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.Component;
import org.apache.wicket.RestartResponseException;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.export.AbstractExportableColumn;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.StringResourceModel;
import org.jetbrains.annotations.NotNull;

import com.evolveum.midpoint.gui.api.GuiStyleConstants;
import com.evolveum.midpoint.gui.api.component.ChooseMemberPopup;
import com.evolveum.midpoint.gui.api.component.MainObjectListPanel;
import com.evolveum.midpoint.gui.api.model.LoadableModel;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.api.util.GuiDisplayTypeUtil;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.impl.component.icon.CompositedIcon;
import com.evolveum.midpoint.gui.impl.component.icon.CompositedIconBuilder;
import com.evolveum.midpoint.gui.impl.component.icon.IconCssStyle;
Expand All @@ -24,8 +45,6 @@
import com.evolveum.midpoint.prism.PrismConstants;
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.PrismReferenceDefinition;
import com.evolveum.midpoint.prism.path.ItemName;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.prism.util.PolyStringUtils;
import com.evolveum.midpoint.schema.GetOperationOptions;
Expand All @@ -35,7 +54,6 @@
import com.evolveum.midpoint.schema.constants.RelationTypes;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.schema.util.ObjectTypeUtil;
import com.evolveum.midpoint.web.security.util.GuiAuthorizationConstants;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.DisplayableValue;
import com.evolveum.midpoint.util.QNameUtil;
Expand All @@ -45,7 +63,6 @@
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.application.PanelDisplay;
import com.evolveum.midpoint.web.application.PanelInstance;
import com.evolveum.midpoint.web.application.PanelInstances;
import com.evolveum.midpoint.web.application.PanelType;
import com.evolveum.midpoint.web.component.AjaxIconButton;
import com.evolveum.midpoint.web.component.CompositedIconButtonDto;
Expand All @@ -65,54 +82,31 @@
import com.evolveum.midpoint.web.page.admin.configuration.component.HeaderMenuAction;
import com.evolveum.midpoint.web.page.admin.roles.AbstractRoleCompositedSearchItem;
import com.evolveum.midpoint.web.page.admin.roles.SearchBoxConfigurationHelper;
import com.evolveum.midpoint.web.security.util.GuiAuthorizationConstants;
import com.evolveum.midpoint.web.session.MemberPanelStorage;
import com.evolveum.midpoint.web.session.PageStorage;
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 com.evolveum.prism.xml.ns._public.types_3.PolyStringType;

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.Component;
import org.apache.wicket.RestartResponseException;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.export.AbstractExportableColumn;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.StringResourceModel;
import org.jetbrains.annotations.NotNull;

import javax.xml.namespace.QName;
import java.util.*;

@PanelType(name = "members")
@PanelInstances(instances = {
@PanelInstance(identifier = "roleMembers",
applicableForType = RoleType.class,
applicableForOperation = OperationTypeType.MODIFY,
display = @PanelDisplay(label = "pageRole.members", icon = GuiStyleConstants.CLASS_GROUP_ICON, order = 80)),
@PanelInstance(identifier = "roleGovernance",
applicableForType = RoleType.class,
applicableForOperation = OperationTypeType.MODIFY,
display = @PanelDisplay(label = "pageRole.governance", icon = GuiStyleConstants.CLASS_GROUP_ICON, order = 90)),
@PanelInstance(identifier = "serviceMembers",
applicableForType = ServiceType.class,
applicableForOperation = OperationTypeType.MODIFY,
display = @PanelDisplay(label = "pageRole.members", icon = GuiStyleConstants.CLASS_GROUP_ICON, order = 80)),
@PanelInstance(identifier = "serviceGovernance",
applicableForType = ServiceType.class,
applicableForOperation = OperationTypeType.MODIFY,
display = @PanelDisplay(label = "pageRole.governance", icon = GuiStyleConstants.CLASS_GROUP_ICON, order = 90))
})
@PanelInstance(identifier = "roleMembers",
applicableForType = RoleType.class,
applicableForOperation = OperationTypeType.MODIFY,
display = @PanelDisplay(label = "pageRole.members", icon = GuiStyleConstants.CLASS_GROUP_ICON, order = 80))
@PanelInstance(identifier = "roleGovernance",
applicableForType = RoleType.class,
applicableForOperation = OperationTypeType.MODIFY,
display = @PanelDisplay(label = "pageRole.governance", icon = GuiStyleConstants.CLASS_GROUP_ICON, order = 90))
@PanelInstance(identifier = "serviceMembers",
applicableForType = ServiceType.class,
applicableForOperation = OperationTypeType.MODIFY,
display = @PanelDisplay(label = "pageRole.members", icon = GuiStyleConstants.CLASS_GROUP_ICON, order = 80))
@PanelInstance(identifier = "serviceGovernance",
applicableForType = ServiceType.class,
applicableForOperation = OperationTypeType.MODIFY,
display = @PanelDisplay(label = "pageRole.governance", icon = GuiStyleConstants.CLASS_GROUP_ICON, order = 90))
@PanelDisplay(label = "Members", order = 60)
public class AbstractRoleMemberPanel<R extends AbstractRoleType> extends AbstractObjectMainPanel<R, FocusDetailsModels<R>> {

Expand Down

0 comments on commit 1092957

Please sign in to comment.