This is an automated email from the ASF dual-hosted git repository.

mdisabatino pushed a commit to branch 2_0_X
in repository https://gitbox.apache.org/repos/asf/syncope.git


The following commit(s) were added to refs/heads/2_0_X by this push:
     new 13ab92f  [SYNCOPE-1481] Fix membership attribute panel
13ab92f is described below

commit 13ab92f8b80171c2826dd01cc5a796a738ef1bf8
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..56bd9d9 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).getValues().isEmpty()) {
+                    return Boolean.TRUE.toString().equalsIgnoreCase(
+                            
attributableTO.getPlainAttr(schema).getValues().get(0));
+                }
+                return null;
+            }
+
+            @Override
+            public void setObject(final Serializable object) {
+                attributableTO.getPlainAttr(schema).getValues().clear();
+                attributableTO.getPlainAttr(schema).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 ae8729a..efadab9 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
@@ -30,6 +30,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).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).getValues().clear();
+                if (object != null) {
+                    
attributableTO.getPlainAttr(schema).getValues().add(object.toString());
+                }
+            }
+
+        });
+
+        return this;
+    }
+
     @Override
     public AjaxSpinnerFieldPanel<T> clone() {
         final AjaxSpinnerFieldPanel<T> panel
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..585abcd 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).getValues().isEmpty()) {
+                    try {
+                        return 
fmt.parse(attributableTO.getPlainAttr(schema).getValues().get(0));
+                    } catch (ParseException ex) {
+                        LOG.error("While parsing date", ex);
+                    }
+                }
+                return null;
+            }
+
+            @Override
+            public void setObject(final Serializable object) {
+                attributableTO.getPlainAttr(schema).getValues().clear();
+                if (object != null) {
+                    
attributableTO.getPlainAttr(schema).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 aa8cead..b0dce55 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).getValues().isEmpty())
+                        ? 
attributableTO.getPlainAttr(schema).getValues().get(0)
+                        : null;
+            }
+
+            @Override
+            public void setObject(final Serializable object) {
+                attributableTO.getPlainAttr(schema).getValues().clear();
+                if (object != null) {
+                    
attributableTO.getPlainAttr(schema).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 4cc07f8..4de3bf2 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.Date;
@@ -402,29 +401,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()).
-                                        getValues().isEmpty()
-                                                ? null
-                                                : 
attributableTO.getObject().getPlainAttr(attrTO.getSchema()).
-                                                        getValues().get(0);
-                            }
-
-                            @Override
-                            public void setObject(final Serializable object) {
-                                
attributableTO.getObject().getPlainAttr(attrTO.getSchema()).getValues().clear();
-                                if (object != null) {
-                                    
attributableTO.getObject().getPlainAttr(attrTO.getSchema()).
-                                            getValues().add(object.toString());
-                                }
-                            }
-                        });
+                        
FieldPanel.class.cast(panel).setNewModel(attributableTO.getObject(), 
attrTO.getSchema());
                     } else {
                         panel = new MultiFieldPanel.Builder<>(
                                 new ListModel<String>() {

Reply via email to