diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/util/WebMiscUtil.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/util/WebMiscUtil.java index 8bd52ae4d3d..28e863d1b88 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/util/WebMiscUtil.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/util/WebMiscUtil.java @@ -213,39 +213,63 @@ public String getIdValue(E object, int index) { }, true); } - public static DropDownChoicePanel createEnumPanel(final PrismPropertyDefinition def, + public static DropDownChoicePanel createEnumPanel(final PrismPropertyDefinition def, String id, final IModel model, final Component component) { // final Class clazz = model.getObject().getClass(); final Object o = model.getObject(); - IModel> enumModelValues = new AbstractReadOnlyModel>() { + final IModel> enumModelValues = new AbstractReadOnlyModel>() { @Override - public List getObject() { - List values = null; + public List getObject() { + List values = null; if (def.getAllowedValues() != null){ values = new ArrayList<>(def.getAllowedValues().length); for (Object v : def.getAllowedValues()){ if (v instanceof DisplayableValue){ - values.add(((DisplayableValue) v).getLabel()); + values.add(((DisplayableValue) v)); } } } return values; } + + }; return new DropDownChoicePanel(id, model, enumModelValues, - new IChoiceRenderer() { + new IChoiceRenderer() { + + @Override - public Object getDisplayValue(String object) { + public Object getDisplayValue(Object object) { + if (object instanceof DisplayableValue){ + return ((DisplayableValue)object).getLabel(); + } + for (DisplayableValue v : enumModelValues.getObject()){ + if (object.equals(v.getValue())){ + return v.getLabel(); + } + } return object; + } @Override - public String getIdValue(String object, int index) { - return Integer.toString(index); + public String getIdValue(Object object, int index) { + if (object instanceof DisplayableValue){ + return ((DisplayableValue)object).getValue().toString(); + } + return object.toString(); +// for (DisplayableValue v : enumModelValues.getObject()){ +// if (object.equals(v.getValue())){ +// return v.getLabel(); +// } +// } +// return object.getValue().toString();//Integer.toString(index); } + + }, true); } diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/parser/XNodeProcessor.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/parser/XNodeProcessor.java index 0cb327f535e..8007d8ed720 100644 --- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/parser/XNodeProcessor.java +++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/parser/XNodeProcessor.java @@ -481,7 +481,7 @@ private T parseAtomicValueFromPrimitive(PrimitiveXNode xprim, PrismProper private boolean isAllowed(T realValue, Object[] allowedValues){ for (Object o : allowedValues){ - if (realValue.equals(((DisplayableValue)o).getLabel())){ + if (realValue.equals(((DisplayableValue)o).getValue())){ return true; } } diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/xnode/PrimitiveXNode.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/xnode/PrimitiveXNode.java index 6d22939104f..75d053091d4 100644 --- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/xnode/PrimitiveXNode.java +++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/xnode/PrimitiveXNode.java @@ -25,15 +25,18 @@ import com.evolveum.midpoint.prism.xml.XsdTypeMapper; import com.evolveum.midpoint.util.logging.Trace; import com.evolveum.midpoint.util.logging.TraceManager; + import org.apache.commons.lang.StringUtils; import com.evolveum.midpoint.prism.Visitor; import com.evolveum.midpoint.prism.polystring.PolyString; import com.evolveum.midpoint.prism.xml.XmlTypeConverter; import com.evolveum.midpoint.util.DebugUtil; +import com.evolveum.midpoint.util.DisplayableValue; import com.evolveum.midpoint.util.PrettyPrinter; import com.evolveum.midpoint.util.QNameUtil; import com.evolveum.midpoint.util.exception.SchemaException; + import org.apache.commons.lang.Validate; public class PrimitiveXNode extends XNode implements Serializable { @@ -192,6 +195,10 @@ private String formatValue(T value) { if (value instanceof QName) { return QNameUtil.qNameToUri((QName) value); } + if (value instanceof DisplayableValue) { + return ((DisplayableValue) value).getValue().toString(); + } + return XmlTypeConverter.toXmlTextContent(value, null); }