diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/GuiStyleConstants.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/GuiStyleConstants.java
index 282302d8a23..c68f644f5f4 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/GuiStyleConstants.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/GuiStyleConstants.java
@@ -185,6 +185,7 @@ public class GuiStyleConstants {
public static final String EVO_CROW_ICON = "fe fe-crown-object";
public static final String EVO_RIGHT_TOP_ARROW_ICON = "fe fe-arrow";
public static final String EVO_ASSIGNMENT_ICON = "fe fe-assignment";
+ public static final String EVO_ASSIGNMENT_ARROW_ICON = "fe fe-action-assign";
public static final String EVO_ASSIGNMENT_ICON_A_PIECE = "fe fe-assign_horizontal_A_piece";
public static final String EVO_ASSIGNMENT_ICON_B_PIECE = "fe fe-assign_horizontal_B_piece";
public static final String EVO_OFFICER_CAP_ICON = "fe fe-officer-cap-object";
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java
index b65418d4be5..23ba69269db 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java
@@ -3293,35 +3293,62 @@ public static DisplayType createDisplayType(String iconCssClass, String iconColo
return displayType;
}
- public static CompositedIconBuilder getAssignmentRelationIconBuilder(PageBase pageBase, AssignmentObjectRelation relationSpec, DisplayType additionalButtonDisplayType){
+
+ public static IconType createIconType(String iconStyle){
+ return createIconType(iconStyle, "");
+ }
+
+ public static IconType createIconType(String iconStyle, String color){
+ IconType icon = new IconType();
+ icon.setCssClass(iconStyle);
+ icon.setColor(color);
+ return icon;
+ }
+
+
+ public static CompositedIconBuilder getAssignmentRelationIconBuilder(PageBase pageBase, AssignmentObjectRelation relationSpec,
+ IconType relationIcon, IconType actionButtonIcon){
+ CompositedIconBuilder builder = new CompositedIconBuilder();
if (relationSpec == null){
- return null;
+ if (actionButtonIcon == null){
+ return null;
+ }
+ builder.setBasicIcon(actionButtonIcon, IconCssStyle.CENTER_STYLE_WITH_RIGHT_SHIFT)
+ .appendColorHtmlValue(actionButtonIcon.getColor());
+ return builder;
}
- CompositedIconBuilder builder = new CompositedIconBuilder();
- String typeIconStyle = "";
- if (org.apache.commons.collections.CollectionUtils.isNotEmpty(relationSpec.getArchetypeRefs())){
+ DisplayType objectTypeDisplay = null;
+ if (CollectionUtils.isNotEmpty(relationSpec.getArchetypeRefs())){
try {
String operation = pageBase.getClass().getSimpleName() + "." + "loadArchetypeObject";
ArchetypeType archetype = pageBase.getModelObjectResolver().resolve(relationSpec.getArchetypeRefs().get(0), ArchetypeType.class,
null, null, pageBase.createSimpleTask(operation),
new OperationResult(operation));
if (archetype != null && archetype.getArchetypePolicy() != null){
- DisplayType archetypeDisplayType = archetype.getArchetypePolicy().getDisplay();
- typeIconStyle = WebComponentUtil.getIconCssClass(archetypeDisplayType);
+ objectTypeDisplay = archetype.getArchetypePolicy().getDisplay();
}
} catch (Exception ex){
LOGGER.error("Couldn't load archetype object, " + ex.getLocalizedMessage());
}
}
- QName objectType = org.apache.commons.collections.CollectionUtils.isNotEmpty(relationSpec.getObjectTypes()) ? relationSpec.getObjectTypes().get(0) : null;
- if (StringUtils.isEmpty(typeIconStyle) && objectType != null){
- typeIconStyle = WebComponentUtil.createDefaultBlackIcon(objectType);
+ if (objectTypeDisplay == null){
+ objectTypeDisplay = new DisplayType();
}
- builder.setBasicIcon(WebComponentUtil.getIconCssClass(additionalButtonDisplayType), IconCssStyle.IN_ROW_STYLE)
- .appendColorHtmlValue(WebComponentUtil.getIconColor(additionalButtonDisplayType))
- .appendLayerIcon(GuiStyleConstants.CLASS_PLUS_CIRCLE, IconCssStyle.BOTTOM_RIGHT_STYLE, GuiStyleConstants.GREEN_COLOR);
- if (StringUtils.isNotEmpty(typeIconStyle)){
- builder.appendLayerIcon(typeIconStyle, IconCssStyle.BOTTOM_LEFT_STYLE);
+ if (objectTypeDisplay.getIcon() == null){
+ objectTypeDisplay.setIcon(new IconType());
+ }
+ QName objectType = org.apache.commons.collections.CollectionUtils.isNotEmpty(relationSpec.getObjectTypes()) ? relationSpec.getObjectTypes().get(0) : null;
+ if (StringUtils.isEmpty(WebComponentUtil.getIconCssClass(objectTypeDisplay)) && objectType != null){
+ objectTypeDisplay.getIcon().setCssClass(WebComponentUtil.createDefaultBlackIcon(objectType));
+ }
+ if (StringUtils.isNotEmpty(WebComponentUtil.getIconCssClass(objectTypeDisplay))) {
+ builder.setBasicIcon(objectTypeDisplay.getIcon(), IconCssStyle.CENTER_STYLE_WITH_RIGHT_SHIFT)
+ .appendColorHtmlValue(WebComponentUtil.getIconColor(objectTypeDisplay))
+ .appendLayerIcon(actionButtonIcon, IconCssStyle.BOTTOM_RIGHT_STYLE)
+ .appendLayerIcon(relationIcon, IconCssStyle.TOP_RIGHT_STYLE);
+ } else {
+ builder.setBasicIcon(actionButtonIcon, IconCssStyle.CENTER_STYLE_WITH_RIGHT_SHIFT)
+ .appendColorHtmlValue(actionButtonIcon.getColor());
}
return builder;
}
@@ -3520,16 +3547,23 @@ public static DisplayType getAssignmentObjectRelationDisplayType(PageBase pageBa
if (relation != null){
RelationDefinitionType def = WebComponentUtil.getRelationDefinition(relation);
if (def != null){
- DisplayType displayType = def.getDisplay();
- if (displayType == null){
+ DisplayType displayType = null;
+ if (def.getDisplay() == null){
displayType = new DisplayType();
+ } else {
+ displayType = createDisplayType(def.getDisplay().getCssClass());
+ if (def.getDisplay().getIcon() != null){
+ displayType.setIcon(new IconType());
+ displayType.getIcon().setCssClass(def.getDisplay().getIcon().getCssClass());
+ displayType.getIcon().setColor(def.getDisplay().getIcon().getColor());
+ }
}
if (displayType.getLabel() != null && StringUtils.isNotEmpty(displayType.getLabel().getOrig())){
relationValue = pageBase.createStringResource(displayType.getLabel().getOrig()).getString();
} else {
String relationKey = "RelationTypes." + RelationTypes.getRelationTypeByRelationValue(relation);
relationValue = pageBase.createStringResource(relationValue).getString();
- if (relationKey.equals(relationValue)){
+ if (StringUtils.isEmpty(relationValue) || relationKey.equals(relationValue)){
relationValue = relation.getLocalPart();
}
}
@@ -3537,9 +3571,8 @@ public static DisplayType getAssignmentObjectRelationDisplayType(PageBase pageBa
relationTitle = pageBase.createStringResource("abstractRoleMemberPanel.withRelation", relationValue).getString();
- if (displayType.getIcon() == null){
- displayType = createDisplayType(GuiStyleConstants.EVO_ASSIGNMENT_ICON, "green",
- pageBase.createStringResource(defaultTitleKey, typeTitle, relationTitle).getString());
+ if (displayType.getIcon() == null || StringUtils.isEmpty(displayType.getIcon().getCssClass())){
+ displayType.setIcon(createIconType(""));
}
displayType.setTooltip(createPolyFromOrigString(pageBase.createStringResource(defaultTitleKey, typeTitle, relationTitle).getString()));
return displayType;
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/AjaxCompositedIconButton.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/AjaxCompositedIconButton.java
index 012f96a3525..6ffe0e1236b 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/AjaxCompositedIconButton.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/AjaxCompositedIconButton.java
@@ -18,6 +18,7 @@
import java.util.Map.Entry;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.IconType;
import org.apache.commons.lang.StringUtils;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.ajax.markup.html.AjaxLink;
@@ -91,9 +92,15 @@ public void onComponentTagBody(final MarkupStream markupStream, final ComponentT
}
if(icon.hasLayerIcons()) {
- for(String entry : icon.getLayerIcons()) {
- if (StringUtils.isNotEmpty(entry)) {
- sb.append(" ");
}
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/icon/CenterWithRightShiftCssStyle.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/icon/CenterWithRightShiftCssStyle.java
new file mode 100644
index 00000000000..303898c90cc
--- /dev/null
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/icon/CenterWithRightShiftCssStyle.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2010-2019 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.gui.impl.component.icon;
+
+/**
+ * Created by honchar
+ */
+public class CenterWithRightShiftCssStyle implements LayeredIconCssStyle {
+
+ @Override
+ public String getBasicCssClass() {
+ return "icon-basic-transparent";
+ }
+
+ @Override
+ public String getBasicLayerCssClass() {
+ return "center-with-right-shift-layer";
+ }
+
+ @Override
+ public String getLayerCssClass() {
+ return "center-layer";
+ }
+
+ @Override
+ public String getStrokeLayerCssClass() {
+ return "center-icon-stroke-layer";
+ }
+
+}
+
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/icon/CompositedIcon.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/icon/CompositedIcon.java
index d106cb30ea9..4a23c4fa1cf 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/icon/CompositedIcon.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/icon/CompositedIcon.java
@@ -19,6 +19,7 @@
import java.io.Serializable;
import java.util.List;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.IconType;
import org.apache.commons.lang.StringUtils;
/**
@@ -29,11 +30,11 @@ public class CompositedIcon implements Serializable {
private static final long serialVersionUID = 1L;
private String basicIcon;
- private List layerIcons;
+ private List layerIcons;
private String basicIconHtmlColor = "";
- public CompositedIcon(String basicIcon, List layerIcons, String basicIconHtmlColor){
+ public CompositedIcon(String basicIcon, List layerIcons, String basicIconHtmlColor){
this.basicIcon = basicIcon;
this.layerIcons = layerIcons;
this.basicIconHtmlColor = basicIconHtmlColor;
@@ -43,7 +44,7 @@ public String getBasicIcon() {
return basicIcon;
}
- public List getLayerIcons() {
+ public List getLayerIcons() {
return layerIcons;
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/icon/CompositedIconBuilder.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/icon/CompositedIconBuilder.java
index 63dbcb15a0c..116c4d4ddb0 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/icon/CompositedIconBuilder.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/icon/CompositedIconBuilder.java
@@ -20,6 +20,9 @@
import java.util.List;
import java.util.Map.Entry;
+import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.DisplayType;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.IconType;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.Validate;
@@ -31,7 +34,7 @@
public class CompositedIconBuilder {
private String basicIcon = "";
- private List layerIcons = new ArrayList();
+ private List layerIcons = new ArrayList();
private String colorHtmlValue = "";
public CompositedIcon build() {
@@ -47,11 +50,11 @@ private void setBasicIcon(String icon, String style) {
basicIcon = sb.toString();
}
- private void appendLayerIcon(String icon) {
+ private void appendLayerIcon(IconType icon) {
layerIcons.add(icon);
}
- private void appendLayerIcon(int index, String icon) {
+ private void appendLayerIcon(int index, IconType icon) {
layerIcons.add(index, icon);
}
@@ -81,7 +84,19 @@ public CompositedIconBuilder setBasicIcon(String icon, LayeredIconCssStyle style
if(StringUtils.isNotEmpty(additionalCssClass)) {
sb.append(" ").append(additionalCssClass);
}
- appendLayerIcon(0, sb.toString());
+ appendLayerIcon(0, WebComponentUtil.createIconType(sb.toString()));
+ return this;
+ }
+
+ public CompositedIconBuilder setBasicIcon(IconType icon, LayeredIconCssStyle style) {
+ Validate.notNull(icon, "no icon object");
+ Validate.notNull(icon.getCssClass(), "no icon class");
+ Validate.notNull(style, "no icon style");
+
+ setBasicIcon(icon.getCssClass(), style.getBasicCssClass());
+ StringBuilder sb = new StringBuilder(icon.getCssClass());
+ sb.append(" ").append(style.getBasicLayerCssClass());
+ appendLayerIcon(0, WebComponentUtil.createIconType(sb.toString(), icon.getColor()));
return this;
}
@@ -106,40 +121,38 @@ public CompositedIconBuilder appendLayerIcon(String icon, CompositedIconCssStyle
if(StringUtils.isNotEmpty(additionalCssClass)) {
sb.append(" ").append(additionalCssClass);
}
- appendLayerIcon(sb.toString());
+ appendLayerIcon(WebComponentUtil.createIconType(sb.toString()));
return this;
}
-
- public CompositedIconBuilder appendLayerIcon(String icon, LayeredIconCssStyle style) {
- return appendLayerIcon(icon, style, "");
- }
-
- public CompositedIconBuilder appendLayerIcon(String icon, LayeredIconCssStyle style, String additionalCssClass) {
- additionalCssClass = additionalCssClass + " " + validateInput(icon, style, false);
- StringBuilder sb = new StringBuilder(icon);
+
+ public CompositedIconBuilder appendLayerIcon(IconType icon, LayeredIconCssStyle style) {
+ Validate.notNull(icon, "no icon object");
+ Validate.notNull(icon.getCssClass(), "no icon class");
+ Validate.notNull(style, "no icon style");
+
+ StringBuilder sb = new StringBuilder(icon.getCssClass());
sb.append(" ").append(style.getLayerCssClass());
- if(StringUtils.isNotEmpty(additionalCssClass)) {
- sb.append(" ").append(additionalCssClass);
+ if(StringUtils.isNotEmpty(icon.getColor())) {
+ sb.append(" ").append(icon.getColor()).append(" ");
}
String layerIconClass = sb.toString();
sb.append(" ").append(style.getStrokeLayerCssClass());
- appendLayerIcon(sb.toString());
- appendLayerIcon(layerIconClass);
+ appendLayerIcon(WebComponentUtil.createIconType(sb.toString(), icon.getColor()));
+ appendLayerIcon(WebComponentUtil.createIconType(layerIconClass, icon.getColor()));
return this;
}
-
- public CompositedIconBuilder appendLayerIcon(String icon, IconCssStyle style) {
- return appendLayerIcon(icon, style, "");
- }
-
- public CompositedIconBuilder appendLayerIcon(String icon, IconCssStyle style, String additionalCssClass) {
- additionalCssClass = additionalCssClass + " " + validateInput(icon, style, false);
- StringBuilder sb = new StringBuilder(icon);
+
+ public CompositedIconBuilder appendLayerIcon(IconType icon, IconCssStyle style) {
+ Validate.notNull(icon, "no icon object");
+ Validate.notNull(icon.getCssClass(), "no icon class");
+ Validate.notNull(style, "no icon style");
+
+ StringBuilder sb = new StringBuilder(icon.getCssClass());
sb.append(" ").append(style.getLayerCssClass());
- if(StringUtils.isNotEmpty(additionalCssClass)) {
- sb.append(" ").append(additionalCssClass);
+ if(StringUtils.isNotEmpty(icon.getColor())) {
+ sb.append(" ").append(icon.getColor());
}
- appendLayerIcon(sb.toString());
+ appendLayerIcon(WebComponentUtil.createIconType(sb.toString(), icon.getColor()));
return this;
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/icon/IconCssStyle.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/icon/IconCssStyle.java
index d621a7b7cd3..48a54bea6eb 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/icon/IconCssStyle.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/icon/IconCssStyle.java
@@ -24,8 +24,10 @@ public interface IconCssStyle {
public static final BottomLeftIconCssStyle BOTTOM_LEFT_STYLE = new BottomLeftIconCssStyle();
public static final BottomRightIconCssStyle BOTTOM_RIGHT_STYLE = new BottomRightIconCssStyle();
public static final CenterIconCssStyle CENTER_STYLE = new CenterIconCssStyle();
+ public static final CenterWithRightShiftCssStyle CENTER_STYLE_WITH_RIGHT_SHIFT = new CenterWithRightShiftCssStyle();
public static final InRowIconCssStyle IN_ROW_STYLE = new InRowIconCssStyle();
public static final TopLeftIconCssStyle TOP_LEFT_STYLE = new TopLeftIconCssStyle();
+ public static final TopRightIconCssStyle TOP_RIGHT_STYLE = new TopRightIconCssStyle();
public String getBasicCssClass();
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/icon/TopRightIconCssStyle.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/icon/TopRightIconCssStyle.java
new file mode 100644
index 00000000000..87ae9835aef
--- /dev/null
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/icon/TopRightIconCssStyle.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2010-2019 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.gui.impl.component.icon;
+
+/**
+ * Created by honchar
+ */
+public class TopRightIconCssStyle implements LayeredIconCssStyle {
+
+ @Override
+ public String getBasicCssClass() {
+ return "icon-basic-transparent";
+ }
+
+ @Override
+ public String getBasicLayerCssClass() {
+ return "icon-basic-layer";
+ }
+
+ @Override
+ public String getLayerCssClass() {
+ return "top-right-layer";
+ }
+
+ @Override
+ public String getStrokeLayerCssClass() {
+ return "icon-stroke-layer";
+ }
+
+}
+
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/MultifunctionalButton.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/MultifunctionalButton.java
index c0814e0dc25..b33f9ccf6d3 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/MultifunctionalButton.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/MultifunctionalButton.java
@@ -91,9 +91,9 @@ public void onClick(AjaxRequestTarget target) {
additionalButtons.forEach(additionalButtonObject -> {
DisplayType additionalButtonDisplayType = validateDisplayType(getAdditionalButtonDisplayType(additionalButtonObject));
//we set default button icon class if no other is defined
- if (StringUtils.isEmpty(additionalButtonDisplayType.getIcon().getCssClass())){
- additionalButtonDisplayType.getIcon().setCssClass(defaultObjectButtonDisplayType.getIcon().getCssClass());
- }
+// if (StringUtils.isEmpty(additionalButtonDisplayType.getIcon().getCssClass())){
+// additionalButtonDisplayType.getIcon().setCssClass(defaultObjectButtonDisplayType.getIcon().getCssClass());
+// }
CompositedIconBuilder additionalButtonBuilder = getAdditionalIconBuilder(additionalButtonObject, additionalButtonDisplayType);
AjaxCompositedIconButton additionalButton = new AjaxCompositedIconButton(buttonsPanel.newChildId(), additionalButtonBuilder.build(),
@@ -114,13 +114,13 @@ public void onClick(AjaxRequestTarget target) {
if (StringUtils.isEmpty(defaultObjectButtonDisplayType.getIcon().getCssClass())){
defaultObjectButtonDisplayType.getIcon().setCssClass(mainButtonDisplayType.getIcon().getCssClass());
}
- CompositedIconBuilder defaultObjectButtonBuilder = new CompositedIconBuilder();
- defaultObjectButtonBuilder.setBasicIcon(WebComponentUtil.getIconCssClass(defaultObjectButtonDisplayType), IconCssStyle.IN_ROW_STYLE)
- .appendColorHtmlValue(WebComponentUtil.getIconColor(defaultObjectButtonDisplayType))
- .appendLayerIcon(GuiStyleConstants.CLASS_PLUS_CIRCLE, IconCssStyle.BOTTOM_RIGHT_STYLE, GuiStyleConstants.GREEN_COLOR);
+// CompositedIconBuilder defaultObjectButtonBuilder = new CompositedIconBuilder();
+// defaultObjectButtonBuilder.setBasicIcon(WebComponentUtil.getIconCssClass(defaultObjectButtonDisplayType), IconCssStyle.IN_ROW_STYLE)
+// .appendColorHtmlValue(WebComponentUtil.getIconColor(defaultObjectButtonDisplayType))
+// .appendLayerIcon(WebComponentUtil.createIconType(GuiStyleConstants.CLASS_PLUS_CIRCLE, "green"), IconCssStyle.BOTTOM_RIGHT_STYLE);
AjaxCompositedIconButton defaultButton = new AjaxCompositedIconButton(buttonsPanel.newChildId(),
- defaultObjectButtonBuilder.build(),
+ getAdditionalIconBuilder(null, defaultObjectButtonDisplayType).build(),
Model.of(WebComponentUtil.getDisplayTypeTitle(defaultObjectButtonDisplayType))){
private static final long serialVersionUID = 1L;
@@ -150,7 +150,7 @@ protected CompositedIconBuilder getAdditionalIconBuilder(S additionalButtonObjec
CompositedIconBuilder builder = new CompositedIconBuilder();
builder.setBasicIcon(WebComponentUtil.getIconCssClass(additionalButtonDisplayType), IconCssStyle.IN_ROW_STYLE)
.appendColorHtmlValue(WebComponentUtil.getIconColor(additionalButtonDisplayType))
- .appendLayerIcon(GuiStyleConstants.CLASS_PLUS_CIRCLE, IconCssStyle.BOTTOM_RIGHT_STYLE, GuiStyleConstants.GREEN_COLOR);
+ .appendLayerIcon(WebComponentUtil.createIconType(GuiStyleConstants.CLASS_PLUS_CIRCLE, "green"), IconCssStyle.BOTTOM_RIGHT_STYLE);
return builder;
}
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 89c1fb68894..3c3e097e119 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
@@ -169,7 +169,8 @@ protected List getNewObjectInfluencesList() {
@Override
protected CompositedIconBuilder getAdditionalIconBuilder(AssignmentObjectRelation relationSpec, DisplayType additionalButtonDisplayType) {
- return WebComponentUtil.getAssignmentRelationIconBuilder(AssignmentPanel.this.getPageBase(), relationSpec, additionalButtonDisplayType);
+ return WebComponentUtil.getAssignmentRelationIconBuilder(AssignmentPanel.this.getPageBase(), relationSpec,
+ additionalButtonDisplayType.getIcon(), WebComponentUtil.createIconType(GuiStyleConstants.EVO_ASSIGNMENT_ICON, "green"));
}
@Override
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/AbstractRoleMemberPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/AbstractRoleMemberPanel.java
index 7c1dc9c2580..f9108ba271e 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/AbstractRoleMemberPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/AbstractRoleMemberPanel.java
@@ -243,7 +243,8 @@ protected DisplayType getNewObjectButtonStandardDisplayType(){
@Override
protected CompositedIconBuilder getNewObjectButtonAdditionalIconBuilder(AssignmentObjectRelation relationSpec, DisplayType additionalButtonDisplayType){
- return WebComponentUtil.getAssignmentRelationIconBuilder(AbstractRoleMemberPanel.this.getPageBase(), relationSpec, additionalButtonDisplayType);
+ return WebComponentUtil.getAssignmentRelationIconBuilder(AbstractRoleMemberPanel.this.getPageBase(), relationSpec,
+ additionalButtonDisplayType.getIcon(), WebComponentUtil.createIconType(GuiStyleConstants.CLASS_ADD_NEW_OBJECT, "green"));
}
@Override
@@ -290,8 +291,8 @@ protected DisplayType getDefaultObjectButtonDisplayType(){
@Override
protected CompositedIconBuilder getAdditionalIconBuilder(AssignmentObjectRelation relationSpec, DisplayType additionalButtonDisplayType){
- return WebComponentUtil.getAssignmentRelationIconBuilder(AbstractRoleMemberPanel.this.getPageBase(),
- relationSpec, additionalButtonDisplayType);
+ return WebComponentUtil.getAssignmentRelationIconBuilder(AbstractRoleMemberPanel.this.getPageBase(), relationSpec,
+ additionalButtonDisplayType.getIcon(), WebComponentUtil.createIconType(GuiStyleConstants.EVO_ASSIGNMENT_ICON, "green"));
}
};
assignButton.add(AttributeAppender.append("class", "btn-margin-right"));
diff --git a/gui/admin-gui/src/main/resources/static/less/midpoint/icon-style.less b/gui/admin-gui/src/main/resources/static/less/midpoint/icon-style.less
index 7cd3cf93803..45be29dfb1d 100644
--- a/gui/admin-gui/src/main/resources/static/less/midpoint/icon-style.less
+++ b/gui/admin-gui/src/main/resources/static/less/midpoint/icon-style.less
@@ -150,26 +150,39 @@
}
i.bottom-right-layer {
- font-size: 85%;
+ font-size: 85% !important;
position: absolute;
- right: 13%;
- bottom: 7%;
+ right: 5%;
+ bottom: 5%;
}
+ i.center-with-right-shift-layer {
+ font-size: 125%;
+ padding-right: 30%;
+ bottom: 20%;
+ }
+
i.bottom-left-layer {
- font-size: 100%;
+ font-size: 85% !important;
position: absolute;
left: 10%;
bottom: 5%;
}
i.top-left-layer {
- font-size: 100%;
+ font-size: 85% !important;
position: absolute;
left: 10%;
- top: 15%;
+ top: 5%;
}
-
+
+ i.top-right-layer {
+ font-size: 85% !important;
+ position: absolute;
+ right: 5%;
+ top: 5%;
+ }
+
i.center-layer {
font-size: 70% !important;
position: absolute;
diff --git a/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/lex/dom/DomLexicalProcessor.java b/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/lex/dom/DomLexicalProcessor.java
index 02c63eef955..e5178d6c426 100644
--- a/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/lex/dom/DomLexicalProcessor.java
+++ b/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/lex/dom/DomLexicalProcessor.java
@@ -627,7 +627,7 @@ private Element serializeToElement(XNodeImpl xnode, QName elementName) throws Sc
return serializeToElement(xlist.get(0), elementName);
}
} else {
- throw new IllegalArgumentException("Cannot serialized "+xnode+" to element");
+ throw new IllegalArgumentException("Cannot serialize "+xnode+" to element");
}
}
diff --git a/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/lex/json/AbstractJsonLexicalProcessor.java b/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/lex/json/AbstractJsonLexicalProcessor.java
index a77d8c5ae25..018ea744abc 100644
--- a/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/lex/json/AbstractJsonLexicalProcessor.java
+++ b/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/lex/json/AbstractJsonLexicalProcessor.java
@@ -410,7 +410,9 @@ private XNodeImpl parseJsonObject(JsonParsingContext ctx, IterativeParsingContex
wrappedValue = valueXNode;
}
} else {
- Map.Entry entry = map.putReturningEntry(currentFieldNameInfo.name, valueXNode);
+ // We must NOT remove previous values because of potential unqualified value conflict (see MID-5326).
+ // TODO However, we should do something to deduplicate keys in maps - probably. (Current behavior is that their values are being merged.)
+ Map.Entry entry = map.putReturningEntry(currentFieldNameInfo.name, valueXNode, true);
if (currentFieldNameInfo.explicitEmptyNamespace) {
ctx.noNamespaceEntries.put(entry, null);
}
diff --git a/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/xnode/MapXNodeImpl.java b/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/xnode/MapXNodeImpl.java
index d8bd92c236b..750054543e8 100644
--- a/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/xnode/MapXNodeImpl.java
+++ b/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/xnode/MapXNodeImpl.java
@@ -91,8 +91,10 @@ public XNodeImpl put(QName key, XNodeImpl value) {
return previous;
}
- public Entry putReturningEntry(QName key, XNodeImpl value) {
- removeEntry(key);
+ public Entry putReturningEntry(QName key, XNodeImpl value, boolean doNotRemovePrevious) {
+ if (!doNotRemovePrevious) {
+ removeEntry(key);
+ }
Entry e = new Entry(key, value);
subnodes.add(e);
return e;
@@ -115,6 +117,7 @@ public void clear() {
subnodes.clear();
}
+ @NotNull
public Set keySet() {
Set keySet = new HashSet<>();
for (Entry entry: subnodes) {
@@ -123,6 +126,7 @@ public Set keySet() {
return keySet;
}
+ @NotNull
public Collection values() {
Collection values = new ArrayList<>(subnodes.size());
for (Entry entry: subnodes) {
diff --git a/infra/prism-impl/src/test/java/com/evolveum/midpoint/prism/PrismInternalTestUtil.java b/infra/prism-impl/src/test/java/com/evolveum/midpoint/prism/PrismInternalTestUtil.java
index c327d3605c4..d58f0d4dce1 100644
--- a/infra/prism-impl/src/test/java/com/evolveum/midpoint/prism/PrismInternalTestUtil.java
+++ b/infra/prism-impl/src/test/java/com/evolveum/midpoint/prism/PrismInternalTestUtil.java
@@ -106,6 +106,8 @@ public class PrismInternalTestUtil implements PrismContextFactory {
public static final String USER_WILL_FILE_BASENAME = "user-will";
public static final File USER_WILL_FILE = new File(COMMON_DIR_XML, "user-will.xml");
+ public static final String ACCOUNT_BARBOSSA_FILE_BASENAME = "account-barbossa";
+
public static final String USER_ELISABETH_FILE_BASENAME = "user-elisabeth";
public static final String RESOURCE_RUM_FILE_BASENAME = "resource-rum";
diff --git a/infra/prism-impl/src/test/java/com/evolveum/midpoint/prism/TestPrismParsing.java b/infra/prism-impl/src/test/java/com/evolveum/midpoint/prism/TestPrismParsing.java
index 0a8b9e9d2e2..005565f173a 100644
--- a/infra/prism-impl/src/test/java/com/evolveum/midpoint/prism/TestPrismParsing.java
+++ b/infra/prism-impl/src/test/java/com/evolveum/midpoint/prism/TestPrismParsing.java
@@ -24,13 +24,19 @@
import java.io.File;
import java.io.IOException;
import java.math.BigInteger;
+import java.util.Arrays;
import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.stream.Collectors;
import javax.xml.datatype.Duration;
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.namespace.QName;
+import com.evolveum.midpoint.prism.foo.AccountType;
import com.evolveum.midpoint.prism.impl.PrismReferenceValueImpl;
+import com.evolveum.midpoint.prism.path.ItemName;
import com.evolveum.midpoint.prism.path.ItemPath;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Test;
@@ -410,6 +416,37 @@ public void test500UserElisabethRoundTrip() throws Exception {
}
+ // MID-5326
+ @Test
+ public void test600AccountBarbossa() throws Exception {
+ final String TEST_NAME = "test600AccountBarbossa";
+ PrismInternalTestUtil.displayTestTitle(TEST_NAME);
+
+ // GIVEN
+ PrismContext prismContext = constructInitializedPrismContext();
+
+ // WHEN
+ PrismObject account = prismContext.parseObject(getFile(ACCOUNT_BARBOSSA_FILE_BASENAME));
+
+ // THEN
+ assertNotNull(account);
+ System.out.println("Account:");
+ System.out.println(account.debugDump());
+
+ PrismContainer> attributes = account.findContainer(AccountType.F_ATTRIBUTES);
+ assertNotNull(attributes);
+ PrismContainerValue> attributesValue = attributes.getValue();
+ assertNotNull(attributesValue);
+ assertEquals("Wrong # of attributes", 3, attributesValue.getItems().size());
+ Set names = attributesValue.getItems().stream().map(a -> a.getElementName()).collect(Collectors.toSet());
+ assertEquals("Wrong attribute names", new HashSet<>(Arrays.asList(
+ new ItemName("http://midpoint.evolveum.com/xml/ns/public/resource/instance/10000000-0000-0000-0000-000000000003", "uid"),
+ new ItemName("http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/resource-schema-3", "uid"),
+ new ItemName("http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/resource-schema-3", "name")
+ )), names);
+ }
+
+
protected void assertUserAdhoc(PrismObject user, boolean expectRawInConstructions) throws SchemaException {
user.checkConsistence();
assertUserJackContent(user, expectRawInConstructions, true);
diff --git a/infra/prism-impl/src/test/java/com/evolveum/midpoint/prism/foo/AccountType.java b/infra/prism-impl/src/test/java/com/evolveum/midpoint/prism/foo/AccountType.java
index 0c25838609a..2133b5c04ae 100644
--- a/infra/prism-impl/src/test/java/com/evolveum/midpoint/prism/foo/AccountType.java
+++ b/infra/prism-impl/src/test/java/com/evolveum/midpoint/prism/foo/AccountType.java
@@ -24,6 +24,8 @@
package com.evolveum.midpoint.prism.foo;
+import com.evolveum.midpoint.prism.path.ItemName;
+
import java.io.Serializable;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
@@ -58,6 +60,7 @@ public class AccountType
implements Serializable
{
+ public final static ItemName F_ATTRIBUTES = new ItemName(NS_FOO, "attributes");
private final static long serialVersionUID = 201202081233L;
protected AttributesType attributes;
diff --git a/infra/prism-impl/src/test/resources/common/json/account-barbossa.json b/infra/prism-impl/src/test/resources/common/json/account-barbossa.json
new file mode 100644
index 00000000000..a6d9654048f
--- /dev/null
+++ b/infra/prism-impl/src/test/resources/common/json/account-barbossa.json
@@ -0,0 +1,13 @@
+{
+ "@ns" : "http://midpoint.evolveum.com/xml/ns/test/foo-1.xsd",
+ "account" : {
+ "oid" : "94a0ee25-262f-4c49-ad5c-567418a5f5f3",
+ "name" : "hbarbossa",
+ "attributes" : {
+ "@ns" : "http://midpoint.evolveum.com/xml/ns/public/resource/instance/10000000-0000-0000-0000-000000000003",
+ "http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/resource-schema-3#name" : "uid=hbarbossa,ou=people,dc=example,dc=com",
+ "uid" : "hbarbossa",
+ "http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/resource-schema-3#uid" : "8daaeeae-f0c7-41c9-b258-2a3351aa8876"
+ }
+ }
+}
diff --git a/infra/prism-impl/src/test/resources/common/xml/account-barbossa.xml b/infra/prism-impl/src/test/resources/common/xml/account-barbossa.xml
new file mode 100644
index 00000000000..47bf6e4eb3f
--- /dev/null
+++ b/infra/prism-impl/src/test/resources/common/xml/account-barbossa.xml
@@ -0,0 +1,26 @@
+
+
+
+ hbarbossa
+
+ uid=hbarbossa,ou=people,dc=example,dc=com
+ hbarbossa
+ 8daaeeae-f0c7-41c9-b258-2a3351aa8876
+
+
diff --git a/infra/prism-impl/src/test/resources/common/yaml/account-barbossa.yaml b/infra/prism-impl/src/test/resources/common/yaml/account-barbossa.yaml
new file mode 100644
index 00000000000..78db9612251
--- /dev/null
+++ b/infra/prism-impl/src/test/resources/common/yaml/account-barbossa.yaml
@@ -0,0 +1,10 @@
+---
+'@ns': "http://midpoint.evolveum.com/xml/ns/test/foo-1.xsd"
+account:
+ oid: "94a0ee25-262f-4c49-ad5c-567418a5f5f3"
+ name: "hbarbossa"
+ attributes:
+ '@ns': "http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/resource-schema-3"
+ name: "uid=hbarbossa,ou=people,dc=example,dc=com"
+ http://midpoint.evolveum.com/xml/ns/public/resource/instance/10000000-0000-0000-0000-000000000003#uid: "hbarbossa"
+ uid: "8daaeeae-f0c7-41c9-b258-2a3351aa8876"
diff --git a/infra/schema/src/main/java/com/evolveum/midpoint/schema/constants/RelationTypes.java b/infra/schema/src/main/java/com/evolveum/midpoint/schema/constants/RelationTypes.java
index a9fba7c622b..76fcb8e2c48 100755
--- a/infra/schema/src/main/java/com/evolveum/midpoint/schema/constants/RelationTypes.java
+++ b/infra/schema/src/main/java/com/evolveum/midpoint/schema/constants/RelationTypes.java
@@ -35,13 +35,13 @@
*/
public enum RelationTypes {
- MEMBER(SchemaConstants.ORG_DEFAULT, "", "fe fe-action-assign", RelationKindType.MEMBER, null, ADMINISTRATION, ORGANIZATION, SELF_SERVICE),
- MANAGER(SchemaConstants.ORG_MANAGER, "Manager", "fe fe-manager-tie-object", RelationKindType.MANAGER, singletonList(RelationKindType.MEMBER), ADMINISTRATION, GOVERNANCE, ORGANIZATION, SELF_SERVICE),
- META(SchemaConstants.ORG_META, "Meta", "", RelationKindType.META, null, POLICY),
- DEPUTY(SchemaConstants.ORG_DEPUTY, "Deputy", "", RelationKindType.DELEGATION, null /* no values */),
- APPROVER(SchemaConstants.ORG_APPROVER, "Approver", "fe fe-approver-object", RelationKindType.APPROVER, null, ADMINISTRATION, GOVERNANCE, ORGANIZATION, SELF_SERVICE),
- OWNER(SchemaConstants.ORG_OWNER, "Owner", "fe fe-crown-object", RelationKindType.OWNER, null, ADMINISTRATION, GOVERNANCE, ORGANIZATION, SELF_SERVICE),
- CONSENT(SchemaConstants.ORG_CONSENT, "Consent", "", RelationKindType.CONSENT, null, DATA_PROTECTION);
+ MEMBER(SchemaConstants.ORG_DEFAULT, "", "", "", RelationKindType.MEMBER, null, ADMINISTRATION, ORGANIZATION, SELF_SERVICE),
+ MANAGER(SchemaConstants.ORG_MANAGER, "Manager", "fe fe-manager-tie-object", "darkblue", RelationKindType.MANAGER, singletonList(RelationKindType.MEMBER), ADMINISTRATION, GOVERNANCE, ORGANIZATION, SELF_SERVICE),
+ META(SchemaConstants.ORG_META, "Meta", "", "", RelationKindType.META, null, POLICY),
+ DEPUTY(SchemaConstants.ORG_DEPUTY, "Deputy", "", "", RelationKindType.DELEGATION, null /* no values */),
+ APPROVER(SchemaConstants.ORG_APPROVER, "Approver", "fe fe-approver-object", "green", RelationKindType.APPROVER, null, ADMINISTRATION, GOVERNANCE, ORGANIZATION, SELF_SERVICE),
+ OWNER(SchemaConstants.ORG_OWNER, "Owner", "fe fe-crown-object", "darkorange", RelationKindType.OWNER, null, ADMINISTRATION, GOVERNANCE, ORGANIZATION, SELF_SERVICE),
+ CONSENT(SchemaConstants.ORG_CONSENT, "Consent", "", "", RelationKindType.CONSENT, null, DATA_PROTECTION);
private final QName relation;
private final String headerLabel;
@@ -49,11 +49,13 @@ public enum RelationTypes {
@NotNull private final Collection kinds;
private final AreaCategoryType[] categories;
private final String defaultIconStyle;
+ private final String defaultIconColor;
- RelationTypes(QName relation, String headerLabel, String defaultIconStyle, RelationKindType defaultFor, Collection additionalKinds, AreaCategoryType... categories) {
+ RelationTypes(QName relation, String headerLabel, String defaultIconStyle, String defaultIconColor, RelationKindType defaultFor, Collection additionalKinds, AreaCategoryType... categories) {
this.relation = relation;
this.headerLabel = headerLabel;
this.defaultIconStyle = defaultIconStyle;
+ this.defaultIconColor = defaultIconColor;
this.kinds = new ArrayList<>();
if (defaultFor != null) {
kinds.add(defaultFor);
@@ -94,6 +96,10 @@ public String getDefaultIconStyle() {
return defaultIconStyle;
}
+ public String getDefaultIconColor() {
+ return defaultIconColor;
+ }
+
public static RelationTypes getRelationTypeByRelationValue(QName relation){
for (RelationTypes relationType : values()) {
if (relationType.getRelation().equals(relation)) {
diff --git a/infra/schema/src/main/java/com/evolveum/midpoint/schema/relation/RelationRegistryImpl.java b/infra/schema/src/main/java/com/evolveum/midpoint/schema/relation/RelationRegistryImpl.java
index a95e60c9a23..e34d2797743 100644
--- a/infra/schema/src/main/java/com/evolveum/midpoint/schema/relation/RelationRegistryImpl.java
+++ b/infra/schema/src/main/java/com/evolveum/midpoint/schema/relation/RelationRegistryImpl.java
@@ -109,6 +109,9 @@ static RelationDefinitionType createRelationDefinitionFromStaticDefinition(Relat
if (StringUtils.isNotEmpty(defaultRelationDefinition.getDefaultIconStyle())){
IconType icon = new IconType();
icon.setCssClass(defaultRelationDefinition.getDefaultIconStyle());
+ if (StringUtils.isNotEmpty(defaultRelationDefinition.getDefaultIconColor())){
+ icon.setColor(defaultRelationDefinition.getDefaultIconColor());
+ }
display.setIcon(icon);
}
relationDef.setDisplay(display);
diff --git a/infra/util/src/main/java/com/evolveum/midpoint/util/QNameUtil.java b/infra/util/src/main/java/com/evolveum/midpoint/util/QNameUtil.java
index 0792a8de06f..3cc7951d064 100644
--- a/infra/util/src/main/java/com/evolveum/midpoint/util/QNameUtil.java
+++ b/infra/util/src/main/java/com/evolveum/midpoint/util/QNameUtil.java
@@ -228,7 +228,7 @@ public static boolean match(QName a, QName b, boolean caseInsensitive) {
}
if (!caseInsensitive) {
// traditional comparison
- if (StringUtils.isBlank(a.getNamespaceURI()) || StringUtils.isBlank(b.getNamespaceURI())) {
+ if (StringUtils.isEmpty(a.getNamespaceURI()) || StringUtils.isEmpty(b.getNamespaceURI())) {
return a.getLocalPart().equals(b.getLocalPart());
} else {
return a.equals(b);
@@ -238,7 +238,7 @@ public static boolean match(QName a, QName b, boolean caseInsensitive) {
if (!a.getLocalPart().equalsIgnoreCase(b.getLocalPart())) {
return false;
}
- if (StringUtils.isBlank(a.getNamespaceURI()) || StringUtils.isBlank(b.getNamespaceURI())) {
+ if (StringUtils.isEmpty(a.getNamespaceURI()) || StringUtils.isEmpty(b.getNamespaceURI())) {
return true;
} else {
return a.getNamespaceURI().equals(b.getNamespaceURI());
@@ -307,7 +307,7 @@ public static QName nullNamespace(QName qname) {
}
public static boolean isUnqualified(QName name) {
- return StringUtils.isBlank(name.getNamespaceURI());
+ return StringUtils.isEmpty(name.getNamespaceURI());
}
public static boolean isQualified(QName name) {
diff --git a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/sync/SynchronizationServiceImpl.java b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/sync/SynchronizationServiceImpl.java
index 4bd3b6651ef..d640d03c287 100644
--- a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/sync/SynchronizationServiceImpl.java
+++ b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/sync/SynchronizationServiceImpl.java
@@ -28,6 +28,7 @@
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.namespace.QName;
+import com.evolveum.midpoint.model.impl.lens.*;
import com.evolveum.midpoint.prism.*;
import com.evolveum.midpoint.prism.delta.*;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
@@ -45,11 +46,6 @@
import com.evolveum.midpoint.model.common.SystemObjectCache;
import com.evolveum.midpoint.model.impl.expr.ExpressionEnvironment;
import com.evolveum.midpoint.model.impl.expr.ModelExpressionThreadLocalHolder;
-import com.evolveum.midpoint.model.impl.lens.Clockwork;
-import com.evolveum.midpoint.model.impl.lens.ContextFactory;
-import com.evolveum.midpoint.model.impl.lens.LensContext;
-import com.evolveum.midpoint.model.impl.lens.LensFocusContext;
-import com.evolveum.midpoint.model.impl.lens.LensProjectionContext;
import com.evolveum.midpoint.model.impl.util.ModelImplUtils;
import com.evolveum.midpoint.prism.polystring.PolyString;
import com.evolveum.midpoint.provisioning.api.ResourceObjectShadowChangeDescription;
@@ -109,7 +105,8 @@ public class SynchronizationServiceImpl implements SynchronizationService {
@Autowired private SystemObjectCache systemObjectCache;
@Autowired private PrismContext prismContext;
@Autowired private Clock clock;
-
+ @Autowired private ClockworkMedic clockworkMedic;
+
@Autowired
@Qualifier("cacheRepositoryService")
private RepositoryService repositoryService;
@@ -794,10 +791,15 @@ private void reactToChange(SynchronizationContext syncC
try {
- if (change.isSimulate()) {
- clockwork.previewChanges(lensContext, null, task, parentResult);
- } else {
- clockwork.run(lensContext, task, parentResult);
+ clockworkMedic.enterModelMethod(false);
+ try {
+ if (change.isSimulate()) {
+ clockwork.previewChanges(lensContext, null, task, parentResult);
+ } else {
+ clockwork.run(lensContext, task, parentResult);
+ }
+ } finally {
+ clockworkMedic.exitModelMethod(false);
}
} catch (ConfigurationException | ObjectNotFoundException | SchemaException |
diff --git a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/AddGetObjectTest.java b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/AddGetObjectTest.java
index 8955b8fcf64..21840b2c39d 100644
--- a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/AddGetObjectTest.java
+++ b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/AddGetObjectTest.java
@@ -313,7 +313,6 @@ public void addUserWithAssignmentExtension() throws Exception {
@Test
public void addGetFullAccount() throws Exception {
LOGGER.info("===[ addGetFullAccount ]===");
- File file = new File(FOLDER_BASIC, "account-full.xml");
PrismObject fileAccount = prismContext.parseObject(new File(FOLDER_BASIC, "account-full.xml"));
// apply appropriate schema
diff --git a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/query2/resolution/ItemPathResolver.java b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/query2/resolution/ItemPathResolver.java
index 05aea375374..e711099c91c 100644
--- a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/query2/resolution/ItemPathResolver.java
+++ b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/query2/resolution/ItemPathResolver.java
@@ -82,11 +82,13 @@ public HqlDataInstance resolveItemPath(ItemPath relativePath, ItemDefinition ite
LOGGER.trace("Starting resolution and context update for item path '{}', singletonOnly='{}'", relativePath, singletonOnly);
while (!currentState.isFinal()) {
- LOGGER.trace("Current resolution state:\n{}", currentState.debugDumpNoParent());
+ if (LOGGER.isTraceEnabled()) {
+ LOGGER.trace("Current resolution state:\n{}", currentState.debugDumpNoParent());
+ }
currentState = currentState.nextState(itemDefinition, singletonOnly, context.getPrismContext());
}
- LOGGER.trace("resolveItemPath({}) ending in resolution state of:\n{}", relativePath, currentState.debugDump());
+ LOGGER.trace("resolveItemPath({}) ending in resolution state of:\n{}", relativePath, currentState.debugDumpLazily());
return currentState.getHqlDataInstance();
}