You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2016/07/20 14:58:12 UTC

[18/43] syncope git commit: [SYNCOPE-896] fix for drop down null valid flag + destination realm management improvement

[SYNCOPE-896] fix for drop down null valid flag + destination realm management improvement


Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/49b4f39c
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/49b4f39c
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/49b4f39c

Branch: refs/heads/2_0_NO_JAXB
Commit: 49b4f39c8aaf35362f72dc23d1698e1d1879b8d2
Parents: e3fc226
Author: fmartelli <fa...@gmail.com>
Authored: Fri Jul 8 16:54:56 2016 +0200
Committer: fmartelli <fa...@gmail.com>
Committed: Fri Jul 8 16:54:56 2016 +0200

----------------------------------------------------------------------
 .../html/form/AjaxDropDownChoicePanel.java      | 10 +++++-
 .../any/AnyObjectTemplateWizardBuilder.java     | 12 +++++++
 .../wizards/any/AnyObjectWizardBuilder.java     |  9 ++---
 .../console/wizards/any/AnyWizardBuilder.java   | 15 ++++----
 .../client/console/wizards/any/Details.java     | 38 ++++++++++++++++----
 .../wizards/any/GroupTemplateWizardBuilder.java | 12 +++++++
 .../console/wizards/any/GroupWizardBuilder.java |  9 ++---
 .../wizards/any/UserTemplateWizardBuilder.java  | 12 +++++++
 .../console/wizards/any/UserWizardBuilder.java  |  9 ++---
 9 files changed, 95 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/49b4f39c/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDropDownChoicePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDropDownChoicePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDropDownChoicePanel.java
index f08684f..7a1bfc4 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDropDownChoicePanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDropDownChoicePanel.java
@@ -59,6 +59,14 @@ public class AjaxDropDownChoicePanel<T extends Serializable> extends FieldPanel<
                 }
             });
         }
+        
+        setNullValid(true);
+    }
+
+    @Override
+    public FieldPanel<T> setRequired(final boolean required) {
+        setNullValid(!required);
+        return super.setRequired(required);
     }
 
     @SuppressWarnings("unchecked")
@@ -79,7 +87,7 @@ public class AjaxDropDownChoicePanel<T extends Serializable> extends FieldPanel<
         return this;
     }
 
