This is an automated email from the ASF dual-hosted git repository.
mdisabatino pushed a commit to branch 2_1_X
in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/2_1_X by this push:
new 1ff8728 [SYNCOPE-1481] Fix membership attribute panel
1ff8728 is described below
commit 1ff8728b99bbc12bbe5887005bb16f0140fa92a2
Author: Marco Di Sabatino Di Diodoro <[email protected]>
AuthorDate: Tue Aug 13 10:33:08 2019 +0200
[SYNCOPE-1481] Fix membership attribute panel
---
.../wicket/markup/html/form/AjaxCheckBoxPanel.java | 29 ++++++++++++++++
.../markup/html/form/AjaxSpinnerFieldPanel.java | 39 ++++++++++++++++++++++
.../wicket/markup/html/form/DateFieldPanel.java | 32 ++++++++++++++++++
.../wicket/markup/html/form/FieldPanel.java | 26 +++++++++++++++
.../client/console/wizards/any/PlainAttrs.java | 25 +-------------
5 files changed, 127 insertions(+), 24 deletions(-)
diff --git
a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxCheckBoxPanel.java
b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxCheckBoxPanel.java
index 2a2d6e9..f273cdc 100644
---
a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxCheckBoxPanel.java
+++
b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxCheckBoxPanel.java
@@ -18,10 +18,12 @@
*/
package org.apache.syncope.client.console.wicket.markup.html.form;
+
import java.io.Serializable;
import java.util.List;
import org.apache.syncope.client.console.commons.Constants;
import
org.apache.syncope.client.console.wicket.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
+import org.apache.syncope.common.lib.to.AttributableTO;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.form.CheckBox;
import org.apache.wicket.markup.html.list.ListItem;
@@ -121,4 +123,31 @@ public class AjaxCheckBoxPanel extends FieldPanel<Boolean>
{
return this;
}
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ public FieldPanel<Boolean> setNewModel(final AttributableTO
attributableTO, final String schema) {
+ field.setModel(new Model() {
+
+ private static final long serialVersionUID = -4214654722524358000L;
+
+ @Override
+ public Serializable getObject() {
+ if
(!attributableTO.getPlainAttr(schema).get().getValues().isEmpty()) {
+ return Boolean.TRUE.toString().equalsIgnoreCase(
+
attributableTO.getPlainAttr(schema).get().getValues().get(0));
+ }
+ return null;
+ }
+
+ @Override
+ public void setObject(final Serializable object) {
+ attributableTO.getPlainAttr(schema).get().getValues().clear();
+ attributableTO.getPlainAttr(schema).get().getValues().add(
+ object == null ? Boolean.FALSE.toString() :
object.toString());
+ }
+
+ });
+
+ return this;
+ }
+
}
diff --git
a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxSpinnerFieldPanel.java
b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxSpinnerFieldPanel.java
index 1621c9e..ea81daa 100644
---
a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxSpinnerFieldPanel.java
+++
b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxSpinnerFieldPanel.java
@@ -29,6 +29,7 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.apache.syncope.client.console.commons.Constants;
import
org.apache.syncope.client.console.wicket.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
+import org.apache.syncope.common.lib.to.AttributableTO;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.model.IModel;
@@ -173,6 +174,44 @@ public final class AjaxSpinnerFieldPanel<T extends Number>
extends FieldPanel<T>
return this;
}
+ @SuppressWarnings("unchecked")
+ public FieldPanel<T> setNewModel(final AttributableTO attributableTO,
final String schema) {
+ field.setModel(new Model() {
+
+ private static final long serialVersionUID = -4214654722524358000L;
+
+ @Override
+ public Serializable getObject() {
+ List<String> values =
attributableTO.getPlainAttr(schema).get().getValues();
+ if (!values.isEmpty()) {
+ return reference.equals(Integer.class)
+ ? reference.cast(NumberUtils.toInt(values.get(0)))
+ : reference.equals(Long.class)
+ ? reference.cast(NumberUtils.toLong(values.get(0)))
+ : reference.equals(Short.class)
+ ?
reference.cast(NumberUtils.toShort(values.get(0)))
+ : reference.equals(Float.class)
+ ?
reference.cast(NumberUtils.toFloat(values.get(0)))
+ : reference.equals(byte.class)
+ ? reference.cast(NumberUtils.toByte(values.get(0)))
+ :
reference.cast(NumberUtils.toDouble(values.get(0)));
+ }
+ return null;
+ }
+
+ @Override
+ public void setObject(final Serializable object) {
+ attributableTO.getPlainAttr(schema).get().getValues().clear();
+ if (object != null) {
+
attributableTO.getPlainAttr(schema).get().getValues().add(object.toString());
+ }
+ }
+
+ });
+
+ return this;
+ }
+
@Override
public AjaxSpinnerFieldPanel<T> clone() {
AjaxSpinnerFieldPanel<T> panel = new AjaxSpinnerFieldPanel<>(getId(),
name, reference, model, options, false);
diff --git
a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/DateFieldPanel.java
b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/DateFieldPanel.java
index 436f724..ff8f4d9 100644
---
a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/DateFieldPanel.java
+++
b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/DateFieldPanel.java
@@ -25,6 +25,7 @@ import java.util.Date;
import java.util.List;
import org.apache.commons.lang3.time.FastDateFormat;
import org.apache.syncope.client.console.SyncopeConsoleSession;
+import org.apache.syncope.common.lib.to.AttributableTO;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
import org.apache.wicket.markup.html.list.ListItem;
@@ -123,6 +124,37 @@ public class DateFieldPanel extends FieldPanel<Date> {
return this;
}
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ public FieldPanel<Date> setNewModel(final AttributableTO attributableTO,
final String schema) {
+ field.setModel(new Model() {
+
+ private static final long serialVersionUID = -4214654722524358000L;
+
+ @Override
+ public Serializable getObject() {
+ if
(!attributableTO.getPlainAttr(schema).get().getValues().isEmpty()) {
+ try {
+ return
fmt.parse(attributableTO.getPlainAttr(schema).get().getValues().get(0));
+ } catch (ParseException ex) {
+ LOG.error("While parsing date", ex);
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public void setObject(final Serializable object) {
+ attributableTO.getPlainAttr(schema).get().getValues().clear();
+ if (object != null) {
+
attributableTO.getPlainAttr(schema).get().getValues().add(fmt.format(object));
+ }
+ }
+
+ });
+
+ return this;
+ }
+
@Override
public void renderHead(final IHeaderResponse response) {
super.renderHead(response);
diff --git
a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/FieldPanel.java
b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/FieldPanel.java
index 636f685..2f23451 100644
---
a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/FieldPanel.java
+++
b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/FieldPanel.java
@@ -25,6 +25,7 @@ import java.io.Serializable;
import java.util.List;
import org.apache.commons.lang3.SerializationUtils;
import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.common.lib.to.AttributableTO;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.PageReference;
import org.apache.wicket.markup.html.form.FormComponent;
@@ -126,6 +127,31 @@ public abstract class FieldPanel<T extends Serializable>
extends AbstractFieldPa
return this;
}
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ public FieldPanel<T> setNewModel(final AttributableTO attributableTO,
final String schema) {
+ field.setModel(new Model() {
+
+ private static final long serialVersionUID = -4214654722524358000L;
+
+ @Override
+ public Serializable getObject() {
+ return
(!attributableTO.getPlainAttr(schema).get().getValues().isEmpty())
+ ?
attributableTO.getPlainAttr(schema).get().getValues().get(0)
+ : null;
+ }
+
+ @Override
+ public void setObject(final Serializable object) {
+ attributableTO.getPlainAttr(schema).get().getValues().clear();
+ if (object != null) {
+
attributableTO.getPlainAttr(schema).get().getValues().add(object.toString());
+ }
+ }
+ });
+
+ return this;
+ }
+
/**
* Used by MultiFieldPanel to attach items (usually strings).
* This method has to be overridden in case of type conversion is required.
diff --git
a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java
index 1a7d61c..edeaa95 100644
---
a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java
+++
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java
@@ -18,7 +18,6 @@
*/
package org.apache.syncope.client.console.wizards.any;
-import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -415,29 +414,7 @@ public class PlainAttrs extends
AbstractAttrs<PlainSchemaTO> {
AbstractFieldPanel<?> panel =
getFieldPanel(schemas.get(attrTO.getSchema()));
if (mode == AjaxWizard.Mode.TEMPLATE
||
!schemas.get(attrTO.getSchema()).isMultivalue()) {
-
- FieldPanel.class.cast(panel).setNewModel(new Model() {
-
- private static final long serialVersionUID =
-4214654722524358000L;
-
- @Override
- public Serializable getObject() {
- return
(!attributableTO.getObject().getPlainAttr(attrTO.getSchema()).
- get().getValues().isEmpty())
- ?
attributableTO.getObject().getPlainAttr(attrTO.getSchema()).
-
get().getValues().get(0)
- : null;
- }
-
- @Override
- public void setObject(final Serializable object) {
-
attributableTO.getObject().getPlainAttr(attrTO.getSchema()).get().getValues().clear();
- if (object != null) {
-
attributableTO.getObject().getPlainAttr(attrTO.getSchema()).
-
get().getValues().add(object.toString());
- }
- }
- });
+
FieldPanel.class.cast(panel).setNewModel(attributableTO.getObject(),
attrTO.getSchema());
} else {
// SYNCOPE-1476 set form as multipart to properly
manage membership attributes
panel = new MultiFieldPanel.Builder<>(new
ListModel<String>() {