Repository: wicket Updated Branches: refs/heads/master 3b9e1169d -> 8f2a6d2c0
WICKET-5691 Wicket FileUploadField.getFileUploads() should never return null. Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/8f2a6d2c Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/8f2a6d2c Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/8f2a6d2c Branch: refs/heads/master Commit: 8f2a6d2c0c03e9c2bfd3df11dfa83060c601dee9 Parents: 3b9e116 Author: adelbene <[email protected]> Authored: Wed Sep 3 22:39:38 2014 +0200 Committer: adelbene <[email protected]> Committed: Wed Sep 3 22:40:32 2014 +0200 ---------------------------------------------------------------------- .../html/form/upload/FileUploadField.java | 9 +++--- .../html/form/upload/FileUploadFieldTest.java | 32 +++++++++++++++++--- 2 files changed, 32 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/8f2a6d2c/wicket-core/src/main/java/org/apache/wicket/markup/html/form/upload/FileUploadField.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/upload/FileUploadField.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/upload/FileUploadField.java index 9ebe306..d5b85fd 100644 --- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/upload/FileUploadField.java +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/upload/FileUploadField.java @@ -81,7 +81,7 @@ public class FileUploadField extends FormComponent<List<FileUpload>> } /** - * @return a list of all uploaded files. It will return more than one files if: + * @return a list of all uploaded files. The list is empty if no files were selected. It will return more than one files if: * <ul> * <li>HTML5 <input type="file" <strong>multiple</strong> /> is used</li> * <li>the browser supports <em>multiple</em> attribute</li> @@ -95,6 +95,8 @@ public class FileUploadField extends FormComponent<List<FileUpload>> return fileUploads; } + fileUploads = new ArrayList<FileUpload>(); + // Get request final Request request = getRequest(); @@ -112,15 +114,12 @@ public class FileUploadField extends FormComponent<List<FileUpload>> // bytes) if (item != null && item.getSize() > 0) { - if (fileUploads == null) - { - fileUploads = new ArrayList<FileUpload>(); - } fileUploads.add(new FileUpload(item)); } } } } + return fileUploads; } http://git-wip-us.apache.org/repos/asf/wicket/blob/8f2a6d2c/wicket-core/src/test/java/org/apache/wicket/markup/html/form/upload/FileUploadFieldTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/upload/FileUploadFieldTest.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/upload/FileUploadFieldTest.java index 203db1e..a9f6c51 100644 --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/upload/FileUploadFieldTest.java +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/upload/FileUploadFieldTest.java @@ -108,7 +108,7 @@ public class FileUploadFieldTest extends WicketTestCase } } } - + /** * @throws IOException */ @@ -126,7 +126,24 @@ public class FileUploadFieldTest extends WicketTestCase assertFalse(page.getForm().hasError()); } - /** */ + /** + * https://issues.apache.org/jira/browse/WICKET-5691 + * + * */ + @Test + public void testEmptyField() throws Exception + { + tester.startPage(TestValidationPage.class); + + FormTester formtester = tester.newFormTester("form"); + formtester.submit(); + + FileUploadField fileUploadField = (FileUploadField)tester.getComponentFromLastRenderedPage("form:upload"); + + assertEquals(0, fileUploadField.getFileUploads().size()); + } + + public static class TestValidationPage extends MockPageWithFormAndUploadField { /** */ @@ -147,11 +164,18 @@ public class FileUploadFieldTest extends WicketTestCase @Override public void validate(IValidatable<List<FileUpload>> validatable) { - if (validatable.getValue() instanceof List == false) + List<FileUpload> fieldValue = validatable.getValue(); + + if (fieldValue.size() == 0) + { + return; + } + + if (fieldValue instanceof List == false) { validatable.error(new ValidationError().addKey("validatable value type not expected")); } - FileUpload upload = validatable.getValue().get(0); + FileUpload upload = fieldValue.get(0); if (!upload.getClientFileName().contains(TEST_FILE_NAME)) { validatable.error(new ValidationError().addKey("uploaded file name not expected"));
