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 2020/05/18 10:05:39 UTC

[syncope] branch master updated: [SYNCOPE-1560] Proper use of Wicket model, removing duplicate AjaxFormSubmitBehavior

This is an automated email from the ASF dual-hosted git repository.

ilgrosso 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 02824d2  [SYNCOPE-1560] Proper use of Wicket model, removing duplicate AjaxFormSubmitBehavior
02824d2 is described below

commit 02824d269ad4674873513d58b270e8cdb473c739
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Mon May 18 11:49:12 2020 +0200

    [SYNCOPE-1560] Proper use of Wicket model, removing duplicate AjaxFormSubmitBehavior
---
 .../console/wizards/CSVPullWizardBuilder.java      | 13 +++++----
 .../wicket/markup/html/form/BinaryFieldPanel.java  | 31 +++++++++++-----------
 .../enduser/markup/html/form/BinaryFieldPanel.java | 20 +++++++-------
 .../client/console/panels/ImportMetadata.java      | 31 +++++-----------------
 4 files changed, 38 insertions(+), 57 deletions(-)

diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/CSVPullWizardBuilder.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/CSVPullWizardBuilder.java
index 244c86f..cc6ae54 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/CSVPullWizardBuilder.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/CSVPullWizardBuilder.java
@@ -129,6 +129,7 @@ public class CSVPullWizardBuilder extends BaseAjaxWizardBuilder<CSVPullSpec> {
         private static final long serialVersionUID = -4736870165235853919L;
 
         public Details(final CSVPullSpec spec) {
+            ListModel<FileUpload> fileUploadModel = new ListModel<>(new ArrayList<>());
             FileInputConfig csvFile = new FileInputConfig().
                     showUpload(false).showRemove(false).showPreview(false).
                     browseClass("btn btn-success").browseIcon("<i class=\"fas fa-folder-open\"></i> &nbsp;");
@@ -136,18 +137,16 @@ public class CSVPullWizardBuilder extends BaseAjaxWizardBuilder<CSVPullSpec> {
             if (!Locale.ENGLISH.getLanguage().equals(language)) {
                 csvFile.withLocale(language);
             }
-            BootstrapFileInputField csvUpload =
-                    new BootstrapFileInputField("csvUpload", new ListModel<>(new ArrayList<>()), csvFile);
-            csvUpload.setRequired(true);
-            csvUpload.setOutputMarkupId(true);
+            BootstrapFileInputField csvUpload = new BootstrapFileInputField("csvUpload", fileUploadModel, csvFile);
             csvUpload.add(new AjaxFormSubmitBehavior(Constants.ON_CHANGE) {
 
                 private static final long serialVersionUID = 5538299138211283825L;
 
                 @Override
                 protected void onSubmit(final AjaxRequestTarget target) {
-                    FileUpload uploadedFile = csvUpload.getFileUpload();
-                    if (uploadedFile != null) {
+                    if (!fileUploadModel.getObject().isEmpty()) {
+                        FileUpload uploadedFile = fileUploadModel.getObject().get(0);
+
                         if (maxUploadSize != null && uploadedFile.getSize() > maxUploadSize.bytes()) {
                             SyncopeConsoleSession.get().error(getString("tooLargeFile").
                                     replace("${maxUploadSizeB}", String.valueOf(maxUploadSize.bytes())).
@@ -159,7 +158,7 @@ public class CSVPullWizardBuilder extends BaseAjaxWizardBuilder<CSVPullSpec> {
                     }
                 }
             });
-            add(csvUpload);
+            add(csvUpload.setRequired(true).setOutputMarkupId(true));
 
             add(new CSVConfPanel("csvconf", spec));
         }
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/BinaryFieldPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/BinaryFieldPanel.java
index 11cb701..58e2ef6 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/BinaryFieldPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/BinaryFieldPanel.java
@@ -179,35 +179,34 @@ public class BinaryFieldPanel extends BaseBinaryFieldPanel {
         downloadLink.setOutputMarkupId(true);
         uploadForm.add(downloadLink);
 
+        ListModel<FileUpload> fileUploadModel = new ListModel<>(new ArrayList<>());
         FileInputConfig config = new FileInputConfig().
                 showUpload(false).showRemove(false).showPreview(false).
                 browseClass("btn btn-success").browseIcon("<i class=\"fas fa-folder-open\"></i> &nbsp;");
-            String language = SyncopeConsoleSession.get().getLocale().getLanguage();
-            if (!Locale.ENGLISH.getLanguage().equals(language)) {
-                config.withLocale(language);
-            }
-
-        fileUpload = new BootstrapFileInputField("fileUpload", new ListModel<>(new ArrayList<>()), config);
-        fileUpload.setOutputMarkupId(true);
-
+        String language = SyncopeConsoleSession.get().getLocale().getLanguage();
+        if (!Locale.ENGLISH.getLanguage().equals(language)) {
+            config.withLocale(language);
+        }
+        fileUpload = new BootstrapFileInputField("fileUpload", fileUploadModel, config);
         fileUpload.add(new AjaxFormSubmitBehavior(Constants.ON_CHANGE) {
 
             private static final long serialVersionUID = -1107858522700306810L;
 
             @Override
             protected void onSubmit(final AjaxRequestTarget target) {
-                FileUpload uploadedFile = fileUpload.getFileUpload();
-                if (uploadedFile != null) {
-                    if (maxUploadSize != null && uploadedFile.getSize() > maxUploadSize.bytes()) {
+                if (!fileUploadModel.getObject().isEmpty()) {
+                    FileUpload uploaded = fileUploadModel.getObject().get(0);
+
+                    if (maxUploadSize != null && uploaded.getSize() > maxUploadSize.bytes()) {
                         // SYNCOPE-1213 manage directly max upload file size (if set in properties file)
                         SyncopeConsoleSession.get().error(getString("tooLargeFile").
                                 replace("${maxUploadSizeB}", String.valueOf(maxUploadSize.bytes())).
                                 replace("${maxUploadSizeMB}", String.valueOf(maxUploadSize.bytes() / 1000000L)));
                         ((BasePage) getPageReference().getPage()).getNotificationPanel().refresh(target);
                     } else {
-                        byte[] uploadedBytes = uploadedFile.getBytes();
-                        String uploaded = Base64.getEncoder().encodeToString(uploadedBytes);
-                        field.setModelObject(uploaded);
+                        byte[] uploadedBytes = uploaded.getBytes();
+                        String uploadedEncoded = Base64.getEncoder().encodeToString(uploadedBytes);
+                        field.setModelObject(uploadedEncoded);
                         target.add(field);
 
                         if (previewer == null) {
@@ -219,8 +218,8 @@ public class BinaryFieldPanel extends BaseBinaryFieldPanel {
                             uploadForm.addOrReplace(fileUpload);
                         }
 
-                        setVisibleFileButtons(StringUtils.isNotBlank(uploaded));
-                        downloadLink.setEnabled(StringUtils.isNotBlank(uploaded));
+                        setVisibleFileButtons(StringUtils.isNotBlank(uploadedEncoded));
+                        downloadLink.setEnabled(StringUtils.isNotBlank(uploadedEncoded));
 
                         target.add(uploadForm);
                     }
diff --git a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/markup/html/form/BinaryFieldPanel.java b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/markup/html/form/BinaryFieldPanel.java
index fa61ae8..1a752cb 100644
--- a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/markup/html/form/BinaryFieldPanel.java
+++ b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/markup/html/form/BinaryFieldPanel.java
@@ -177,6 +177,7 @@ public class BinaryFieldPanel extends BaseBinaryFieldPanel {
         downloadLink.setOutputMarkupId(true);
         uploadForm.add(downloadLink);
 
+        ListModel<FileUpload> fileUploadModel = new ListModel<>(new ArrayList<>());
         FileInputConfig config = new FileInputConfig().
                 showUpload(false).showRemove(false).showPreview(false).
                 browseClass("btn btn-success").browseIcon("<i class=\"fas fa-folder-open\"></i> &nbsp;");
@@ -185,7 +186,7 @@ public class BinaryFieldPanel extends BaseBinaryFieldPanel {
             config.withLocale(language);
         }
 
-        fileUpload = new BootstrapFileInputField("fileUpload", new ListModel<>(new ArrayList<>()), config);
+        fileUpload = new BootstrapFileInputField("fileUpload", fileUploadModel, config);
         fileUpload.setOutputMarkupId(true);
 
         fileUpload.add(new AjaxFormSubmitBehavior(Constants.ON_CHANGE) {
@@ -194,18 +195,19 @@ public class BinaryFieldPanel extends BaseBinaryFieldPanel {
 
             @Override
             protected void onSubmit(final AjaxRequestTarget target) {
-                FileUpload uploadedFile = fileUpload.getFileUpload();
-                if (uploadedFile != null) {
-                    if (maxUploadSize != null && uploadedFile.getSize() > maxUploadSize.bytes()) {
+                if (!fileUploadModel.getObject().isEmpty()) {
+                    FileUpload uploaded = fileUploadModel.getObject().get(0);
+
+                    if (maxUploadSize != null && uploaded.getSize() > maxUploadSize.bytes()) {
                         // SYNCOPE-1213 manage directly max upload file size (if set in properties file)
                         SyncopeEnduserSession.get().error(getString("tooLargeFile").
                                 replace("${maxUploadSizeB}", String.valueOf(maxUploadSize.bytes())).
                                 replace("${maxUploadSizeMB}", String.valueOf(maxUploadSize.bytes() / 1000000L)));
                         ((BaseWebPage) getPageReference().getPage()).getNotificationPanel().refresh(target);
                     } else {
-                        byte[] uploadedBytes = uploadedFile.getBytes();
-                        String uploaded = Base64.getEncoder().encodeToString(uploadedBytes);
-                        field.setModelObject(uploaded);
+                        byte[] uploadedBytes = uploaded.getBytes();
+                        String uploadedEncoded = Base64.getEncoder().encodeToString(uploadedBytes);
+                        field.setModelObject(uploadedEncoded);
                         target.add(field);
 
                         if (previewer == null) {
@@ -217,8 +219,8 @@ public class BinaryFieldPanel extends BaseBinaryFieldPanel {
                             uploadForm.addOrReplace(fileUpload);
                         }
 
-                        setVisibleFileButtons(StringUtils.isNotBlank(uploaded));
-                        downloadLink.setEnabled(StringUtils.isNotBlank(uploaded));
+                        setVisibleFileButtons(StringUtils.isNotBlank(uploadedEncoded));
+                        downloadLink.setEnabled(StringUtils.isNotBlank(uploadedEncoded));
 
                         target.add(uploadForm);
                     }
diff --git a/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/panels/ImportMetadata.java b/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/panels/ImportMetadata.java
index f8c831d..37bee93 100644
--- a/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/panels/ImportMetadata.java
+++ b/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/panels/ImportMetadata.java
@@ -20,23 +20,19 @@ package org.apache.syncope.client.console.panels;
 
 import de.agilecoders.wicket.extensions.markup.html.bootstrap.form.fileinput.BootstrapFileInputField;
 import de.agilecoders.wicket.extensions.markup.html.bootstrap.form.fileinput.FileInputConfig;
-import java.io.ByteArrayInputStream;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Locale;
-import org.apache.commons.lang3.ArrayUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.rest.SAML2IdPsRestClient;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
 import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.upload.FileUpload;
-import org.apache.wicket.model.Model;
 import org.apache.wicket.model.util.ListModel;
 
 public class ImportMetadata extends TogglePanel<Serializable> {
@@ -49,8 +45,7 @@ public class ImportMetadata extends TogglePanel<Serializable> {
         Form<?> form = new Form<>("metadataForm");
         addInnerObject(form);
 
-        Model<byte[]> metadata = new Model<>();
-
+        ListModel<FileUpload> fileUploadModel = new ListModel<>(new ArrayList<>());
         FileInputConfig config = new FileInputConfig().
                 showUpload(false).showRemove(false).showPreview(false).
                 browseClass("btn btn-success").browseIcon("<i class=\"fas fa-folder-open\"></i> &nbsp;");
@@ -58,22 +53,8 @@ public class ImportMetadata extends TogglePanel<Serializable> {
         if (!Locale.ENGLISH.getLanguage().equals(language)) {
             config.withLocale(language);
         }
-        BootstrapFileInputField fileUpload =
-                new BootstrapFileInputField("fileUpload", new ListModel<>(new ArrayList<>()), config);
-        fileUpload.setOutputMarkupId(true);
-        fileUpload.add(new AjaxFormSubmitBehavior(Constants.ON_CHANGE) {
-
-            private static final long serialVersionUID = 5538299138211283825L;
-
-            @Override
-            protected void onSubmit(final AjaxRequestTarget target) {
-                FileUpload uploadedFile = fileUpload.getFileUpload();
-                if (uploadedFile != null) {
-                    metadata.setObject(uploadedFile.getBytes());
-                }
-            }
-        });
-        form.add(fileUpload);
+        BootstrapFileInputField fileUpload = new BootstrapFileInputField("fileUpload", fileUploadModel, config);
+        form.add(fileUpload.setOutputMarkupId(true));
 
         form.add(new AjaxSubmitLink("doUpload", form) {
 
@@ -81,10 +62,10 @@ public class ImportMetadata extends TogglePanel<Serializable> {
 
             @Override
             protected void onSubmit(final AjaxRequestTarget target) {
-                if (ArrayUtils.isNotEmpty(metadata.getObject())) {
+                if (!fileUploadModel.getObject().isEmpty()) {
+                    FileUpload uploaded = fileUploadModel.getObject().get(0);
                     try {
-                        SAML2IdPsRestClient.importIdPs(new ByteArrayInputStream(metadata.getObject()));
-                        metadata.setObject(null);
+                        SAML2IdPsRestClient.importIdPs(uploaded.getInputStream());
 
                         SyncopeConsoleSession.get().success(getString(Constants.OPERATION_SUCCEEDED));
                         toggle(target, false);