Author: andreapatricelli
Date: Thu Sep  4 15:43:10 2014
New Revision: 1622502

URL: http://svn.apache.org/r1622502
Log:
[SYNCOPE-546] improved model-typing in date time field panel, solved date 
deletion problem

Modified:
    
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/AjaxCheckBoxPanel.java
    
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/AjaxDropDownChoicePanel.java
    
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/AjaxNumberFieldPanel.java
    
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/AjaxPasswordFieldPanel.java
    
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/AjaxTextFieldPanel.java
    
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/DateFieldPanel.java
    
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/DateTextFieldPanel.java
    
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/FieldPanel.java

Modified: 
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/AjaxCheckBoxPanel.java
URL: 
http://svn.apache.org/viewvc/syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/AjaxCheckBoxPanel.java?rev=1622502&r1=1622501&r2=1622502&view=diff
==============================================================================
--- 
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/AjaxCheckBoxPanel.java
 (original)
+++ 
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/AjaxCheckBoxPanel.java
 Thu Sep  4 15:43:10 2014
@@ -34,7 +34,7 @@ public class AjaxCheckBoxPanel extends F
 
     public AjaxCheckBoxPanel(final String id, final String name, final 
IModel<Boolean> model) {
 
-        super(id, name, model);
+        super(id, model);
 
         field = new CheckBox("checkboxField", model);
         add(field.setLabel(new Model(name)).setOutputMarkupId(true));

Modified: 
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/AjaxDropDownChoicePanel.java
URL: 
http://svn.apache.org/viewvc/syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/AjaxDropDownChoicePanel.java?rev=1622502&r1=1622501&r2=1622502&view=diff
==============================================================================
--- 
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/AjaxDropDownChoicePanel.java
 (original)
+++ 
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/AjaxDropDownChoicePanel.java
 Thu Sep  4 15:43:10 2014
@@ -39,7 +39,7 @@ public class AjaxDropDownChoicePanel<T e
     }
 
     public AjaxDropDownChoicePanel(final String id, final String name, final 
IModel<T> model, boolean enableOnBlur) {
-        super(id, name, model);
+        super(id, model);
 
         field = new DropDownChoice<T>(
                 "dropDownChoiceField", model, Collections.<T>emptyList(), new 
ChoiceRenderer<T>());

Modified: 
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/AjaxNumberFieldPanel.java
URL: 
http://svn.apache.org/viewvc/syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/AjaxNumberFieldPanel.java?rev=1622502&r1=1622501&r2=1622502&view=diff
==============================================================================
--- 
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/AjaxNumberFieldPanel.java
 (original)
+++ 
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/AjaxNumberFieldPanel.java
 Thu Sep  4 15:43:10 2014
@@ -31,7 +31,7 @@ public class AjaxNumberFieldPanel extend
 
     public AjaxNumberFieldPanel(final String id, final String name, final 
IModel<Number> model, final Class reference) {
 
-        super(id, name, model);
+        super(id, model);
 
         field = new TextField<Number>("numberField", model, reference);
 

Modified: 
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/AjaxPasswordFieldPanel.java
URL: 
http://svn.apache.org/viewvc/syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/AjaxPasswordFieldPanel.java?rev=1622502&r1=1622501&r2=1622502&view=diff
==============================================================================
--- 
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/AjaxPasswordFieldPanel.java
 (original)
+++ 
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/AjaxPasswordFieldPanel.java
 Thu Sep  4 15:43:10 2014
@@ -31,7 +31,7 @@ public class AjaxPasswordFieldPanel exte
 
     public AjaxPasswordFieldPanel(final String id, final String name, final 
IModel<String> model) {
 
-        super(id, name, model);
+        super(id, model);
 
         field = new PasswordTextField("passwordField", model);
 

Modified: 
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/AjaxTextFieldPanel.java
URL: 
http://svn.apache.org/viewvc/syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/AjaxTextFieldPanel.java?rev=1622502&r1=1622501&r2=1622502&view=diff
==============================================================================
--- 
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/AjaxTextFieldPanel.java
 (original)
+++ 
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/AjaxTextFieldPanel.java
 Thu Sep  4 15:43:10 2014
@@ -41,7 +41,7 @@ public class AjaxTextFieldPanel extends 
 
     public AjaxTextFieldPanel(final String id, final String name, final 
IModel<String> model) {
 
-        super(id, name, model);
+        super(id, model);
 
         final AutoCompleteSettings settings = new AutoCompleteSettings();
         settings.setShowCompleteListOnFocusGain(true);

Modified: 
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/DateFieldPanel.java
URL: 
http://svn.apache.org/viewvc/syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/DateFieldPanel.java?rev=1622502&r1=1622501&r2=1622502&view=diff
==============================================================================
--- 
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/DateFieldPanel.java
 (original)
+++ 
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/DateFieldPanel.java
 Thu Sep  4 15:43:10 2014
@@ -35,15 +35,18 @@ public class DateFieldPanel extends Fiel
 
     private static final long serialVersionUID = -428975732068281726L;
 
+    protected final String name;
+
     protected final String datePattern;
 
     protected DateFieldPanel(final String id, final String name, final 
IModel<Date> model, final String datePattern) {
-        super(id, name, model);
+        super(id, model);
+        this.name = name;
         this.datePattern = datePattern;
     }
 
     @Override
-    public FieldPanel setNewModel(final ListItem item) {
+    public FieldPanel<Date> setNewModel(final ListItem item) {
         final SimpleDateFormat formatter;
 
         if (datePattern != null) {
@@ -52,12 +55,12 @@ public class DateFieldPanel extends Fiel
             formatter = new 
SimpleDateFormat(SyncopeConstants.DEFAULT_DATE_PATTERN, Locale.getDefault());
         }
 
-        IModel<Date> model = new Model() {
+        IModel<Date> model = new Model<Date>() {
 
             private static final long serialVersionUID = 6799404673615637845L;
 
             @Override
-            public Serializable getObject() {
+            public Date getObject() {
                 Date date = null;
 
                 final Object obj = item.getModelObject();
@@ -83,9 +86,10 @@ public class DateFieldPanel extends Fiel
             }
 
             @Override
-            public void setObject(final Serializable object) {
-                if (object instanceof Date) {
-                    item.setModelObject(formatter.format((Date) object));
+            @SuppressWarnings("unchecked")
+            public void setObject(final Date object) {
+                if (object != null) {
+                    item.setModelObject(formatter.format(object));
                 } else {
                     item.setModelObject(null);
                 }
@@ -97,7 +101,7 @@ public class DateFieldPanel extends Fiel
     }
 
     @Override
-    public FieldPanel setNewModel(final List<Serializable> list) {
+    public FieldPanel<Date> setNewModel(final List<Serializable> list) {
         final SimpleDateFormat formatter;
 
         if (datePattern != null) {
@@ -106,12 +110,12 @@ public class DateFieldPanel extends Fiel
             formatter = new 
SimpleDateFormat(SyncopeConstants.DEFAULT_DATE_PATTERN, Locale.getDefault());
         }
 
-        setNewModel(new Model() {
+        setNewModel(new Model<Date>() {
 
             private static final long serialVersionUID = 527651414610325237L;
 
             @Override
-            public Serializable getObject() {
+            public Date getObject() {
                 Date date = null;
 
                 if (list != null && !list.isEmpty() && 
StringUtils.hasText(list.get(0).toString())) {
@@ -127,10 +131,10 @@ public class DateFieldPanel extends Fiel
             }
 
             @Override
-            public void setObject(final Serializable object) {
-                if (object != null && object instanceof Date) {
-                    list.clear();
-                    list.add((String) formatter.format((Date) object));
+            public void setObject(final Date object) {
+                list.clear();
+                if (object != null) {
+                    list.add(formatter.format(object));
                 }
             }
         });

Modified: 
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/DateTextFieldPanel.java
URL: 
http://svn.apache.org/viewvc/syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/DateTextFieldPanel.java?rev=1622502&r1=1622501&r2=1622502&view=diff
==============================================================================
--- 
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/DateTextFieldPanel.java
 (original)
+++ 
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/DateTextFieldPanel.java
 Thu Sep  4 15:43:10 2014
@@ -18,7 +18,6 @@
  */
 package org.apache.syncope.console.wicket.markup.html.form;
 
-
 import java.util.Date;
 import org.apache.syncope.console.commons.Constants;
 
@@ -53,7 +52,7 @@ public class DateTextFieldPanel extends 
 
         field.add(getDatePicker());
 
-        add(field.setLabel(new Model(name)).setOutputMarkupId(true));
+        add(field.setLabel(new Model<String>(name)).setOutputMarkupId(true));
     }
 
     /**
@@ -77,7 +76,7 @@ public class DateTextFieldPanel extends 
 
     @Override
     public FieldPanel clone() {
-        final FieldPanel panel = new DateTextFieldPanel(id, name, new Model(), 
datePattern);
+        final FieldPanel panel = new DateTextFieldPanel(getId(), name, new 
Model<Date>(), datePattern);
         panel.setRequired(isRequired());
         panel.setReadOnly(isReadOnly());
         panel.setTitle(title);

Modified: 
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/FieldPanel.java
URL: 
http://svn.apache.org/viewvc/syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/FieldPanel.java?rev=1622502&r1=1622501&r2=1622502&view=diff
==============================================================================
--- 
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/FieldPanel.java
 (original)
+++ 
syncope/branches/1_1_X/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/FieldPanel.java
 Thu Sep  4 15:43:10 2014
@@ -20,6 +20,7 @@ package org.apache.syncope.console.wicke
 
 import java.io.Serializable;
 import java.util.List;
+import org.apache.commons.lang3.SerializationUtils;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.FormComponent;
@@ -36,17 +37,14 @@ public abstract class FieldPanel<T exten
 
     final protected String id;
 
-    final protected String name;
-
     protected String title = null;
 
     protected boolean isRequiredLabelAdded = false;
 
-    public FieldPanel(final String id, final String name, final IModel<T> 
model) {
+    public FieldPanel(final String id, final IModel<T> model) {
         super(id, model);
 
         this.id = id;
-        this.name = name;
 
         final Fragment fragment = new Fragment("required", 
"notRequiredFragment", this);
         add(fragment);
@@ -162,16 +160,10 @@ public abstract class FieldPanel<T exten
     }
 
     @Override
+    @SuppressWarnings({"rawtypes", "unchecked"})
     public FieldPanel clone() {
-        final FieldPanel panel;
-        try {
-            panel = this.getClass().getConstructor(new Class[]{String.class, 
String.class, IModel.class})
-                    .newInstance(id, name, new Model(null));
-        } catch (Exception e) {
-            LOG.error("Error cloning field panel", e);
-            return null;
-        }
-
+        final FieldPanel panel = SerializationUtils.clone(this);
+        panel.setModelObject(null);
         panel.setRequired(isRequired());
         panel.setReadOnly(isReadOnly());
         panel.setTitle(title);


Reply via email to