You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by fm...@apache.org on 2012/05/03 14:33:30 UTC

svn commit: r1333426 - in /incubator/syncope/trunk: console/src/main/java/org/apache/syncope/console/pages/panels/ console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/ core/src/test/java/org/apache/syncope/core/rest/

Author: fmartelli
Date: Thu May  3 12:33:29 2012
New Revision: 1333426

URL: http://svn.apache.org/viewvc?rev=1333426&view=rev
Log:
SYNCOPE-75 #comment provided test for multivalued attribute

Added:
    incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/DateFieldPanel.java
      - copied, changed from r1333020, incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/DateTimeFieldPanel.java
Modified:
    incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/AttributesPanel.java
    incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/DateTextFieldPanel.java
    incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/DateTimeFieldPanel.java
    incubator/syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/UserTestITCase.java

Modified: incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/AttributesPanel.java
URL: http://svn.apache.org/viewvc/incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/AttributesPanel.java?rev=1333426&r1=1333425&r2=1333426&view=diff
==============================================================================
--- incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/AttributesPanel.java (original)
+++ incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/AttributesPanel.java Thu May  3 12:33:29 2012
@@ -178,14 +178,12 @@ public class AttributesPanel extends Pan
                         : SyncopeConstants.DEFAULT_DATE_PATTERN;
 
                 if (!dataPattern.contains("H")) {
-
                     panel = new DateTextFieldPanel("panel", schemaTO.getName(), new Model(), dataPattern);
 
                     if (required) {
                         panel.addRequiredLabel();
                     }
                 } else {
-
                     panel = new DateTimeFieldPanel("panel", schemaTO.getName(), new Model(), dataPattern);
 
                     if (required) {

Copied: incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/DateFieldPanel.java (from r1333020, incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/DateTimeFieldPanel.java)
URL: http://svn.apache.org/viewvc/incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/DateFieldPanel.java?p2=incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/DateFieldPanel.java&p1=incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/DateTimeFieldPanel.java&r1=1333020&r2=1333426&rev=1333426&view=diff
==============================================================================
--- incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/DateTimeFieldPanel.java (original)
+++ incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/DateFieldPanel.java Thu May  3 12:33:29 2012
@@ -21,172 +21,34 @@ package org.apache.syncope.console.wicke
 import java.io.Serializable;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
+import java.util.Locale;
 import org.apache.syncope.client.SyncopeConstants;
-import org.apache.wicket.AttributeModifier;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
-import org.apache.wicket.extensions.yui.calendar.DateTimeField;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.FormComponent;
-import org.apache.wicket.markup.html.form.validation.AbstractFormValidator;
 import org.apache.wicket.markup.html.list.ListItem;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
-import org.apache.wicket.validation.IValidationError;
-import org.apache.wicket.validation.ValidationError;
 import org.springframework.util.StringUtils;
 
-public class DateTimeFieldPanel extends FieldPanel<Date> implements Cloneable {
+public class DateFieldPanel extends FieldPanel<Date> implements Cloneable {
 
     private static final long serialVersionUID = -428975732068281726L;
 
-    private final String datePattern;
-
-    private Form form = null;
-
-    protected static final ThreadLocal<SimpleDateFormat> DATE_FORMAT = new ThreadLocal<SimpleDateFormat>() {
-
-        @Override
-        protected SimpleDateFormat initialValue() {
-            return new SimpleDateFormat(SyncopeConstants.DEFAULT_DATE_PATTERN);
-        }
-    };
-
-    public DateTimeFieldPanel(final String id, final String name, final IModel<Date> model, final String datePattern) {
+    protected final String datePattern;
 
+    protected DateFieldPanel(final String id, final String name, final IModel<Date> model, final String datePattern) {
         super(id, name, model);
-
         this.datePattern = datePattern;
-
-        field = new DateTimeField("field", model);
-
-        final Calendar cal = Calendar.getInstance();
-
-        field.get("hours").add(new AjaxFormComponentUpdatingBehavior("onchange") {
-
-            private static final long serialVersionUID = -1107858522700306810L;
-
-            @Override
-            protected void onUpdate(AjaxRequestTarget art) {
-                if (((DateTimeField) field).getHours() > 12) {
-                    cal.set(Calendar.HOUR_OF_DAY, ((DateTimeField) field).getHours());
-                } else {
-                    cal.set(Calendar.HOUR, ((DateTimeField) field).getHours());
-                }
-                field.setModelObject(cal.getTime());
-            }
-        });
-
-        field.get("minutes").add(new AjaxFormComponentUpdatingBehavior("onchange") {
-
-            private static final long serialVersionUID = -1107858522700306810L;
-
-            @Override
-            protected void onUpdate(final AjaxRequestTarget target) {
-                cal.set(Calendar.MINUTE, ((DateTimeField) field).getMinutes());
-                field.setModelObject(cal.getTime());
-            }
-        });
-
-        field.get("date").add(new AjaxFormComponentUpdatingBehavior("onchange") {
-
-            private static final long serialVersionUID = -1107858522700306810L;
-
-            @Override
-            protected void onUpdate(final AjaxRequestTarget target) {
-                cal.setTime(((DateTimeField) field).getDate());
-
-                if ("PM".equals("" + ((DateTimeField) field).getAmOrPm())) {
-                    cal.set(Calendar.AM_PM, Calendar.PM);
-                } else {
-                    cal.set(Calendar.AM_PM, Calendar.AM);
-                }
-
-                field.setModelObject(cal.getTime());
-            }
-        });
-
-        field.get("amOrPmChoice").add(new AjaxFormComponentUpdatingBehavior("onchange") {
-
-            private static final long serialVersionUID = -1107858522700306810L;
-
-            @Override
-            protected void onUpdate(final AjaxRequestTarget target) {
-                if ("PM".equals("" + ((DateTimeField) field).getAmOrPm())) {
-                    cal.set(Calendar.AM_PM, Calendar.PM);
-                } else {
-                    cal.set(Calendar.AM_PM, Calendar.AM);
-                }
-
-                field.setModelObject(cal.getTime());
-            }
-        });
-
-        add(field.setLabel(new Model(name)).setOutputMarkupId(true));
-    }
-
-    /**
-     * Custom form validator for registering and handling DateTimeField components that are in it.
-     */
-    private class DateTimeFormValidator extends AbstractFormValidator {
-
-        private static final long serialVersionUID = 6842264694946633582L;
-
-        private FormComponent[] dateTimeComponents;
-
-        public DateTimeFormValidator(final DateTimeField dateTimeComponent) {
-            if (dateTimeComponent == null) {
-                throw new IllegalArgumentException("argument dateTimeComponent cannot be null");
-            }
-
-            dateTimeComponents = new FormComponent[] { dateTimeComponent };
-        }
-
-        @Override
-        public FormComponent[] getDependentFormComponents() {
-            return dateTimeComponents;
-        }
-
-        /**
-         * Validation rule : all 3 fields (date,hours,minutes) must be not-null.
-         *
-         * @param form
-         */
-        @Override
-        public void validate(final Form form) {
-            final DateTimeField dateTimeField = (DateTimeField) dateTimeComponents[0];
-
-            if (!(dateTimeField.getDate() != null && dateTimeField.getHours() != null && dateTimeField.getMinutes() != null)) {
-
-                ValidationError ve = new ValidationError();
-                ve.setVariables(DateTimeFormValidator.this.variablesMap());
-                ve.addMessageKey(resourceKey());
-                dateTimeComponents[0].error((IValidationError) ve);
-            }
-        }
-    }
-
-    public FieldPanel setFormValidator(final Form form) {
-
-        if (field == null) {
-            LOG.error("Error setting form validator");
-        } else {
-            form.add(new DateTimeFormValidator(((DateTimeField) field)));
-            this.form = form;
-        }
-
-        return this;
     }
 
     @Override
     public FieldPanel setNewModel(final ListItem item) {
-        final SimpleDateFormat formatter = DATE_FORMAT.get();
+        final SimpleDateFormat formatter;
 
         if (datePattern != null) {
-            formatter.applyPattern(datePattern);
+            formatter = new SimpleDateFormat(datePattern, Locale.getDefault());
+        } else {
+            formatter = new SimpleDateFormat(SyncopeConstants.DEFAULT_DATE_PATTERN, Locale.getDefault());
         }
 
         IModel<Date> model = new Model() {
@@ -197,20 +59,22 @@ public class DateTimeFieldPanel extends 
             public Serializable getObject() {
                 Date date = null;
 
-                if (StringUtils.hasText((String) item.getModelObject())) {
-                    if (item.getModelObject() instanceof String) {
+                final Object obj = item.getModelObject();
+
+                if (obj != null && !obj.toString().isEmpty()) {
+                    if (obj instanceof String) {
                         // Parse string using datePattern
                         try {
-                            date = formatter.parse((String) item.getModelObject());
+                            date = formatter.parse(obj.toString());
                         } catch (ParseException e) {
                             LOG.error("While parsing date", e);
                         }
-                    } else if (item.getModelObject() instanceof Date) {
+                    } else if (obj instanceof Date) {
                         // Don't parse anything
-                        date = (Date) item.getModelObject();
+                        date = (Date) obj;
                     } else {
                         // consider Long
-                        date = new Date((Long) item.getModelObject());
+                        date = new Date((Long) obj);
                     }
                 }
 
@@ -219,17 +83,9 @@ public class DateTimeFieldPanel extends 
 
             @Override
             public void setObject(final Serializable object) {
-                if (object != null && object instanceof Date) {
-                    if (item.getModelObject() instanceof String) {
-                        // Parse string using datePattern
-                        item.setModelObject((String) formatter.format((Date) object));
-                    } else if (item.getModelObject() instanceof Date) {
-                        // Don't parse anything
-                        item.setModelObject((Date) object);
-                    } else {
-                        // consider Long
-                        item.setModelObject(((Date) object).getTime());
-                    }
+                if (object instanceof Date) {
+                    final Object obj = item.getModelObject();
+                    item.setModelObject(formatter.format((Date) object));
                 } else {
                     item.setModelObject(null);
                 }
@@ -242,10 +98,12 @@ public class DateTimeFieldPanel extends 
 
     @Override
     public FieldPanel setNewModel(final List<Serializable> list) {
-        final SimpleDateFormat formatter = DATE_FORMAT.get();
+        final SimpleDateFormat formatter;
 
         if (datePattern != null) {
-            formatter.applyPattern(datePattern);
+            formatter = new SimpleDateFormat(datePattern, Locale.getDefault());
+        } else {
+            formatter = new SimpleDateFormat(SyncopeConstants.DEFAULT_DATE_PATTERN, Locale.getDefault());
         }
 
         setNewModel(new Model() {
@@ -279,44 +137,4 @@ public class DateTimeFieldPanel extends 
 
         return this;
     }
-
-    @Override
-    public FieldPanel setStyleShet(String classes) {
-        field.get("date").add(AttributeModifier.replace("class", (classes != null
-                ? classes
-                : "") + " date_size"));
-
-        field.get("hours").add(AttributeModifier.replace("class", classes != null
-                ? classes
-                : ""));
-
-        field.get("minutes").add(AttributeModifier.replace("class", classes != null
-                ? classes
-                : ""));
-
-        field.get("amOrPmChoice").add(AttributeModifier.replace("class", classes != null
-                ? classes
-                : ""));
-
-        return this;
-    }
-
-    @Override
-    public FieldPanel clone() {
-        final FieldPanel panel = new DateTimeFieldPanel(id, name, new Model(null), datePattern);
-
-        panel.setRequired(isRequired());
-        panel.setReadOnly(isReadOnly());
-        panel.setTitle(title);
-
-        if (isRequiredLabelAdded) {
-            panel.addRequiredLabel();
-        }
-
-        if (form != null && isRequired()) {
-            ((DateTimeFieldPanel) panel).setFormValidator(form);
-        }
-
-        return panel;
-    }
 }

Modified: incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/DateTextFieldPanel.java
URL: http://svn.apache.org/viewvc/incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/DateTextFieldPanel.java?rev=1333426&r1=1333425&r2=1333426&view=diff
==============================================================================
--- incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/DateTextFieldPanel.java (original)
+++ incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/DateTextFieldPanel.java Thu May  3 12:33:29 2012
@@ -18,31 +18,21 @@
  */
 package org.apache.syncope.console.wicket.markup.html.form;
 
-import java.io.Serializable;
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.Date;
-import java.util.List;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
 import org.apache.wicket.datetime.markup.html.form.DateTextField;
 import org.apache.wicket.extensions.yui.calendar.DatePicker;
-import org.apache.wicket.markup.html.list.ListItem;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
-import org.springframework.util.StringUtils;
 
-public class DateTextFieldPanel extends FieldPanel<Date> implements Cloneable {
+public class DateTextFieldPanel extends DateFieldPanel {
 
     private static final long serialVersionUID = 1919852712185883648L;
-    private final String datePattern;
 
     public DateTextFieldPanel(final String id, final String name, final IModel<Date> model, final String datePattern) {
 
-        super(id, name, model);
-
-        this.datePattern = datePattern;
+        super(id, name, model, datePattern);
 
         field = DateTextField.forDatePattern("field", model, datePattern);
 
@@ -83,98 +73,8 @@ public class DateTextFieldPanel extends 
     }
 
     @Override
-    public FieldPanel setNewModel(final ListItem item) {
-        final DateFormat formatter = new SimpleDateFormat(datePattern);
-
-        IModel<Date> model = new Model() {
-
-            private static final long serialVersionUID = 6799404673615637845L;
-
-            @Override
-            public Serializable getObject() {
-                Date date = null;
-
-                if (StringUtils.hasText((String) item.getModelObject())) {
-                    if (item.getModelObject() instanceof String) {
-                        // Parse string using datePattern
-                        try {
-                            date = formatter.parse((String) item.getModelObject());
-                        } catch (ParseException e) {
-                            LOG.error("While parsing date", e);
-                        }
-                    } else if (item.getModelObject() instanceof Date) {
-                        // Don't parse anything
-                        date = (Date) item.getModelObject();
-                    } else {
-                        // consider Long
-                        date = new Date((Long) item.getModelObject());
-                    }
-                }
-
-                return date;
-            }
-
-            @Override
-            public void setObject(final Serializable object) {
-                if (object != null && object instanceof Date) {
-                    if (item.getModelObject() instanceof String) {
-                        // Parse string using datePattern
-                        item.setModelObject((String) formatter.format((Date) object));
-                    } else if (item.getModelObject() instanceof Date) {
-                        // Don't parse anything
-                        item.setModelObject((Date) object);
-                    } else {
-                        // consider Long
-                        item.setModelObject(((Date) object).getTime());
-                    }
-                } else {
-                    item.setModelObject(null);
-                }
-            }
-        };
-
-        field.setModel(model);
-        return this;
-    }
-
-    @Override
-    public FieldPanel setNewModel(final List<Serializable> list) {
-        setNewModel(new Model() {
-
-            private static final long serialVersionUID = 527651414610325237L;
-            private final DateFormat formatter = new SimpleDateFormat(datePattern);
-
-            @Override
-            public Serializable getObject() {
-                Date date = null;
-
-                if (list != null && !list.isEmpty() && StringUtils.hasText(list.get(0).toString())) {
-                    try {
-                        // Parse string using datePattern
-                        date = formatter.parse(list.get(0).toString());
-                    } catch (ParseException e) {
-                        LOG.error("invalid parse exception", e);
-                    }
-                }
-
-                return date;
-            }
-
-            @Override
-            public void setObject(final Serializable object) {
-                if (object != null && object instanceof Date) {
-                    list.clear();
-                    list.add((String) formatter.format((Date) object));
-                }
-            }
-        });
-
-        return this;
-    }
-
-    @Override
     public FieldPanel clone() {
-        final FieldPanel panel = new DateTextFieldPanel(id, name, new Model(null), datePattern);
+        final FieldPanel panel = new DateTextFieldPanel(id, name, new Model(), datePattern);
         panel.setRequired(isRequired());
         panel.setReadOnly(isReadOnly());
         panel.setTitle(title);

Modified: incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/DateTimeFieldPanel.java
URL: http://svn.apache.org/viewvc/incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/DateTimeFieldPanel.java?rev=1333426&r1=1333425&r2=1333426&view=diff
==============================================================================
--- incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/DateTimeFieldPanel.java (original)
+++ incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/DateTimeFieldPanel.java Thu May  3 12:33:29 2012
@@ -18,12 +18,10 @@
  */
 package org.apache.syncope.console.wicket.markup.html.form;
 
-import java.io.Serializable;
-import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Calendar;
 import java.util.Date;
-import java.util.List;
+import java.util.Locale;
 import org.apache.syncope.client.SyncopeConstants;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -32,34 +30,28 @@ import org.apache.wicket.extensions.yui.
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.FormComponent;
 import org.apache.wicket.markup.html.form.validation.AbstractFormValidator;
-import org.apache.wicket.markup.html.list.ListItem;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.validation.IValidationError;
 import org.apache.wicket.validation.ValidationError;
-import org.springframework.util.StringUtils;
 
-public class DateTimeFieldPanel extends FieldPanel<Date> implements Cloneable {
+public class DateTimeFieldPanel extends DateFieldPanel {
 
     private static final long serialVersionUID = -428975732068281726L;
 
-    private final String datePattern;
-
     private Form form = null;
 
     protected static final ThreadLocal<SimpleDateFormat> DATE_FORMAT = new ThreadLocal<SimpleDateFormat>() {
 
         @Override
         protected SimpleDateFormat initialValue() {
-            return new SimpleDateFormat(SyncopeConstants.DEFAULT_DATE_PATTERN);
+            return new SimpleDateFormat(SyncopeConstants.DEFAULT_DATE_PATTERN, Locale.getDefault());
         }
     };
 
     public DateTimeFieldPanel(final String id, final String name, final IModel<Date> model, final String datePattern) {
 
-        super(id, name, model);
-
-        this.datePattern = datePattern;
+        super(id, name, model, datePattern);
 
         field = new DateTimeField("field", model);
 
@@ -142,7 +134,7 @@ public class DateTimeFieldPanel extends 
                 throw new IllegalArgumentException("argument dateTimeComponent cannot be null");
             }
 
-            dateTimeComponents = new FormComponent[] { dateTimeComponent };
+            dateTimeComponents = new FormComponent[]{dateTimeComponent};
         }
 
         @Override
@@ -182,105 +174,6 @@ public class DateTimeFieldPanel extends 
     }
 
     @Override
-    public FieldPanel setNewModel(final ListItem item) {
-        final SimpleDateFormat formatter = DATE_FORMAT.get();
-
-        if (datePattern != null) {
-            formatter.applyPattern(datePattern);
-        }
-
-        IModel<Date> model = new Model() {
-
-            private static final long serialVersionUID = 6799404673615637845L;
-
-            @Override
-            public Serializable getObject() {
-                Date date = null;
-
-                if (StringUtils.hasText((String) item.getModelObject())) {
-                    if (item.getModelObject() instanceof String) {
-                        // Parse string using datePattern
-                        try {
-                            date = formatter.parse((String) item.getModelObject());
-                        } catch (ParseException e) {
-                            LOG.error("While parsing date", e);
-                        }
-                    } else if (item.getModelObject() instanceof Date) {
-                        // Don't parse anything
-                        date = (Date) item.getModelObject();
-                    } else {
-                        // consider Long
-                        date = new Date((Long) item.getModelObject());
-                    }
-                }
-
-                return date;
-            }
-
-            @Override
-            public void setObject(final Serializable object) {
-                if (object != null && object instanceof Date) {
-                    if (item.getModelObject() instanceof String) {
-                        // Parse string using datePattern
-                        item.setModelObject((String) formatter.format((Date) object));
-                    } else if (item.getModelObject() instanceof Date) {
-                        // Don't parse anything
-                        item.setModelObject((Date) object);
-                    } else {
-                        // consider Long
-                        item.setModelObject(((Date) object).getTime());
-                    }
-                } else {
-                    item.setModelObject(null);
-                }
-            }
-        };
-
-        field.setModel(model);
-        return this;
-    }
-
-    @Override
-    public FieldPanel setNewModel(final List<Serializable> list) {
-        final SimpleDateFormat formatter = DATE_FORMAT.get();
-
-        if (datePattern != null) {
-            formatter.applyPattern(datePattern);
-        }
-
-        setNewModel(new Model() {
-
-            private static final long serialVersionUID = 527651414610325237L;
-
-            @Override
-            public Serializable getObject() {
-                Date date = null;
-
-                if (list != null && !list.isEmpty() && StringUtils.hasText(list.get(0).toString())) {
-                    try {
-                        // Parse string using datePattern
-                        date = formatter.parse(list.get(0).toString());
-                    } catch (ParseException e) {
-                        LOG.error("invalid parse exception", e);
-                    }
-                }
-
-                return date;
-            }
-
-            @Override
-            public void setObject(final Serializable object) {
-                if (object != null && object instanceof Date) {
-                    list.clear();
-                    list.add((String) formatter.format((Date) object));
-                }
-            }
-        });
-
-        return this;
-    }
-
-    @Override
     public FieldPanel setStyleShet(String classes) {
         field.get("date").add(AttributeModifier.replace("class", (classes != null
                 ? classes

Modified: incubator/syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/UserTestITCase.java
URL: http://svn.apache.org/viewvc/incubator/syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/UserTestITCase.java?rev=1333426&r1=1333425&r2=1333426&view=diff
==============================================================================
--- incubator/syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/UserTestITCase.java (original)
+++ incubator/syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/UserTestITCase.java Thu May  3 12:33:29 2012
@@ -625,15 +625,15 @@ public class UserTestITCase extends Abst
 
         // 3. claim task from user1, not in role 7 (designated for 
         // approval in workflow definition): fail
-        PreemptiveAuthHttpRequestFactory requestFactory = ((PreemptiveAuthHttpRequestFactory) restTemplate
-                .getRequestFactory());
+        PreemptiveAuthHttpRequestFactory requestFactory = ((PreemptiveAuthHttpRequestFactory) restTemplate.
+                getRequestFactory());
         ((DefaultHttpClient) requestFactory.getHttpClient()).getCredentialsProvider().setCredentials(
                 requestFactory.getAuthScope(), new UsernamePasswordCredentials("user1", "password"));
 
         SyncopeClientException sce = null;
         try {
-            restTemplate.getForObject(BASE_URL + "user/workflow/form/claim/{taskId}", WorkflowFormTO.class, form
-                    .getTaskId());
+            restTemplate.getForObject(BASE_URL + "user/workflow/form/claim/{taskId}", WorkflowFormTO.class, form.
+                    getTaskId());
         } catch (SyncopeClientCompositeErrorException scce) {
             sce = scce.getException(SyncopeClientExceptionType.Workflow);
         }
@@ -643,8 +643,8 @@ public class UserTestITCase extends Abst
         ((DefaultHttpClient) requestFactory.getHttpClient()).getCredentialsProvider().setCredentials(
                 requestFactory.getAuthScope(), new UsernamePasswordCredentials("user4", "password"));
 
-        form = restTemplate.getForObject(BASE_URL + "user/workflow/form/claim/{taskId}", WorkflowFormTO.class, form
-                .getTaskId());
+        form = restTemplate.getForObject(BASE_URL + "user/workflow/form/claim/{taskId}", WorkflowFormTO.class, form.
+                getTaskId());
         assertNotNull(form);
         assertNotNull(form.getTaskId());
         assertNotNull(form.getOwner());
@@ -700,8 +700,8 @@ public class UserTestITCase extends Abst
         assertNull(form.getOwner());
 
         // 4. claim task (from admin)
-        form = restTemplate.getForObject(BASE_URL + "user/workflow/form/claim/{taskId}", WorkflowFormTO.class, form
-                .getTaskId());
+        form = restTemplate.getForObject(BASE_URL + "user/workflow/form/claim/{taskId}", WorkflowFormTO.class, form.
+                getTaskId());
         assertNotNull(form);
         assertNotNull(form.getTaskId());
         assertNotNull(form.getOwner());
@@ -717,8 +717,8 @@ public class UserTestITCase extends Abst
 
         exception = null;
         try {
-            final String username = jdbcTemplate.queryForObject("SELECT id FROM test WHERE id=?", String.class, userTO
-                    .getUsername());
+            final String username = jdbcTemplate.queryForObject("SELECT id FROM test WHERE id=?", String.class, userTO.
+                    getUsername());
             assertEquals(userTO.getUsername(), username);
         } catch (EmptyResultDataAccessException e) {
             exception = e;
@@ -767,7 +767,7 @@ public class UserTestITCase extends Abst
             assertEquals(HttpStatus.NOT_FOUND, e.getStatusCode());
         }
     }
-    
+
     @Test
     public void deleteByUsername() {
         UserTO userTO = getSampleTO("delete.by.username@apache.org");
@@ -778,8 +778,9 @@ public class UserTestITCase extends Abst
         userTO = restTemplate.postForObject(BASE_URL + "user/create", userTO, UserTO.class);
 
         long id = userTO.getId();
-        userTO = 
-            restTemplate.getForObject(BASE_URL + "user/deleteByUsername/{username}.json", UserTO.class, userTO.getUsername());
+        userTO =
+                restTemplate.getForObject(BASE_URL + "user/deleteByUsername/{username}.json", UserTO.class, userTO.
+                getUsername());
 
         assertNotNull(userTO);
         assertEquals(id, userTO.getId());
@@ -837,8 +838,7 @@ public class UserTestITCase extends Abst
             assertNotNull(user);
         }
 
-        users = Arrays.asList(restTemplate
-                .getForObject(BASE_URL + "user/list/{page}/{size}.json", UserTO[].class, 2, 2));
+        users = Arrays.asList(restTemplate.getForObject(BASE_URL + "user/list/{page}/{size}.json", UserTO[].class, 2, 2));
 
         assertNotNull(users);
         assertFalse(users.isEmpty());
@@ -871,8 +871,8 @@ public class UserTestITCase extends Abst
         fullnameLeafCond2.setSchema("fullname");
         fullnameLeafCond2.setExpression("%i%");
 
-        NodeCond searchCondition = NodeCond.getAndCond(NodeCond.getLeafCond(fullnameLeafCond1), NodeCond
-                .getLeafCond(fullnameLeafCond2));
+        NodeCond searchCondition = NodeCond.getAndCond(NodeCond.getLeafCond(fullnameLeafCond1), NodeCond.getLeafCond(
+                fullnameLeafCond2));
 
         assertTrue(searchCondition.checkValidity());
 
@@ -912,8 +912,8 @@ public class UserTestITCase extends Abst
         idRightCond.setSchema("id");
         idRightCond.setExpression("2");
 
-        final NodeCond searchCondition = NodeCond.getAndCond(NodeCond.getLeafCond(usernameLeafCond), NodeCond
-                .getLeafCond(idRightCond));
+        final NodeCond searchCondition = NodeCond.getAndCond(NodeCond.getLeafCond(usernameLeafCond), NodeCond.
+                getLeafCond(idRightCond));
 
         assertTrue(searchCondition.checkValidity());
 
@@ -963,8 +963,8 @@ public class UserTestITCase extends Abst
         fullnameLeafCond2.setSchema("fullname");
         fullnameLeafCond2.setExpression("%i%");
 
-        NodeCond searchCondition = NodeCond.getAndCond(NodeCond.getLeafCond(fullnameLeafCond1), NodeCond
-                .getLeafCond(fullnameLeafCond2));
+        NodeCond searchCondition = NodeCond.getAndCond(NodeCond.getLeafCond(fullnameLeafCond1), NodeCond.getLeafCond(
+                fullnameLeafCond2));
 
         assertTrue(searchCondition.checkValidity());
 
@@ -1320,8 +1320,8 @@ public class UserTestITCase extends Abst
         ConnObjectTO connObjectTO = restTemplate.getForObject(BASE_URL
                 + "/resource/{resourceName}/read/{objectId}.json", ConnObjectTO.class, dbTable.getName(), dbTableUID);
 
-        assertFalse(Boolean.parseBoolean(connObjectTO.getAttributeMap().get(OperationalAttributes.ENABLE_NAME)
-                .getValues().get(0)));
+        assertFalse(Boolean.parseBoolean(connObjectTO.getAttributeMap().get(OperationalAttributes.ENABLE_NAME).getValues().
+                get(0)));
 
         String ldapUID = userTO.getUsername();
         assertNotNull(ldapUID);
@@ -1341,8 +1341,8 @@ public class UserTestITCase extends Abst
         connObjectTO = restTemplate.getForObject(BASE_URL + "/resource/{resourceName}/read/{objectId}.json",
                 ConnObjectTO.class, dbTable.getName(), dbTableUID);
 
-        assertFalse(Boolean.parseBoolean(connObjectTO.getAttributeMap().get(OperationalAttributes.ENABLE_NAME)
-                .getValues().get(0)));
+        assertFalse(Boolean.parseBoolean(connObjectTO.getAttributeMap().get(OperationalAttributes.ENABLE_NAME).getValues().
+                get(0)));
 
         query = "?resourceNames=" + dbTable.getName() + "&performLocally=true"; // check also performLocally
 
@@ -1354,8 +1354,37 @@ public class UserTestITCase extends Abst
         connObjectTO = restTemplate.getForObject(BASE_URL + "/resource/{resourceName}/read/{objectId}.json",
                 ConnObjectTO.class, dbTable.getName(), dbTableUID);
 
-        assertTrue(Boolean.parseBoolean(connObjectTO.getAttributeMap().get(OperationalAttributes.ENABLE_NAME)
-                .getValues().get(0)));
+        assertTrue(Boolean.parseBoolean(connObjectTO.getAttributeMap().get(OperationalAttributes.ENABLE_NAME).getValues().
+                get(0)));
+    }
+
+    public void updateMultivalueAttribute() {
+        UserTO userTO = getSampleTO("multivalue@syncope.apache.org");
+        userTO.getResources().clear();
+        userTO.getDerivedAttributes().clear();
+        userTO.getVirtualAttributes().clear();
+
+        userTO = restTemplate.postForObject(BASE_URL + "user/create", userTO, UserTO.class);
+        assertNotNull(userTO);
+
+        AttributeTO loginDate = userTO.getAttributeMap().get("loginDate");
+        assertNotNull(loginDate);
+        assertEquals(1, loginDate.getValues().size());
+
+        UserMod userMod = new UserMod();
+
+        AttributeMod loginDateMod = new AttributeMod();
+        loginDateMod.addValueToBeAdded("2000-01-01");
+
+        userMod.setId(userTO.getId());
+        userMod.addAttributeToBeUpdated(loginDateMod);
+
+        userTO = restTemplate.postForObject(BASE_URL + "user/update", userMod, UserTO.class);
+        assertNotNull(userTO);
+
+        loginDate = userTO.getAttributeMap().get("loginDate");
+        assertNotNull(loginDate);
+        assertEquals(2, loginDate.getValues().size());
     }
 
     @Test(expected = EmptyResultDataAccessException.class)
@@ -1368,8 +1397,8 @@ public class UserTestITCase extends Abst
 
         JdbcTemplate jdbcTemplate = new JdbcTemplate(testDataSource);
 
-        String username = jdbcTemplate.queryForObject("SELECT id FROM test WHERE id=?", String.class, userTO
-                .getUsername());
+        String username = jdbcTemplate.queryForObject("SELECT id FROM test WHERE id=?", String.class,
+                userTO.getUsername());
 
         assertEquals(userTO.getUsername(), username);
 
@@ -1418,8 +1447,8 @@ public class UserTestITCase extends Abst
 
         assertTrue(original.getVirtualAttributes().isEmpty());
 
-        UserTO toBeUpdated = restTemplate.getForObject(BASE_URL + "user/read/{userId}.json", UserTO.class, original
-                .getId());
+        UserTO toBeUpdated = restTemplate.getForObject(BASE_URL + "user/read/{userId}.json", UserTO.class, original.
+                getId());
 
         AttributeTO virtual = new AttributeTO();
 
@@ -1540,8 +1569,8 @@ public class UserTestITCase extends Abst
         assertNotNull(actual.getDerivedAttributeMap().get("csvuserid"));
 
         ConnObjectTO connObjectTO = restTemplate.getForObject(BASE_URL
-                + "/resource/{resourceName}/read/{objectId}.json", ConnObjectTO.class, "resource-csv", actual
-                .getDerivedAttributeMap().get("csvuserid").getValues().get(0));
+                + "/resource/{resourceName}/read/{objectId}.json", ConnObjectTO.class, "resource-csv", actual.
+                getDerivedAttributeMap().get("csvuserid").getValues().get(0));
 
         assertNotNull(connObjectTO);
 
@@ -1587,8 +1616,8 @@ public class UserTestITCase extends Abst
         assertNotNull(actual.getDerivedAttributeMap().get("csvuserid"));
 
         ConnObjectTO connObjectTO = restTemplate.getForObject(BASE_URL
-                + "/resource/{resourceName}/read/{objectId}.json", ConnObjectTO.class, "resource-csv", actual
-                .getDerivedAttributeMap().get("csvuserid").getValues().get(0));
+                + "/resource/{resourceName}/read/{objectId}.json", ConnObjectTO.class, "resource-csv", actual.
+                getDerivedAttributeMap().get("csvuserid").getValues().get(0));
 
         assertNotNull(connObjectTO);