-    public AjaxDropDownChoicePanel<T> setNullValid(final boolean validity) {
+    public final AjaxDropDownChoicePanel<T> setNullValid(final boolean validity) {
         BootstrapSelect.class.cast(field).setNullValid(validity);
         return this;
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/49b4f39c/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectTemplateWizardBuilder.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectTemplateWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectTemplateWizardBuilder.java
index da37ad5..239a503 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectTemplateWizardBuilder.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectTemplateWizardBuilder.java
@@ -31,6 +31,8 @@ public class AnyObjectTemplateWizardBuilder extends AnyObjectWizardBuilder
 
     private static final long serialVersionUID = 6716803168859873877L;
 
+    private final TemplatableTO templatable;
+
     public AnyObjectTemplateWizardBuilder(
             final TemplatableTO templatable,
             final String anyType,
@@ -38,6 +40,7 @@ public class AnyObjectTemplateWizardBuilder extends AnyObjectWizardBuilder
             final AnyObjectFormLayoutInfo formLayoutInfo,
             final PageReference pageRef) {
         super(null, anyTypeClasses, formLayoutInfo, pageRef);
+        this.templatable = templatable;
 
         if (templatable.getTemplates().containsKey(anyType)) {
             setItem(new AnyWrapper<>(AnyObjectTO.class.cast(templatable.getTemplates().get(anyType))));
@@ -52,6 +55,15 @@ public class AnyObjectTemplateWizardBuilder extends AnyObjectWizardBuilder
     }
 
     @Override
+    protected Details<AnyObjectTO> addOptionalDetailsPanel(final AnyWrapper<AnyObjectTO> modelObject) {
+        final Details<AnyObjectTO> details = super.addOptionalDetailsPanel(modelObject);
+        if (templatable instanceof RealmTO) {
+            details.disableRealmSpecification();
+        }
+        return details;
+    }
+
+    @Override
     public AjaxWizard<AnyWrapper<AnyObjectTO>> build(final String id) {
         return super.build(id, AjaxWizard.Mode.TEMPLATE);
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/49b4f39c/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectWizardBuilder.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectWizardBuilder.java
index 9a8ad87..3eb30ea 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectWizardBuilder.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectWizardBuilder.java
@@ -31,7 +31,6 @@ import org.apache.syncope.common.lib.patch.AnyObjectPatch;
 import org.apache.syncope.common.lib.to.AnyObjectTO;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
 import org.apache.wicket.PageReference;
-import org.apache.wicket.extensions.wizard.WizardModel;
 import org.apache.wicket.model.util.ListModel;
 
 public class AnyObjectWizardBuilder extends AnyWizardBuilder<AnyObjectTO> implements AnyObjectForm {
@@ -72,13 +71,11 @@ public class AnyObjectWizardBuilder extends AnyWizardBuilder<AnyObjectTO> implem
     }
 
     @Override
-    protected AnyObjectWizardBuilder addOptionalDetailsPanel(
-            final AnyWrapper<AnyObjectTO> modelObject, final WizardModel wizardModel) {
-        wizardModel.add(new AnyObjectDetails(
+    protected Details<AnyObjectTO> addOptionalDetailsPanel(final AnyWrapper<AnyObjectTO> modelObject) {
+        return new AnyObjectDetails(
                 modelObject,
                 new ListModel<>(Collections.<StatusBean>emptyList()),
                 mode == AjaxWizard.Mode.TEMPLATE,
-                modelObject.getInnerObject().getKey() != null, pageRef));
-        return this;
+                modelObject.getInnerObject().getKey() != null, pageRef);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/49b4f39c/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyWizardBuilder.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyWizardBuilder.java
index 793ebc7..4df08c0 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyWizardBuilder.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyWizardBuilder.java
@@ -84,7 +84,10 @@ public abstract class AnyWizardBuilder<A extends AnyTO> extends AjaxWizardBuilde
     @Override
     protected WizardModel buildModelSteps(final AnyWrapper<A> modelObject, final WizardModel wizardModel) {
         // optional details panel step
-        addOptionalDetailsPanel(modelObject, wizardModel);
+        final Details<A> details = addOptionalDetailsPanel(modelObject);
+        if (details != null) {
+            wizardModel.add(details);
+        }
 
         if ((this instanceof GroupWizardBuilder)
                 && (modelObject.getInnerObject() instanceof GroupTO)
@@ -155,17 +158,17 @@ public abstract class AnyWizardBuilder<A extends AnyTO> extends AjaxWizardBuilde
         return wizardModel;
     }
 
-    protected AnyWizardBuilder<A> addOptionalDetailsPanel(
-            final AnyWrapper<A> modelObject, final WizardModel wizardModel) {
+    protected Details<A> addOptionalDetailsPanel(final AnyWrapper<A> modelObject) {
 
         if (modelObject.getInnerObject().getKey() != null) {
-            wizardModel.add(new Details<>(
+            return new Details<>(
                     modelObject,
                     new ListModel<>(Collections.<StatusBean>emptyList()),
                     mode == AjaxWizard.Mode.TEMPLATE,
                     true,
-                    pageRef));
+                    pageRef);
+        } else {
+            return null;
         }
-        return this;
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/49b4f39c/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Details.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Details.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Details.java
index 483539a..8e1ccfb 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Details.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Details.java
@@ -18,11 +18,17 @@
  */
 package org.apache.syncope.client.console.wizards.any;
 
+import java.util.ArrayList;
 import java.util.List;
-import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.Transformer;
 import org.apache.syncope.client.console.commons.status.StatusBean;
+import org.apache.syncope.client.console.rest.RealmRestClient;
+import org.apache.syncope.client.console.wicket.markup.html.form.AjaxDropDownChoicePanel;
 import org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel;
+import org.apache.syncope.client.console.wicket.markup.html.form.FieldPanel;
 import org.apache.syncope.common.lib.to.AnyTO;
+import org.apache.syncope.common.lib.to.RealmTO;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.extensions.wizard.WizardStep;
 import org.apache.wicket.model.IModel;
@@ -40,6 +46,8 @@ public class Details<T extends AnyTO> extends WizardStep {
 
     protected final StatusPanel statusPanel;
 
+    private final FieldPanel<String> realm;
+
     public Details(
             final AnyWrapper<T> wrapper,
             final IModel<List<StatusBean>> statusModel,
@@ -51,13 +59,26 @@ public class Details<T extends AnyTO> extends WizardStep {
 
         final T inner = wrapper.getInnerObject();
 
-        final AjaxTextFieldPanel realm = new AjaxTextFieldPanel(
-                "destinationRealm", "destinationRealm", new PropertyModel<String>(inner, "realm"), false);
-        add(realm.setReadOnly(StringUtils.isNotEmpty(inner.getRealm())));
         if (templateMode) {
-            realm.enableJexlHelp();
+            realm = new AjaxTextFieldPanel(
+                    "destinationRealm", "destinationRealm", new PropertyModel<String>(inner, "realm"), false);
+            AjaxTextFieldPanel.class.cast(realm).enableJexlHelp();
+        } else {
+            realm = new AjaxDropDownChoicePanel<>(
+                    "destinationRealm", "destinationRealm", new PropertyModel<String>(inner, "realm"), false);
+
+            ((AjaxDropDownChoicePanel<String>) realm).setChoices(CollectionUtils.collect(
+                    new RealmRestClient().list(),
+                    new Transformer<RealmTO, String>() {
+
+                @Override
+                public String transform(final RealmTO input) {
+                    return input.getFullPath();
+                }
+            }, new ArrayList<String>()));
         }
-        
+        add(realm);
+
         statusPanel = new StatusPanel("status", inner, statusModel, pageRef);
 
         add(statusPanel.setEnabled(includeStatusPanel).
@@ -67,6 +88,11 @@ public class Details<T extends AnyTO> extends WizardStep {
                 setEnabled(includeStatusPanel).setVisible(includeStatusPanel).setRenderBodyOnly(true));
     }
 
+    public Details<T> disableRealmSpecification() {
+        this.realm.setReadOnly(true);
+        return this;
+    }
+
     protected AnnotatedBeanPanel getGeneralStatusInformation(final String id, final T anyTO) {
         return new AnnotatedBeanPanel(id, anyTO);
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/49b4f39c/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupTemplateWizardBuilder.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupTemplateWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupTemplateWizardBuilder.java
index cccc25f..13f0698 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupTemplateWizardBuilder.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupTemplateWizardBuilder.java
@@ -31,12 +31,15 @@ public class GroupTemplateWizardBuilder extends GroupWizardBuilder implements Te
 
     private static final long serialVersionUID = 6716803168859873877L;
 
+    private final TemplatableTO templatable;
+
     public GroupTemplateWizardBuilder(
             final TemplatableTO templatable,
             final List<String> anyTypeClasses,
             final GroupFormLayoutInfo formLayoutInfo,
             final PageReference pageRef) {
         super(null, anyTypeClasses, formLayoutInfo, pageRef);
+        this.templatable = templatable;
 
         if (templatable.getTemplates().containsKey(AnyTypeKind.GROUP.name())) {
             setItem(new GroupWrapper(GroupTO.class.cast(templatable.getTemplates().get(AnyTypeKind.GROUP.name()))));
@@ -50,6 +53,15 @@ public class GroupTemplateWizardBuilder extends GroupWizardBuilder implements Te
     }
 
     @Override
+    protected Details<GroupTO> addOptionalDetailsPanel(final AnyWrapper<GroupTO> modelObject) {
+        final Details<GroupTO> details = super.addOptionalDetailsPanel(modelObject);
+        if (templatable instanceof RealmTO) {
+            details.disableRealmSpecification();
+        }
+        return details;
+    }
+
+    @Override
     public AjaxWizard<AnyWrapper<GroupTO>> build(final String id) {
         return super.build(id, AjaxWizard.Mode.TEMPLATE);
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/49b4f39c/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupWizardBuilder.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupWizardBuilder.java
index 875cca0..04f72dc 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupWizardBuilder.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupWizardBuilder.java
@@ -32,7 +32,6 @@ import org.apache.syncope.common.lib.patch.GroupPatch;
 import org.apache.syncope.common.lib.to.GroupTO;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
 import org.apache.wicket.PageReference;
-import org.apache.wicket.extensions.wizard.WizardModel;
 import org.apache.wicket.model.util.ListModel;
 
 public class GroupWizardBuilder extends AnyWizardBuilder<GroupTO> implements GroupForm {
@@ -88,13 +87,11 @@ public class GroupWizardBuilder extends AnyWizardBuilder<GroupTO> implements Gro
     }
 
     @Override
-    protected GroupWizardBuilder addOptionalDetailsPanel(
-            final AnyWrapper<GroupTO> modelObject, final WizardModel wizardModel) {
-        wizardModel.add(new GroupDetails(
+    protected Details<GroupTO> addOptionalDetailsPanel(final AnyWrapper<GroupTO> modelObject) {
+        return new GroupDetails(
                 GroupWrapper.class.cast(modelObject),
                 new ListModel<>(Collections.<StatusBean>emptyList()),
                 mode == AjaxWizard.Mode.TEMPLATE,
-                modelObject.getInnerObject().getKey() != null, pageRef));
-        return this;
+                modelObject.getInnerObject().getKey() != null, pageRef);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/49b4f39c/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserTemplateWizardBuilder.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserTemplateWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserTemplateWizardBuilder.java
index a795cd7..9873e35 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserTemplateWizardBuilder.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserTemplateWizardBuilder.java
@@ -31,12 +31,15 @@ public class UserTemplateWizardBuilder extends UserWizardBuilder implements Temp
 
     private static final long serialVersionUID = 6716803168859873877L;
 
+    private final TemplatableTO templatable;
+
     public UserTemplateWizardBuilder(
             final TemplatableTO templatable,
             final List<String> anyTypeClasses,
             final UserFormLayoutInfo formLayoutInfo,
             final PageReference pageRef) {
         super(null, anyTypeClasses, formLayoutInfo, pageRef);
+        this.templatable = templatable;
 
         if (templatable.getTemplates().containsKey(AnyTypeKind.USER.name())) {
             setItem(new UserWrapper(UserTO.class.cast(templatable.getTemplates().get(AnyTypeKind.USER.name()))));
@@ -50,6 +53,15 @@ public class UserTemplateWizardBuilder extends UserWizardBuilder implements Temp
     }
 
     @Override
+    protected Details<UserTO> addOptionalDetailsPanel(final AnyWrapper<UserTO> modelObject) {
+        final Details<UserTO> details = super.addOptionalDetailsPanel(modelObject);
+        if (templatable instanceof RealmTO) {
+            details.disableRealmSpecification();
+        }
+        return details;
+    }
+
+    @Override
     public AjaxWizard<AnyWrapper<UserTO>> build(final String id) {
         return super.build(id, AjaxWizard.Mode.TEMPLATE);
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/49b4f39c/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserWizardBuilder.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserWizardBuilder.java
index 8d4d758..11078e7 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserWizardBuilder.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserWizardBuilder.java
@@ -35,7 +35,6 @@ import org.apache.syncope.common.lib.patch.UserPatch;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.wicket.PageReference;
-import org.apache.wicket.extensions.wizard.WizardModel;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.util.ListModel;
 
@@ -98,15 +97,13 @@ public class UserWizardBuilder extends AnyWizardBuilder<UserTO> implements UserF
     }
 
     @Override
-    protected UserWizardBuilder addOptionalDetailsPanel(
-            final AnyWrapper<UserTO> modelObject, final WizardModel wizardModel) {
+    protected Details<UserTO> addOptionalDetailsPanel(final AnyWrapper<UserTO> modelObject) {
 
-        wizardModel.add(new UserDetails(
+        return new UserDetails(
                 UserWrapper.class.cast(modelObject), statusModel, mode == AjaxWizard.Mode.TEMPLATE,
                 modelObject.getInnerObject().getKey() != null,
                 UserFormLayoutInfo.class.cast(formLayoutInfo).isPasswordManagement(),
-                pageRef));
-        return this;
+                pageRef);
     }
 
     /**