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);
