diff --git a/build-system/pom.xml b/build-system/pom.xml
index 90db6a74dd3..3ea5ce2a29a 100644
--- a/build-system/pom.xml
+++ b/build-system/pom.xml
@@ -49,7 +49,7 @@
2.6
3.7
1.2
- 3.2.1
+ 3.2.4
3.2.0
2.2.0
2.4.7
@@ -63,7 +63,8 @@
1.0.1
1.7.25
1.2.3
- 1.5.8.e1
+ 1.5.8.e1
4.3.14.RELEASE
4.2.4.RELEASE
3.5.0
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/password/PasswordPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/password/PasswordPanel.java
index 2b96c1f0160..139ebd5a0d3 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/password/PasswordPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/password/PasswordPanel.java
@@ -256,7 +256,7 @@ protected void onUpdate(AjaxRequestTarget target) {
}
}
- private class PasswordModel implements IModel {
+ private static class PasswordModel implements IModel {
IModel psModel;
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebModelServiceUtils.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebModelServiceUtils.java
index 9dd2b074312..b25e4e1106c 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebModelServiceUtils.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebModelServiceUtils.java
@@ -713,8 +713,7 @@ public static void addIncludeOptionsForExportOrView(Collection keys = map.keySet().iterator();
+ Iterator> keys = map.entrySet().iterator();
while (keys.hasNext()) {
- String key = keys.next();
- sb.append(key).append(":");
- sb.append('\'').append(map.get(key)).append('\'');
+ final Map.Entry key = keys.next();
+ sb.append(key.getKey()).append(":");
+ sb.append('\'').append(key.getValue()).append('\'');
if (keys.hasNext()) {
sb.append(",\n");
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AbstractRoleAssignmentPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AbstractRoleAssignmentPanel.java
index 154bc354350..7b3ca17a581 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AbstractRoleAssignmentPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AbstractRoleAssignmentPanel.java
@@ -51,6 +51,7 @@
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.prism.query.builder.QueryBuilder;
import com.evolveum.midpoint.schema.util.ObjectTypeUtil;
+import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.web.component.AjaxButton;
import com.evolveum.midpoint.web.component.form.Form;
import com.evolveum.midpoint.web.component.input.DropDownChoicePanel;
@@ -206,7 +207,6 @@ protected void addSelectedAssignmentsPerformed(AjaxReques
constructionType.setResourceRef(ref);
constructionType.setKind(kind);
constructionType.setIntent(intent);
- initAssociationContainer(constructionType);
assignmentType.setConstruction(constructionType);
} else {
assignmentType.setTargetRef(ref);
@@ -218,9 +218,6 @@ protected void addSelectedAssignmentsPerformed(AjaxReques
reloadSavePreviewButtons(target);
}
- protected void initAssociationContainer(ConstructionType constructionType){
- }
-
protected List, String>> initColumns() {
List, String>> columns = new ArrayList<>();
@@ -231,6 +228,25 @@ public void populateItem(Item, String>(createStringResource("AssignmentType.tenant")){
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void populateItem(Item>> item, String componentId,
+ final IModel> rowModel) {
+ item.add(new Label(componentId, getTenantLabelModel(rowModel.getObject())));
+ }
+ });
+ columns.add(new AbstractColumn, String>(createStringResource("AssignmentType.orgReferenceShorten")){
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void populateItem(Item>> item, String componentId,
+ final IModel> rowModel) {
+ item.add(new Label(componentId, getOrgRefLabelModel(rowModel.getObject())));
+ }
+ });
+
return columns;
}
@@ -308,30 +324,6 @@ protected AbstractAssignmentDetailsPanel createDetailsPanel(String idAssignmentD
return new AbstractRoleAssignmentDetailsPanel(ID_ASSIGNMENT_DETAILS, form, model);
}
- @Override
- protected List, String>> initBasicColumns() {
- List, String>> columns = super.initBasicColumns();
- columns.add(new AbstractColumn, String>(createStringResource("AssignmentType.tenant")){
- private static final long serialVersionUID = 1L;
-
- @Override
- public void populateItem(Item>> item, String componentId,
- final IModel> rowModel) {
- item.add(new Label(componentId, getTenantLabelModel(rowModel.getObject())));
- }
- });
- columns.add(new AbstractColumn, String>(createStringResource("AssignmentType.orgReferenceShorten")){
- private static final long serialVersionUID = 1L;
-
- @Override
- public void populateItem(Item>> item, String componentId,
- final IModel> rowModel) {
- item.add(new Label(componentId, getOrgRefLabelModel(rowModel.getObject())));
- }
- });
- return columns;
- }
-
private IModel getTenantLabelModel(ContainerValueWrapper assignmentContainer){
if (assignmentContainer == null || assignmentContainer.getContainerValue() == null){
return Model.of("");
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/ApplicablePolicyGroupPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/ApplicablePolicyGroupPanel.java
index e1f4cb57d8f..7f6a21487dd 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/ApplicablePolicyGroupPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/ApplicablePolicyGroupPanel.java
@@ -27,6 +27,7 @@
import com.evolveum.midpoint.prism.query.builder.QueryBuilder;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.schema.util.ObjectTypeUtil;
+import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.data.column.IsolatedCheckBoxPanel;
@@ -171,13 +172,15 @@ private void onPolicyAddedOrRemoved(PrismObject assignmentTarg
assignmentsModel.getObject().getValues().remove(assignmentToRemove);
} else {
if (added){
+ //TODO: not sure if this is correct way of creating new value.. this value is added directly to the origin object... what about deltas??
PrismContainerValue newAssignment = assignmentsModel.getObject().getItem().createNewValue();
ObjectReferenceType ref = ObjectTypeUtil.createObjectRef(assignmentTargetObject);
AssignmentType assignmentType = newAssignment.asContainerable();
assignmentType.setTargetRef(ref);
+ Task task = getPageBase().createSimpleTask("Creating new applicable policy");
ContainerWrapperFactory factory = new ContainerWrapperFactory(getPageBase());
ContainerValueWrapper valueWrapper = factory.createContainerValueWrapper(assignmentsModel.getObject(), newAssignment,
- assignmentsModel.getObject().getObjectStatus(), ValueStatus.ADDED, assignmentsModel.getObject().getPath());
+ assignmentsModel.getObject().getObjectStatus(), ValueStatus.ADDED, assignmentsModel.getObject().getPath(), task);
valueWrapper.setShowEmpty(true, false);
assignmentsModel.getObject().getValues().add(valueWrapper);
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentPanel.java
index 68ca698b1e4..991f80fc8cc 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentPanel.java
@@ -50,6 +50,7 @@
import com.evolveum.midpoint.prism.query.ObjectPaging;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.security.api.AuthorizationConstants;
+import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.web.component.AjaxButton;
import com.evolveum.midpoint.web.component.AjaxIconButton;
import com.evolveum.midpoint.web.component.data.BoxedTablePanel;
@@ -224,7 +225,7 @@ protected AssignmentsTabStorage getAssignmentsStorage() {
protected abstract ObjectQuery createObjectQuery();
- protected List, String>> initBasicColumns() {
+ private List, String>> initBasicColumns() {
List, String>> columns = new ArrayList<>();
columns.add(new CheckBoxHeaderColumn<>());
@@ -459,8 +460,9 @@ protected void deleteAssignmentPerformed(AjaxRequestTarget target, List createNewAssignmentContainerValueWrapper(PrismContainerValue newAssignment) {
ContainerWrapperFactory factory = new ContainerWrapperFactory(getPageBase());
+ Task task = getPageBase().createSimpleTask("Creating new assignment");
ContainerValueWrapper valueWrapper = factory.createContainerValueWrapper(getModelObject(), newAssignment,
- getModelObject().getObjectStatus(), ValueStatus.ADDED, getModelObject().getPath());
+ getModelObject().getObjectStatus(), ValueStatus.ADDED, getModelObject().getPath(), task);
valueWrapper.setShowEmpty(true, false);
getModelObject().getValues().add(valueWrapper);
return valueWrapper;
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/ConstructionAssociationPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/ConstructionAssociationPanel.java
index 0128cb7d22d..e2c10c755ab 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/ConstructionAssociationPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/ConstructionAssociationPanel.java
@@ -237,11 +237,13 @@ public List load() {
PrismContainerValue associationValue = ((ContainerValueWrapper) associationValueWrapper).getContainerValue();
ResourceObjectAssociationType assoc = (ResourceObjectAssociationType) associationValue.asContainerable();
if (assoc == null || assoc.getOutbound() == null || assoc.getOutbound().getExpression() == null
- || ExpressionUtil.getShadowRefValue(assoc.getOutbound().getExpression()) == null) {
+ || (ExpressionUtil.getShadowRefValue(assoc.getOutbound().getExpression()) == null
+ && !ValueStatus.ADDED.equals(((ContainerValueWrapper) associationValueWrapper).getStatus()))) {
return;
}
QName assocRef = ItemPathUtil.getOnlySegmentQName(assoc.getRef());
- if (defName != null && defName.equals(assocRef)) {
+ if ((defName != null && defName.equals(assocRef))
+ || (assocRef == null && ValueStatus.ADDED.equals(((ContainerValueWrapper) associationValueWrapper).getStatus()))) {
shadowsList.add(ExpressionUtil.getShadowRefValue(assoc.getOutbound().getExpression()));
}
});
@@ -279,6 +281,7 @@ private List getAssociationsShadowRefs(boolean compareName,
private void addNewShadowRefValuePerformed(AjaxRequestTarget target, RefinedAssociationDefinition def){
ObjectFilter filter = WebComponentUtil.createAssociationShadowRefFilter(def,
getPageBase().getPrismContext(), resourceModel.getObject().getOid());
+ Task task = getPageBase().createAnonymousTask("Adding new shadow");
ObjectBrowserPanel objectBrowserPanel = new ObjectBrowserPanel(
getPageBase().getMainPopupBodyId(), ShadowType.class, Arrays.asList(ShadowType.COMPLEX_TYPE),
false, getPageBase(),
@@ -302,7 +305,7 @@ protected void onSelectPerformed(AjaxRequestTarget target, ShadowType object) {
ContainerWrapperFactory factory = new ContainerWrapperFactory(getPageBase());
ContainerValueWrapper valueWrapper =
factory.createContainerValueWrapper(associationWrapper, newAssociation,
- associationWrapper.getObjectStatus(), ValueStatus.ADDED, associationWrapper.getPath());
+ associationWrapper.getObjectStatus(), ValueStatus.ADDED, associationWrapper.getPath(), task);
// valueWrapper.setShowEmpty(true, false);
associationWrapper.getValues().add(valueWrapper);
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/InducedEntitlementsPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/InducedEntitlementsPanel.java
index a30b6f77094..89c9d84718d 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/InducedEntitlementsPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/InducedEntitlementsPanel.java
@@ -1,19 +1,33 @@
package com.evolveum.midpoint.web.component.assignment;
+import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.prism.query.AndFilter;
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.prism.query.ObjectPaging;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.prism.query.builder.QueryBuilder;
import com.evolveum.midpoint.schema.constants.ObjectTypes;
+import com.evolveum.midpoint.util.logging.Trace;
+import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.form.Form;
import com.evolveum.midpoint.web.component.prism.ContainerValueWrapper;
import com.evolveum.midpoint.web.component.prism.ContainerWrapper;
+import com.evolveum.midpoint.web.component.prism.ValueStatus;
import com.evolveum.midpoint.web.session.AssignmentsTabStorage;
import com.evolveum.midpoint.web.session.UserProfileStorage;
+import com.evolveum.midpoint.web.util.ExpressionUtil;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
+import org.apache.commons.lang.StringUtils;
+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.basic.Label;
+import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import javax.jws.WebParam;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -24,6 +38,9 @@ public class InducedEntitlementsPanel extends InducementsPanel{
private static final long serialVersionUID = 1L;
+ private static final Trace LOGGER = TraceManager.getTrace(InducedEntitlementsPanel.class);
+ private static final String DOT_CLASS = InducedEntitlementsPanel.class.getName() + ".";
+ private static final String OPERATION_LOAD_SHADOW_DISPLAY_NAME = DOT_CLASS + "loadShadowDisplayName";
public InducedEntitlementsPanel(String id, IModel> inducementContainerWrapperModel){
super(id, inducementContainerWrapperModel);
@@ -49,16 +66,46 @@ private AssignmentsTabStorage getInducedEntitlementsTabStorage(){
return getParentPage().getSessionStorage().getInducedEntitlementsTabStorage();
}
+ @Override
+ protected List, String>> initColumns() {
+ List, String>> columns = new ArrayList<>();
+ columns.add(new AbstractColumn, String>(createStringResource("ConstructionType.kind")){
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void populateItem(Item>> item, String componentId,
+ final IModel> rowModel) {
+ item.add(new Label(componentId, getKindLabelModel(rowModel.getObject())));
+ }
+ });
+ columns.add(new AbstractColumn, String>(createStringResource("ConstructionType.intent")){
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void populateItem(Item>> item, String componentId,
+ final IModel> rowModel) {
+ item.add(new Label(componentId, getIntentLabelModel(rowModel.getObject())));
+ }
+ });
+ columns.add(new AbstractColumn, String>(createStringResource("ConstructionType.association")){
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void populateItem(Item>> item, String componentId,
+ final IModel> rowModel) {
+ item.add(new Label(componentId, getAssociationLabelModel(rowModel.getObject())));
+ }
+ });
+
+ return columns;
+ }
+
@Override
protected ObjectQuery createObjectQuery() {
ObjectQuery query = super.createObjectQuery();
ObjectFilter filter = query.getFilter();
ObjectQuery entitlementsQuery = QueryBuilder.queryFor(AssignmentType.class, getParentPage().getPrismContext())
- .block()
- .not()
- .item(AssignmentType.F_CONSTRUCTION, ConstructionType.F_ASSOCIATION, ResourceObjectAssociationType.F_OUTBOUND, MappingType.F_EXPRESSION)
- .isNull()
- .endBlock()
+ .exists(AssignmentType.F_CONSTRUCTION)
.build();
if (filter != null){
query.setFilter(AndFilter.createAnd(filter, entitlementsQuery.getFilter()));
@@ -79,11 +126,6 @@ protected Class getDefaultNewAssignmentFocusType(){
}
@Override
-
- protected void initAssociationContainer(ConstructionType constructionType){
- constructionType.beginAssociation().beginOutbound().beginExpression();
- }
-
protected boolean isRelationVisible() {
return false;
}
@@ -91,4 +133,92 @@ protected boolean isRelationVisible() {
protected List getObjectTypesList(){
return Arrays.asList(ObjectTypes.RESOURCE);
}
+
+ private IModel getKindLabelModel(ContainerValueWrapper assignmentWrapper){
+ if (assignmentWrapper == null){
+ return Model.of("");
+ }
+ AssignmentType assignment = assignmentWrapper.getContainerValue().asContainerable();
+ ConstructionType construction = assignment.getConstruction();
+ if (construction == null || construction.getKind() == null){
+ return Model.of("");
+ }
+ return WebComponentUtil.createLocalizedModelForEnum(construction.getKind(), InducedEntitlementsPanel.this);
+
+ }
+
+ private IModel getIntentLabelModel(ContainerValueWrapper assignmentWrapper){
+ if (assignmentWrapper == null){
+ return Model.of("");
+ }
+ AssignmentType assignment = assignmentWrapper.getContainerValue().asContainerable();
+ ConstructionType construction = assignment.getConstruction();
+ if (construction == null || construction.getIntent() == null){
+ return Model.of("");
+ }
+ return Model.of(construction.getIntent());
+
+ }
+
+ private IModel getAssociationLabelModel(ContainerValueWrapper assignmentWrapper){
+ if (assignmentWrapper == null){
+ return Model.of("");
+ }
+ AssignmentType assignment = assignmentWrapper.getContainerValue().asContainerable();
+ ConstructionType construction = assignment.getConstruction();
+ if (construction == null || construction.getAssociation() == null){
+ return Model.of("");
+ }
+ StringBuilder sb = new StringBuilder();
+ for (ResourceObjectAssociationType association : construction.getAssociation()){
+ if (association.getOutbound() == null || association.getOutbound().getExpression() == null){
+ continue;
+ }
+ ObjectReferenceType shadowRefValue = ExpressionUtil.getShadowRefValue(association.getOutbound().getExpression());
+ if (shadowRefValue == null || StringUtils.isEmpty(shadowRefValue.getOid())){
+ continue;
+ }
+ String shadowDisplayName = WebComponentUtil.getDisplayNameOrName(shadowRefValue, getPageBase(), OPERATION_LOAD_SHADOW_DISPLAY_NAME);
+ if (sb.length() == 0){
+ sb.append(createStringResource("ExpressionValuePanel.shadowRefValueTitle").getString() + ":");
+ }
+ if (StringUtils.isNotEmpty(shadowDisplayName)){
+ sb.append("\n");
+ sb.append(shadowDisplayName);
+ }
+ }
+ return Model.of(sb.toString());
+
+ }
+
+ @Override
+ protected List> postSearch(List> assignments) {
+ List> filteredAssignments = new ArrayList<>();
+ assignments.forEach(assignmentWrapper -> {
+ AssignmentType assignment = assignmentWrapper.getContainerValue().asContainerable();
+ if (assignment.getConstruction() != null && assignment.getConstruction().getAssociation() != null) {
+ List associations = assignment.getConstruction().getAssociation();
+ if (associations.size() == 0 && ValueStatus.ADDED.equals(assignmentWrapper.getStatus())){
+ filteredAssignments.add(assignmentWrapper);
+ return;
+ }
+ associations.forEach(association -> {
+ if (!filteredAssignments.contains(assignmentWrapper)) {
+ if (association.getOutbound() == null && ValueStatus.ADDED.equals(assignmentWrapper.getStatus())) {
+ filteredAssignments.add(assignmentWrapper);
+ return;
+ }
+ if (association.getOutbound() != null && association.getOutbound().getExpression() != null) {
+ ObjectReferenceType shadowRef = ExpressionUtil.getShadowRefValue(association.getOutbound().getExpression());
+ if ((shadowRef != null || ValueStatus.ADDED.equals(assignmentWrapper.getStatus()))) {
+ filteredAssignments.add(assignmentWrapper);
+ return;
+ }
+ }
+ }
+ });
+ }
+ });
+ return filteredAssignments;
+ }
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/PolicyRulesPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/PolicyRulesPanel.java
index 0da6c489ad4..aa103d0704f 100755
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/PolicyRulesPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/PolicyRulesPanel.java
@@ -141,6 +141,7 @@ protected void newAssignmentClickPerformed(AjaxRequestTarget target) {
newAssignment.asContainerable().setPolicyRule(new PolicyRuleType());
ContainerValueWrapper newAssignmentWrapper = createNewAssignmentContainerValueWrapper(newAssignment);
newAssignmentWrapper.setShowEmpty(true, false);
+ newAssignmentWrapper.computeStripes();
assignmentDetailsPerformed(target, Arrays.asList(newAssignmentWrapper));
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/SelectableDataTable.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/SelectableDataTable.java
index 1bcfe9e89a3..c7779144282 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/SelectableDataTable.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/SelectableDataTable.java
@@ -60,7 +60,7 @@ public SelectableRowItem(String id, int index, IModel model) {
@Override
protected Item> newCellItem(String id, int index, IModel> model) {
Item item = super.newCellItem(id, index, model);
- item.add(new AttributeModifier("style", "max-width: 250px; word-wrap: break-word;"));
+ item.add(new AttributeModifier("style", "word-wrap: break-word;"));
return item;
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerValueWrapper.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerValueWrapper.java
index 067a1c22aa1..7bb8e395336 100755
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerValueWrapper.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerValueWrapper.java
@@ -155,15 +155,17 @@ public void computeStripes() {
}
int visibleProperties = 0;
- for (ItemWrapper item : properties) {
+ for (ItemWrapper item : properties) {
if (item.isVisible()) {
visibleProperties++;
}
+
if (visibleProperties % 2 == 0) {
item.setStripe(true);
} else {
item.setStripe(false);
}
+
}
}
@@ -284,9 +286,40 @@ public void sort() {
if (isSorted()) {
collator.setStrength(Collator.SECONDARY); // e.g. "a" should be different from "รก"
collator.setDecomposition(Collator.FULL_DECOMPOSITION); // slower but more precise
+
+// List containerWrappers = new ArrayList<>();
+// List propertyOrReferenceWrapper = new ArrayList<>();
+// for(ItemWrapper w : properties) {
+// if (w instanceof ContainerWrapper) {
+// containerWrappers.add(w);
+// continue;
+// }
+//
+// if (PropertyOrReferenceWrapper.class.isAssignableFrom(w.getClass())) {
+// propertyOrReferenceWrapper.add(w);
+// }
+// }
+
Collections.sort(properties, new Comparator() {
@Override
public int compare(ItemWrapper pw1, ItemWrapper pw2) {
+
+ if (pw1 instanceof ContainerWrapper) {
+ ((ContainerWrapper) pw1).sort();
+ }
+
+ if (pw2 instanceof ContainerWrapper) {
+ ((ContainerWrapper) pw2).sort();
+ }
+
+ if (PropertyOrReferenceWrapper.class.isAssignableFrom(pw1.getClass()) && pw2 instanceof ContainerWrapper) {
+ return -1;
+ }
+
+ if (PropertyOrReferenceWrapper.class.isAssignableFrom(pw2.getClass()) && pw1 instanceof ContainerWrapper) {
+ return 1;
+ }
+//
return compareByDisplayNames(pw1, pw2, collator);
}
});
@@ -294,6 +327,23 @@ public int compare(ItemWrapper pw1, ItemWrapper pw2) {
Collections.sort(properties, new Comparator() {
@Override
public int compare(ItemWrapper pw1, ItemWrapper pw2) {
+
+ if (pw1 instanceof ContainerWrapper) {
+ ((ContainerWrapper) pw1).sort();
+ }
+
+ if (pw2 instanceof ContainerWrapper) {
+ ((ContainerWrapper) pw2).sort();
+ }
+
+ if (PropertyOrReferenceWrapper.class.isAssignableFrom(pw1.getClass()) && pw2 instanceof ContainerWrapper) {
+ return -1;
+ }
+
+ if (PropertyOrReferenceWrapper.class.isAssignableFrom(pw2.getClass()) && pw1 instanceof ContainerWrapper) {
+ return 1;
+ }
+
ItemDefinition id1 = pw1.getItemDefinition();
ItemDefinition id2 = pw2.getItemDefinition();
@@ -307,6 +357,7 @@ public int compare(ItemWrapper pw1, ItemWrapper pw2) {
}
});
}
+
}
private int compareByDisplayNames(ItemWrapper pw1, ItemWrapper pw2, Collator collator) {
@@ -548,25 +599,7 @@ private void addItemDelta(PropertyOrReferenceWrapper itemWrapper, ItemDelta pDel
}
}
- public void addNewChildContainerValue(QName path, PageBase pageBase){
- ContainerWrapper childContainerWrapper = getContainer().findContainerWrapper(new ItemPath(getPath(), path));
- if (childContainerWrapper == null){
- return;
- }
- boolean isSingleValue = childContainerWrapper.getItemDefinition().isSingleValue();
- if (isSingleValue){
- return;
- }
- PrismContainerValue newContainerValue = childContainerWrapper.getItem().createNewValue();
- ContainerWrapperFactory factory = new ContainerWrapperFactory(pageBase);
- ContainerValueWrapper newValueWrapper = factory.createContainerValueWrapper(childContainerWrapper,
- newContainerValue, objectStatus,
- ValueStatus.ADDED, new ItemPath(path));
- newValueWrapper.setShowEmpty(true, false);
- childContainerWrapper.getValues().add(newValueWrapper);
-
- }
-
+
private Item createItem(PropertyOrReferenceWrapper itemWrapper, ItemDefinition propertyDef) {
List prismValues = new ArrayList<>();
for (Object vWrapper : itemWrapper.getValues()) {
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerWrapper.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerWrapper.java
index e281bcc6cc2..f1dd4a30a2b 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerWrapper.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerWrapper.java
@@ -376,7 +376,9 @@ public boolean isStripe() {
@Override
public void setStripe(boolean isStripe) {
- // Does not make much sense, but it is given by the interface
+ for (ContainerValueWrapper value : values) {
+ value.computeStripes();
+ }
}
public PrismContainer createContainerAddDelta() throws SchemaException {
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerWrapperFactory.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerWrapperFactory.java
index 7aba8036740..50b3fb884d2 100755
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerWrapperFactory.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerWrapperFactory.java
@@ -32,6 +32,7 @@
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.QNameUtil;
import com.evolveum.midpoint.util.exception.SchemaException;
+import com.evolveum.midpoint.util.exception.TunnelException;
import com.evolveum.midpoint.util.logging.LoggingUtils;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
@@ -85,13 +86,14 @@ public ContainerWrapper createContainerWrapper(
PrismContainer container,
ContainerStatus objectStatus,
ContainerStatus status,
- ItemPath path) {
+ ItemPath path,
+ Task task) {
result = new OperationResult(CREATE_PROPERTIES);
ContainerWrapper cWrapper = new ContainerWrapper(container, objectStatus, status, path);
- List> containerValues = createContainerValues(cWrapper, path);
+ List> containerValues = createContainerValues(cWrapper, path, task);
cWrapper.setProperties(containerValues);
cWrapper.computeStripes();
@@ -217,13 +219,13 @@ private boolean isEmpty(ValueWrapper shadowAssociationRef) {
}
- public ContainerWrapper createContainerWrapper(PrismContainer container, ContainerStatus objectStatus, ContainerStatus status, ItemPath path, boolean readonly) {
+ public ContainerWrapper createContainerWrapper(PrismContainer container, ContainerStatus objectStatus, ContainerStatus status, ItemPath path, boolean readonly, Task task) {
result = new OperationResult(CREATE_PROPERTIES);
ContainerWrapper cWrapper = new ContainerWrapper<>(container, objectStatus, status, path, readonly);
- List> containerValues = createContainerValues(cWrapper, path);
+ List> containerValues = createContainerValues(cWrapper, path, task);
cWrapper.setProperties(containerValues);
cWrapper.computeStripes();
@@ -231,20 +233,20 @@ public ContainerWrapper createContainerWrapper(Pris
return cWrapper;
}
- private List> createContainerValues(ContainerWrapper cWrapper, ItemPath path) {
+ private List> createContainerValues(ContainerWrapper cWrapper, ItemPath path, Task task) {
List> containerValueWrappers = new ArrayList<>();
PrismContainer container = cWrapper.getItem();
if (container.getValues().isEmpty() && container.isSingleValue()) {
PrismContainerValue pcv = container.createNewValue();
- ContainerValueWrapper containerValueWrapper = createContainerValueWrapper(cWrapper, pcv, cWrapper.getObjectStatus(), ValueStatus.ADDED, cWrapper.getPath());
+ ContainerValueWrapper containerValueWrapper = createContainerValueWrapper(cWrapper, pcv, cWrapper.getObjectStatus(), ValueStatus.ADDED, cWrapper.getPath(), task);
containerValueWrappers.add(containerValueWrapper);
return containerValueWrappers;
}
container.getValues().forEach(pcv -> {
- ContainerValueWrapper containerValueWrapper = createContainerValueWrapper(cWrapper, pcv, cWrapper.getObjectStatus(), cWrapper.getStatus() == ContainerStatus.ADDING ? ValueStatus.ADDED : ValueStatus.NOT_CHANGED, pcv.getPath());
+ ContainerValueWrapper containerValueWrapper = createContainerValueWrapper(cWrapper, pcv, cWrapper.getObjectStatus(), cWrapper.getStatus() == ContainerStatus.ADDING ? ValueStatus.ADDED : ValueStatus.NOT_CHANGED, pcv.getPath(), task);
containerValueWrappers.add(containerValueWrapper);
});
@@ -252,10 +254,10 @@ private List> createContainer
return containerValueWrappers;
}
- public ContainerValueWrapper createContainerValueWrapper(ContainerWrapper cWrapper, PrismContainerValue value, ContainerStatus objectStatus, ValueStatus status, ItemPath path){
+ public ContainerValueWrapper createContainerValueWrapper(ContainerWrapper cWrapper, PrismContainerValue value, ContainerStatus objectStatus, ValueStatus status, ItemPath path, Task task){
ContainerValueWrapper containerValueWrapper = new ContainerValueWrapper(cWrapper, value, objectStatus, status, path);
- List properties = createProperties(containerValueWrapper, false);
+ List properties = createProperties(containerValueWrapper, false, task);
containerValueWrapper.setProperties(properties);
ReferenceWrapper shadowRefWrapper = (ReferenceWrapper) containerValueWrapper.findPropertyWrapper(ShadowAssociationType.F_SHADOW_REF);
@@ -266,7 +268,7 @@ public ContainerValueWrapper createContainerValueWr
return containerValueWrapper;
}
- public List createProperties(ContainerValueWrapper cWrapper, boolean onlyEmpty) {
+ public List createProperties(ContainerValueWrapper cWrapper, boolean onlyEmpty, Task task) {
result = new OperationResult(CREATE_PROPERTIES);
@@ -291,14 +293,20 @@ public List createP
return;
}
- if (itemDef.isExperimental() && !WebModelServiceUtils.isEnableExperimentalFeature(modelServiceLocator)) {
+ if (itemDef.isExperimental() && !WebModelServiceUtils.isEnableExperimentalFeature(task, modelServiceLocator)) {
LOGGER.trace("Skipping creating wrapper for {} because it is experimental a experimental features are not enabled.", itemDef.getName());
return;
}
LOGGER.trace("Creating wrapper for {}", itemDef);
+ try {
createPropertyOrReferenceWrapper(itemDef, cWrapper, propertyOrReferenceWrappers, onlyEmpty, cWrapper.getPath());
- createContainerWrapper(itemDef, cWrapper, containerWrappers, onlyEmpty);
+ createContainerWrapper(itemDef, cWrapper, containerWrappers, onlyEmpty, task);
+ } catch (Exception e) {
+ LoggingUtils.logUnexpectedException(LOGGER, "something strange happenned: " + e.getMessage(), e);
+ System.out.println(e.getMessage());
+ throw new TunnelException(e);
+ }
});
@@ -330,7 +338,7 @@ private void createPropertyOrReferenceWrapper(ItemDefi
private void createContainerWrapper(ItemDefinition itemDef, ContainerValueWrapper cWrapper,
- List> properties, boolean onlyEmpty){
+ List> properties, boolean onlyEmpty, Task task){
if (itemDef instanceof PrismContainerDefinition) {
@@ -367,7 +375,7 @@ private void createContainerWrapper(ItemDefinition ite
// }
//
// } else {
- subContainerWrapper = createContainerWrapper((PrismContainerDefinition) itemDef, cWrapper, onlyEmpty);
+ subContainerWrapper = createContainerWrapper((PrismContainerDefinition) itemDef, cWrapper, onlyEmpty, task);
// }
if (subContainerWrapper == null) {
@@ -456,7 +464,7 @@ private ReferenceWrapper createReferenceWrapper(PrismR
}
private ContainerWrapper createContainerWrapper(PrismContainerDefinition def,
- ContainerValueWrapper cWrapper, boolean onlyEmpty) {
+ ContainerValueWrapper cWrapper, boolean onlyEmpty, Task task) {
PrismContainerValue containerValue = cWrapper.getContainerValue();
@@ -487,9 +495,9 @@ private ContainerWrapper createContainerWrapper(Pri
return null;
}
return createContainerWrapper(newContainer, cWrapper.getObjectStatus(), ContainerStatus.ADDING,
- cWrapper.getPath().append(new ItemPath(newContainer.getElementName())));
+ cWrapper.getPath().append(new ItemPath(newContainer.getElementName())), task);
}
- return createContainerWrapper(container, cWrapper.getObjectStatus(), cWrapper.getStatus() == ValueStatus.ADDED ? ContainerStatus.ADDING: ContainerStatus.MODIFYING, container.getPath());
+ return createContainerWrapper(container, cWrapper.getObjectStatus(), cWrapper.getStatus() == ValueStatus.ADDED ? ContainerStatus.ADDING: ContainerStatus.MODIFYING, container.getPath(), task);
}
private boolean isItemReadOnly(ItemDefinition def, ContainerValueWrapper cWrapper) {
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ItemWrapperComparator.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ItemWrapperComparator.java
index 5e2b9305278..14ce8944465 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ItemWrapperComparator.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ItemWrapperComparator.java
@@ -42,10 +42,12 @@ public int compare(ItemWrapper p1, ItemWrapper p2) {
}
if (def1 instanceof PrismContainerDefinition) {
+ ((ContainerWrapper) p1).sort();
return 1;
}
- if (def1 instanceof PrismContainerDefinition) {
+ if (def2 instanceof PrismContainerDefinition) {
+ ((ContainerWrapper) p2).sort();
return 1;
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ObjectWrapperFactory.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ObjectWrapperFactory.java
index 3f7cd0c768a..9b737d08b6f 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ObjectWrapperFactory.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ObjectWrapperFactory.java
@@ -133,7 +133,7 @@ public ObjectWrapper createObjectWrapper(String displa
}
return createObjectWrapper(displayName, description, object, objectDefinitionForEditing,
- objectClassDefinitionForEditing, status, result);
+ objectClassDefinitionForEditing, status, task, result);
} catch (SchemaException | ConfigurationException | ObjectNotFoundException | ExpressionEvaluationException | CommunicationException | SecurityViolationException ex) {
throw new SystemException(ex);
}
@@ -141,15 +141,15 @@ public ObjectWrapper createObjectWrapper(String displa
public ObjectWrapper createObjectWrapper(String displayName,
String description, PrismObject object, PrismObjectDefinition objectDefinitionForEditing,
- RefinedObjectClassDefinition objectClassDefinitionForEditing, ContainerStatus status) throws SchemaException {
+ RefinedObjectClassDefinition objectClassDefinitionForEditing, ContainerStatus status, Task task) throws SchemaException {
return createObjectWrapper(displayName, description, object, objectDefinitionForEditing,
- objectClassDefinitionForEditing, status, null);
+ objectClassDefinitionForEditing, status, task, null);
}
private ObjectWrapper createObjectWrapper(String displayName,
String description, PrismObject object, PrismObjectDefinition objectDefinitionForEditing,
RefinedObjectClassDefinition objectClassDefinitionForEditing, ContainerStatus status,
- OperationResult result) throws SchemaException {
+ Task task, OperationResult result) throws SchemaException {
if (result == null) {
this.result = new OperationResult(CREATE_OBJECT_WRAPPER);
@@ -161,7 +161,7 @@ private ObjectWrapper createObjectWrapper(String displ
status);
List> containerWrappers = createContainerWrappers(objectWrapper, object,
- objectDefinitionForEditing, status, this.result);
+ objectDefinitionForEditing, status, task, this.result);
objectWrapper.setContainers(containerWrappers);
this.result.computeStatusIfUnknown();
@@ -176,21 +176,21 @@ private ObjectWrapper createObjectWrapper(String displ
}
private List> createContainerWrappers(ObjectWrapper oWrapper,
- PrismObject object, PrismObjectDefinition objectDefinitionForEditing, ContainerStatus cStatus, OperationResult pResult) throws SchemaException {
+ PrismObject object, PrismObjectDefinition objectDefinitionForEditing, ContainerStatus cStatus, Task task, OperationResult pResult) throws SchemaException {
OperationResult result = pResult.createSubresult(CREATE_CONTAINERS);
List> containerWrappers = new ArrayList<>();
ContainerWrapperFactory cwf = new ContainerWrapperFactory(modelServiceLocator);
try {
- ContainerWrapper mainContainerWrapper = cwf.createContainerWrapper(object, oWrapper.getStatus(), cStatus, ItemPath.EMPTY_PATH);
+ ContainerWrapper mainContainerWrapper = cwf.createContainerWrapper(object, oWrapper.getStatus(), cStatus, ItemPath.EMPTY_PATH, task);
mainContainerWrapper.setDisplayName("prismContainer.mainPanelDisplayName");
result.addSubresult(cwf.getResult());
containerWrappers.add(mainContainerWrapper);
- addContainerWrappers(containerWrappers, oWrapper, object, null, result);
+ addContainerWrappers(containerWrappers, oWrapper, object, null, task, result);
} catch (SchemaException | RuntimeException e) {
- LoggingUtils.logUnexpectedException(LOGGER, "Error occurred during container wrapping", e);
+ LoggingUtils.logUnexpectedException(LOGGER, "Error occurred during container wrapping" + e.getMessage(), e);
result.recordFatalError("Error occurred during container wrapping, reason: " + e.getMessage(), e);
throw e;
}
@@ -205,7 +205,7 @@ private List> c
private void addContainerWrappers(
List> containerWrappers, ObjectWrapper oWrapper,
- PrismContainer parentContainer, ItemPath path, OperationResult result) throws SchemaException {
+ PrismContainer parentContainer, ItemPath path, Task task, OperationResult result) throws SchemaException {
PrismContainerDefinition parentContainerDefinition = parentContainer.getDefinition();
@@ -222,7 +222,7 @@ private void addContainerWrapper
continue;
}
- if (def.isExperimental() && !WebModelServiceUtils.isEnableExperimentalFeature(modelServiceLocator)) {
+ if (def.isExperimental() && !WebModelServiceUtils.isEnableExperimentalFeature(task, modelServiceLocator)) {
LOGGER.trace("Skipping creating wrapper for container {} because it is experimental a experimental features are not enabled.", def.getName());
continue;
}
@@ -237,7 +237,7 @@ private void addContainerWrapper
PrismContainer prismContainer = parentContainer.findContainer(def.getName());
- ContainerWrapper container = createContainerWrapper(oWrapper.getObject(), oWrapper.getStatus(), prismContainer, containerDef, cwf, newPath);
+ ContainerWrapper container = createContainerWrapper(oWrapper.getObject(), oWrapper.getStatus(), prismContainer, containerDef, cwf, newPath, task);
result.addSubresult(cwf.getResult());
if (container != null) {
containerWrappers.add(container);
@@ -246,7 +246,8 @@ private void addContainerWrapper
}
}
- private ContainerWrapper createContainerWrapper(PrismObject object, ContainerStatus objectStatus, PrismContainer prismContainer, PrismContainerDefinition containerDef, ContainerWrapperFactory cwf, ItemPath newPath) throws SchemaException{
+ private ContainerWrapper createContainerWrapper(PrismObject object, ContainerStatus objectStatus, PrismContainer prismContainer,
+ PrismContainerDefinition containerDef, ContainerWrapperFactory cwf, ItemPath newPath, Task task) throws SchemaException{
if (ShadowAssociationType.COMPLEX_TYPE.equals(containerDef.getTypeName())) {
ObjectType objectType = object.asObjectable();
ShadowType shadow;
@@ -255,7 +256,7 @@ private ContainerWrapper crea
} else {
throw new SchemaException("Something very strange happenned. Association contianer in the " + objectType.getClass().getSimpleName() + "?");
}
- Task task = modelServiceLocator.createSimpleTask("Load resource ref");
+// Task task = modelServiceLocator.createSimpleTask("Load resource ref");
//TODO: is it safe to case modelServiceLocator to pageBase?
PrismObject resource = WebModelServiceUtils.loadObject(shadow.getResourceRef(), modelServiceLocator, task, result);
@@ -275,11 +276,11 @@ private ContainerWrapper crea
}
if (prismContainer != null) {
- return cwf.createContainerWrapper(prismContainer, objectStatus, ContainerStatus.MODIFYING, newPath);
+ return cwf.createContainerWrapper(prismContainer, objectStatus, ContainerStatus.MODIFYING, newPath, task);
}
prismContainer = containerDef.instantiate();
- return cwf.createContainerWrapper(prismContainer, objectStatus, ContainerStatus.ADDING, newPath);
+ return cwf.createContainerWrapper(prismContainer, objectStatus, ContainerStatus.ADDING, newPath, task);
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/PrismContainerHeaderPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/PrismContainerHeaderPanel.java
index 4d02ccbba70..35e81a87243 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/PrismContainerHeaderPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/PrismContainerHeaderPanel.java
@@ -5,6 +5,7 @@
import org.apache.wicket.model.IModel;
import com.evolveum.midpoint.prism.Containerable;
+import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
public class PrismContainerHeaderPanel extends PrismHeaderPanel>{
@@ -47,7 +48,10 @@ public void onClick(AjaxRequestTarget target) {
private void addValue(AjaxRequestTarget target) {
ContainerWrapperFactory cwf = new ContainerWrapperFactory(getPageBase());
ContainerWrapper containerWrapper = getModelObject();
- ContainerValueWrapper newContainerValue = cwf.createContainerValueWrapper(containerWrapper, containerWrapper.getItem().createNewValue(), containerWrapper.getObjectStatus(), ValueStatus.ADDED, containerWrapper.getPath());
+ Task task = getPageBase().createSimpleTask("Creating new container");
+ ContainerValueWrapper newContainerValue = cwf.createContainerValueWrapper(containerWrapper,
+ containerWrapper.getItem().createNewValue(), containerWrapper.getObjectStatus(), ValueStatus.ADDED,
+ containerWrapper.getPath(), task);
newContainerValue.setShowEmpty(true, false);
getModelObject().addValue(newContainerValue);
onButtonClick(target);
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/PrismContainerValueHeaderPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/PrismContainerValueHeaderPanel.java
index 2233478e662..0213808629c 100755
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/PrismContainerValueHeaderPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/PrismContainerValueHeaderPanel.java
@@ -16,7 +16,11 @@
import com.evolveum.midpoint.gui.api.GuiStyleConstants;
import com.evolveum.midpoint.gui.api.component.togglebutton.ToggleIconButton;
+import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.prism.Containerable;
+import com.evolveum.midpoint.prism.PrismContainerValue;
+import com.evolveum.midpoint.prism.path.ItemPath;
+import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.xml.ns._public.common.common_3.MetadataType;
import org.apache.wicket.model.Model;
@@ -120,9 +124,10 @@ public boolean isOn() {
@Override
public void onClick(AjaxRequestTarget target) {
- ContainerValueWrapper containerValueWrapper = PrismContainerValueHeaderPanel.this.getModelObject();
- containerValueWrapper.setSorted(!containerValueWrapper.isSorted());
- containerValueWrapper.sort();
+ ContainerValueWrapper containerValueWrapper = PrismContainerValueHeaderPanel.this.getModelObject();
+ containerValueWrapper.setSorted(!containerValueWrapper.isSorted());
+ containerValueWrapper.sort();
+ containerValueWrapper.computeStripes();
onButtonClick(target);
}
@@ -260,7 +265,7 @@ protected void reloadParentContainerPanel(AjaxRequestTarget target){
protected void addNewContainerValuePerformed(AjaxRequestTarget ajaxRequestTarget){
isChildContainersSelectorPanelVisible = false;
getModelObject().setShowEmpty(true, false);
- getModelObject().addNewChildContainerValue(getSelectedContainerQName(), getPageBase());
+ createNewContainerValue(getModelObject(), getSelectedContainerQName());
ajaxRequestTarget.add(getChildContainersSelectorPanel().getParent());
}
@@ -283,9 +288,34 @@ private void onShowEmptyClick(AjaxRequestTarget target) {
ContainerValueWrapper wrapper = PrismContainerValueHeaderPanel.this.getModelObject();
wrapper.setShowEmpty(!wrapper.isShowEmpty(), false);
+ wrapper.computeStripes();
onButtonClick(target);
}
+
+ public void createNewContainerValue(ContainerValueWrapper containerValueWrapper, QName path){
+ ContainerWrapper childContainerWrapper = containerValueWrapper.getContainer().findContainerWrapper(new ItemPath(getPath(), path));
+ if (childContainerWrapper == null){
+ return;
+ }
+ boolean isSingleValue = childContainerWrapper.getItemDefinition().isSingleValue();
+ if (isSingleValue){
+ return;
+ }
+ PrismContainerValue newContainerValue = childContainerWrapper.getItem().createNewValue();
+
+ Task task = getPageBase().createSimpleTask("Creating new container value wrapper");
+
+ ContainerWrapperFactory factory = new ContainerWrapperFactory(getPageBase());
+ ContainerValueWrapper newValueWrapper = factory.createContainerValueWrapper(childContainerWrapper,
+ newContainerValue, containerValueWrapper.getObjectStatus(),
+ ValueStatus.ADDED, new ItemPath(path), task);
+ newValueWrapper.setShowEmpty(true, false);
+ newValueWrapper.computeStripes();
+ childContainerWrapper.getValues().add(newValueWrapper);
+
+ }
+
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/PrismValuePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/PrismValuePanel.java
index 80faef3e26a..638545aa39e 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/PrismValuePanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/PrismValuePanel.java
@@ -40,6 +40,7 @@
import org.apache.wicket.extensions.ajax.markup.html.autocomplete.AutoCompleteTextField;
import org.apache.wicket.extensions.yui.calendar.DateTimeField;
import org.apache.wicket.feedback.ComponentFeedbackMessageFilter;
+import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.FormComponent;
@@ -208,6 +209,9 @@ public String getObject() {
}
private boolean isAccessible(ItemDefinition def, ContainerStatus status) {
+ if (def.getName().equals(ConstructionType.F_KIND) || def.getName().equals(ConstructionType.F_INTENT)){
+ return false;
+ }
switch (status) {
case ADDING:
if (!def.canAdd()) {
@@ -245,6 +249,15 @@ public boolean isEnabled() {
return object == null || isAccessible(def, object.getStatus());
}
+
+ @Override
+ public void onComponentTag(Component component, ComponentTag tag) {
+ if (component instanceof TextField && !isEnabled()) {
+ tag.remove("disabled");
+ tag.append("class", "input-readonly", " ");
+ tag.append("readonly", "readonly", " ");
+ }
+ }
});
}
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/ConfigurationStep.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/ConfigurationStep.java
index 7ae7f769993..d376d487195 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/ConfigurationStep.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/ConfigurationStep.java
@@ -133,11 +133,12 @@ private List createConfigContainerWrappers() throws SchemaExce
ContainerWrapperFactory cwf = new ContainerWrapperFactory(parentPage);
ContainerWrapper containerWrapper;
+ Task task = getPageBase().createSimpleTask("Creting configuration container");
if (container != null) {
- containerWrapper = cwf.createContainerWrapper(container, ContainerStatus.MODIFYING, ContainerStatus.MODIFYING, containerPath, parentPage.isReadOnly());
+ containerWrapper = cwf.createContainerWrapper(container, ContainerStatus.MODIFYING, ContainerStatus.MODIFYING, containerPath, parentPage.isReadOnly(), task);
} else {
container = containerDef.instantiate();
- containerWrapper = cwf.createContainerWrapper(container, ContainerStatus.ADDING, ContainerStatus.ADDING, containerPath, parentPage.isReadOnly());
+ containerWrapper = cwf.createContainerWrapper(container, ContainerStatus.ADDING, ContainerStatus.ADDING, containerPath, parentPage.isReadOnly(), task);
containerWrapper.setShowEmpty(true, true);
}
containerWrappers.add(containerWrapper);
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/DuplicateObjectTypeDetector.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/DuplicateObjectTypeDetector.java
index 75d76fe12ff..6bc2e4606d8 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/DuplicateObjectTypeDetector.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/DuplicateObjectTypeDetector.java
@@ -35,7 +35,7 @@ public String getDuplicatesList() {
return sb.toString();
}
- private class ObjectTypeRecord {
+ private static class ObjectTypeRecord {
@NotNull public final ShadowKindType kind;
@NotNull public final String intent;
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/dto/WizardIssuesDto.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/dto/WizardIssuesDto.java
index 3748fd3969e..ea6b69f8ed8 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/dto/WizardIssuesDto.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/dto/WizardIssuesDto.java
@@ -131,7 +131,7 @@ static Severity fromModel(@NotNull com.evolveum.midpoint.model.api.validator.Iss
}
}
- public class Issue implements Serializable {
+ public static class Issue implements Serializable {
@NotNull private final Severity severity;
@NotNull private final String text;
@Nullable private final Class extends WizardStep> relatedStep;
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/PageAdminObjectDetails.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/PageAdminObjectDetails.java
index 3c6463b2cd9..19acf39b19e 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/PageAdminObjectDetails.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/PageAdminObjectDetails.java
@@ -352,7 +352,7 @@ protected ObjectWrapper loadObjectWrapper(PrismObject objectToEdit, boolea
result.recordFatalError("Couldn't get user.", ex);
LoggingUtils.logUnexpectedException(LOGGER, "Couldn't load user", ex);
try {
- wrapper = owf.createObjectWrapper("pageAdminFocus.focusDetails", null, object, null, null, status);
+ wrapper = owf.createObjectWrapper("pageAdminFocus.focusDetails", null, object, null, null, status, task);
} catch (SchemaException e) {
throw new SystemException(e.getMessage(), e);
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/PageCase.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/PageCase.java
index 8ec1a4ba89c..c08fdc1c51e 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/PageCase.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/PageCase.java
@@ -135,7 +135,7 @@ private ObjectWrapper loadCase() {
result.recordFatalError("Couldn't get case.", ex);
LoggingUtils.logUnexpectedException(LOGGER, "Couldn't load case", ex);
try {
- wrapper = owf.createObjectWrapper("PageCase.details", null, caseInstance, null, null, status);
+ wrapper = owf.createObjectWrapper("PageCase.details", null, caseInstance, null, null, status, task);
} catch (SchemaException e) {
throw new SystemException(e.getMessage(), e);
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/DefinitionStagePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/DefinitionStagePanel.java
index 05404102c1a..9063b8e4823 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/DefinitionStagePanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/DefinitionStagePanel.java
@@ -201,7 +201,7 @@ public String getObject() {
}
- private class NoOffsetPrismReferencePanel extends PrismPropertyPanel {
+ private static class NoOffsetPrismReferencePanel extends PrismPropertyPanel {
public NoOffsetPrismReferencePanel(String id, IModel propertyModel, Form form, PageBase pageBase) {
super(id, propertyModel, form, null, pageBase);
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageDebugList.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageDebugList.java
index 6243c143de1..f4d63aa116d 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageDebugList.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageDebugList.java
@@ -635,7 +635,6 @@ private void deleteAllIdentitiesConfirmed(AjaxRequestTarget target, DeleteAllDto
}
target.add(getFeedbackPanel());
- result.recomputeStatus();
showResult(result);
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/dto/SystemConfigurationDto.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/dto/SystemConfigurationDto.java
index ba2ec9793e9..ff8677d67db 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/dto/SystemConfigurationDto.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/dto/SystemConfigurationDto.java
@@ -64,7 +64,7 @@ public class SystemConfigurationDto implements Serializable {
public static final String F_ADMIN_GUI_CONFIGURATION = "adminGuiConfiguration";
private AEPlevel aepLevel;
- private class CleanupInfo implements Serializable {
+ private static class CleanupInfo implements Serializable {
String ageValue;
Integer records;
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/home/PageMyPasswordQuestions.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/home/PageMyPasswordQuestions.java
index a7a2db94929..f1cadba3d0a 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/home/PageMyPasswordQuestions.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/home/PageMyPasswordQuestions.java
@@ -506,7 +506,7 @@ private ObjectWrapper loadUserWrapper(PrismObject userToEdit) {
result.recordFatalError("Couldn't get user.", ex);
LoggingUtils.logUnexpectedException(LOGGER, "Couldn't load user", ex);
try {
- wrapper = owf.createObjectWrapper("pageMyPasswordQuestions.userDetails", null, user, null, null, status);
+ wrapper = owf.createObjectWrapper("pageMyPasswordQuestions.userDetails", null, user, null, null, status, task);
} catch (SchemaException e) {
throw new SystemException(e.getMessage(), e);
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/RunReportPopupPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/RunReportPopupPanel.java
index ba4fe74c868..faf7062f4a0 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/RunReportPopupPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/RunReportPopupPanel.java
@@ -587,7 +587,7 @@ public Component getComponent() {
return this;
}
- class LookupReportPropertyModel extends LookupPropertyModel {
+ static class LookupReportPropertyModel extends LookupPropertyModel {
private static final long serialVersionUID = 1L;
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/component/TestConnectionMessagesPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/component/TestConnectionMessagesPanel.java
index 8aa1f506988..4bedc907706 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/component/TestConnectionMessagesPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/component/TestConnectionMessagesPanel.java
@@ -160,7 +160,7 @@ public void initResultsPanel(RepeatingView resultView, List opresults,
}
}
- private class ConnectorStruct implements Serializable {
+ private static class ConnectorStruct implements Serializable {
private String connectorName;
private List connectorResultsDto;
}
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 4d56ebdb8de..c5c728354f9 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
@@ -232,7 +232,7 @@ protected boolean isGovernance(){
return true;
}
- class RoleRelationSelectionDto implements Serializable {
+ static class RoleRelationSelectionDto implements Serializable {
private static final long serialVersionUID = 1L;
private boolean approver;
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/PageTaskEdit.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/PageTaskEdit.java
index ab5100f9402..83669396b05 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/PageTaskEdit.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/PageTaskEdit.java
@@ -335,7 +335,7 @@ protected ObjectWrapper loadObjectWrapper(PrismObject object
result.recordFatalError("Couldn't get user.", ex);
LoggingUtils.logUnexpectedException(LOGGER, "Couldn't load user", ex);
try {
- wrapper = owf.createObjectWrapper("pageAdminFocus.focusDetails", null, object, null, null, ContainerStatus.MODIFYING);
+ wrapper = owf.createObjectWrapper("pageAdminFocus.focusDetails", null, object, null, null, ContainerStatus.MODIFYING, task);
} catch (SchemaException e) {
throw new SystemException(e.getMessage(), e);
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/dto/TaskDto.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/dto/TaskDto.java
index 65955412216..312e6459f0e 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/dto/TaskDto.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/dto/TaskDto.java
@@ -311,7 +311,21 @@ private void fillInObjectRefAttributes(TaskType taskType, TaskDtoProviderOptions
}
public String getTaskObjectName(TaskType taskType, PageBase pageBase, Task opTask, OperationResult thisOpResult) {
- return WebModelServiceUtils.resolveReferenceName(taskType.getObjectRef(), pageBase, opTask, thisOpResult);
+ OperationResult currentResult;
+ ObjectReferenceType objectRef;
+ if (taskType.getWorkflowContext() != null) {
+ // For workflow-related tasks the task object might not be created yet (MID-4512). The simplest way
+ // of avoiding displaying the error is to use a separate operation result.
+ currentResult = new OperationResult(TaskDto.class.getName() + ".getTaskObjectName");
+ objectRef = taskType.getWorkflowContext().getObjectRef(); // here should be the name present (important for objects that are to be created)
+ } else {
+ currentResult = thisOpResult;
+ objectRef = null;
+ }
+ if (objectRef == null) { // either not a workflow task, or wfc.objectRef does not exist
+ objectRef = taskType.getObjectRef();
+ }
+ return WebModelServiceUtils.resolveReferenceName(objectRef, pageBase, opTask, currentResult);
}
private void fillInParentTaskAttributes(TaskType taskType,
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/handlers/dto/GenericHandlerDto.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/handlers/dto/GenericHandlerDto.java
index 882331fe9d5..3a663bf244b 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/handlers/dto/GenericHandlerDto.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/handlers/dto/GenericHandlerDto.java
@@ -20,6 +20,7 @@
import com.evolveum.midpoint.prism.*;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.util.CloneUtil;
+import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.util.exception.SystemException;
import com.evolveum.midpoint.web.component.prism.*;
@@ -104,7 +105,8 @@ public GenericHandlerDto(TaskDto taskDto, @NotNull List- items, PageBase pa
}
PrismContainerDefinition> containerDefinition = new PrismContainerDefinitionImpl<>(new QName("Handler data"), ctd, prismContext);
container.setDefinition(containerDefinition);
- containerWrapper = cwf.createContainerWrapper(container, ContainerStatus.MODIFYING, ContainerStatus.MODIFYING, ItemPath.EMPTY_PATH, true);
+ Task task = pageBase.createSimpleTask("Adding new container wrapper");
+ containerWrapper = cwf.createContainerWrapper(container, ContainerStatus.MODIFYING, ContainerStatus.MODIFYING, ItemPath.EMPTY_PATH, true, task);
}
public ContainerWrapper getContainer() {
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/login/PageSelfRegistration.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/login/PageSelfRegistration.java
index f4cc279e0cd..32d10688df0 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/login/PageSelfRegistration.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/login/PageSelfRegistration.java
@@ -691,7 +691,7 @@ private String generateNonce(NonceCredentialsPolicyType n
}
policy = valuePolicy.asObjectable();
}
-
+
return getModelInteractionService().generateValue(policy,
24, false, user, "nonce generation (registration)", task, result);
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAccountActivation.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAccountActivation.java
index f1327e20302..9377064a57c 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAccountActivation.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAccountActivation.java
@@ -43,6 +43,7 @@
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.model.api.AuthenticationEvaluator;
import com.evolveum.midpoint.model.api.context.PasswordAuthenticationContext;
+import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.SelectorOptions;
@@ -93,6 +94,11 @@ public class PageAccountActivation extends PageBase {
public PageAccountActivation(PageParameters params) {
UserType user = loadUser(params);
+
+ if (user == null) {
+ getSession().error(getString("PageAccountActivation.account.activation.failed"));
+ throw new RestartResponseException(PageLogin.class);
+ }
userModel = new LoadableModel(false) {
@@ -119,11 +125,16 @@ private UserType loadUser(PageParameters params){
OperationResult result = new OperationResult(LOAD_USER);
return runPrivileged(new Producer() {
+ private static final long serialVersionUID = 1L;
@Override
public UserType run() {
Collection> options = SelectorOptions.createCollection(UserType.F_LINK_REF, GetOperationOptions.createResolve());
- return WebModelServiceUtils.loadObject(UserType.class, userOid, options, PageAccountActivation.this, task, result).asObjectable();
+ PrismObject user = WebModelServiceUtils.loadObject(UserType.class, userOid, options, PageAccountActivation.this, task, result);
+ if (user == null) {
+ return null;
+ }
+ return user.asObjectable();
}
});
@@ -143,7 +154,7 @@ public boolean isVisible() {
});
- Form form = new com.evolveum.midpoint.web.component.form.Form<>(ID_MAIN_FORM);
+ Form> form = new com.evolveum.midpoint.web.component.form.Form<>(ID_MAIN_FORM);
activationContainer.add(form);
Label usernamePanel = new Label(ID_NAME, createStringResource("PageAccountActivation.activate.accounts.label", new PropertyModel<>(userModel, "name.orig")));
@@ -225,7 +236,7 @@ public void onClick(AjaxRequestTarget target) {
private String getOidFromParameter(PageParameters params){
if (params == null || params.isEmpty()) {
- LOGGER.error("No page paraeters found for account activation. No user to activate his/her accounts");
+ LOGGER.error("No page parameters found for account activation. No user to activate his/her accounts");
return null;
}
@@ -272,6 +283,7 @@ private void propagatePassword(AjaxRequestTarget target,
}
OperationResult result = runPrivileged(new Producer() {
+ private static final long serialVersionUID = 1L;
@Override
public OperationResult run() {
@@ -305,7 +317,7 @@ private List getShadowsToActivate(){
if (shadowsToActivate == null || shadowsToActivate.isEmpty()) {
return new ArrayList<>();
}
- return shadowsToActivate.parallelStream().filter(shadow -> shadow.getLifecycleState().equals(SchemaConstants.LIFECYCLE_PROPOSED)).collect(Collectors.toList());
+ return shadowsToActivate.parallelStream().filter(shadow -> SchemaConstants.LIFECYCLE_PROPOSED.equals(shadow.getLifecycleState())).collect(Collectors.toList());
}
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAssignmentsList.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAssignmentsList.java
index 06b1181fb47..bda53a579cd 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAssignmentsList.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAssignmentsList.java
@@ -260,7 +260,7 @@ private void onSingleUserRequestPerformed(AjaxRequestTarget target) {
storage.getRoleCatalog().getAssignmentShoppingCart().clear();
} catch (Exception e) {
LoggingUtils.logUnexpectedException(LOGGER, "Could not save assignments ", e);
- error("Could not save assignments. Reason: " + e);
+ error(createStringResource("PageAssignmentsList.saveAssignmentsError").getString() + e.getLocalizedMessage());
target.add(getFeedbackPanel());
} finally {
result.recomputeStatus();
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/component/DashboardSearchPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/component/DashboardSearchPanel.java
index c44a607078c..f832046dec1 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/component/DashboardSearchPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/component/DashboardSearchPanel.java
@@ -43,6 +43,11 @@ public class DashboardSearchPanel extends BasePanel {
public DashboardSearchPanel(String id) {
super(id);
+ }
+
+ @Override
+ protected void onInitialize(){
+ super.onInitialize();
SEARCH_TYPES = Arrays.asList(
createStringResource("PageDashboard.search.users").getString(),
createStringResource("PageDashboard.search.resources").getString(),
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 327a837345b..92dc6437125 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
@@ -357,18 +357,18 @@ private static List loadLocaleDescriptors(Resource resource) t
map.put(key, properties.getProperty(key));
}
- for (String key : localeMap.keySet()) {
- Map localeDefinition = localeMap.get(key);
- if (!localeDefinition.containsKey(key + PROP_NAME)
- || !localeDefinition.containsKey(key + PROP_FLAG)) {
+ for (Map.Entry> entry : localeMap.entrySet()) {
+ Map localeDefinition = entry.getValue();
+ if (!localeDefinition.containsKey(entry + PROP_NAME)
+ || !localeDefinition.containsKey(entry + PROP_FLAG)) {
continue;
}
LocaleDescriptor descriptor = new LocaleDescriptor(
- localeDefinition.get(key + PROP_NAME),
- localeDefinition.get(key + PROP_FLAG),
- localeDefinition.get(key + PROP_DEFAULT),
- WebComponentUtil.getLocaleFromString(key)
+ localeDefinition.get(entry + PROP_NAME),
+ localeDefinition.get(entry + PROP_FLAG),
+ localeDefinition.get(entry + PROP_DEFAULT),
+ WebComponentUtil.getLocaleFromString(entry.getKey())
);
locales.add(descriptor);
}
diff --git a/gui/admin-gui/src/main/resources/localization/Midpoint.properties b/gui/admin-gui/src/main/resources/localization/Midpoint.properties
index 7fdc133e23d..2d7775ca708 100755
--- a/gui/admin-gui/src/main/resources/localization/Midpoint.properties
+++ b/gui/admin-gui/src/main/resources/localization/Midpoint.properties
@@ -3720,6 +3720,7 @@ PageAssignmentsList.submitButton=Submit
PageAssignmentsList.resolveConflicts=Resolve conflicts
PageAssignmentsList.commentHere=Comment here...
PageAssignmentsList.requestComment=Request comment (optional)
+PageAssignmentsList.saveAssignmentsError=Could not save assignments. Reason:
AssignmentShoppingCartPanel.treeTitle=Role catalog
AssignmentViewType.ROLE_CATALOG_VIEW=Role catalog view
AssignmentViewType.ROLE_TYPE=All roles view
@@ -4023,3 +4024,4 @@ pageAdminFocus.dataProtection=Data protection
PageInternals.title.cache=Caches
PageInternals.tab.cache=Cache management
InternalsCachePanel.button.clearCaches=Clear caches
+PageAccountActivation.user.not.found=Unexpected problem occurs. Please contact system administrator.
diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/SerializationOptions.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/SerializationOptions.java
index c4f7b66aa73..7e84b0e902e 100644
--- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/SerializationOptions.java
+++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/SerializationOptions.java
@@ -36,7 +36,7 @@ public void setSerializeReferenceNames(boolean serializeReferenceNames) {
this.serializeReferenceNames = serializeReferenceNames;
}
- public static SerializationOptions createSerializeReferenceNames(){
+ public static SerializationOptions createSerializeReferenceNames() {
SerializationOptions serializationOptions = new SerializationOptions();
serializationOptions.setSerializeReferenceNames(true);
return serializationOptions;
@@ -54,7 +54,7 @@ public void setSerializeCompositeObjects(boolean serializeCompositeObjects) {
this.serializeCompositeObjects = serializeCompositeObjects;
}
- public static SerializationOptions createSerializeCompositeObjects(){
+ public static SerializationOptions createSerializeCompositeObjects() {
SerializationOptions serializationOptions = new SerializationOptions();
serializationOptions.setSerializeCompositeObjects(true);
return serializationOptions;
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 7e49cb42be6..7b2ef316078 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
@@ -105,7 +105,7 @@ private List readInternal(@NotNull ParserSource source, @NotNull Pars
}
}
- private class IterativeParsingContext {
+ private static class IterativeParsingContext {
final RootXNodeHandler handler;
boolean dataSent; // true if we really found the list of objects and sent it out
String defaultNamespace; // default namespace, if present
@@ -621,7 +621,7 @@ private JsonParser configureParser(JsonParser parser) {
//region Serialization implementation
- class JsonSerializationContext {
+ static class JsonSerializationContext {
@NotNull final JsonGenerator generator;
@NotNull private final SerializationContext prismSerializationContext;
private String currentNamespace;
diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/marshaller/ItemPathHolder.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/marshaller/ItemPathHolder.java
index f786dfe18f4..53e58a6b558 100644
--- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/marshaller/ItemPathHolder.java
+++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/marshaller/ItemPathHolder.java
@@ -543,17 +543,19 @@ public ItemPathHolder transposedPath(List parentPath) {
private void addExplicitNsDeclarations(StringBuilder sb) {
if (explicitNamespaceDeclarations != null) {
- for (String prefix : explicitNamespaceDeclarations.keySet()) {
+ for (Map.Entry declaration : explicitNamespaceDeclarations.entrySet()) {
sb.append("declare ");
+ String prefix = declaration.getKey();
+ String value = declaration.getValue();
if (prefix.equals("")) {
sb.append("default namespace '");
- sb.append(explicitNamespaceDeclarations.get(prefix));
+ sb.append(value);
sb.append("'; ");
} else {
sb.append("namespace ");
sb.append(prefix);
sb.append("='");
- sb.append(explicitNamespaceDeclarations.get(prefix));
+ sb.append(value);
sb.append("'; ");
}
}
diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/path/ItemPath.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/path/ItemPath.java
index 5e13132401c..8eec4ebac67 100644
--- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/path/ItemPath.java
+++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/path/ItemPath.java
@@ -401,7 +401,7 @@ public CompareResult compareComplexOld(ItemPath otherPath) {
/**
* Alternative to normalization: reads the same sequence of segments of 'path' as segments of 'path.normalize()'
*/
- private class ItemPathNormalizingIterator implements Iterator {
+ private static class ItemPathNormalizingIterator implements Iterator {
final ItemPath path;
private int i = 0;
private boolean nextIsArtificialId = false;
diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/schema/XmlEntityResolverImpl.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/schema/XmlEntityResolverImpl.java
index 8de4688e81d..1b88f0e1900 100644
--- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/schema/XmlEntityResolverImpl.java
+++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/schema/XmlEntityResolverImpl.java
@@ -166,7 +166,7 @@ public InputSource resolveResourceUsingBuiltinResolver(String type, String names
return inputSource;
}
- class Input implements LSInput {
+ static class Input implements LSInput {
private String publicId;
private String systemId;
diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/xml/XsdTypeMapper.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/xml/XsdTypeMapper.java
index 43862c35b6a..206650d1377 100644
--- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/xml/XsdTypeMapper.java
+++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/xml/XsdTypeMapper.java
@@ -152,13 +152,13 @@ public static QName determineQNameWithNs(QName xsdType){
public static Class getXsdToJavaMapping(QName xsdType) {
Class clazz = xsdToJavaTypeMap.get(xsdType);
if (clazz == null){
- Set keys = xsdToJavaTypeMap.keySet();
- for (Iterator iterator = keys.iterator(); iterator.hasNext();){
- QName key = iterator.next();
- if (QNameUtil.match(key, xsdType)){
- return xsdToJavaTypeMap.get(key);
- }
- }
+ Set> entries = xsdToJavaTypeMap.entrySet();
+ for (Map.Entry entry : entries) {
+ QName key = entry.getKey();
+ if (QNameUtil.match(key, xsdType)){
+ return entry.getValue();
+ }
+ }
}
return xsdToJavaTypeMap.get(xsdType);
}
diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/xnode/MapXNode.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/xnode/MapXNode.java
index 111f89fa9b9..a39afbba232 100644
--- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/xnode/MapXNode.java
+++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/xnode/MapXNode.java
@@ -395,7 +395,7 @@ public RootXNode getSingleEntryMapAsRoot() {
return new RootXNode(key, get(key));
}
- private class Entry implements Map.Entry, Serializable {
+ private static class Entry implements Map.Entry, Serializable {
private QName key;
private XNode value;
diff --git a/infra/schema/src/main/java/com/evolveum/midpoint/schema/constants/SchemaConstants.java b/infra/schema/src/main/java/com/evolveum/midpoint/schema/constants/SchemaConstants.java
index 4302afd2f8d..717e66b852c 100644
--- a/infra/schema/src/main/java/com/evolveum/midpoint/schema/constants/SchemaConstants.java
+++ b/infra/schema/src/main/java/com/evolveum/midpoint/schema/constants/SchemaConstants.java
@@ -266,6 +266,7 @@ public abstract class SchemaConstants {
public static final QName CHANGE_CHANNEL_RECON = new QName(NS_PROVISIONING_CHANNEL, "reconciliation");
public static final String CHANGE_CHANNEL_RECON_URI = QNameUtil.qNameToUri(CHANGE_CHANNEL_RECON);
public static final QName CHANGE_CHANNEL_RECOMPUTE = new QName(NS_PROVISIONING_CHANNEL, "recompute");
+ public static final String CHANGE_CHANNEL_RECOMPUTE_URI = QNameUtil.qNameToUri(CHANGE_CHANNEL_RECOMPUTE);
public static final QName CHANGE_CHANNEL_DISCOVERY = new QName(NS_PROVISIONING_CHANNEL, "discovery");
public static final String CHANGE_CHANNEL_DISCOVERY_URI = QNameUtil.qNameToUri(CHANGE_CHANNEL_DISCOVERY);
public static final QName CHANGE_CHANNEL_IMPORT = new QName(NS_PROVISIONING_CHANNEL, "import");
@@ -358,6 +359,7 @@ public abstract class SchemaConstants {
public static final QName MODEL_EXTENSION_OBJECT_TYPE = new QName(NS_MODEL_EXTENSION, "objectType");
public static final QName MODEL_EXTENSION_OBJECT_QUERY = new QName(NS_MODEL_EXTENSION, "objectQuery");
+ public static final QName MODEL_EXTENSION_SEARCH_OPTIONS = new QName(NS_MODEL_EXTENSION, "searchOptions");
public static final QName MODEL_EXTENSION_ITERATION_METHOD = new QName(NS_MODEL_EXTENSION, "iterationMethod");
public static final QName MODEL_EXTENSION_OBJECT_DELTA = new QName(NS_MODEL_EXTENSION, "objectDelta");
public static final QName MODEL_EXTENSION_WORKER_THREADS = new QName(NS_MODEL_EXTENSION, "workerThreads");
@@ -464,7 +466,9 @@ public abstract class SchemaConstants {
public static final QName C_FROM = new QName(NS_C, "from");
public static final QName C_ENCODED_FROM = new QName(NS_C, "encodedFrom");
public static final QName C_TO = new QName(NS_C, "to");
+ public static final QName C_TO_LIST = new QName(NS_C, "toList");
public static final QName C_ENCODED_TO = new QName(NS_C, "encodedTo");
+ public static final QName C_ENCODED_TO_LIST = new QName(NS_C, "encodedToList");
public static final QName C_MESSAGE_TEXT = new QName(NS_C, "messageText");
public static final QName C_ENCODED_MESSAGE_TEXT = new QName(NS_C, "encodedMessageText");
public static final QName C_MESSAGE = new QName(NS_C, "message");
diff --git a/infra/schema/src/main/resources/xml/ns/public/common/common-core-3.xsd b/infra/schema/src/main/resources/xml/ns/public/common/common-core-3.xsd
index aa6a0239f55..3abed5e53be 100755
--- a/infra/schema/src/main/resources/xml/ns/public/common/common-core-3.xsd
+++ b/infra/schema/src/main/resources/xml/ns/public/common/common-core-3.xsd
@@ -18289,6 +18289,7 @@
+
@@ -18352,6 +18353,41 @@
+
+