From 83110522d25d05d9109be7b93c0f8d1d589b511f Mon Sep 17 00:00:00 2001 From: kate Date: Tue, 21 Jan 2020 13:08:35 +0100 Subject: [PATCH 1/3] mid-5980 fix mandatory polystring field --- .../component/PolyStringEditorPanel.java | 30 ++++++++++++++----- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/component/PolyStringEditorPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/component/PolyStringEditorPanel.java index 77f43d94e39..8a719315590 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/component/PolyStringEditorPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/component/PolyStringEditorPanel.java @@ -6,14 +6,14 @@ */ package com.evolveum.midpoint.gui.impl.prism.component; -import com.evolveum.midpoint.gui.api.Validatable; -import com.evolveum.midpoint.gui.api.component.BasePanel; import com.evolveum.midpoint.gui.api.model.LoadableModel; +import com.evolveum.midpoint.gui.api.page.PageBase; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; import com.evolveum.midpoint.prism.polystring.PolyString; import com.evolveum.midpoint.web.component.AjaxButton; import com.evolveum.midpoint.web.component.input.DropDownChoicePanel; import com.evolveum.midpoint.web.component.input.TextPanel; +import com.evolveum.midpoint.web.component.prism.InputPanel; import com.evolveum.midpoint.web.component.util.EnableBehaviour; import com.evolveum.midpoint.web.component.util.VisibleBehaviour; import com.evolveum.midpoint.web.page.admin.configuration.component.EmptyOnBlurAjaxFormUpdatingBehaviour; @@ -40,7 +40,7 @@ /** * Created by honchar */ -public class PolyStringEditorPanel extends BasePanel implements Validatable { +public class PolyStringEditorPanel extends InputPanel { private static final long serialVersionUID = 1L; private static final String ID_LOCALIZED_VALUE_CONTAINER = "localizedValueContainer"; @@ -66,9 +66,11 @@ public class PolyStringEditorPanel extends BasePanel implements Vali private boolean showFullData = false; private final StringBuilder currentlySelectedLang = new StringBuilder(); + IModel model; public PolyStringEditorPanel(String id, IModel model){ - super(id, model); + super(id); + this.model = model; } @Override @@ -88,7 +90,7 @@ private void initLayout(){ localizedValueContainer.add(new VisibleBehaviour(() -> showFullData || StringUtils.isNotEmpty(localizedValue))); add(localizedValueContainer); - Label localizedValueLabel = new Label(ID_LOCALIZED_VALUE_LABEL, createStringResource("PolyStringEditorPanel.localizedValue")); + Label localizedValueLabel = new Label(ID_LOCALIZED_VALUE_LABEL, ((PageBase)getPage()).createStringResource("PolyStringEditorPanel.localizedValue")); localizedValueLabel.setOutputMarkupId(true); localizedValueLabel.add(new VisibleBehaviour(() -> showFullData)); localizedValueContainer.add(localizedValueLabel); @@ -123,7 +125,7 @@ public void onClick(AjaxRequestTarget target) { originValueContainer.add(new VisibleBehaviour(() -> showFullData || StringUtils.isEmpty(localizedValue))); add(originValueContainer); - Label origValueLabel = new Label(ID_ORIG_VALUE_LABEL, createStringResource("PolyStringEditorPanel.origValue")); + Label origValueLabel = new Label(ID_ORIG_VALUE_LABEL, ((PageBase) getPage()).createStringResource("PolyStringEditorPanel.origValue")); origValueLabel.setOutputMarkupId(true); origValueLabel.add(new VisibleBehaviour(() -> showFullData)); originValueContainer.add(origValueLabel); @@ -328,7 +330,7 @@ public void onClick(AjaxRequestTarget target) { } private String getLocalizedPolyStringValue(){ - return getPageBase().getLocalizationService().translate(getModelObject(), WebComponentUtil.getCurrentLocale(), false); + return ((PageBase) getPage()).getLocalizationService().translate(getModelObject(), WebComponentUtil.getCurrentLocale(), false); } private IModel> getLanguageChoicesModel(){ @@ -406,7 +408,7 @@ protected String load() { } private TextPanel getOrigValuePanel(){ - return (TextPanel) get(getPageBase().createComponentPath(ID_ORIGIN_VALUE_CONTAINER, ID_ORIG_VALUE_WITH_BUTTON, ID_ORIG_VALUE)); + return (TextPanel) get(ID_ORIGIN_VALUE_CONTAINER).get(ID_ORIG_VALUE_WITH_BUTTON).get(ID_ORIG_VALUE); } //todo refactor with PolyStringWrapper @@ -465,4 +467,16 @@ public FormComponent getValidatableComponent() { return getOrigValuePanel().getBaseFormComponent(); } + @Override + public FormComponent getBaseFormComponent() { + return getOrigValuePanel().getBaseFormComponent(); + } + + private IModel getModel(){ + return model; + } + + private PolyString getModelObject(){ + return model == null ? null : model.getObject(); + } } From 85a441b15fe49416ed29d13cb413483941b69a2e Mon Sep 17 00:00:00 2001 From: kate Date: Tue, 21 Jan 2020 13:26:52 +0100 Subject: [PATCH 2/3] EOF exception fix --- .../objects/objecttemplate/create-name-after-self-reg.xml | 2 +- .../configuration/objects/valuepolicies/mail-nonce.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/testing/schrodingertest/src/test/resources/configuration/objects/objecttemplate/create-name-after-self-reg.xml b/testing/schrodingertest/src/test/resources/configuration/objects/objecttemplate/create-name-after-self-reg.xml index 3f8dbbb30cf..722c1bf429f 100644 --- a/testing/schrodingertest/src/test/resources/configuration/objects/objecttemplate/create-name-after-self-reg.xml +++ b/testing/schrodingertest/src/test/resources/configuration/objects/objecttemplate/create-name-after-self-reg.xml @@ -41,4 +41,4 @@ - \ No newline at end of file + diff --git a/testing/schrodingertest/src/test/resources/configuration/objects/valuepolicies/mail-nonce.xml b/testing/schrodingertest/src/test/resources/configuration/objects/valuepolicies/mail-nonce.xml index ed8b741b85c..e89c8bf9b8f 100644 --- a/testing/schrodingertest/src/test/resources/configuration/objects/valuepolicies/mail-nonce.xml +++ b/testing/schrodingertest/src/test/resources/configuration/objects/valuepolicies/mail-nonce.xml @@ -23,4 +23,4 @@ - \ No newline at end of file + From cc8fd6487e99c50b9572b8a1297d88167cfc3cef Mon Sep 17 00:00:00 2001 From: kate Date: Tue, 21 Jan 2020 13:52:57 +0100 Subject: [PATCH 3/3] MID-5979 fix lookupTable for polystring attributes --- .../factory/PolyStringEditorPanelFactory.java | 21 +++++++++- .../component/PolyStringEditorPanel.java | 39 ++++++++++++++++--- 2 files changed, 54 insertions(+), 6 deletions(-) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/PolyStringEditorPanelFactory.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/PolyStringEditorPanelFactory.java index 622f9789d01..fb287759544 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/PolyStringEditorPanelFactory.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/PolyStringEditorPanelFactory.java @@ -11,12 +11,14 @@ import com.evolveum.midpoint.gui.api.registry.GuiComponentRegistry; import com.evolveum.midpoint.prism.polystring.PolyString; import com.evolveum.midpoint.gui.impl.prism.component.PolyStringEditorPanel; +import com.evolveum.midpoint.xml.ns._public.common.common_3.LookupTableType; import com.evolveum.prism.xml.ns._public.types_3.PolyStringType; import org.apache.wicket.markup.html.panel.Panel; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; +import java.util.Iterator; /** * Created by honchar @@ -40,7 +42,24 @@ public boolean match(IW wrapper) { @Override protected Panel getPanel(PrismPropertyPanelContext panelCtx) { - PolyStringEditorPanel panel = new PolyStringEditorPanel(panelCtx.getComponentId(), panelCtx.getRealValueModel()); + PolyStringEditorPanel panel = new PolyStringEditorPanel(panelCtx.getComponentId(), panelCtx.getRealValueModel()){ + private static final long serialVersionUID = 1L; + + @Override + protected LookupTableType getPredefinedValues(){ + return panelCtx.getPredefinedValues(); + } + + @Override + protected boolean hasValueEnumerationRef(){ + return panelCtx.hasValueEnumerationRef(); + } + + @Override + protected Iterator getPredefinedValuesIterator(String input) { + return (Iterator) prepareAutoCompleteList(input, panelCtx.getPredefinedValues(), panelCtx.getPageBase().getLocalizationService()).iterator(); + } + }; return panel; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/component/PolyStringEditorPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/component/PolyStringEditorPanel.java index 8a719315590..1234f252fd1 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/component/PolyStringEditorPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/component/PolyStringEditorPanel.java @@ -6,6 +6,7 @@ */ package com.evolveum.midpoint.gui.impl.prism.component; +import com.evolveum.midpoint.gui.api.component.autocomplete.AutoCompleteTextPanel; import com.evolveum.midpoint.gui.api.model.LoadableModel; import com.evolveum.midpoint.gui.api.page.PageBase; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; @@ -19,6 +20,7 @@ import com.evolveum.midpoint.web.page.admin.configuration.component.EmptyOnBlurAjaxFormUpdatingBehaviour; import com.evolveum.midpoint.web.page.admin.configuration.component.EmptyOnChangeAjaxFormUpdatingBehavior; import com.evolveum.midpoint.web.security.MidPointApplication; +import com.evolveum.midpoint.xml.ns._public.common.common_3.LookupTableType; import com.evolveum.prism.xml.ns._public.types_3.PolyStringTranslationType; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.MapUtils; @@ -135,8 +137,8 @@ public void onClick(AjaxRequestTarget target) { origValueWithButton.setOutputMarkupId(true); originValueContainer.add(origValueWithButton); - //todo better to create PolyStringWrapper ? how to create new value? - TextPanel origValuePanel = new TextPanel(ID_ORIG_VALUE, new IModel() { + InputPanel origValuePanel; + IModel origValueModel = new IModel() { private static final long serialVersionUID = 1L; @Override @@ -160,7 +162,22 @@ public void setObject(String object) { public void detach() { } - }, String.class, false); + }; + LookupTableType predefinedValues = getPredefinedValues(); + if (predefinedValues == null) { + origValuePanel = new TextPanel(ID_ORIG_VALUE, origValueModel, String.class, false); + } else { + origValuePanel = new AutoCompleteTextPanel(ID_ORIG_VALUE, origValueModel, String.class, + hasValueEnumerationRef(), predefinedValues) { + + private static final long serialVersionUID = 1L; + + @Override + public Iterator getIterator(String input) { + return getPredefinedValuesIterator(input); + } + }; + } origValuePanel.setOutputMarkupId(true); origValuePanel.getBaseFormComponent().add(new EmptyOnBlurAjaxFormUpdatingBehaviour()); origValueWithButton.add(origValuePanel); @@ -407,8 +424,8 @@ protected String load() { }); } - private TextPanel getOrigValuePanel(){ - return (TextPanel) get(ID_ORIGIN_VALUE_CONTAINER).get(ID_ORIG_VALUE_WITH_BUTTON).get(ID_ORIG_VALUE); + private InputPanel getOrigValuePanel(){ + return (InputPanel) get(ID_ORIGIN_VALUE_CONTAINER).get(ID_ORIG_VALUE_WITH_BUTTON).get(ID_ORIG_VALUE); } //todo refactor with PolyStringWrapper @@ -479,4 +496,16 @@ private IModel getModel(){ private PolyString getModelObject(){ return model == null ? null : model.getObject(); } + + protected LookupTableType getPredefinedValues(){ + return null; + } + + protected boolean hasValueEnumerationRef(){ + return false; + } + + protected Iterator getPredefinedValuesIterator(String input) { + return null; + } }