[SYNCOPE-1034] fixes type extension model object handling

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

Branch: refs/heads/2_0_X
Commit: 611b73b5489f24721927a19e2116c20311c6d0e9
Parents: 036243b
Author: fmartelli <fabio.marte...@gmail.com>
Authored: Tue Mar 7 15:01:20 2017 +0100
Committer: fmartelli <fabio.marte...@gmail.com>
Committed: Tue Mar 7 15:01:43 2017 +0100

----------------------------------------------------------------------
 .../panels/TypeExtensionDirectoryPanel.java     | 18 +++++++++++
 .../wizards/any/TypeExtensionWizardBuilder.java | 32 +++++++++++---------
 2 files changed, 36 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/611b73b5/client/console/src/main/java/org/apache/syncope/client/console/panels/TypeExtensionDirectoryPanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/TypeExtensionDirectoryPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/TypeExtensionDirectoryPanel.java
index 5333eef..2eefdfc 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/TypeExtensionDirectoryPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/TypeExtensionDirectoryPanel.java
@@ -198,4 +198,22 @@ public class TypeExtensionDirectoryPanel
         }
 
     }
+
+    @Override
+    protected void customActionCallback(final AjaxRequestTarget target) {
+        // change modal foter visibility
+        send(TypeExtensionDirectoryPanel.this, Broadcast.BUBBLE, new 
BaseModal.ChangeFooterVisibilityEvent(target));
+    }
+
+    @Override
+    protected void customActionOnCancelCallback(final AjaxRequestTarget 
target) {
+        // change modal foter visibility
+        send(TypeExtensionDirectoryPanel.this, Broadcast.BUBBLE, new 
BaseModal.ChangeFooterVisibilityEvent(target));
+    }
+
+    @Override
+    protected void customActionOnFinishCallback(final AjaxRequestTarget 
target) {
+        // change modal foter visibility
+        send(TypeExtensionDirectoryPanel.this, Broadcast.BUBBLE, new 
BaseModal.ChangeFooterVisibilityEvent(target));
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/611b73b5/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/TypeExtensionWizardBuilder.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/TypeExtensionWizardBuilder.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/TypeExtensionWizardBuilder.java
index fb0106e..fc69e26 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/TypeExtensionWizardBuilder.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/TypeExtensionWizardBuilder.java
@@ -18,9 +18,11 @@
  */
 package org.apache.syncope.client.console.wizards.any;
 
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.ListUtils;
 import org.apache.commons.collections4.Predicate;
 import org.apache.syncope.client.console.rest.AnyTypeClassRestClient;
 import org.apache.syncope.client.console.rest.AnyTypeRestClient;
@@ -65,32 +67,34 @@ public class TypeExtensionWizardBuilder extends 
AjaxWizardBuilder<TypeExtensionT
 
     @Override
     protected WizardModel buildModelSteps(final TypeExtensionTO modelObject, 
final WizardModel wizardModel) {
-        wizardModel.add(new Details(modelObject.getAnyType()));
+        wizardModel.add(new Details(modelObject));
         return wizardModel;
     }
-
+    
     @Override
-    protected void onCancelInternal(final TypeExtensionTO modelObject) {
-        this.groupTO.getTypeExtensions().remove(modelObject);
+    protected Serializable onApplyInternal(final TypeExtensionTO modelObject) {
+        final List<TypeExtensionTO> typeExtensions
+                = ListUtils.select(groupTO.getTypeExtensions(), new 
Predicate<TypeExtensionTO>() {
+
+                    @Override
+                    public boolean evaluate(final TypeExtensionTO object) {
+                        return 
!object.getAnyType().equals(modelObject.getAnyType());
+                    }
+                });
+        typeExtensions.add(modelObject);
+        groupTO.getTypeExtensions().clear();
+        groupTO.getTypeExtensions().addAll(typeExtensions);
+        return groupTO;
     }
 
     public class Details extends WizardStep {
 
         private static final long serialVersionUID = 6472869166547883903L;
 
-        public Details(final String anyType) {
+        public Details(final TypeExtensionTO typeExtensionTO) {
             super();
             setOutputMarkupId(true);
 
-            TypeExtensionTO typeExtensionTO;
-            if (groupTO.getTypeExtension(anyType) == null) {
-                typeExtensionTO = new TypeExtensionTO();
-                typeExtensionTO.setAnyType(anyType);
-                groupTO.getTypeExtensions().add(typeExtensionTO);
-            } else {
-                typeExtensionTO = groupTO.getTypeExtension(anyType);
-            }
-
             add(new Label("anyType.label", anyTypeLabel));
 
             if (typeExtensionTO.getAnyType() == null) {

Reply via email to