() {
@Override
protected String load() {
- long from = 0;
- long to = 0;
- long count = 0;
-
- IPageable pageable = getTable();
- if (pageable instanceof DataViewBase) {
- DataViewBase view = (DataViewBase) pageable;
-
- from = view.getFirstItemOffset() + 1;
- to = from + view.getItemsPerPage() - 1;
- long itemCount = view.getItemCount();
- if (to > itemCount) {
- to = itemCount;
- }
- count = itemCount;
- } else if (pageable instanceof DataTable) {
- DataTable table = (DataTable) pageable;
-
- from = table.getCurrentPage() * table.getItemsPerPage() + 1;
- to = from + table.getItemsPerPage() - 1;
- long itemCount = table.getItemCount();
- if (to > itemCount) {
- to = itemCount;
- }
- count = itemCount;
- }
-
- if (count > 0) {
- PageBase.createStringResourceStatic(CountToolbar.this, "CountToolbar.label", new Object[]{from, to, count});
- }
-
- return PageBase.createStringResourceStatic(CountToolbar.this, "CountToolbar.noFound").getString();
+ return createCountString(component, pageable);
}
};
}
+ public static String createCountString(Component component, IPageable pageable){
+ long from = 0;
+ long to = 0;
+ long count = 0;
+
+ if (pageable instanceof DataViewBase) {
+ DataViewBase view = (DataViewBase) pageable;
+
+ from = view.getFirstItemOffset() + 1;
+ to = from + view.getItemsPerPage() - 1;
+ long itemCount = view.getItemCount();
+ if (to > itemCount) {
+ to = itemCount;
+ }
+ count = itemCount;
+ } else if (pageable instanceof DataTable) {
+ DataTable table = (DataTable) pageable;
+
+ from = table.getCurrentPage() * table.getItemsPerPage() + 1;
+ to = from + table.getItemsPerPage() - 1;
+ long itemCount = table.getItemCount();
+ if (to > itemCount) {
+ to = itemCount;
+ }
+ count = itemCount;
+ }
+
+ if (count > 0) {
+ if (count == Integer.MAX_VALUE) {
+ return PageBase.createStringResourceStatic(component, "CountToolbar.label.unknownCount",
+ new Object[] { from, to }).getString();
+ }
+
+ return PageBase.createStringResourceStatic(component, "CountToolbar.label", new Object[]{from, to, count}).getString();
+ }
+
+ return PageBase.createStringResourceStatic(component, "CountToolbar.noFound").getString();
+ }
+
protected void pageSizeChanged(AjaxRequestTarget target) {
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel.java
index 35c5bc34e36..9890fa52fca 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel.java
@@ -40,6 +40,7 @@
*
* todo rewrite, Overcomplicated code.
*/
+@Deprecated
public class MultiButtonPanel extends BasePanel {
private static final long serialVersionUID = 1L;
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel2.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel2.html
new file mode 100644
index 00000000000..53fc652760c
--- /dev/null
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel2.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel2.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel2.java
new file mode 100644
index 00000000000..d1850eb9ee2
--- /dev/null
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel2.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 2010-2018 Evolveum
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.evolveum.midpoint.web.component.data;
+
+import com.evolveum.midpoint.gui.api.component.BasePanel;
+import com.evolveum.midpoint.web.component.AjaxIconButton;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.behavior.AttributeAppender;
+import org.apache.wicket.markup.repeater.RepeatingView;
+import org.apache.wicket.model.IModel;
+
+/**
+ * Created by Viliam Repan (lazyman).
+ */
+public class MultiButtonPanel2 extends BasePanel {
+
+ private static final long serialVersionUID = 1L;
+
+ private static final String ID_BUTTONS = "buttons";
+
+ private int numberOfButtons;
+
+ public MultiButtonPanel2(String id, IModel model, int numberOfButtons) {
+ super(id, model);
+
+ this.numberOfButtons = numberOfButtons;
+ }
+
+ @Override
+ protected void onInitialize() {
+ super.onInitialize();
+
+ initLayout();
+ }
+
+ public int getNumberOfButtons() {
+ return numberOfButtons;
+ }
+
+ private void initLayout() {
+ RepeatingView buttons = new RepeatingView(ID_BUTTONS);
+ add(buttons);
+
+ for (int id = 0; id < numberOfButtons; id++) {
+ AjaxIconButton button = createButton(id, buttons.newChildId(), getModel());
+ if (button != null) {
+ buttons.add(button);
+ }
+ }
+ }
+
+ protected AjaxIconButton createButton(int index, String componentId, IModel model) {
+ return null;
+ }
+
+ protected AjaxIconButton buildDefaultButton(String componentId, IModel icon, IModel title,
+ IModel cssClass, final AjaxEventProcessor onClickProcessor) {
+ AjaxIconButton btn = new AjaxIconButton(componentId, icon, title) {
+
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ if (onClickProcessor != null) {
+ onClickProcessor.onEventPerformed(target);
+ }
+ }
+ };
+
+ btn.showTitleAsLabel(true);
+ if (cssClass != null) {
+ btn.add(AttributeAppender.append("class", cssClass));
+ }
+
+ return btn;
+ }
+}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/MultiButtonColumn.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/MultiButtonColumn.java
index 606ca686f49..d51c49af536 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/MultiButtonColumn.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/MultiButtonColumn.java
@@ -29,6 +29,7 @@
* @author shood
* @author mederly
*/
+@Deprecated
public class MultiButtonColumn extends AbstractColumn {
protected MultiButtonPanel panel;
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/ObjectHistoryTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/ObjectHistoryTabPanel.java
index 7c73fe7cb0a..6355bde2597 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/ObjectHistoryTabPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/ObjectHistoryTabPanel.java
@@ -20,8 +20,16 @@
import java.util.List;
import com.evolveum.midpoint.gui.api.GuiStyleConstants;
+import com.evolveum.midpoint.web.component.AjaxIconButton;
+import com.evolveum.midpoint.web.component.data.MultiButtonPanel2;
import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
+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.AbstractColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
@@ -57,10 +65,10 @@
* Created by honchar.
*/
public class ObjectHistoryTabPanel extends AbstractObjectTabPanel {
-
- private static final long serialVersionUID = 1L;
-
- private static final String ID_MAIN_PANEL = "mainPanel";
+
+ private static final long serialVersionUID = 1L;
+
+ private static final String ID_MAIN_PANEL = "mainPanel";
private static final Trace LOGGER = TraceManager.getTrace(ObjectHistoryTabPanel.class);
private static final String DOT_CLASS = ObjectHistoryTabPanel.class.getName() + ".";
private static final String OPERATION_RESTRUCT_OBJECT = DOT_CLASS + "restructObject";
@@ -80,101 +88,81 @@ private void initLayout(final LoadableModel> focusWrapperModel,
@Override
protected List> initColumns() {
List> columns = super.initColumns();
-
+
IColumn column
- = new MultiButtonColumn(new Model(), 2) {
- private static final long serialVersionUID = 1L;
+ = new AbstractColumn(new Model<>()) {
- private final DoubleButtonColumn.BUTTON_COLOR_CLASS[] colors = {
- DoubleButtonColumn.BUTTON_COLOR_CLASS.INFO,
- DoubleButtonColumn.BUTTON_COLOR_CLASS.SUCCESS
- };
+ private static final long serialVersionUID = 1L;
@Override
- public String getCaption(int id) {
- return "";
+ public void populateItem(Item> cellItem, String componentId,
+ IModel rowModel) {
+
+ cellItem.add(new MultiButtonPanel2(componentId, rowModel, 2) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected AjaxIconButton createButton(int index, String componentId, IModel model) {
+ AjaxIconButton btn = null;
+ switch (index) {
+ case 0:
+ btn = buildDefaultButton(componentId, new Model<>("fa fa-circle-o"),
+ createStringResource("ObjectHistoryTabPanel.viewHistoricalObjectDataTitle"),
+ new Model<>("btn btn-sm " + DoubleButtonColumn.BUTTON_COLOR_CLASS.INFO),
+ target ->
+ currentStateButtonClicked(target, focusWrapperModel.getObject().getOid(),
+ model.getObject().getEventIdentifier(),
+ WebComponentUtil.getLocalizedDate(model.getObject().getTimestamp(), DateLabelComponent.SHORT_NOTIME_STYLE),
+ page.getCompileTimeClass()));
+ break;
+ case 1:
+ btn = buildDefaultButton(componentId, new Model<>(GuiStyleConstants.CLASS_FILE_TEXT),
+ createStringResource("ObjectHistoryTabPanel.viewHistoricalObjectXmlTitle"),
+ new Model<>("btn btn-sm " + DoubleButtonColumn.BUTTON_COLOR_CLASS.SUCCESS),
+ target ->
+ viewObjectXmlButtonClicked(focusWrapperModel.getObject().getOid(),
+ model.getObject().getEventIdentifier(),
+ page.getCompileTimeClass(),
+ WebComponentUtil.getLocalizedDate(model.getObject().getTimestamp(), DateLabelComponent.SHORT_NOTIME_STYLE)));
+ break;
+ }
+
+ return btn;
+ }
+ });
}
+ };
- @Override
- public String getButtonTitle(int id) {
- switch (id) {
- case 0:
- return page.createStringResource("ObjectHistoryTabPanel.viewHistoricalObjectDataTitle").getString();
- case 1:
- return page.createStringResource("ObjectHistoryTabPanel.viewHistoricalObjectXmlTitle").getString();
- }
- return "";
- }
+ columns.add(column);
- @Override
- public String getButtonColorCssClass(int id) {
- return colors[id].toString();
- }
+ return columns;
+ }
- @Override
- protected String getButtonCssClass(int id) {
- StringBuilder sb = new StringBuilder();
- sb.append(DoubleButtonColumn.BUTTON_BASE_CLASS).append(" ");
- sb.append(getButtonColorCssClass(id)).append(" ");
- switch (id) {
- case 0:
- sb.append("fa fa-circle-o");
- break;
- case 1:
- sb.append(GuiStyleConstants.CLASS_FILE_TEXT);
- break;
- }
- return sb.toString();
- }
+ @Override
+ protected void updateAuditSearchStorage(AuditSearchDto searchDto) {
+ getPageBase().getSessionStorage().getUserHistoryAuditLog().setSearchDto(searchDto);
+ getPageBase().getSessionStorage().getUserHistoryAuditLog().setPageNumber(0);
- @Override
- public void clickPerformed(int id, AjaxRequestTarget target, IModel model) {
- switch (id) {
- case 0:
- currentStateButtonClicked(target, focusWrapperModel.getObject().getOid(),
- model.getObject().getEventIdentifier(),
- WebComponentUtil.getLocalizedDate(model.getObject().getTimestamp(), DateLabelComponent.SHORT_NOTIME_STYLE),
- page.getCompileTimeClass());
- break;
- case 1:
- viewObjectXmlButtonClicked(focusWrapperModel.getObject().getOid(),
- model.getObject().getEventIdentifier(),
- page.getCompileTimeClass(),
- WebComponentUtil.getLocalizedDate(model.getObject().getTimestamp(), DateLabelComponent.SHORT_NOTIME_STYLE));
- break;
- }
- }
- };
- columns.add(column);
+ }
+
+ @Override
+ protected void resetAuditSearchStorage() {
+ getPageBase().getSessionStorage().getUserHistoryAuditLog().setSearchDto(createAuditSearchDto(focusWrapperModel.getObject().getObject().asObjectable()));
- return columns;
}
- @Override
- protected void updateAuditSearchStorage(AuditSearchDto searchDto) {
- getPageBase().getSessionStorage().getUserHistoryAuditLog().setSearchDto(searchDto);
- getPageBase().getSessionStorage().getUserHistoryAuditLog().setPageNumber(0);
-
-
- }
-
- @Override
- protected void resetAuditSearchStorage() {
- getPageBase().getSessionStorage().getUserHistoryAuditLog().setSearchDto(createAuditSearchDto(focusWrapperModel.getObject().getObject().asObjectable()));
-
- }
-
- @Override
- protected void updateCurrentPage(long current) {
- getPageBase().getSessionStorage().getUserHistoryAuditLog().setPageNumber(current);
-
- }
-
- @Override
- protected long getCurrentPage() {
- return getPageBase().getSessionStorage().getUserHistoryAuditLog().getPageNumber();
- }
+ @Override
+ protected void updateCurrentPage(long current) {
+ getPageBase().getSessionStorage().getUserHistoryAuditLog().setPageNumber(current);
+
+ }
+
+ @Override
+ protected long getCurrentPage() {
+ return getPageBase().getSessionStorage().getUserHistoryAuditLog().getPageNumber();
+ }
};
panel.setOutputMarkupId(true);
@@ -182,13 +170,13 @@ protected long getCurrentPage() {
}
private AuditSearchDto createAuditSearchDto(F focus) {
- AuditSearchDto searchDto = new AuditSearchDto();
- ObjectReferenceType ort = ObjectTypeUtil.createObjectRef(focus);
- searchDto.setTargetNames(asList(ort));
- searchDto.setEventStage(AuditEventStageType.EXECUTION);
- return searchDto;
+ AuditSearchDto searchDto = new AuditSearchDto();
+ ObjectReferenceType ort = ObjectTypeUtil.createObjectRef(focus);
+ searchDto.setTargetNames(asList(ort));
+ searchDto.setEventStage(AuditEventStageType.EXECUTION);
+ return searchDto;
}
-
+
private void currentStateButtonClicked(AjaxRequestTarget target, String oid, String eventIdentifier,
String date, Class type) {
//TODO cases for PageRoleHistory, PageOrgHistory if needed...
@@ -196,7 +184,7 @@ private void currentStateButtonClicked(AjaxRequestTarget target, String oid, Str
}
private PrismObject getReconstructedObject(String oid, String eventIdentifier,
- Class type){
+ Class type) {
OperationResult result = new OperationResult(OPERATION_RESTRUCT_OBJECT);
try {
Task task = getPageBase().createSimpleTask(OPERATION_RESTRUCT_OBJECT);
@@ -208,7 +196,8 @@ private PrismObject getReconstructedObject(String oid, String eventIdentifier
}
return null;
}
- private void viewObjectXmlButtonClicked(String oid, String eventIdentifier, Class type, String date){
+
+ private void viewObjectXmlButtonClicked(String oid, String eventIdentifier, Class type, String date) {
PrismObject object = getReconstructedObject(oid, eventIdentifier, type);
String name = WebComponentUtil.getName(object);
@@ -220,9 +209,9 @@ private void viewObjectXmlButtonClicked(String oid, String eventIdentifier, Clas
public String getObject() {
PrismContext context = getPageBase().getPrismContext();
String xml = "";
- try{
+ try {
xml = context.serializerFor(PrismContext.LANG_XML).serialize(object);
- } catch (Exception ex){
+ } catch (Exception ex) {
LoggingUtils.logUnexpectedException(LOGGER, "Couldn't serialize object", ex);
}
return xml;
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchFactory.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchFactory.java
index 38e1eaeb885..a8f72f74c64 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchFactory.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchFactory.java
@@ -180,7 +180,7 @@ private static PrismObjectDefinition findObjectDefinition
}
} catch (SchemaException | ConfigurationException | ObjectNotFoundException | ExpressionEvaluationException | CommunicationException | SecurityViolationException ex) {
result.recordFatalError(ex.getMessage());
- throw new SystemException();
+ throw new SystemException(ex);
}
}
@@ -226,9 +226,9 @@ private static SearchBoxModeType getDefaultSearchType(Mod
OperationResult result = new OperationResult(LOAD_ADMIN_GUI_CONFIGURATION);
try {
AdminGuiConfigurationType guiConfig = modelServiceLocator.getModelInteractionService().getAdminGuiConfiguration(null, result);
- GuiObjectListsType objectLists = guiConfig.getObjectLists();
+ GuiObjectListViewsType objectLists = guiConfig.getObjectLists();
if (objectLists != null && objectLists.getObjectList() != null){
- for (GuiObjectListType objectList : objectLists.getObjectList()){
+ for (GuiObjectListViewType objectList : objectLists.getObjectList()){
if (objectList.getType() != null
&& type.getSimpleName().equals(objectList.getType().getLocalPart())
&& objectList.getSearchBoxConfiguration() != null) {
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/PageDialog.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/PageDialog.html
index 5ef5912d24c..bb88a14d697 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/PageDialog.html
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/PageDialog.html
@@ -18,7 +18,7 @@
-
+
@@ -66,4 +66,4 @@
-
\ No newline at end of file
+
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDefinitions.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDefinitions.java
index 7e6e46a8f3e..5d9914bec83 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDefinitions.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDefinitions.java
@@ -29,10 +29,13 @@
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.application.AuthorizationAction;
import com.evolveum.midpoint.web.application.PageDescriptor;
+import com.evolveum.midpoint.web.component.AjaxIconButton;
+import com.evolveum.midpoint.web.component.data.MultiButtonPanel2;
import com.evolveum.midpoint.web.component.data.column.*;
import com.evolveum.midpoint.web.component.dialog.ConfirmationPanel;
import com.evolveum.midpoint.web.component.dialog.Popupable;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem;
+import com.evolveum.midpoint.web.component.util.EnableBehaviour;
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.web.page.admin.workflow.PageAdminWorkItems;
import com.evolveum.midpoint.web.session.UserProfileStorage.TableId;
@@ -40,9 +43,12 @@
import com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationDefinitionType;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
+import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
@@ -150,42 +156,43 @@ private List, String>>
column = new PropertyColumn(createStringResource("PageCertDefinitions.table.description"), "value.description");
columns.add(column);
- column = new MultiButtonColumn>(new Model(), 3) {
+ column = new AbstractColumn, String>(new Model<>()) {
- private final String[] captionKeys = {
- "PageCertDefinitions.button.createCampaign",
- "PageCertDefinitions.button.showCampaigns",
- "PageCertDefinitions.button.deleteDefinition"
- };
-
- private final DoubleButtonColumn.BUTTON_COLOR_CLASS[] colors = {
- DoubleButtonColumn.BUTTON_COLOR_CLASS.PRIMARY,
- DoubleButtonColumn.BUTTON_COLOR_CLASS.DEFAULT,
- DoubleButtonColumn.BUTTON_COLOR_CLASS.DANGER
- };
-
- @Override
- public String getButtonTitle(int id) {
- return PageCertDefinitions.this.createStringResource(captionKeys[id]).getString();
- }
-
- @Override
- public String getButtonColorCssClass(int id) {
- return colors[id].toString();
- }
-
- @Override
- public void clickPerformed(int id, AjaxRequestTarget target, IModel> model) {
- switch (id) {
- case 0: createCampaignPerformed(target, model.getObject().getValue()); break;
- case 1: showCampaignsPerformed(target, model.getObject().getValue()); break;
- case 2: deleteConfirmation(target, model.getObject().getValue()); break;
- }
- }
+ private static final long serialVersionUID = 1L;
@Override
- public boolean isButtonEnabled(int id, IModel> model) {
- return id != 0 || !Boolean.TRUE.equals(model.getObject().getValue().isAdHoc());
+ public void populateItem(Item>> cellItem, String componentId,
+ IModel> rowModel) {
+
+ cellItem.add(new MultiButtonPanel2>(componentId, rowModel, 3) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected AjaxIconButton createButton(int index, String componentId, IModel> model) {
+ AjaxIconButton btn = null;
+ switch (index) {
+ case 0:
+ btn = buildDefaultButton(componentId, null, createStringResource("PageCertDefinitions.button.createCampaign"),
+ new Model<>("btn btn-sm " + DoubleButtonColumn.BUTTON_COLOR_CLASS.PRIMARY),
+ target -> createCampaignPerformed(target, model.getObject().getValue()));
+ btn.add(new EnableBehaviour(() -> !Boolean.TRUE.equals(model.getObject().getValue().isAdHoc())));
+ break;
+ case 1:
+ btn = buildDefaultButton(componentId, null, createStringResource("PageCertDefinitions.button.showCampaigns"),
+ new Model<>("btn btn-sm " + DoubleButtonColumn.BUTTON_COLOR_CLASS.DEFAULT),
+ target -> showCampaignsPerformed(target, model.getObject().getValue()));
+ break;
+ case 2:
+ btn = buildDefaultButton(componentId, null, createStringResource("PageCertDefinitions.button.deleteDefinition"),
+ new Model<>("btn btn-sm " + DoubleButtonColumn.BUTTON_COLOR_CLASS.DANGER),
+ target -> deleteConfirmation(target, model.getObject().getValue()));
+ break;
+ }
+
+ return btn;
+ }
+ });
}
};
columns.add(column);
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/dto/ReportDto.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/dto/ReportDto.java
index 983a5fa4ba9..858e3c43ca9 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/dto/ReportDto.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/dto/ReportDto.java
@@ -19,6 +19,7 @@
import com.evolveum.midpoint.xml.ns._public.common.common_3.ExportType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ReportType;
import com.evolveum.prism.xml.ns._public.types_3.PolyStringType;
+import org.apache.commons.lang.BooleanUtils;
import java.io.Serializable;
@@ -71,7 +72,7 @@ public ReportDto(ReportType reportType, boolean onlyForPromptingParams) {
// this.xml = new String(Base64.decodeBase64(reportType.getTemplate()));
this.jasperReportDto = new JasperReportDto(reportType.getTemplate(), onlyForPromptingParams);
this.templateStyle = reportType.getTemplateStyle();
- this.parent = reportType.isParent();
+ this.parent = !BooleanUtils.isFalse(reportType.isParent());
this.virtualizer = reportType.getVirtualizer();
this.virtualizerKickOn = reportType.getVirtualizerKickOn();
this.maxPages = reportType.getMaxPages();
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/RoleGovernanceRelationsPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/RoleGovernanceRelationsPanel.java
index c5c728354f9..a468e6210f8 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/RoleGovernanceRelationsPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/RoleGovernanceRelationsPanel.java
@@ -117,7 +117,7 @@ public void onClick(AjaxRequestTarget target) {
}));
return assignMemberMenuItems;
}
-
+
protected List createUnassignMemberInlineMenuItems() {
List unassignMenuItems = new ArrayList<>();
unassignMenuItems
@@ -130,7 +130,7 @@ public void onClick(AjaxRequestTarget target) {
removeMembersPerformed(QueryScope.SELECTED, Arrays.asList(SchemaConstants.ORG_APPROVER), target);
}
}));
-
+
unassignMenuItems
.add(new InlineMenuItem(createStringResource("TreeTablePanel.menu.unassignOwnersSelected"),
false, new HeaderMenuAction(this) {
@@ -141,7 +141,7 @@ public void onClick(AjaxRequestTarget target) {
removeMembersPerformed(QueryScope.SELECTED, Arrays.asList(SchemaConstants.ORG_OWNER), target);
}
}));
-
+
unassignMenuItems
.add(new InlineMenuItem(createStringResource("TreeTablePanel.menu.unassignManagersSelected"),
false, new HeaderMenuAction(this) {
@@ -152,49 +152,40 @@ public void onClick(AjaxRequestTarget target) {
removeMembersPerformed(QueryScope.SELECTED, Arrays.asList(SchemaConstants.ORG_MANAGER), target);
}
}));
-
- unassignMenuItems.add(new InlineMenuItem(createStringResource("TreeTablePanel.menu.unassignMembersAll"),
- false, new HeaderMenuAction(this) {
- private static final long serialVersionUID = 1L;
- @Override
- public void onClick(AjaxRequestTarget target) {
- removeAllMembersPerformed(target);
- }
- }));
return unassignMenuItems;
}
-
+
private void removeAllMembersPerformed(AjaxRequestTarget target) {
-
+
RoleRelationSelectionPanel relatioNSelectionPanel = new RoleRelationSelectionPanel(getPageBase().getMainPopupBodyId(), new RoleRelationSelectionDto()) {
-
+
private static final long serialVersionUID = 1L;
@Override
protected void onConfirmPerformed(IModel model, AjaxRequestTarget target) {
getPageBase().hideMainPopup(target);
-
+
RoleRelationSelectionDto relationsSelected = model.getObject();
ArrayList relations= new ArrayList<>();
if (relationsSelected.isApprover()) {
relations.add(SchemaConstants.ORG_APPROVER);
}
-
+
if (relationsSelected.isOwner()) {
relations.add(SchemaConstants.ORG_OWNER);
}
-
+
if (relationsSelected.isManager()) {
relations.add(SchemaConstants.ORG_MANAGER);
}
-
+
removeMembersPerformed(QueryScope.ALL, relations, target);
}
};
getPageBase().showMainPopup(relatioNSelectionPanel, target);
-
+
}
@Override
@@ -226,30 +217,30 @@ protected List createMemberRecomputeInlineMenuItems() {
protected boolean isRelationColumnVisible(){
return true;
}
-
+
@Override
protected boolean isGovernance(){
return true;
}
static class RoleRelationSelectionDto implements Serializable {
-
+
private static final long serialVersionUID = 1L;
private boolean approver;
private boolean owner;
private boolean manager;
-
+
public boolean isApprover() {
return approver;
}
-
+
public boolean isManager() {
return manager;
}
-
+
public boolean isOwner() {
return owner;
}
}
-
+
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/RoleMemberPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/RoleMemberPanel.java
index b979c1cd0dd..53cf3054a69 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/RoleMemberPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/RoleMemberPanel.java
@@ -31,6 +31,7 @@
import com.evolveum.midpoint.schema.constants.ObjectTypes;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.schema.util.ObjectTypeUtil;
+import com.evolveum.midpoint.security.api.AuthorizationConstants;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.task.api.TaskCategory;
import com.evolveum.midpoint.util.exception.SchemaException;
@@ -40,9 +41,11 @@
import com.evolveum.midpoint.web.component.assignment.RelationTypes;
import com.evolveum.midpoint.web.component.data.column.IsolatedCheckBoxPanel;
import com.evolveum.midpoint.web.component.input.QNameChoiceRenderer;
+import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.page.admin.configuration.component.ChooseTypePanel;
+import com.evolveum.midpoint.web.page.admin.configuration.component.HeaderMenuAction;
import com.evolveum.midpoint.web.page.admin.dto.ObjectViewDto;
import com.evolveum.midpoint.web.page.admin.users.component.AbstractRoleMemberPanel;
import com.evolveum.midpoint.web.session.UserProfileStorage.TableId;
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/AbstractRoleMemberPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/AbstractRoleMemberPanel.java
index 634f5ae040f..baed1a00c4b 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/AbstractRoleMemberPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/AbstractRoleMemberPanel.java
@@ -249,12 +249,12 @@ private List createMembersHeaderInlineMenu() {
if (isAuthorizedToUnassignMembers()) {
headerMenuItems.addAll(createUnassignMemberInlineMenuItems());
}
+ if (isAuthorizedToUnassignAllMembers()) {
+ headerMenuItems.addAll(createUnassignAllMemberInlineMenuItems());
+ }
if (isAuthorizedToRecomputeMembers()) {
headerMenuItems.addAll(createMemberRecomputeInlineMenuItems());
}
- if (isAuthorizedToDeleteMembers()) {
- headerMenuItems.addAll(createMemberDeleteInlineMenuItems());
- }
return headerMenuItems;
}
@@ -270,8 +270,8 @@ protected boolean isAuthorizedToUnassignMembers(){
return WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_ADMIN_UNASSIGN_MEMBER_TAB_ACTION_URI);
}
- protected boolean isAuthorizedToDeleteMembers(){
- return WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_ADMIN_DELETE_ORG_MEMBER_ACTION_URI);
+ protected boolean isAuthorizedToUnassignAllMembers(){
+ return WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_ADMIN_UNASSIGN_ALL_MEMBERS_TAB_ACTION_URI);
}
protected boolean isAuthorizedToRecomputeMembers(){
@@ -306,10 +306,6 @@ public void onClick(AjaxRequestTarget target) {
return newMemberMenuItems;
}
- protected List createMemberDeleteInlineMenuItems() {
- return new ArrayList<>();
- }
-
protected List createMemberRecomputeInlineMenuItems() {
List recomputeMenuItems = new ArrayList<>();
recomputeMenuItems
@@ -361,18 +357,24 @@ public void onClick(AjaxRequestTarget target) {
removeMembersPerformed(QueryScope.SELECTED, null , target);
}
}));
+ return unassignMenuItems;
+ }
+
+ protected List createUnassignAllMemberInlineMenuItems() {
+ List unassignMenuItems = new ArrayList<>();
unassignMenuItems.add(new InlineMenuItem(createStringResource("TreeTablePanel.menu.unassignMembersAll"),
false, new HeaderMenuAction(this) {
private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget target) {
- removeMembersPerformed(QueryScope.ALL, null ,target);
+ removeMembersPerformed(QueryScope.ALL, null, target);
}
}));
return unassignMenuItems;
}
+
protected void createFocusMemberPerformed(final QName relation, AjaxRequestTarget target) {
ChooseFocusTypeDialogPanel chooseTypePopupContent = new ChooseFocusTypeDialogPanel(
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/OrgMemberPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/OrgMemberPanel.java
index 1ed3387433c..33bf8375d26 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/OrgMemberPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/OrgMemberPanel.java
@@ -112,6 +112,7 @@ public class OrgMemberPanel extends AbstractRoleMemberPanel {
protected static final String DOT_CLASS = OrgMemberPanel.class.getName() + ".";
protected static final String OPERATION_SEARCH_MANAGERS = DOT_CLASS + "searchManagers";
private static final String OPERATION_LOAD_MANAGERS = DOT_CLASS + "loadManagers";
+ private static final String OPERATION_UNASSIGN_MANAGERS = DOT_CLASS + "unassignManagers";
private static final String OPERATION_LOAD_MEMBER_RELATION_OBJECTS = DOT_CLASS + "loadMemberRelationObjects";
private static final String ID_MANAGER_SUMMARY = "managerSummary";
private static final String ID_REMOVE_MANAGER = "removeManager";
@@ -319,35 +320,6 @@ public boolean isVisible(){
removeManager.setOutputMarkupId(true);
managerMarkup.add(removeManager);
- AjaxButton deleteManager = new AjaxButton(ID_DELETE_MANAGER) {
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- FocusSummaryPanel summary = (FocusSummaryPanel) getParent()
- .get(ID_MANAGER_SUMMARY);
- deleteManagerPerformed(summary.getModelObject(), this, target);
- }
- };
- deleteManager.setOutputMarkupId(true);
- deleteManager.add(new VisibleEnableBehaviour(){
- private static final long serialVersionUID = 1L;
-
- @Override
- public boolean isVisible(){
- boolean isVisible = false;
- try {
- // TODO: the modify authorization here is probably wrong.
- // It is a model autz. UI autz should be here instead?
- isVisible = getPageBase().isAuthorized(ModelAuthorizationAction.DELETE.getUrl(), null,
- managerWrapper.getObject(), null, null, null);
- } catch (Exception ex) {
- LoggingUtils.logUnexpectedException(LOGGER, "Failed to check authorization for #delete operation on object " +
- managerWrapper.getObject(), ex);
- }
- return isVisible;
- }
- });
- managerMarkup.add(deleteManager);
}
managerContainer.add(view);
@@ -363,43 +335,26 @@ public boolean isVisible(){
}
private void removeManagerPerformed(FocusType manager, AjaxRequestTarget target) {
- OperationResult parentResult = new OperationResult("Remove manager");
- Task task = getPageBase().createSimpleTask("Remove manager");
+ OperationResult parentResult = new OperationResult(OPERATION_UNASSIGN_MANAGERS);
+ Task task = getPageBase().createSimpleTask(OPERATION_UNASSIGN_MANAGERS);
try {
ObjectDelta delta = ObjectDelta.createModificationDeleteContainer(
manager.asPrismObject().getCompileTimeClass(), manager.getOid(), FocusType.F_ASSIGNMENT,
getPageBase().getPrismContext(), createAssignmentToModify(SchemaConstants.ORG_MANAGER));
- getPageBase().getModelService().executeChanges(WebComponentUtil.createDeltaCollection(delta),
- null, task, parentResult);
- parentResult.computeStatus();
- } catch (SchemaException | ObjectAlreadyExistsException | ObjectNotFoundException
- | ExpressionEvaluationException | CommunicationException | ConfigurationException
- | PolicyViolationException | SecurityViolationException e) {
-
- parentResult.recordFatalError("Failed to remove manager " + e.getMessage(), e);
- LoggingUtils.logUnexpectedException(LOGGER, "Failed to remove manager", e);
- getPageBase().showResult(parentResult);
- }
- target.add(getPageBase().getFeedbackPanel());
+ List managerList = new ArrayList<>();
+ managerList.add(manager);
- }
-
- private void deleteManagerConfirmPerformed(FocusType manager, AjaxRequestTarget target) {
- getPageBase().hideMainPopup(target);
- OperationResult parentResult = new OperationResult("Remove manager");
- Task task = getPageBase().createSimpleTask("Remove manager");
- try {
-
- ObjectDelta delta = ObjectDelta.createDeleteDelta(manager.asPrismObject().getCompileTimeClass(), manager.getOid(), getPageBase().getPrismContext());
- getPageBase().getModelService().executeChanges(WebComponentUtil.createDeltaCollection(delta),
- null, task, parentResult);
- parentResult.computeStatus();
- } catch (SchemaException | ObjectAlreadyExistsException | ObjectNotFoundException
- | ExpressionEvaluationException | CommunicationException | ConfigurationException
- | PolicyViolationException | SecurityViolationException e) {
+ executeMemberOperation(task, FocusType.COMPLEX_TYPE,
+ createQueryForMemberAction(QueryScope.SELECTED, managerList, SchemaConstants.ORG_MANAGER, true), delta,
+ TaskCategory.EXECUTE_CHANGES, target);
+// getPageBase().getModelService().executeChanges(WebComponentUtil.createDeltaCollection(delta),
+// null, task, parentResult);
+// parentResult.computeStatus();
+ } catch (SchemaException e) {
+//
parentResult.recordFatalError("Failed to remove manager " + e.getMessage(), e);
LoggingUtils.logUnexpectedException(LOGGER, "Failed to remove manager", e);
getPageBase().showResult(parentResult);
@@ -408,19 +363,6 @@ private void deleteManagerConfirmPerformed(FocusType manager, AjaxRequestTarget
}
- private void deleteManagerPerformed(final FocusType manager, final Component summary, AjaxRequestTarget target) {
- ConfirmationPanel confirmDelete = new ConfirmationPanel(getPageBase().getMainPopupBodyId(), createStringResource("TreeTablePanel.menu.deleteManager.confirm")) {
- @Override
- public void yesPerformed(AjaxRequestTarget target) {
- OrgMemberPanel.this.deleteManagerConfirmPerformed(manager, target);
- summary.getParent().setVisible(false);
- target.add(OrgMemberPanel.this);
- }
- };
-
- getPageBase().showMainPopup(confirmDelete, target);
- }
-
@Override
protected boolean isAuthorizedToUnassignMembers(){
return WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_ADMIN_UNASSIGN_ORG_MEMBER_ACTION_URI);
@@ -431,11 +373,6 @@ protected boolean isAuthorizedToAssignMembers(){
return WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_ADMIN_ASSIGN_ORG_MEMBER_ACTION_URI);
}
- @Override
- protected boolean isAuthorizedToDeleteMembers(){
- return WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_ADMIN_DELETE_ORG_MEMBER_ACTION_URI);
- }
-
@Override
protected boolean isAuthorizedToRecomputeMembers(){
return WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_ADMIN_RECOMPUTE_ORG_MEMBER_ACTION_URI);
@@ -446,52 +383,6 @@ protected boolean isAuthorizedToCreateMembers(){
return WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_ADMIN_ADD_ORG_MEMBER_ACTION_URI);
}
- @Override
- protected List createMemberDeleteInlineMenuItems() {
- List deleteMenuItems = new ArrayList<>();
-
- deleteMenuItems.add(new InlineMenuItem(createStringResource("TreeTablePanel.menu.deleteMember"),
- false, new HeaderMenuAction(this) {
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- deleteMemberPerformed(QueryScope.SELECTED, null, target, "TreeTablePanel.menu.deleteMember.confirm");
- }
- }));
-
- deleteMenuItems.add(new InlineMenuItem(createStringResource("TreeTablePanel.menu.deleteAllMembers"),
- false, new HeaderMenuAction(this) {
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- deleteMemberPerformed(QueryScope.ALL, null, target, "TreeTablePanel.menu.deleteAllMembers.confirm");
- }
- }));
- return deleteMenuItems;
- }
-
- private void deleteMemberPerformed(final QueryScope scope, final QName relation, final AjaxRequestTarget target, String confirmMessageKey) {
- ConfirmationPanel confirmDelete = new ConfirmationPanel(getPageBase().getMainPopupBodyId(), createStringResource(confirmMessageKey)) {
- @Override
- public void yesPerformed(AjaxRequestTarget target) {
- OrgMemberPanel.this.deleteMemberConfirmPerformed(scope, relation, target);
- }
- };
-
- getPageBase().showMainPopup(confirmDelete, target);
- }
-
- private void deleteMemberConfirmPerformed(QueryScope scope, QName relation, AjaxRequestTarget target) {
- getPageBase().hideMainPopup(target);
- Task operationalTask = getPageBase().createSimpleTask(getTaskName("Delete", scope, false));
- ObjectDelta delta = ObjectDelta.createDeleteDelta(FocusType.class, "fakeOid", getPageBase().getPrismContext());
- if (delta == null) {
- return;
- }
- executeMemberOperation(operationalTask, FocusType.COMPLEX_TYPE, createQueryForMemberAction(scope, relation, true), delta, TaskCategory.EXECUTE_CHANGES, target);
-
- }
-
private List createManagersHeaderInlineMenu() {
List headerMenuItems = new ArrayList<>();
@@ -544,18 +435,6 @@ public void onClick(AjaxRequestTarget target) {
}));
}
- if (WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_ADMIN_DELETE_ORG_MEMBER_ACTION_URI)) {
- headerMenuItems
- .add(new InlineMenuItem(createStringResource("TreeTablePanel.menu.deleteManagersAll"),
- false, new HeaderMenuAction(this) {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- OrgMemberPanel.this.deleteMemberPerformed(QueryScope.ALL, SchemaConstants.ORG_MANAGER, target, "TreeTablePanel.menu.deleteManagersAll.confirm");
- }
- }));
- }
return headerMenuItems;
}
@@ -727,13 +606,16 @@ private QName getSelectedRelation(){
}
private ObjectQuery createQueryForMemberAction(QueryScope scope, QName orgRelation, boolean isFocus) {
+ return createQueryForMemberAction(scope, getMemberTable().getSelectedObjects(), orgRelation, isFocus);
+ }
+
+ private ObjectQuery createQueryForMemberAction(QueryScope scope, List selectedObjects, QName orgRelation, boolean isFocus) {
ObjectQuery query = null;
switch (scope) {
case SELECTED:
- List objects = getMemberTable().getSelectedObjects();
List oids = new ArrayList<>();
- for (ObjectType object : objects) {
+ for (ObjectType object : selectedObjects) {
if (satisfyConstraints(isFocus, object.getClass())) {
oids.add(object.getOid());
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/ServiceMemberPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/ServiceMemberPanel.java
index 79982aadfc3..132f89b2f53 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/ServiceMemberPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/ServiceMemberPanel.java
@@ -1,5 +1,7 @@
package com.evolveum.midpoint.web.page.admin.users.component;
+import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
+import com.evolveum.midpoint.security.api.AuthorizationConstants;
import org.apache.wicket.model.IModel;
import com.evolveum.midpoint.web.page.admin.roles.RoleMemberPanel;
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/MidPointAccessDeniedHandler.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/MidPointAccessDeniedHandler.java
index 266d91c058c..9479f57d641 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/MidPointAccessDeniedHandler.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/MidPointAccessDeniedHandler.java
@@ -16,13 +16,11 @@
package com.evolveum.midpoint.web.security;
-import org.apache.commons.lang.StringUtils;
import org.springframework.security.access.AccessDeniedException;
import org.springframework.security.web.access.AccessDeniedHandler;
import org.springframework.security.web.access.AccessDeniedHandlerImpl;
-import org.springframework.security.web.csrf.MissingCsrfTokenException;
+import org.springframework.security.web.csrf.CsrfException;
-import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -42,35 +40,19 @@ public void handle(HttpServletRequest request, HttpServletResponse response,
return;
}
- // handle invalid csrf token exception gracefully when user tries to log in/out with expired exception
- if (isLoginLogoutRequest(request) && (accessDeniedException instanceof MissingCsrfTokenException)) {
- response.sendRedirect(request.getContextPath());
+ if (accessDeniedException instanceof CsrfException) {
+ // handle invalid csrf token exception gracefully when user tries to log in/out with expired exception
+ // handle session timeout for ajax cases -> redirect to base context (login)
+ if (WicketRedirectStrategy.isWicketAjaxRequest(request)) {
+ WicketRedirectStrategy redirect = new WicketRedirectStrategy();
+ redirect.sendRedirect(request, response, request.getContextPath());
+ } else {
+ response.sendRedirect(request.getContextPath());
+ }
+
return;
}
defaultHandler.handle(request, response, accessDeniedException);
}
-
- private boolean isLoginLogoutRequest(HttpServletRequest req) {
- if (!"post".equalsIgnoreCase(req.getMethod())) {
- return false;
- }
-
- String uri = req.getRequestURI();
- return createUri(req, "/j_spring_security_logout").equals(uri)
- || createUri(req, "/spring_security_login").equals(uri);
- }
-
- private String createUri(HttpServletRequest req, String uri) {
- StringBuilder sb = new StringBuilder();
-
- ServletContext ctx = req.getServletContext();
- String ctxPath = ctx.getContextPath();
- if (StringUtils.isNotEmpty(ctxPath)) {
- sb.append(ctxPath);
- }
- sb.append(uri);
-
- return sb.toString();
- }
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/MidPointApplication.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/MidPointApplication.java
index 8daf521c58e..a0565a130bb 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/MidPointApplication.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/MidPointApplication.java
@@ -66,6 +66,9 @@
import org.apache.wicket.authroles.authentication.AbstractAuthenticatedWebSession;
import org.apache.wicket.authroles.authentication.AuthenticatedWebApplication;
import org.apache.wicket.core.request.mapper.MountedMapper;
+import org.apache.wicket.core.util.objects.checker.CheckingObjectOutputStream;
+import org.apache.wicket.core.util.objects.checker.IObjectChecker;
+import org.apache.wicket.core.util.objects.checker.ObjectSerializationChecker;
import org.apache.wicket.core.util.resource.locator.IResourceStreamLocator;
import org.apache.wicket.core.util.resource.locator.caching.CachingResourceStreamLocator;
import org.apache.wicket.markup.head.PriorityFirstComparator;
@@ -77,6 +80,7 @@
import org.apache.wicket.request.resource.PackageResourceReference;
import org.apache.wicket.request.resource.SharedResourceReference;
import org.apache.wicket.resource.loader.IStringResourceLoader;
+import org.apache.wicket.serialize.java.JavaSerializer;
import org.apache.wicket.settings.ApplicationSettings;
import org.apache.wicket.settings.ResourceSettings;
import org.apache.wicket.spring.injection.annot.SpringComponentInjector;
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/WicketLoginUrlAuthenticationEntryPoint.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/WicketLoginUrlAuthenticationEntryPoint.java
index dbcc40390c1..241aef7c829 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/WicketLoginUrlAuthenticationEntryPoint.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/WicketLoginUrlAuthenticationEntryPoint.java
@@ -16,7 +16,6 @@
package com.evolveum.midpoint.web.security;
-import org.apache.wicket.request.http.WebRequest;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint;
@@ -38,7 +37,7 @@ public WicketLoginUrlAuthenticationEntryPoint(String loginFormUrl) {
public void commence(HttpServletRequest request, HttpServletResponse response,
AuthenticationException authException) throws IOException, ServletException {
- if (!isWicketAjaxRequest(request)) {
+ if (!WicketRedirectStrategy.isWicketAjaxRequest(request)) {
super.commence(request, response, authException);
return;
@@ -49,18 +48,4 @@ public void commence(HttpServletRequest request, HttpServletResponse response,
WicketRedirectStrategy strategy = new WicketRedirectStrategy();
strategy.sendRedirect(request, response, url);
}
-
- private boolean isWicketAjaxRequest(HttpServletRequest request) {
- String value = request.getParameter(WebRequest.PARAM_AJAX);
- if (value != null && "true".equals(value)) {
- return true;
- }
-
- value = request.getHeader(WebRequest.HEADER_AJAX);
- if (value != null && "true".equals(value)) {
- return true;
- }
-
- return false;
- }
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/WicketRedirectStrategy.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/WicketRedirectStrategy.java
index 2fc0ca9e3a8..84025e8cb8a 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/WicketRedirectStrategy.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/WicketRedirectStrategy.java
@@ -16,6 +16,7 @@
package com.evolveum.midpoint.web.security;
+import org.apache.wicket.request.http.WebRequest;
import org.apache.wicket.util.time.Time;
import org.springframework.security.web.DefaultRedirectStrategy;
@@ -45,4 +46,18 @@ public void sendRedirect(HttpServletRequest request, HttpServletResponse respons
Writer writer = response.getWriter();
writer.write("");
}
+
+ public static boolean isWicketAjaxRequest(HttpServletRequest request) {
+ String value = request.getParameter(WebRequest.PARAM_AJAX);
+ if (Boolean.parseBoolean(value)) {
+ return true;
+ }
+
+ value = request.getHeader(WebRequest.HEADER_AJAX);
+ if (Boolean.parseBoolean(value)) {
+ return true;
+ }
+
+ return false;
+ }
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/util/ObjectTypeGuiDescriptor.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/util/ObjectTypeGuiDescriptor.java
index 8a18a3ec005..ea62e9c3649 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/util/ObjectTypeGuiDescriptor.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/util/ObjectTypeGuiDescriptor.java
@@ -81,7 +81,9 @@ public enum ObjectTypeGuiDescriptor {
CASE(ObjectTypes.CASE, "ObjectTypeGuiDescriptor.case", "", ""), // TODO icons
- FUNCTION_LIBRARY(ObjectTypes.FUNCTION_LIBRARY, "ObjectTypeGuiDescriptor.functionLibrary", "", ""); // TODO icons
+ FUNCTION_LIBRARY(ObjectTypes.FUNCTION_LIBRARY, "ObjectTypeGuiDescriptor.functionLibrary", "", ""), // TODO icons
+
+ OBJECT_COLLECTION(ObjectTypes.OBJECT_COLLECTION, "ObjectTypeGuiDescriptor.objectCollection", "", ""); // TODO icons
public static final String ERROR_ICON = "silk-error";
public static final String ERROR_LOCALIZATION_KEY = "ObjectTypeGuiDescriptor.unknown";
diff --git a/gui/admin-gui/src/main/resources/application.yml b/gui/admin-gui/src/main/resources/application.yml
index 630b6ea2384..d398a995880 100644
--- a/gui/admin-gui/src/main/resources/application.yml
+++ b/gui/admin-gui/src/main/resources/application.yml
@@ -1,29 +1,27 @@
spring:
application:
name: MidPoint
-
- http:
+ servlet:
multipart:
max-file-size: 100Mb
max-request-size: 100Mb
server:
- display-name: MidPoint
- contextPath: /midpoint # Spring Boot 1.x
- session:
- timeout: 15 # in minutes. By default spring uses seconds, but tomcat/container (not embedded) uses this value
- # as minutes - so we end up with never expiring session.
tomcat:
basedir: ${midpoint.home}
max-http-post-size: 104857600 # in bytes
-
servlet:
- path: /midpoint # Spring Boot 2.0
+ context-path: /midpoint
+ application-display-name: MidPoint
+ session:
+ timeout: 15 # in minutes. By default spring uses seconds, but tomcat/container (not embedded) uses this value
+ # as minutes - so we end up with never expiring session.
auth:
logout:
url: / # NOTE: This URL is relative to application root
+
#security:
# enable-csrf: false # default for midpoint is true
diff --git a/gui/admin-gui/src/main/resources/localization/Midpoint.properties b/gui/admin-gui/src/main/resources/localization/Midpoint.properties
index 927f4997236..dd2cd77f69c 100755
--- a/gui/admin-gui/src/main/resources/localization/Midpoint.properties
+++ b/gui/admin-gui/src/main/resources/localization/Midpoint.properties
@@ -669,6 +669,7 @@ ObjectTypeGuiDescriptor.service=Service
ObjectTypeGuiDescriptor.case=Case
ObjectTypeGuiDescriptor.valuePolicy=Value policy
ObjectTypeGuiDescriptor.functionLibrary=Function library
+ObjectTypeGuiDescriptor.objectCollection=Object collection
ObjectTypeGuiDescriptor.unknown=Not defined
operation.com.evolveum.midpoint.common.crypto.CryptoUtil.securitySelfTest=Security self test
operation.com.evolveum.midpoint.common.operation.import.object=Import object
@@ -889,6 +890,7 @@ operation.com.evolveum.midpoint.web.page.admin.users.component.TreeTablePanel.mo
operation.com.evolveum.midpoint.web.page.admin.users.component.TreeTablePanel.moveObjects=Move objects (Gui)
operation.com.evolveum.midpoint.web.page.admin.users.component.TreeTablePanel.updateObjects=Update objects (Gui)
operation.com.evolveum.midpoint.web.page.admin.users.component.TreeTablePanel.updateObject=Update object (Gui)
+operation.com.evolveum.midpoint.web.page.admin.users.component.OrgMemberPanel.unassignManagers=Unassign managers
operation.com.evolveum.midpoint.web.page.admin.users.PageOrgUnit.saveOrgUnit=Save org. unit (Gui)
operation.com.evolveum.midpoint.web.page.admin.users.PageUser.loadAccount=Load account (Gui)
operation.com.evolveum.midpoint.web.page.admin.users.PageUser.loadAccounts=Load accounts (Gui)
@@ -3318,11 +3320,12 @@ roleMemberPanel.menu.assignOwners=Assign owners
roleMemberPanel.menu.createApprover=Create approver
roleMemberPanel.menu.assignApprovers=Assign approvers
roleMemberPanel.menu.add=Add member
-roleMemberPanel.menu.remove=Remove member
+roleMemberPanel.menu.remove=Unassign member
roleMemberPanel.menu.recompute=Recompute member
roleMemberPanel.menu.recomputeAll=Recompute all
roleMemberPanel.menu.removeAll=Remove all
roleMemberPanel.relation=Relation
+AssignmentPanel.newAssignmentParameters=Parameters
SearchPanel.more=More...
SearchPanel.add=Add
SearchPanel.close=Close
@@ -4010,14 +4013,14 @@ ConstructionType.association=Association
operation.Recompute.ALL.members=Recompute all members
operation.Recompute.SELECTED.members=Recompute selected members
operation.Recompute.ALL_DIRECT.members=Recompute all direct members
-operation.Remove.ALL.members=Remove all members
-operation.Remove.SELECTED.members=Remove selected members
-operation.Remove.ALL_DIRECT.members=Remove all direct members
-operation.Remove.ALL.managers=Remove all managers
-operation.Remove.SELECTED.managers=Remove selected managers
-operation.Remove.ALL_DIRECT.managers=Remove all direct managers
+operation.Remove.ALL.members=Unassign all members
+operation.Remove.SELECTED.members=Unassign selected members
+operation.Remove.ALL_DIRECT.members=Unassign all direct members
+operation.Remove.ALL.managers=Unassign all managers
+operation.Remove.SELECTED.managers=Unassign selected managers
+operation.Remove.ALL_DIRECT.managers=Unassign all direct managers
operation.Add.members=Add members
-operation.Remove.members=Remove members
+operation.Remove.members=Unassign members
ConstructionStrengthType.STRONG=Strong
ConstructionStrengthType.WEAK=Weak
RoleRelationSelectionPanel.approver=Approver
diff --git a/gui/admin-gui/src/main/resources/localization/Midpoint_en.properties b/gui/admin-gui/src/main/resources/localization/Midpoint_en.properties
index 573d88a2adb..b5cfd320a0b 100644
--- a/gui/admin-gui/src/main/resources/localization/Midpoint_en.properties
+++ b/gui/admin-gui/src/main/resources/localization/Midpoint_en.properties
@@ -3296,10 +3296,10 @@ roleMemberPanel.menu.assignOwners=Assign owners
roleMemberPanel.menu.createApprover=Create approver
roleMemberPanel.menu.assignApprovers=Assign approvers
roleMemberPanel.menu.add=Add member
-roleMemberPanel.menu.remove=Remove member
+roleMemberPanel.menu.remove=Unassign member
roleMemberPanel.menu.recompute=Recompute member
roleMemberPanel.menu.recomputeAll=Recompute all
-roleMemberPanel.menu.removeAll=Remove all
+roleMemberPanel.menu.removeAll=Unassign all
roleMemberPanel.relation=Relation
SearchPanel.more=More...
SearchPanel.add=Add
@@ -3955,14 +3955,14 @@ ConstructionType.association=Association
operation.Recompute.ALL.members=Recompute all members
operation.Recompute.SELECTED.members=Recompute selected members
operation.Recompute.ALL_DIRECT.members=Recompute all direct members
-operation.Remove.ALL.members=Remove all members
-operation.Remove.SELECTED.members=Remove selected members
-operation.Remove.ALL_DIRECT.members=Remove all direct members
-operation.Remove.ALL.managers=Remove all managers
-operation.Remove.SELECTED.managers=Remove selected managers
-operation.Remove.ALL_DIRECT.managers=Remove all direct managers
+operation.Remove.ALL.members=Unassign all members
+operation.Remove.SELECTED.members=Unassign selected members
+operation.Remove.ALL_DIRECT.members=Unassign all direct members
+operation.Remove.ALL.managers=Unassign all managers
+operation.Remove.SELECTED.managers=Unassign selected managers
+operation.Remove.ALL_DIRECT.managers=Unassign all direct managers
operation.Add.members=Add members
-operation.Remove.members=Remove members
+operation.Remove.members=Unassign members
ConstructionStrengthType.STRONG=Strong
ConstructionStrengthType.WEAK=Weak
RoleRelationSelectionPanel.approver=Approver
diff --git a/gui/admin-gui/src/main/resources/static/less/admin-lte/less/core.less b/gui/admin-gui/src/main/resources/static/less/admin-lte/less/core.less
index f0cc2cb1816..c3d8cfcbae8 100644
--- a/gui/admin-gui/src/main/resources/static/less/admin-lte/less/core.less
+++ b/gui/admin-gui/src/main/resources/static/less/admin-lte/less/core.less
@@ -85,6 +85,10 @@ body {
border-top: 1px solid @gray-lte;
}
+.main-footer-invisible {
+ padding: 15px 15px 0px 15px;
+}
+
/* Fixed layout */
.fixed {
.main-header,
diff --git a/gui/pom.xml b/gui/pom.xml
index 29e37e9c636..eb5568f883f 100644
--- a/gui/pom.xml
+++ b/gui/pom.xml
@@ -23,7 +23,7 @@
parent
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
../build-system/pom.xml
diff --git a/icf-connectors/dummy-connector-fake/pom.xml b/icf-connectors/dummy-connector-fake/pom.xml
index 4f48d6ca39a..9c4cce34da2 100644
--- a/icf-connectors/dummy-connector-fake/pom.xml
+++ b/icf-connectors/dummy-connector-fake/pom.xml
@@ -25,7 +25,7 @@
icf-connectors
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
https://github.com/Evolveum/midpoint.git
diff --git a/icf-connectors/dummy-connector/pom.xml b/icf-connectors/dummy-connector/pom.xml
index 160bf73178e..7f477db882c 100644
--- a/icf-connectors/dummy-connector/pom.xml
+++ b/icf-connectors/dummy-connector/pom.xml
@@ -25,7 +25,7 @@
icf-connectors
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
https://github.com/Evolveum/midpoint.git
@@ -40,7 +40,7 @@
com.evolveum.icf
dummy-resource
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
commons-lang
diff --git a/icf-connectors/dummy-resource/pom.xml b/icf-connectors/dummy-resource/pom.xml
index f7f143e642e..da5903b3f4e 100644
--- a/icf-connectors/dummy-resource/pom.xml
+++ b/icf-connectors/dummy-resource/pom.xml
@@ -25,7 +25,7 @@
icf-connectors
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
https://github.com/Evolveum/midpoint.git
@@ -36,7 +36,7 @@
com.evolveum.midpoint.infra
util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
commons-lang
diff --git a/icf-connectors/pom.xml b/icf-connectors/pom.xml
index e3b76290c0e..1f9719a940d 100644
--- a/icf-connectors/pom.xml
+++ b/icf-connectors/pom.xml
@@ -23,7 +23,7 @@
parent
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
../build-system/pom.xml
@@ -55,7 +55,7 @@
com.evolveum.midpoint.tools
test-ng
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
diff --git a/infra/common/pom.xml b/infra/common/pom.xml
index ecd34f905ca..8bcc22f890a 100644
--- a/infra/common/pom.xml
+++ b/infra/common/pom.xml
@@ -24,7 +24,7 @@
infra
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
https://github.com/Evolveum/midpoint.git
@@ -35,17 +35,17 @@
com.evolveum.midpoint.infra
util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
prism
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
schema
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
org.jetbrains
@@ -106,13 +106,13 @@
com.evolveum.midpoint.infra
test-util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.tools
test-ng
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
diff --git a/infra/pom.xml b/infra/pom.xml
index a11a511690f..9d9dc8226e8 100644
--- a/infra/pom.xml
+++ b/infra/pom.xml
@@ -22,7 +22,7 @@
parent
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
../build-system/pom.xml
diff --git a/infra/prism-maven-plugin/pom.xml b/infra/prism-maven-plugin/pom.xml
index 1e4ecb2d900..7d0219baa90 100644
--- a/infra/prism-maven-plugin/pom.xml
+++ b/infra/prism-maven-plugin/pom.xml
@@ -26,7 +26,7 @@
infra
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
https://github.com/Evolveum/midpoint.git
@@ -37,12 +37,12 @@
com.evolveum.midpoint.infra
util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
prism
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
org.apache.maven
diff --git a/infra/prism/pom.xml b/infra/prism/pom.xml
index febccc542dd..3f846e94005 100644
--- a/infra/prism/pom.xml
+++ b/infra/prism/pom.xml
@@ -24,7 +24,7 @@
infra
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
https://github.com/Evolveum/midpoint.git
@@ -35,7 +35,7 @@
com.evolveum.midpoint.infra
util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
@@ -188,7 +188,7 @@
com.evolveum.midpoint.tools
test-ng
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/lex/json/AbstractJsonLexicalProcessor.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/lex/json/AbstractJsonLexicalProcessor.java
index 7b2ef316078..1077e1ba7ca 100644
--- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/lex/json/AbstractJsonLexicalProcessor.java
+++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/lex/json/AbstractJsonLexicalProcessor.java
@@ -317,6 +317,7 @@ private XNode parseValue(JsonParsingContext ctx, IterativeParsingContext ipc) th
case VALUE_FALSE:
case VALUE_NUMBER_FLOAT:
case VALUE_NUMBER_INT:
+ case VALUE_EMBEDDED_OBJECT: // assuming it's a scalar value e.g. !!binary (TODO)
return parseToPrimitive(ctx);
case VALUE_NULL:
return parseToEmptyPrimitive();
diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/lex/json/YamlLexicalProcessor.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/lex/json/YamlLexicalProcessor.java
index 1e47d909d3a..4bb42f3af84 100644
--- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/lex/json/YamlLexicalProcessor.java
+++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/lex/json/YamlLexicalProcessor.java
@@ -51,6 +51,7 @@ public class YamlLexicalProcessor extends AbstractJsonLexicalProcessor {
private static final String TAG_INT = YAML + "int";
private static final String TAG_BOOL = YAML + "bool";
private static final String TAG_FLOAT = YAML + "float";
+ private static final String TAG_BINARY = YAML + "binary"; // base64-encoded string
private static final String TAG_NULL = YAML + "null";
public YamlLexicalProcessor(@NotNull SchemaRegistry schemaRegistry) {
@@ -126,6 +127,8 @@ protected MidpointYAMLParser createJacksonParser(InputStream stream) throws Sche
protected QName tagToTypeName(Object tag, AbstractJsonLexicalProcessor.JsonParsingContext ctx) throws IOException, SchemaException {
if (tag == null) {
return null;
+ } if (TAG_BINARY.equals(tag)) {
+ return DOMUtil.XSD_STRING; // base64-encoded string: we store it as string, leaving interpretation to upper layers
} if (TAG_STRING.equals(tag)) {
return DOMUtil.XSD_STRING;
} else if (TAG_BOOL.equals(tag)) {
diff --git a/infra/prism/src/main/java/com/evolveum/prism/xml/ns/_public/types_3/PolyStringNormalizerConfigurationType.java b/infra/prism/src/main/java/com/evolveum/prism/xml/ns/_public/types_3/PolyStringNormalizerConfigurationType.java
index d28fffdf9eb..0121e529a36 100644
--- a/infra/prism/src/main/java/com/evolveum/prism/xml/ns/_public/types_3/PolyStringNormalizerConfigurationType.java
+++ b/infra/prism/src/main/java/com/evolveum/prism/xml/ns/_public/types_3/PolyStringNormalizerConfigurationType.java
@@ -28,7 +28,7 @@
import com.evolveum.midpoint.util.ShortDumpable;
@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "ItemDeltaType", propOrder = {
+@XmlType(name = "PolyStringNormalizerConfigurationType", propOrder = {
"className",
"trim",
"nfkd",
diff --git a/infra/schema-pure-jaxb/pom.xml b/infra/schema-pure-jaxb/pom.xml
index 3c131fb6f3a..a19bda1cfb1 100644
--- a/infra/schema-pure-jaxb/pom.xml
+++ b/infra/schema-pure-jaxb/pom.xml
@@ -24,7 +24,7 @@
infra
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
https://github.com/Evolveum/midpoint.git
@@ -70,7 +70,7 @@
com.evolveum.midpoint.tools
test-ng
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
diff --git a/infra/schema/pom.xml b/infra/schema/pom.xml
index 65c7230f7b6..31b099603ab 100644
--- a/infra/schema/pom.xml
+++ b/infra/schema/pom.xml
@@ -24,7 +24,7 @@
infra
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
https://github.com/Evolveum/midpoint.git
@@ -35,12 +35,12 @@
com.evolveum.midpoint.infra
prism
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
commons-collections
@@ -114,7 +114,7 @@
com.evolveum.midpoint.tools
test-ng
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
@@ -254,7 +254,7 @@
com.evolveum.midpoint.tools
xjc-plugin
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.sun.xml.bind
@@ -266,7 +266,7 @@
com.evolveum.midpoint.infra
prism-maven-plugin
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
src/main/resources/xml/ns/public/common/common-3.xsd
diff --git a/infra/schema/src/main/java/com/evolveum/midpoint/schema/constants/ObjectTypes.java b/infra/schema/src/main/java/com/evolveum/midpoint/schema/constants/ObjectTypes.java
index 45721121cdb..968fcd967db 100644
--- a/infra/schema/src/main/java/com/evolveum/midpoint/schema/constants/ObjectTypes.java
+++ b/infra/schema/src/main/java/com/evolveum/midpoint/schema/constants/ObjectTypes.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010-2014 Evolveum
+ * Copyright (c) 2010-2018 Evolveum
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -104,6 +104,9 @@ public enum ObjectTypes {
FUNCTION_LIBRARY(FunctionLibraryType.COMPLEX_TYPE, SchemaConstantsGenerated.C_FUNCTION_LIBRARY, FunctionLibraryType.class, ObjectManager.MODEL,
"functionLibraries"),
+
+ OBJECT_COLLECTION(ObjectCollectionType.COMPLEX_TYPE, SchemaConstantsGenerated.C_OBJECT_COLLECTION, ObjectCollectionType.class, ObjectManager.MODEL,
+ "objectCollections"),
// this should be at end, because otherwise it presents itself as entry for all subtypes of ObjectType
OBJECT(SchemaConstants.C_OBJECT_TYPE, SchemaConstants.C_OBJECT, ObjectType.class, ObjectManager.MODEL, "objects");
diff --git a/infra/schema/src/main/java/com/evolveum/midpoint/schema/util/AdminGuiConfigTypeUtil.java b/infra/schema/src/main/java/com/evolveum/midpoint/schema/util/AdminGuiConfigTypeUtil.java
index fc3571c0142..e8fbd9f2250 100644
--- a/infra/schema/src/main/java/com/evolveum/midpoint/schema/util/AdminGuiConfigTypeUtil.java
+++ b/infra/schema/src/main/java/com/evolveum/midpoint/schema/util/AdminGuiConfigTypeUtil.java
@@ -75,7 +75,7 @@ private static void applyAdminGuiConfiguration(AdminGuiConfigurationType composi
if (composite.getObjectLists() == null) {
composite.setObjectLists(adminGuiConfiguration.getObjectLists().clone());
} else {
- for (GuiObjectListType objectList: adminGuiConfiguration.getObjectLists().getObjectList()) {
+ for (GuiObjectListViewType objectList: adminGuiConfiguration.getObjectLists().getObjectList()) {
mergeList(composite.getObjectLists(), objectList);
}
}
@@ -111,7 +111,7 @@ private static void applyAdminGuiConfiguration(AdminGuiConfigurationType composi
mergeFeature(composite.getFeature(), feature);
}
if (composite.getObjectLists() != null && composite.getObjectLists().getObjectList() != null){
- for (GuiObjectListType objectListType : composite.getObjectLists().getObjectList()){
+ for (GuiObjectListViewType objectListType : composite.getObjectLists().getObjectList()){
if (objectListType.getColumn() != null) {
// objectListType.getColumn().clear();
// objectListType.getColumn().addAll(orderCustomColumns(objectListType.getColumn()));
@@ -185,7 +185,7 @@ private static boolean isTheSameObjectForm(ObjectFormType oldForm, ObjectFormTyp
return false;
}
- private static void mergeList(GuiObjectListsType objectLists, GuiObjectListType newList) {
+ private static void mergeList(GuiObjectListViewsType objectLists, GuiObjectListViewType newList) {
// We support only the default object lists now, so simply replace the existing definition with the
// latest definition. We will need a more sophisticated merging later.
objectLists.getObjectList().removeIf(currentList -> currentList.getType().equals(newList.getType()));
diff --git a/infra/schema/src/main/java/com/evolveum/midpoint/schema/util/WfContextUtil.java b/infra/schema/src/main/java/com/evolveum/midpoint/schema/util/WfContextUtil.java
index f4f5c23d559..96321830c40 100644
--- a/infra/schema/src/main/java/com/evolveum/midpoint/schema/util/WfContextUtil.java
+++ b/infra/schema/src/main/java/com/evolveum/midpoint/schema/util/WfContextUtil.java
@@ -426,10 +426,34 @@ public static ObjectReferenceType getObjectRef(WorkItemType workItem) {
return getWorkflowContext(workItem).getObjectRef();
}
+ public static ObjectReferenceType getObjectRef(PrismContainerValue workItem) {
+ return getObjectRef(workItem.asContainerable());
+ }
+
public static ObjectReferenceType getTargetRef(WorkItemType workItem) {
return getWorkflowContext(workItem).getTargetRef();
}
+ public static ObjectReferenceType getTargetRef(PrismContainerValue workItem) {
+ return getTargetRef(workItem.asContainerable());
+ }
+
+ public static ObjectReferenceType getRequesterRef(WorkItemType workItem) {
+ return getWorkflowContext(workItem).getRequesterRef();
+ }
+
+ public static ObjectReferenceType getRequesterRef(PrismContainerValue workItem) {
+ return getRequesterRef(workItem.asContainerable());
+ }
+
+ public static XMLGregorianCalendar getStartTimestamp(WorkItemType workItem) {
+ return getWorkflowContext(workItem).getStartTimestamp();
+ }
+
+ public static XMLGregorianCalendar getStartTimestamp(PrismContainerValue workItem) {
+ return getStartTimestamp(workItem.asContainerable());
+ }
+
public static int getEscalationLevelNumber(AbstractWorkItemType workItem) {
return getEscalationLevelNumber(workItem.getEscalationLevel());
}
diff --git a/infra/schema/src/main/resources/xml/ns/public/common/common-3.xsd b/infra/schema/src/main/resources/xml/ns/public/common/common-3.xsd
index 8a3ae4fb7d9..e6db5b651d7 100644
--- a/infra/schema/src/main/resources/xml/ns/public/common/common-3.xsd
+++ b/infra/schema/src/main/resources/xml/ns/public/common/common-3.xsd
@@ -1,7 +1,7 @@
@@ -13957,7 +13958,40 @@
-
+
+
+
+ Object collection specification.
+
+
+ 3.9
+
+
+
+
+
+
+
+
+ Type of objects that belong to this collection.
+
+
+
+
+
+
+ Filter that is used to select objects which belong to this collection.
+
+
+
+
+
+
+
+
+
+
+
@@ -14029,13 +14063,16 @@
-
+
Specifies the set of pages that are used for displaying lists of objects
such as Users, Roles, Orgs, ...
+
+ Note: name of this element is wrong. It should be objectViews or objectListViews.
+
3.4
@@ -18445,7 +18482,7 @@
-
+
Specifies the set of pages that are used for displaying lists of objects
@@ -18457,20 +18494,31 @@
-
-
+
+
+
+
+ Note: in fact name of this element is wrong. It should be objectView or objectListView.
+
+
+
If set to true then all the default lists will be displayed (all users, all roles, ...)
+ Note: NOT YET IMPLEMENTED. Probably will never get implemented.
+ Note: in fact name of this element is wrong. It should be includeDefaultViews or includeDefaultListViews.
+
+ true
+
-
+
Specifies the page used to list specific object type or object collection.
@@ -18485,8 +18533,55 @@
add name, label (display name) and menu label for this list.
We will also need a reference to which menu section we want to display it. E.g. We would
like to display role catalog under "roles", even though it is in fact org tree. -->
-
-
+
+
+
+ Symbolic name for this view. It is not really used by the GUI code. It is mostly used for
+ diagnostics, logging and so on. It may be later used to detect whether a particular view is overriden,
+ e.g. if view defined in system configuraiton is overridden in the role.
+
+
+ 3.9
+
+
+
+
+
+
+ Type of displayed objects. It may not be present in case that the type is defined in a referenced object colleciton.
+
+
+
+
+
+
+ Reference to object collection that will be used to select objects in this view.
+ If no collection is specified then it is assumed that all objects of a particular
+ type has to be displayed (type element above is mandatory in that case).
+
+
+ 3.9
+
+
+
+
+
+
+
+ Display properties of the view. It is used to display the link in the menu and so on.
+ Only label is used now. E.g. the CSS properties are ignored.
+
+
+
+ 3.9
+
+
+
diff --git a/infra/test-util/pom.xml b/infra/test-util/pom.xml
index b69fc331a53..349b1dbfd74 100644
--- a/infra/test-util/pom.xml
+++ b/infra/test-util/pom.xml
@@ -24,7 +24,7 @@
infra
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
https://github.com/Evolveum/midpoint.git
@@ -43,17 +43,17 @@
com.evolveum.midpoint.infra
util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
prism
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
schema
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
commons-lang
@@ -113,7 +113,7 @@
com.evolveum.midpoint.tools
test-ng
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
diff --git a/infra/util/pom.xml b/infra/util/pom.xml
index f8ecab6dab8..f920b49270e 100644
--- a/infra/util/pom.xml
+++ b/infra/util/pom.xml
@@ -24,7 +24,7 @@
infra
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
https://github.com/Evolveum/midpoint.git
diff --git a/infra/util/src/main/java/com/evolveum/midpoint/util/DOMUtil.java b/infra/util/src/main/java/com/evolveum/midpoint/util/DOMUtil.java
index 46cd0d687d6..0a912e1e99a 100644
--- a/infra/util/src/main/java/com/evolveum/midpoint/util/DOMUtil.java
+++ b/infra/util/src/main/java/com/evolveum/midpoint/util/DOMUtil.java
@@ -31,14 +31,8 @@
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Result;
-import javax.xml.transform.Source;
+import javax.xml.transform.*;
import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.TransformerFactoryConfigurationError;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
@@ -163,16 +157,37 @@ public class DOMUtil {
// To generate random namespace prefixes
private static Random rnd = new Random();
- private static final DocumentBuilder loader;
+ private static final ThreadLocal documentBuilderThreadLocal;
+ private static final ThreadLocal transformerThreadLocal;
static {
- try {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- loader = factory.newDocumentBuilder();
- } catch (ParserConfigurationException ex) {
- throw new IllegalStateException("Error creating XML document " + ex.getMessage());
- }
+ documentBuilderThreadLocal = ThreadLocal.withInitial(() -> {
+ try {
+ DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
+ documentBuilderFactory.setNamespaceAware(true);
+ documentBuilderFactory.setFeature("http://xml.org/sax/features/namespaces", true);
+ // voodoo to turn off reading of DTDs during parsing. This is needed e.g. to pre-parse schemas
+ documentBuilderFactory.setValidating(false);
+ documentBuilderFactory.setFeature("http://xml.org/sax/features/validation", false);
+ documentBuilderFactory.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false);
+ documentBuilderFactory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
+ return documentBuilderFactory.newDocumentBuilder();
+ } catch (ParserConfigurationException e) {
+ throw new RuntimeException(e);
+ }
+ });
+
+ transformerThreadLocal = ThreadLocal.withInitial(() -> {
+ try {
+ TransformerFactory transformerFactory = TransformerFactory.newInstance();
+ Transformer trans = transformerFactory.newTransformer();
+ trans.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4"); // XALAN-specific
+ trans.setParameter(OutputKeys.ENCODING, "utf-8");
+ return trans;
+ } catch (TransformerConfigurationException e) {
+ throw new RuntimeException(e);
+ }
+ });
}
public static String serializeDOMToString(org.w3c.dom.Node node) {
@@ -180,11 +195,9 @@ public static String serializeDOMToString(org.w3c.dom.Node node) {
}
public static void serializeDOMToFile(org.w3c.dom.Node node, File file) throws TransformerFactoryConfigurationError, TransformerException {
-
- Transformer transformer = TransformerFactory.newInstance().newTransformer();
+ Transformer transformer = transformerThreadLocal.get();
Result output = new StreamResult(file);
Source input = new DOMSource(node);
-
transformer.transform(input, output);
}
@@ -196,23 +209,17 @@ public static Document getDocument(Node node) {
}
public static Document getDocument() {
- return loader.newDocument();
+ return documentBuilderThreadLocal.get().newDocument();
}
public static Document getDocument(QName rootElementName) {
- Document document = loader.newDocument();
+ Document document = documentBuilderThreadLocal.get().newDocument();
document.appendChild(createElement(document, rootElementName));
return document;
}
public static DocumentBuilder createDocumentBuilder() {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- try {
- return factory.newDocumentBuilder();
- } catch (ParserConfigurationException e) {
- throw new IllegalStateException("Error creating document builder " + e.getMessage(), e);
- }
+ return documentBuilderThreadLocal.get();
}
public static Document parseDocument(String doc) {
@@ -230,28 +237,16 @@ public static Document parseFile(String filePath) {
public static Document parseFile(File file) {
try {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder loader = factory.newDocumentBuilder();
- return loader.parse(file);
- } catch (SAXException | IOException | ParserConfigurationException ex) {
+ return documentBuilderThreadLocal.get().parse(file);
+ } catch (SAXException | IOException ex) {
throw new IllegalStateException("Error parsing XML document " + ex.getMessage(),ex);
}
}
public static Document parse(InputStream inputStream) throws IOException {
try {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- factory.setFeature("http://xml.org/sax/features/namespaces", true);
- // voodoo to turn off reading of DTDs during parsing. This is needed e.g. to pre-parse schemas
- factory.setValidating(false);
- factory.setFeature("http://xml.org/sax/features/validation", false);
- factory.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false);
- factory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
- DocumentBuilder loader = factory.newDocumentBuilder();
- return loader.parse(inputStream);
- } catch (SAXException | ParserConfigurationException ex) {
+ return documentBuilderThreadLocal.get().parse(inputStream);
+ } catch (SAXException ex) {
throw new IllegalStateException("Error parsing XML document " + ex.getMessage(),ex);
}
}
@@ -271,21 +266,12 @@ public static StringBuffer printDom(Node node) {
public static StringBuffer printDom(Node node, boolean indent, boolean omitXmlDeclaration) {
StringWriter writer = new StringWriter();
- TransformerFactory transfac = TransformerFactory.newInstance();
- Transformer trans;
- try {
- trans = transfac.newTransformer();
- } catch (TransformerConfigurationException e) {
- throw new SystemException("Error in XML configuration: "+e.getMessage(),e);
- }
- trans.setOutputProperty(OutputKeys.INDENT, (indent ? "yes" : "no"));
- trans.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4"); // XALAN-specific
- trans.setParameter(OutputKeys.ENCODING, "utf-8");
- // Note: serialized XML does not contain xml declaration
- trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, (omitXmlDeclaration ? "yes" : "no"));
-
DOMSource source = new DOMSource(node);
try {
+ Transformer trans = transformerThreadLocal.get();
+ trans.setOutputProperty(OutputKeys.INDENT, (indent ? "yes" : "no"));
+ // Note: serialized XML does not contain xml declaration
+ trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, (omitXmlDeclaration ? "yes" : "no"));
trans.transform(source, new StreamResult(writer));
} catch (TransformerException e) {
throw new SystemException("Error in XML transformation: "+e.getMessage(),e);
diff --git a/infra/ws-util/pom.xml b/infra/ws-util/pom.xml
index e261f9d875d..ef58adfb7f3 100644
--- a/infra/ws-util/pom.xml
+++ b/infra/ws-util/pom.xml
@@ -24,7 +24,7 @@
infra
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
https://github.com/Evolveum/midpoint.git
@@ -81,7 +81,7 @@
com.evolveum.midpoint.tools
test-ng
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
diff --git a/model/certification-api/pom.xml b/model/certification-api/pom.xml
index e367eb00afb..5f826096d13 100644
--- a/model/certification-api/pom.xml
+++ b/model/certification-api/pom.xml
@@ -21,7 +21,7 @@
model
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
4.0.0
midPoint Access Certification - api
@@ -37,22 +37,22 @@
com.evolveum.midpoint.infra
util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
prism
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
schema
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
task-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
org.jetbrains
@@ -61,7 +61,7 @@
com.evolveum.midpoint.tools
test-ng
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
diff --git a/model/certification-impl/pom.xml b/model/certification-impl/pom.xml
index 27916b7a254..6275ea1943b 100644
--- a/model/certification-impl/pom.xml
+++ b/model/certification-impl/pom.xml
@@ -24,7 +24,7 @@
model
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
https://github.com/Evolveum/midpoint.git
@@ -35,72 +35,72 @@
com.evolveum.midpoint.infra
util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
prism
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
schema
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.model
certification-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
repo-common
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.model
model-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.model
model-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.model
model-common
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
common
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
repo-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
security-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
security-enforcer-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
task-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.model
workflow-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
@@ -136,62 +136,62 @@
com.evolveum.midpoint.model
notifications-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
system-init
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
repo-sql-impl-test
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.model
model-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test-jar
test
com.evolveum.midpoint.infra
test-util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.model
notifications-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.model
workflow-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.model
report-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.model
report-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.icf
dummy-resource
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
@@ -202,7 +202,7 @@
com.evolveum.midpoint.tools
test-ng
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
@@ -228,43 +228,43 @@
com.evolveum.midpoint.repo
repo-test-util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
task-quartz-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
audit-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
security-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
security-enforcer-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.provisioning
provisioning-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.model
model-test
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
diff --git a/model/model-api/pom.xml b/model/model-api/pom.xml
index a37b63665d8..59e4de133be 100644
--- a/model/model-api/pom.xml
+++ b/model/model-api/pom.xml
@@ -24,7 +24,7 @@
model
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
Evolveum
@@ -50,47 +50,47 @@
com.evolveum.midpoint.infra
util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
prism
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
schema
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
common
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
task-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
security-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
security-enforcer-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
audit-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.tools
test-ng
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
diff --git a/model/model-client/pom.xml b/model/model-client/pom.xml
index 2008060b782..b70e5e6d1d3 100644
--- a/model/model-client/pom.xml
+++ b/model/model-client/pom.xml
@@ -24,7 +24,7 @@
model
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
https://github.com/Evolveum/midpoint.git
@@ -115,7 +115,7 @@
com.evolveum.midpoint.tools
test-ng
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
@@ -214,7 +214,7 @@
com.evolveum.midpoint.tools
xjc-plugin
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
diff --git a/model/model-common/pom.xml b/model/model-common/pom.xml
index 38d9b5659c9..e0a6375930e 100644
--- a/model/model-common/pom.xml
+++ b/model/model-common/pom.xml
@@ -24,7 +24,7 @@
model
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
Evolveum
@@ -50,52 +50,52 @@
com.evolveum.midpoint.infra
util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
prism
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
schema
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
common
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.model
model-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
audit-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
repo-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
repo-common
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
task-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
security-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
diff --git a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/ReportFunctions.java b/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/ReportFunctions.java
index 68482f047cb..355f75b080c 100644
--- a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/ReportFunctions.java
+++ b/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/ReportFunctions.java
@@ -25,10 +25,7 @@
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.prism.query.builder.QueryBuilder;
-import com.evolveum.midpoint.schema.GetOperationOptions;
-import com.evolveum.midpoint.schema.ResultHandler;
-import com.evolveum.midpoint.schema.RetrieveOption;
-import com.evolveum.midpoint.schema.SelectorOptions;
+import com.evolveum.midpoint.schema.*;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.schema.util.ObjectTypeUtil;
@@ -52,6 +49,7 @@
import java.util.Objects;
import java.util.stream.Collectors;
+import static com.evolveum.midpoint.schema.GetOperationOptions.resolveItemsNamed;
import static com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationCampaignStateType.CLOSED;
import static com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationCampaignType.F_STATE;
import static com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType.F_NAME;
@@ -336,6 +334,20 @@ ObjectFilter createEqualFilter(ItemPath propertyPat
// return prismContext.parserFor(xml).xml().parseAnyData();
// }
+ public List> searchApprovalWorkItems()
+ throws CommunicationException, ObjectNotFoundException, SchemaException, SecurityViolationException,
+ ConfigurationException, ExpressionEvaluationException {
+ Task task = taskManager.createTaskInstance();
+ OperationResult result = task.getResult();
+ SearchResultList workItems = model.searchContainers(WorkItemType.class, null,
+ resolveItemsNamed(
+ WorkItemType.F_ASSIGNEE_REF,
+ new ItemPath(PrismConstants.T_PARENT, WfContextType.F_OBJECT_REF),
+ new ItemPath(PrismConstants.T_PARENT, WfContextType.F_TARGET_REF),
+ new ItemPath(PrismConstants.T_PARENT, WfContextType.F_REQUESTER_REF)), task, result);
+ return PrismContainerValue.toPcvList(workItems);
+ }
+
/**
* Retrieves all definitions.
* Augments them by count of campaigns (all + open ones).
diff --git a/model/workflow-api/pom.xml b/model/workflow-api/pom.xml
index f7a5614567f..0000b448d2f 100644
--- a/model/workflow-api/pom.xml
+++ b/model/workflow-api/pom.xml
@@ -21,7 +21,7 @@
model
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
4.0.0
midPoint Workflow - api
@@ -37,43 +37,43 @@
com.evolveum.midpoint.infra
util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
prism
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
schema
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
task-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
repo-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.tools
test-ng
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.model
model-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
security-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
diff --git a/model/workflow-impl/pom.xml b/model/workflow-impl/pom.xml
index 456202be80e..e524aee948d 100644
--- a/model/workflow-impl/pom.xml
+++ b/model/workflow-impl/pom.xml
@@ -24,7 +24,7 @@
model
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
https://github.com/Evolveum/midpoint.git
@@ -35,82 +35,82 @@
com.evolveum.midpoint.model
workflow-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
repo-common
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.model
model-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.model
model-common
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.model
model-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
repo-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.provisioning
provisioning-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
task-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
audit-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
security-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
security-enforcer-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
system-init
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
prism
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
schema
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
common
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
@@ -130,7 +130,7 @@
com.evolveum.midpoint.repo
repo-sql-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
provided
@@ -186,44 +186,44 @@
com.evolveum.midpoint.model
notifications-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.infra
test-util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.model
model-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test-jar
test
com.evolveum.midpoint.model
notifications-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.model
report-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.model
report-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
repo-sql-impl-test
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
@@ -234,7 +234,7 @@
com.evolveum.midpoint.tools
test-ng
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
@@ -260,43 +260,43 @@
com.evolveum.midpoint.repo
repo-test-util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
task-quartz-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
audit-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
security-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
security-enforcer-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.provisioning
provisioning-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.model
model-test
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
diff --git a/pom.xml b/pom.xml
index 78fd80a20d6..7971a9a61c8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
midPoint Project
com.evolveum.midpoint
midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
pom
Utility module to compile all of the maven based midPoint projects.
diff --git a/provisioning/pom.xml b/provisioning/pom.xml
index 8b352640480..74ad575efba 100644
--- a/provisioning/pom.xml
+++ b/provisioning/pom.xml
@@ -23,7 +23,7 @@
parent
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
../build-system/pom.xml
diff --git a/provisioning/provisioning-api/pom.xml b/provisioning/provisioning-api/pom.xml
index 11851565ce5..b38342ddf1c 100644
--- a/provisioning/provisioning-api/pom.xml
+++ b/provisioning/provisioning-api/pom.xml
@@ -25,7 +25,7 @@
provisioning
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
https://github.com/Evolveum/midpoint.git
@@ -36,32 +36,32 @@
com.evolveum.midpoint.infra
util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
prism
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
schema
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
common
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
task-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.tools
test-ng
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
diff --git a/provisioning/provisioning-impl/pom.xml b/provisioning/provisioning-impl/pom.xml
index 9f77e1af161..72b8a0fc57c 100644
--- a/provisioning/provisioning-impl/pom.xml
+++ b/provisioning/provisioning-impl/pom.xml
@@ -24,7 +24,7 @@
provisioning
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
https://github.com/Evolveum/midpoint.git
@@ -35,70 +35,70 @@
com.evolveum.midpoint.infra
util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
prism
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
schema
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
common
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.provisioning
provisioning-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.provisioning
ucf-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
repo-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
repo-cache
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
system-init
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
task-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.provisioning
ucf-impl-connid
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
runtime
com.evolveum.midpoint.provisioning
ucf-impl-builtin
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
runtime
com.evolveum.midpoint.repo
repo-common
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
commons-lang
@@ -126,19 +126,19 @@
com.evolveum.midpoint.infra
test-util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
audit-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
repo-sql-impl-test
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
@@ -149,19 +149,19 @@
com.evolveum.midpoint.repo
repo-sql-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
task-quartz-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
security-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
@@ -172,13 +172,13 @@
com.evolveum.midpoint.tools
test-ng
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
repo-test-util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
@@ -221,13 +221,13 @@
com.evolveum.icf
dummy-connector
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.icf
dummy-resource
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
diff --git a/provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ConnectorManager.java b/provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ConnectorManager.java
index e13f93564a2..bafec754514 100644
--- a/provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ConnectorManager.java
+++ b/provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ConnectorManager.java
@@ -549,8 +549,14 @@ public void shutdown() {
for (Entry connectorInstanceCacheEntry: connectorInstanceCache.entrySet()) {
connectorInstanceCacheEntry.getValue().connectorInstance.dispose();
}
- for (ConnectorFactory connectorFactory: getConnectorFactories()) {
- connectorFactory.shutdown();
+ if (connectorFactories != null) {
+ // Skip this in the very rare case that we are shutting down before we were fully
+ // initialized. This should not happen under normal circumstances.
+ // Generally, do not call getConnectorFactories() from here. This is
+ // spring "destroy" method. We should not work with spring context here.
+ for (ConnectorFactory connectorFactory: connectorFactories) {
+ connectorFactory.shutdown();
+ }
}
}
diff --git a/provisioning/ucf-api/pom.xml b/provisioning/ucf-api/pom.xml
index 6782f4c7c6b..f9b9b34b179 100644
--- a/provisioning/ucf-api/pom.xml
+++ b/provisioning/ucf-api/pom.xml
@@ -25,7 +25,7 @@
provisioning
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
https://github.com/Evolveum/midpoint.git
@@ -36,22 +36,22 @@
com.evolveum.midpoint.infra
util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
prism
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
schema
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
task-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
commons-lang
@@ -64,7 +64,7 @@
com.evolveum.midpoint.tools
test-ng
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
diff --git a/provisioning/ucf-impl-builtin/pom.xml b/provisioning/ucf-impl-builtin/pom.xml
index 70740e9236d..567fd13c4bb 100644
--- a/provisioning/ucf-impl-builtin/pom.xml
+++ b/provisioning/ucf-impl-builtin/pom.xml
@@ -24,7 +24,7 @@
provisioning
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
Implementation for the built-in midpoint connectors, such as the built-in "manaual connector" capability.
@@ -36,37 +36,37 @@
com.evolveum.midpoint.infra
util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
prism
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
schema
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
repo-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
task-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.provisioning
ucf-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
common
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
commons-lang
@@ -94,19 +94,19 @@
com.evolveum.midpoint.infra
test-util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
audit-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
repo-sql-impl-test
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
@@ -117,19 +117,19 @@
com.evolveum.midpoint.repo
repo-sql-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
task-quartz-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
security-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
@@ -140,13 +140,13 @@
com.evolveum.midpoint.tools
test-ng
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
repo-test-util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
@@ -162,7 +162,7 @@
com.evolveum.midpoint.repo
system-init
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
diff --git a/provisioning/ucf-impl-connid/pom.xml b/provisioning/ucf-impl-connid/pom.xml
index e3b2a3da8b1..ef452370774 100644
--- a/provisioning/ucf-impl-connid/pom.xml
+++ b/provisioning/ucf-impl-connid/pom.xml
@@ -24,7 +24,7 @@
provisioning
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
https://github.com/Evolveum/midpoint.git
@@ -35,32 +35,32 @@
com.evolveum.midpoint.infra
util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
prism
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
schema
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
common
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.provisioning
ucf-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
task-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
@@ -107,19 +107,19 @@
com.evolveum.midpoint.infra
test-util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
audit-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
repo-sql-impl-test
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
@@ -130,19 +130,19 @@
com.evolveum.midpoint.repo
repo-sql-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
task-quartz-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
security-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
@@ -153,13 +153,13 @@
com.evolveum.midpoint.tools
test-ng
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
repo-test-util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
@@ -202,13 +202,13 @@
com.evolveum.icf
dummy-connector
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.icf
dummy-resource
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
@@ -229,7 +229,7 @@
com.evolveum.midpoint.repo
system-init
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
diff --git a/repo/audit-api/pom.xml b/repo/audit-api/pom.xml
index 4a973eff87f..b592522e3ba 100644
--- a/repo/audit-api/pom.xml
+++ b/repo/audit-api/pom.xml
@@ -24,7 +24,7 @@
repo
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
https://github.com/Evolveum/midpoint.git
@@ -35,17 +35,17 @@
com.evolveum.midpoint.infra
util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
prism
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
schema
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
commons-configuration
@@ -55,13 +55,13 @@
com.evolveum.midpoint.tools
test-ng
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
task-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
org.jetbrains
diff --git a/repo/audit-impl/pom.xml b/repo/audit-impl/pom.xml
index 303f5651362..f839fc5caa1 100644
--- a/repo/audit-impl/pom.xml
+++ b/repo/audit-impl/pom.xml
@@ -24,7 +24,7 @@
repo
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
https://github.com/Evolveum/midpoint.git
@@ -35,32 +35,32 @@
com.evolveum.midpoint.infra
util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
prism
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
schema
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
common
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
task-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
audit-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
commons-configuration
@@ -84,7 +84,7 @@
com.evolveum.midpoint.tools
test-ng
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
@@ -100,13 +100,13 @@
com.evolveum.midpoint.repo
repo-sql-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
repo-test-util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
@@ -117,7 +117,7 @@
com.evolveum.midpoint.repo
system-init
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
diff --git a/repo/pom.xml b/repo/pom.xml
index 63a1fa057ac..0bf3995455c 100644
--- a/repo/pom.xml
+++ b/repo/pom.xml
@@ -22,7 +22,7 @@
parent
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
../build-system/pom.xml
diff --git a/repo/repo-api/pom.xml b/repo/repo-api/pom.xml
index 13ca3b83ec3..50d49cd5b91 100644
--- a/repo/repo-api/pom.xml
+++ b/repo/repo-api/pom.xml
@@ -24,7 +24,7 @@
repo
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
https://github.com/Evolveum/midpoint.git
@@ -35,17 +35,17 @@
com.evolveum.midpoint.infra
util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
prism
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
schema
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
commons-lang
@@ -62,7 +62,7 @@
com.evolveum.midpoint.tools
test-ng
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
diff --git a/repo/repo-cache/pom.xml b/repo/repo-cache/pom.xml
index a18b380a01a..cecb8aa7643 100644
--- a/repo/repo-cache/pom.xml
+++ b/repo/repo-cache/pom.xml
@@ -24,7 +24,7 @@
repo
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
https://github.com/Evolveum/midpoint.git
@@ -35,27 +35,27 @@
com.evolveum.midpoint.infra
prism
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
common
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
repo-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
schema
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
commons-lang
@@ -89,7 +89,7 @@
com.evolveum.midpoint.tools
test-ng
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
diff --git a/repo/repo-common/pom.xml b/repo/repo-common/pom.xml
index 3eab069740d..c48721386d5 100644
--- a/repo/repo-common/pom.xml
+++ b/repo/repo-common/pom.xml
@@ -24,7 +24,7 @@
repo
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
Evolveum
@@ -50,42 +50,42 @@
com.evolveum.midpoint.infra
util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
prism
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
schema
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
common
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
task-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
repo-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
repo-cache
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
security-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
org.jetbrains
@@ -132,49 +132,49 @@
com.evolveum.midpoint.repo
task-quartz-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
security-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
audit-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
repo-sql-impl-test
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
system-init
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
repo-test-util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.infra
test-util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.tools
test-ng
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
diff --git a/repo/repo-sql-impl-test/pom.xml b/repo/repo-sql-impl-test/pom.xml
index d568754a62c..b79aec36732 100644
--- a/repo/repo-sql-impl-test/pom.xml
+++ b/repo/repo-sql-impl-test/pom.xml
@@ -25,7 +25,7 @@
repo
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
https://github.com/Evolveum/midpoint.git
@@ -36,37 +36,37 @@
com.evolveum.midpoint.infra
util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
prism
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
schema
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
repo-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
audit-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
task-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
repo-sql-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
@@ -102,6 +102,12 @@
org.hibernate
hibernate-core
+
+
+ org.javassist
+ javassist
+
+
org.jetbrains
@@ -129,16 +135,21 @@
mysql-connector-java
runtime
+
+ com.microsoft.sqlserver
+ mssql-jdbc
+ runtime
+
com.evolveum.midpoint.infra
common
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
system-init
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
@@ -177,7 +188,7 @@
com.evolveum.midpoint.infra
test-util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
diff --git a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ModifyTest.java b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ModifyTest.java
index 94c68c5c46b..ddb074fd3e3 100644
--- a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ModifyTest.java
+++ b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ModifyTest.java
@@ -24,7 +24,10 @@
import com.evolveum.midpoint.prism.delta.ReferenceDelta;
import com.evolveum.midpoint.prism.delta.builder.DeltaBuilder;
import com.evolveum.midpoint.prism.path.ItemPath;
+import com.evolveum.midpoint.prism.polystring.PolyString;
+import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.prism.query.ObjectQuery;
+import com.evolveum.midpoint.prism.query.QueryJaxbConvertor;
import com.evolveum.midpoint.prism.util.PrismAsserts;
import com.evolveum.midpoint.prism.query.builder.QueryBuilder;
import com.evolveum.midpoint.prism.util.PrismTestUtil;
@@ -52,6 +55,7 @@
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.xml.ns._public.common.api_types_3.ObjectModificationType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
+import com.evolveum.prism.xml.ns._public.query_3.SearchFilterType;
import com.evolveum.prism.xml.ns._public.types_3.ObjectDeltaType;
import com.evolveum.prism.xml.ns._public.types_3.PolyStringType;
import org.hibernate.Session;
@@ -930,4 +934,57 @@ private void assertAttribute(PrismObject shadow, QName attrQName
PrismAsserts.assertPropertyValue(attr, expectedValues);
}
}
+
+ @Test
+ public void test210ModifyObjectCollection() throws Exception {
+ final String TEST_NAME = "test210ModifyObjectCollection";
+ TestUtil.displayTestTitle(TEST_NAME);
+
+ OperationResult result = new OperationResult("test210ModifyObjectCollection");
+
+ ObjectCollectionType collection = prismContext.createObjectable(ObjectCollectionType.class)
+ .name("collection")
+ .type(UserType.COMPLEX_TYPE);
+ repositoryService.addObject(collection.asPrismObject(), null, result);
+
+ List> deltas1 = DeltaBuilder.deltaFor(ObjectCollectionType.class, prismContext)
+ .item(ObjectCollectionType.F_NAME).replace(PolyString.fromOrig("collection2"))
+ .asItemDeltas();
+ repositoryService.modifyObject(ObjectCollectionType.class, collection.getOid(), deltas1, result);
+
+ ItemDelta.applyTo(deltas1, collection.asPrismObject());
+ PrismObject afterChange1 = repositoryService
+ .getObject(ObjectCollectionType.class, collection.getOid(), null, result);
+ assertEquals("Objects differ after change 1", collection.asPrismObject(), afterChange1);
+
+ ObjectFilter filter = QueryBuilder.queryFor(UserType.class, prismContext)
+ .item(UserType.F_COST_CENTER).eq("100")
+ .buildFilter();
+ SearchFilterType filterBean = QueryJaxbConvertor.createSearchFilterType(filter, prismContext);
+
+ List> deltas2 = DeltaBuilder.deltaFor(ObjectCollectionType.class, prismContext)
+ .item(ObjectCollectionType.F_DESCRIPTION).replace("description")
+ .item(ObjectCollectionType.F_FILTER).replace(filterBean)
+ .asItemDeltas();
+ repositoryService.modifyObject(ObjectCollectionType.class, collection.getOid(), deltas2, result);
+
+ ItemDelta.applyTo(deltas2, collection.asPrismObject());
+ PrismObject afterChange2 = repositoryService
+ .getObject(ObjectCollectionType.class, collection.getOid(), null, result);
+
+ // it's hard to compare filters, so we have to do the test in a special way
+ PrismObject fromRepoWithoutFilter = afterChange2.clone();
+ fromRepoWithoutFilter.asObjectable().setFilter(null);
+ PrismObject expectedWithoutFilter = collection.asPrismObject().clone();
+ expectedWithoutFilter.asObjectable().setFilter(null);
+ assertEquals("Objects (without filter) differ after change 2", expectedWithoutFilter, fromRepoWithoutFilter);
+
+ SearchFilterType filterFromRepo = afterChange2.asObjectable().getFilter();
+ SearchFilterType filterExpected = collection.getFilter();
+ ObjectFilter filterFromRepoParsed = QueryJaxbConvertor.createObjectFilter(UserType.class, filterFromRepo, prismContext);
+ ObjectFilter filterExpectedParsed = QueryJaxbConvertor.createObjectFilter(UserType.class, filterExpected, prismContext);
+ //noinspection ConstantConditions
+ assertTrue("Filters differ", filterExpectedParsed.equals(filterFromRepoParsed, false));
+ }
+
}
diff --git a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/SearchTest.java b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/SearchTest.java
index 4c750cb33dc..019a1df5f1a 100644
--- a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/SearchTest.java
+++ b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/SearchTest.java
@@ -911,4 +911,36 @@ public void testExtensionReferenceNonNull() throws SchemaException {
assertEquals("Should find 1 object", 1, cases.size());
}
+ @Test
+ public void testObjectCollection() throws SchemaException {
+ ObjectQuery query = QueryBuilder.queryFor(ObjectCollectionType.class, prismContext)
+ .item(ObjectType.F_NAME).eqPoly("collection1", "collection1").matchingOrig()
+ .build();
+ OperationResult result = new OperationResult("search");
+ List> collections = repositoryService.searchObjects(ObjectCollectionType.class, query, null, result);
+ result.recomputeStatus();
+ assertTrue(result.isSuccess());
+ assertEquals("Should find 1 object", 1, collections.size());
+ }
+
+ @Test
+ public void testAllObjectCollections() throws SchemaException {
+ OperationResult result = new OperationResult("search");
+ List> collections = repositoryService.searchObjects(ObjectCollectionType.class, null, null, result);
+ result.recomputeStatus();
+ assertTrue(result.isSuccess());
+ assertEquals("Should find 1 object", 1, collections.size());
+ }
+
+ @Test
+ public void testFunctionLibrary() throws SchemaException {
+ ObjectQuery query = QueryBuilder.queryFor(FunctionLibraryType.class, prismContext)
+ .item(ObjectType.F_NAME).eqPoly("fl1", "fl1").matchingOrig()
+ .build();
+ OperationResult result = new OperationResult("search");
+ List> collections = repositoryService.searchObjects(FunctionLibraryType.class, query, null, result);
+ result.recomputeStatus();
+ assertTrue(result.isSuccess());
+ assertEquals("Should find 1 object", 1, collections.size());
+ }
}
diff --git a/repo/repo-sql-impl-test/src/test/resources/basic/objects.xml b/repo/repo-sql-impl-test/src/test/resources/basic/objects.xml
index 68369d8b5d9..1fbbd7a962c 100644
--- a/repo/repo-sql-impl-test/src/test/resources/basic/objects.xml
+++ b/repo/repo-sql-impl-test/src/test/resources/basic/objects.xml
@@ -1696,4 +1696,19 @@
+
+ collection1
+ UserType
+
+
+ subtype
+ EMP
+
+
+
+
+
+ fl1
+
+
diff --git a/repo/repo-sql-impl/pom.xml b/repo/repo-sql-impl/pom.xml
index cc486064f16..60ccfa737fa 100644
--- a/repo/repo-sql-impl/pom.xml
+++ b/repo/repo-sql-impl/pom.xml
@@ -25,7 +25,7 @@
repo
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
https://github.com/Evolveum/midpoint.git
@@ -36,12 +36,12 @@
com.evolveum.midpoint.infra
util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
schema
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
commons-beanutils
@@ -52,27 +52,27 @@
com.evolveum.midpoint.infra
prism
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
common
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
repo-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
task-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
audit-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
@@ -147,6 +147,12 @@
org.hibernate
hibernate-core
+
+
+ org.javassist
+ javassist
+
+
org.hibernate.javax.persistence
@@ -178,7 +184,7 @@
com.evolveum.midpoint.tools
test-ng
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
diff --git a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/data/common/RFunctionLibrary.java b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/data/common/RFunctionLibrary.java
index 147ed1520f7..21311bd5667 100644
--- a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/data/common/RFunctionLibrary.java
+++ b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/data/common/RFunctionLibrary.java
@@ -79,5 +79,6 @@ public int hashCode() {
public static void copyFromJAXB(FunctionLibraryType jaxb, RFunctionLibrary repo, RepositoryContext repositoryContext,
IdGeneratorResult generatorResult) throws DtoTranslationException {
RObject.copyFromJAXB(jaxb, repo, repositoryContext, generatorResult);
+ repo.setNameCopy(RPolyString.copyFromJAXB(jaxb.getName()));
}
}
diff --git a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/data/common/RObjectCollection.java b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/data/common/RObjectCollection.java
new file mode 100644
index 00000000000..5013159e834
--- /dev/null
+++ b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/data/common/RObjectCollection.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2010-2018 Evolveum
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.evolveum.midpoint.repo.sql.data.common;
+
+import com.evolveum.midpoint.repo.sql.data.RepositoryContext;
+import com.evolveum.midpoint.repo.sql.data.common.embedded.RPolyString;
+import com.evolveum.midpoint.repo.sql.query.definition.JaxbName;
+import com.evolveum.midpoint.repo.sql.util.DtoTranslationException;
+import com.evolveum.midpoint.repo.sql.util.IdGeneratorResult;
+import com.evolveum.midpoint.repo.sql.util.MidPointJoinedPersister;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectCollectionType;
+import org.hibernate.annotations.ForeignKey;
+import org.hibernate.annotations.Persister;
+
+import javax.persistence.*;
+import java.util.Objects;
+
+/**
+ *
+ * @author mederly
+ */
+@Entity
+@ForeignKey(name = "fk_object_collection")
+@Table(uniqueConstraints = @UniqueConstraint(name = "uc_object_collection_name", columnNames = {"name_norm"}),
+ indexes = {
+ @Index(name = "iObjectCollectionNameOrig", columnList = "name_orig"),
+ }
+)
+@Persister(impl = MidPointJoinedPersister.class)
+public class RObjectCollection extends RObject {
+
+ private RPolyString nameCopy;
+
+ @JaxbName(localPart = "name")
+ @AttributeOverrides({
+ @AttributeOverride(name = "orig", column = @Column(name = "name_orig")),
+ @AttributeOverride(name = "norm", column = @Column(name = "name_norm"))
+ })
+ @Embedded
+ public RPolyString getNameCopy() {
+ return nameCopy;
+ }
+
+ public void setNameCopy(RPolyString nameCopy) {
+ this.nameCopy = nameCopy;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o)
+ return true;
+ if (!(o instanceof RObjectCollection))
+ return false;
+ if (!super.equals(o))
+ return false;
+ RObjectCollection that = (RObjectCollection) o;
+ return Objects.equals(nameCopy, that.nameCopy);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), nameCopy);
+ }
+
+ public static void copyFromJAXB(ObjectCollectionType jaxb, RObjectCollection repo, RepositoryContext repositoryContext,
+ IdGeneratorResult generatorResult) throws DtoTranslationException {
+ RObject.copyFromJAXB(jaxb, repo, repositoryContext, generatorResult);
+ repo.setNameCopy(RPolyString.copyFromJAXB(jaxb.getName()));
+ }
+}
diff --git a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/data/common/other/RObjectType.java b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/data/common/other/RObjectType.java
index acfecb3c97e..e70b9fe8b48 100644
--- a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/data/common/other/RObjectType.java
+++ b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/data/common/other/RObjectType.java
@@ -34,7 +34,8 @@ public enum RObjectType {
SERVICE(RService.class, ServiceType.class),
FORM(RForm.class, FormType.class),
CASE(RCase.class, CaseType.class),
- FUNCTION_LIBRARY(RFunctionLibrary.class, FunctionLibraryType.class);
+ FUNCTION_LIBRARY(RFunctionLibrary.class, FunctionLibraryType.class),
+ OBJECT_COLLECTION(RObjectCollection.class, ObjectCollectionType.class);
private Class extends RObject> clazz;
private Class extends ObjectType> jaxbClass;
diff --git a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/helpers/mapper/EnumMapper.java b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/helpers/mapper/EnumMapper.java
index 1e81b597b16..13e6fd7d69c 100644
--- a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/helpers/mapper/EnumMapper.java
+++ b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/helpers/mapper/EnumMapper.java
@@ -16,10 +16,12 @@
package com.evolveum.midpoint.repo.sql.helpers.mapper;
+import com.evolveum.midpoint.repo.sql.data.common.enums.RExportType;
import com.evolveum.midpoint.repo.sql.data.common.enums.SchemaEnum;
import com.evolveum.midpoint.repo.sql.helpers.modify.MapperContext;
import com.evolveum.midpoint.repo.sql.util.RUtil;
import com.evolveum.midpoint.util.exception.SystemException;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.ExportType;
import org.apache.commons.lang.StringUtils;
/**
@@ -32,10 +34,14 @@ public SchemaEnum map(Enum input, MapperContext context) {
String repoEnumClass = null;
try {
String className = input.getClass().getSimpleName();
- className = StringUtils.left(className, className.length() - 4);
-
- repoEnumClass = "com.evolveum.midpoint.repo.sql.data.common.enums.R" + className;
- Class clazz = Class.forName(repoEnumClass);
+ Class clazz;
+ if (input instanceof ExportType) {
+ clazz = RExportType.class; // todo fix this brutal hack
+ } else {
+ className = StringUtils.left(className, className.length() - 4);
+ repoEnumClass = "com.evolveum.midpoint.repo.sql.data.common.enums.R" + className;
+ clazz = Class.forName(repoEnumClass);
+ }
if (!SchemaEnum.class.isAssignableFrom(clazz)) {
throw new SystemException("Can't translate enum value " + input);
diff --git a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/query2/resolution/ItemPathResolutionState.java b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/query2/resolution/ItemPathResolutionState.java
index fab12386032..3664468d983 100644
--- a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/query2/resolution/ItemPathResolutionState.java
+++ b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/query2/resolution/ItemPathResolutionState.java
@@ -105,7 +105,7 @@ public ItemPathResolutionState nextState(ItemDefinition itemDefinition, boolean
DataSearchResult> result = hqlDataInstance.getJpaDefinition().nextLinkDefinition(remainingItemPath, itemDefinition, prismContext);
LOGGER.trace("nextLinkDefinition on '{}' returned '{}'", remainingItemPath, result != null ? result.getLinkDefinition() : "(null)");
if (result == null) { // sorry we failed (however, this should be caught before -> so IllegalStateException)
- throw new IllegalStateException("Couldn't find '" + remainingItemPath + "' in " + hqlDataInstance.getJpaDefinition());
+ throw new IllegalStateException("Couldn't find '" + remainingItemPath + "' in " + hqlDataInstance.getJpaDefinition() +", looks like item can't be used in search.");
}
JpaLinkDefinition linkDefinition = result.getLinkDefinition();
String newHqlPath = hqlDataInstance.getHqlPath();
diff --git a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/util/ClassMapper.java b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/util/ClassMapper.java
index 0e916ff21da..6c21353777f 100644
--- a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/util/ClassMapper.java
+++ b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/util/ClassMapper.java
@@ -69,6 +69,7 @@ private ClassMapper() {
types.put(ObjectTypes.FORM, RObjectType.FORM);
types.put(ObjectTypes.CASE, RObjectType.CASE);
types.put(ObjectTypes.FUNCTION_LIBRARY, RObjectType.FUNCTION_LIBRARY);
+ types.put(ObjectTypes.OBJECT_COLLECTION, RObjectType.OBJECT_COLLECTION);
for (ObjectTypes type : ObjectTypes.values()) {
if (!types.containsKey(type)) {
diff --git a/repo/repo-test-util/pom.xml b/repo/repo-test-util/pom.xml
index 2e60e997810..457c689e559 100644
--- a/repo/repo-test-util/pom.xml
+++ b/repo/repo-test-util/pom.xml
@@ -23,7 +23,7 @@
repo
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
https://github.com/Evolveum/midpoint.git
@@ -34,47 +34,47 @@
com.evolveum.midpoint.infra
prism
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
schema
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
common
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
repo-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
repo-cache
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
task-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
audit-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
test-util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
@@ -113,7 +113,7 @@
com.evolveum.icf
dummy-resource
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
org.forgerock.opendj
@@ -122,7 +122,7 @@
com.evolveum.midpoint.tools
test-ng
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
org.slf4j
diff --git a/repo/repo-test-util/src/main/java/com/evolveum/midpoint/test/AbstractIntegrationTest.java b/repo/repo-test-util/src/main/java/com/evolveum/midpoint/test/AbstractIntegrationTest.java
index 8d764812b36..36d961479b1 100644
--- a/repo/repo-test-util/src/main/java/com/evolveum/midpoint/test/AbstractIntegrationTest.java
+++ b/repo/repo-test-util/src/main/java/com/evolveum/midpoint/test/AbstractIntegrationTest.java
@@ -106,7 +106,7 @@
import org.opends.server.types.SearchResultEntry;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.security.authentication.encoding.LdapShaPasswordEncoder;
+import org.springframework.security.crypto.password.LdapShaPasswordEncoder;
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
import org.testng.Assert;
import org.testng.AssertJUnit;
diff --git a/repo/security-api/pom.xml b/repo/security-api/pom.xml
index d675e7e0878..d3d57f7efbd 100644
--- a/repo/security-api/pom.xml
+++ b/repo/security-api/pom.xml
@@ -24,7 +24,7 @@
repo
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
https://github.com/Evolveum/midpoint.git
@@ -35,17 +35,17 @@
com.evolveum.midpoint.infra
util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
prism
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
schema
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
@@ -79,7 +79,7 @@
com.evolveum.midpoint.tools
test-ng
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
diff --git a/repo/security-api/src/main/java/com/evolveum/midpoint/security/api/AuthorizationConstants.java b/repo/security-api/src/main/java/com/evolveum/midpoint/security/api/AuthorizationConstants.java
index 9ad74249973..61733603747 100644
--- a/repo/security-api/src/main/java/com/evolveum/midpoint/security/api/AuthorizationConstants.java
+++ b/repo/security-api/src/main/java/com/evolveum/midpoint/security/api/AuthorizationConstants.java
@@ -401,6 +401,9 @@ public class AuthorizationConstants {
public static final QName AUTZ_UI_ADMIN_UNASSIGN_MEMBER_ACTION_QNAME = new QName(NS_AUTHORIZATION_UI, "adminUnassignMember");
public static final String AUTZ_UI_ADMIN_UNASSIGN_MEMBER_TAB_ACTION_URI = QNameUtil.qNameToUri(AUTZ_UI_ADMIN_UNASSIGN_MEMBER_ACTION_QNAME);
+
+ public static final QName AUTZ_UI_ADMIN_UNASSIGN_ALL_MEMBERS_ACTION_QNAME = new QName(NS_AUTHORIZATION_UI, "adminUnassignAllMembers");
+ public static final String AUTZ_UI_ADMIN_UNASSIGN_ALL_MEMBERS_TAB_ACTION_URI = QNameUtil.qNameToUri(AUTZ_UI_ADMIN_UNASSIGN_ALL_MEMBERS_ACTION_QNAME);
public static final QName AUTZ_UI_ADMIN_RECOMPUTE_MEMBER_ACTION_QNAME = new QName(NS_AUTHORIZATION_UI, "adminRecomputeMember");
public static final String AUTZ_UI_ADMIN_RECOMPUTE_MEMBER_ACTION_URI = QNameUtil.qNameToUri(AUTZ_UI_ADMIN_RECOMPUTE_MEMBER_ACTION_QNAME);
diff --git a/repo/security-enforcer-api/pom.xml b/repo/security-enforcer-api/pom.xml
index 52631bee9e7..66f154d192a 100644
--- a/repo/security-enforcer-api/pom.xml
+++ b/repo/security-enforcer-api/pom.xml
@@ -24,7 +24,7 @@
repo
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
https://github.com/Evolveum/midpoint.git
@@ -35,27 +35,27 @@
com.evolveum.midpoint.infra
util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
prism
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
schema
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
security-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
task-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
@@ -74,7 +74,7 @@
com.evolveum.midpoint.tools
test-ng
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
diff --git a/repo/security-enforcer-impl/pom.xml b/repo/security-enforcer-impl/pom.xml
index dd217c1fde9..979558788d7 100644
--- a/repo/security-enforcer-impl/pom.xml
+++ b/repo/security-enforcer-impl/pom.xml
@@ -24,7 +24,7 @@
repo
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
https://github.com/Evolveum/midpoint.git
@@ -35,42 +35,42 @@
com.evolveum.midpoint.infra
util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
prism
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
schema
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
security-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
security-enforcer-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
repo-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
repo-common
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
task-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
@@ -98,7 +98,7 @@
com.evolveum.midpoint.infra
common
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
@@ -109,7 +109,7 @@
com.evolveum.midpoint.tools
test-ng
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
@@ -120,31 +120,31 @@
com.evolveum.midpoint.repo
repo-sql-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.infra
test-util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
repo-test-util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
system-init
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
audit-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
diff --git a/repo/security-impl/pom.xml b/repo/security-impl/pom.xml
index ca478ff49f9..6baafee9ea3 100644
--- a/repo/security-impl/pom.xml
+++ b/repo/security-impl/pom.xml
@@ -24,7 +24,7 @@
repo
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
https://github.com/Evolveum/midpoint.git
@@ -35,33 +35,33 @@
com.evolveum.midpoint.infra
util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
prism
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
schema
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
security-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
repo-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
task-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
@@ -94,7 +94,7 @@
com.evolveum.midpoint.infra
common
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
@@ -105,7 +105,7 @@
com.evolveum.midpoint.tools
test-ng
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
@@ -116,31 +116,31 @@
com.evolveum.midpoint.repo
repo-sql-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.infra
test-util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
repo-test-util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
system-init
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.repo
audit-impl
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
diff --git a/repo/system-init/pom.xml b/repo/system-init/pom.xml
index 79941af167b..009db59bd2a 100644
--- a/repo/system-init/pom.xml
+++ b/repo/system-init/pom.xml
@@ -24,7 +24,7 @@
repo
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
https://github.com/Evolveum/midpoint.git
@@ -43,42 +43,42 @@
com.evolveum.midpoint.infra
util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
prism
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
schema
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
common
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
repo-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
task-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
audit-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
security-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
commons-lang
@@ -130,13 +130,13 @@
com.evolveum.midpoint.infra
test-util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
com.evolveum.midpoint.tools
test-ng
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
diff --git a/repo/task-api/pom.xml b/repo/task-api/pom.xml
index 04a063d4ae6..bd5584d07a2 100644
--- a/repo/task-api/pom.xml
+++ b/repo/task-api/pom.xml
@@ -24,7 +24,7 @@
repo
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
https://github.com/Evolveum/midpoint.git
@@ -35,22 +35,22 @@
com.evolveum.midpoint.infra
util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
prism
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
schema
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
repo-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
stax
@@ -64,7 +64,7 @@
com.evolveum.midpoint.tools
test-ng
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
test
diff --git a/repo/task-quartz-impl/pom.xml b/repo/task-quartz-impl/pom.xml
index 803366d8ded..40096826fc4 100644
--- a/repo/task-quartz-impl/pom.xml
+++ b/repo/task-quartz-impl/pom.xml
@@ -24,7 +24,7 @@
repo
com.evolveum.midpoint
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
https://github.com/Evolveum/midpoint.git
@@ -35,37 +35,37 @@
com.evolveum.midpoint.infra
util
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
prism
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
schema
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.infra
common
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
repo-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
security-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
com.evolveum.midpoint.repo
task-api
- 3.8-SNAPSHOT
+ 3.9-SNAPSHOT
commons-lang
@@ -96,6 +96,10 @@
org.springframework
spring-beans
+
+ org.springframework
+ spring-jcl
+
org.springframework.security
spring-security-core
@@ -116,12 +120,18 @@
org.hibernate
hibernate-core
+
+