This is an automated email from the ASF dual-hosted git repository.
mdisabatino pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/master by this push:
new bd70d14 [SYNCOPE-1481] Fix membership attribute panel
bd70d14 is described below
commit bd70d14885d5f03fca33f49558db49774a78e15d
Author: Marco Di Sabatino Di Diodoro <[email protected]>
AuthorDate: Tue Aug 13 10:33:08 2019 +0200
[SYNCOPE-1481] Fix membership attribute panel
---
.../markup/html/form/AjaxCheckBoxPanel.java | 28 ++++++++++++++++
.../markup/html/form/AjaxSpinnerFieldPanel.java | 39 ++++++++++++++++++++++
.../commons/markup/html/form/DateFieldPanel.java | 32 ++++++++++++++++++
.../ui/commons/markup/html/form/FieldPanel.java | 26 +++++++++++++++
.../client/console/wizards/any/PlainAttrs.java | 37 ++++----------------
5 files changed, 132 insertions(+), 30 deletions(-)
diff --git
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AjaxCheckBoxPanel.java
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AjaxCheckBoxPanel.java
index 596d9b8..895805b 100644
---
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AjaxCheckBoxPanel.java
+++
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AjaxCheckBoxPanel.java
@@ -22,6 +22,7 @@ import java.io.Serializable;
import java.util.List;
import org.apache.syncope.client.ui.commons.Constants;
import
org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
+import org.apache.syncope.common.lib.Attributable;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.form.CheckBox;
import org.apache.wicket.markup.html.list.ListItem;
@@ -121,4 +122,31 @@ public class AjaxCheckBoxPanel extends FieldPanel<Boolean>
{
return this;
}
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ public FieldPanel<Boolean> setNewModel(final Attributable 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/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AjaxSpinnerFieldPanel.java
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AjaxSpinnerFieldPanel.java
index da80826..3e2181f 100644
---
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AjaxSpinnerFieldPanel.java
+++
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AjaxSpinnerFieldPanel.java
@@ -29,6 +29,7 @@ import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.common.lib.Attributable;
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 Attributable 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/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/DateFieldPanel.java
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/DateFieldPanel.java
index be22f64..ccaf57b 100644
---
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/DateFieldPanel.java
+++
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/DateFieldPanel.java
@@ -24,6 +24,7 @@ import java.text.ParseException;
import java.util.Date;
import java.util.List;
import org.apache.commons.lang3.time.FastDateFormat;
+import org.apache.syncope.common.lib.Attributable;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
import org.apache.wicket.markup.html.list.ListItem;
@@ -120,6 +121,37 @@ public abstract class DateFieldPanel extends
FieldPanel<Date> {
return this;
}
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ public FieldPanel<Date> setNewModel(final Attributable 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/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/FieldPanel.java
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/FieldPanel.java
index cb01437..1fedce4 100644
---
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/FieldPanel.java
+++
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/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.Attributable;
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 Attributable 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/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java
index db02d27..9d5953f 100644
---
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java
+++
b/client/idrepo/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 org.apache.syncope.client.ui.commons.wizards.any.UserWrapper;
import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
import java.util.ArrayList;
@@ -215,12 +214,12 @@ public class PlainAttrs extends
AbstractAttrs<PlainSchemaTO> {
attrs.addAll(membershipSchemas.get(membershipTO.getGroupKey()).values().stream().
map(schema -> {
Attr attrTO = new Attr();
- attrTO.setSchema(schema.getKey());
- if (attrMap.get(schema.getKey()) == null ||
attrMap.get(schema.getKey()).getValues().isEmpty()) {
- attrTO.getValues().add(StringUtils.EMPTY);
- } else {
-
attrTO.getValues().addAll(attrMap.get(schema.getKey()).getValues());
- }
+ attrTO.setSchema(schema.getKey());
+ if (attrMap.get(schema.getKey()) == null ||
attrMap.get(schema.getKey()).getValues().isEmpty()) {
+ attrTO.getValues().add(StringUtils.EMPTY);
+ } else {
+
attrTO.getValues().addAll(attrMap.get(schema.getKey()).getValues());
+ }
return attrTO;
}).collect(Collectors.toList()));
@@ -418,29 +417,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>() {