From ee5e051f6e9e4ea716e5b84135ed520ad68927ef Mon Sep 17 00:00:00 2001 From: Tyrell Flurry Date: Thu, 28 May 2020 12:13:57 -0400 Subject: [PATCH 1/7] BAEL-4088: added source files. --- spring-multipart-file/pom.xml | 37 ++++++++++++++ .../src/main/resources/targetFile.tmp | 1 + .../file/ConvertMultipartFileExample.java | 51 +++++++++++++++++++ 3 files changed, 89 insertions(+) create mode 100644 spring-multipart-file/pom.xml create mode 100644 spring-multipart-file/src/main/resources/targetFile.tmp create mode 100644 spring-multipart-file/src/test/java/com/baeldung/multipart/file/ConvertMultipartFileExample.java diff --git a/spring-multipart-file/pom.xml b/spring-multipart-file/pom.xml new file mode 100644 index 0000000000..7b9eafeda5 --- /dev/null +++ b/spring-multipart-file/pom.xml @@ -0,0 +1,37 @@ + + + 4.0.0 + spring-multipart-file + 0.0.1-SNAPSHOT + spring-multipart-file + + + com.baeldung + parent-spring-5 + 0.0.1-SNAPSHOT + ../parent-spring-5 + + + + + org.springframework + spring-web + ${spring.version} + + + org.springframework + spring-mock + 2.0.8 + test + + + junit + junit + 4.12 + test + + + + diff --git a/spring-multipart-file/src/main/resources/targetFile.tmp b/spring-multipart-file/src/main/resources/targetFile.tmp new file mode 100644 index 0000000000..5e1c309dae --- /dev/null +++ b/spring-multipart-file/src/main/resources/targetFile.tmp @@ -0,0 +1 @@ +Hello World \ No newline at end of file diff --git a/spring-multipart-file/src/test/java/com/baeldung/multipart/file/ConvertMultipartFileExample.java b/spring-multipart-file/src/test/java/com/baeldung/multipart/file/ConvertMultipartFileExample.java new file mode 100644 index 0000000000..101e234921 --- /dev/null +++ b/spring-multipart-file/src/test/java/com/baeldung/multipart/file/ConvertMultipartFileExample.java @@ -0,0 +1,51 @@ +package com.baeldung.multipart.file; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + +import org.junit.Test; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.web.multipart.MultipartFile; + +public class ConvertMultipartFileExample { + + @Test + public void whenGetBytes_thenOK() throws IOException { + MultipartFile multipartFile = new MockMultipartFile("sourceFile.tmp", "Hello World".getBytes()); + + File file = new File("src/main/resources/targetFile.tmp"); + + OutputStream os = new FileOutputStream(file); + + os.write(multipartFile.getBytes()); + + os.close(); + } + + @Test + public void whenGetInputStream_thenOK() throws IOException { + MultipartFile multipartFile = new MockMultipartFile("sourceFile.tmp", "Hello World".getBytes()); + + InputStream initialStream = multipartFile.getInputStream(); + byte[] buffer = new byte[initialStream.available()]; + initialStream.read(buffer); + + File targetFile = new File("src/main/resources/targetFile.tmp"); + OutputStream outStream = new FileOutputStream(targetFile); + outStream.write(buffer); + + outStream.close(); + } + + @Test + public void whenTransferTo_thenOK() throws IllegalStateException, IOException { + MultipartFile multipartFile = new MockMultipartFile("sourceFile.tmp", "Hello World".getBytes()); + + File file = new File("src/main/resources/targetFile.tmp"); + + multipartFile.transferTo(file); + } +} From 012f903fe3dc8fc6f9a10aaed9b70789b0a2e013 Mon Sep 17 00:00:00 2001 From: Tyrell Flurry Date: Fri, 29 May 2020 18:13:35 -0400 Subject: [PATCH 2/7] BAEL-4088: removed tmp file. --- spring-multipart-file/src/main/resources/targetFile.tmp | 1 - 1 file changed, 1 deletion(-) delete mode 100644 spring-multipart-file/src/main/resources/targetFile.tmp diff --git a/spring-multipart-file/src/main/resources/targetFile.tmp b/spring-multipart-file/src/main/resources/targetFile.tmp deleted file mode 100644 index 5e1c309dae..0000000000 --- a/spring-multipart-file/src/main/resources/targetFile.tmp +++ /dev/null @@ -1 +0,0 @@ -Hello World \ No newline at end of file From 15535cf0cfd99f2dc7b5b173d2f69893ef892ae9 Mon Sep 17 00:00:00 2001 From: Tyrell Flurry Date: Fri, 29 May 2020 18:23:01 -0400 Subject: [PATCH 3/7] BAEL-4088: clean-up. --- spring-multipart-file/pom.xml | 9 +++++++-- .../file/ConvertMultipartFileExample.java | 15 +++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/spring-multipart-file/pom.xml b/spring-multipart-file/pom.xml index 7b9eafeda5..a0b9cdfdce 100644 --- a/spring-multipart-file/pom.xml +++ b/spring-multipart-file/pom.xml @@ -14,6 +14,11 @@ ../parent-spring-5 + + 4.12 + 2.0.8 + + org.springframework @@ -23,13 +28,13 @@ org.springframework spring-mock - 2.0.8 + ${org.springframework.spring-mock.version} test junit junit - 4.12 + ${junit.version} test diff --git a/spring-multipart-file/src/test/java/com/baeldung/multipart/file/ConvertMultipartFileExample.java b/spring-multipart-file/src/test/java/com/baeldung/multipart/file/ConvertMultipartFileExample.java index 101e234921..2b4b2bd842 100644 --- a/spring-multipart-file/src/test/java/com/baeldung/multipart/file/ConvertMultipartFileExample.java +++ b/spring-multipart-file/src/test/java/com/baeldung/multipart/file/ConvertMultipartFileExample.java @@ -12,6 +12,11 @@ import org.springframework.web.multipart.MultipartFile; public class ConvertMultipartFileExample { + /** + * Example of converting a {@link MultipartFile} to a {@link File} using {@link MultipartFile#getBytes()}. + * + * @throws IOException + */ @Test public void whenGetBytes_thenOK() throws IOException { MultipartFile multipartFile = new MockMultipartFile("sourceFile.tmp", "Hello World".getBytes()); @@ -25,6 +30,11 @@ public class ConvertMultipartFileExample { os.close(); } + /** + * Example of converting a {@link MultipartFile} to a {@link File} using {@link MultipartFile#getInputStream()}. + * + * @throws IOException + */ @Test public void whenGetInputStream_thenOK() throws IOException { MultipartFile multipartFile = new MockMultipartFile("sourceFile.tmp", "Hello World".getBytes()); @@ -40,6 +50,11 @@ public class ConvertMultipartFileExample { outStream.close(); } + /** + * Example of converting a {@link MultipartFile} to a {@link File} using {@link MultipartFile#transferTo(File)}. + * + * @throws IOException + */ @Test public void whenTransferTo_thenOK() throws IllegalStateException, IOException { MultipartFile multipartFile = new MockMultipartFile("sourceFile.tmp", "Hello World".getBytes()); From 0f36d61b673796eb8bf1a917a7dc841ed90b0c7e Mon Sep 17 00:00:00 2001 From: Tyrell Flurry Date: Mon, 1 Jun 2020 11:35:39 -0400 Subject: [PATCH 4/7] BAEL-4088: addressed code review comments. --- spring-multipart-file/pom.xml | 6 ++++++ .../file/ConvertMultipartFileExample.java | 20 ++++++++++++------- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/spring-multipart-file/pom.xml b/spring-multipart-file/pom.xml index a0b9cdfdce..7caec98b94 100644 --- a/spring-multipart-file/pom.xml +++ b/spring-multipart-file/pom.xml @@ -15,11 +15,17 @@ + 2.6 4.12 2.0.8 + + commons-io + commons-io + ${commons-io.version} + org.springframework spring-web diff --git a/spring-multipart-file/src/test/java/com/baeldung/multipart/file/ConvertMultipartFileExample.java b/spring-multipart-file/src/test/java/com/baeldung/multipart/file/ConvertMultipartFileExample.java index 2b4b2bd842..23c603a756 100644 --- a/spring-multipart-file/src/test/java/com/baeldung/multipart/file/ConvertMultipartFileExample.java +++ b/spring-multipart-file/src/test/java/com/baeldung/multipart/file/ConvertMultipartFileExample.java @@ -6,6 +6,8 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import org.apache.commons.io.FileUtils; +import org.junit.Assert; import org.junit.Test; import org.springframework.mock.web.MockMultipartFile; import org.springframework.web.multipart.MultipartFile; @@ -23,11 +25,11 @@ public class ConvertMultipartFileExample { File file = new File("src/main/resources/targetFile.tmp"); - OutputStream os = new FileOutputStream(file); + try (OutputStream os = new FileOutputStream(file)) { + os.write(multipartFile.getBytes()); + } - os.write(multipartFile.getBytes()); - - os.close(); + Assert.assertEquals(FileUtils.readFileToString(new File("src/main/resources/targetFile.tmp"), "UTF-8"), "Hello World"); } /** @@ -44,10 +46,12 @@ public class ConvertMultipartFileExample { initialStream.read(buffer); File targetFile = new File("src/main/resources/targetFile.tmp"); - OutputStream outStream = new FileOutputStream(targetFile); - outStream.write(buffer); - outStream.close(); + try (OutputStream outStream = new FileOutputStream(targetFile)) { + outStream.write(buffer); + } + + Assert.assertEquals(FileUtils.readFileToString(new File("src/main/resources/targetFile.tmp"), "UTF-8"), "Hello World"); } /** @@ -62,5 +66,7 @@ public class ConvertMultipartFileExample { File file = new File("src/main/resources/targetFile.tmp"); multipartFile.transferTo(file); + + Assert.assertEquals(FileUtils.readFileToString(new File("src/main/resources/targetFile.tmp"), "UTF-8"), "Hello World"); } } From 282e9be3f8812b27eec9fb6a60f6a5fc3caffcaf Mon Sep 17 00:00:00 2001 From: Tyrell Flurry Date: Tue, 2 Jun 2020 16:09:16 -0400 Subject: [PATCH 5/7] BAEL-4088: code review comments addressed. --- spring-multipart-file/pom.xml | 7 +++++++ .../multipart/file/ConvertMultipartFileExample.java | 9 +++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/spring-multipart-file/pom.xml b/spring-multipart-file/pom.xml index 7caec98b94..d5096c9f00 100644 --- a/spring-multipart-file/pom.xml +++ b/spring-multipart-file/pom.xml @@ -17,6 +17,7 @@ 2.6 4.12 + 3.15.0 2.0.8 @@ -26,6 +27,12 @@ commons-io ${commons-io.version} + + org.assertj + assertj-core + ${org.assertj.assertj-core.version} + test + org.springframework spring-web diff --git a/spring-multipart-file/src/test/java/com/baeldung/multipart/file/ConvertMultipartFileExample.java b/spring-multipart-file/src/test/java/com/baeldung/multipart/file/ConvertMultipartFileExample.java index 23c603a756..180193b987 100644 --- a/spring-multipart-file/src/test/java/com/baeldung/multipart/file/ConvertMultipartFileExample.java +++ b/spring-multipart-file/src/test/java/com/baeldung/multipart/file/ConvertMultipartFileExample.java @@ -1,5 +1,7 @@ package com.baeldung.multipart.file; +import static org.assertj.core.api.Assertions.assertThat; + import java.io.File; import java.io.FileOutputStream; import java.io.IOException; @@ -7,7 +9,6 @@ import java.io.InputStream; import java.io.OutputStream; import org.apache.commons.io.FileUtils; -import org.junit.Assert; import org.junit.Test; import org.springframework.mock.web.MockMultipartFile; import org.springframework.web.multipart.MultipartFile; @@ -29,7 +30,7 @@ public class ConvertMultipartFileExample { os.write(multipartFile.getBytes()); } - Assert.assertEquals(FileUtils.readFileToString(new File("src/main/resources/targetFile.tmp"), "UTF-8"), "Hello World"); + assertThat(FileUtils.readFileToString(new File("src/main/resources/targetFile.tmp"), "UTF-8")).isEqualTo("Hello World"); } /** @@ -51,7 +52,7 @@ public class ConvertMultipartFileExample { outStream.write(buffer); } - Assert.assertEquals(FileUtils.readFileToString(new File("src/main/resources/targetFile.tmp"), "UTF-8"), "Hello World"); + assertThat(FileUtils.readFileToString(new File("src/main/resources/targetFile.tmp"), "UTF-8")).isEqualTo("Hello World"); } /** @@ -67,6 +68,6 @@ public class ConvertMultipartFileExample { multipartFile.transferTo(file); - Assert.assertEquals(FileUtils.readFileToString(new File("src/main/resources/targetFile.tmp"), "UTF-8"), "Hello World"); + assertThat(FileUtils.readFileToString(new File("src/main/resources/targetFile.tmp"), "UTF-8")).isEqualTo("Hello World"); } } From 1aec78c4b918aa484fa9ce7aac10e2de909ee7ff Mon Sep 17 00:00:00 2001 From: Tyrell Flurry Date: Tue, 23 Jun 2020 22:06:50 -0400 Subject: [PATCH 6/7] BAEL-4088: renamed module. --- {spring-multipart-file => spring-framework-web}/pom.xml | 4 ++-- .../baeldung/multipart/file/ConvertMultipartFileUnitTest.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) rename {spring-multipart-file => spring-framework-web}/pom.xml (95%) rename spring-multipart-file/src/test/java/com/baeldung/multipart/file/ConvertMultipartFileExample.java => spring-framework-web/src/test/java/com/baeldung/multipart/file/ConvertMultipartFileUnitTest.java (98%) diff --git a/spring-multipart-file/pom.xml b/spring-framework-web/pom.xml similarity index 95% rename from spring-multipart-file/pom.xml rename to spring-framework-web/pom.xml index d5096c9f00..50029b4ba8 100644 --- a/spring-multipart-file/pom.xml +++ b/spring-framework-web/pom.xml @@ -3,9 +3,9 @@ xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - spring-multipart-file + spring-framework-web 0.0.1-SNAPSHOT - spring-multipart-file + spring-framework-web com.baeldung diff --git a/spring-multipart-file/src/test/java/com/baeldung/multipart/file/ConvertMultipartFileExample.java b/spring-framework-web/src/test/java/com/baeldung/multipart/file/ConvertMultipartFileUnitTest.java similarity index 98% rename from spring-multipart-file/src/test/java/com/baeldung/multipart/file/ConvertMultipartFileExample.java rename to spring-framework-web/src/test/java/com/baeldung/multipart/file/ConvertMultipartFileUnitTest.java index 180193b987..786f2355c1 100644 --- a/spring-multipart-file/src/test/java/com/baeldung/multipart/file/ConvertMultipartFileExample.java +++ b/spring-framework-web/src/test/java/com/baeldung/multipart/file/ConvertMultipartFileUnitTest.java @@ -13,7 +13,7 @@ import org.junit.Test; import org.springframework.mock.web.MockMultipartFile; import org.springframework.web.multipart.MultipartFile; -public class ConvertMultipartFileExample { +public class ConvertMultipartFileUnitTest { /** * Example of converting a {@link MultipartFile} to a {@link File} using {@link MultipartFile#getBytes()}. From bbff3222ecd997b347398e2fb15ce00fcfccf009 Mon Sep 17 00:00:00 2001 From: Greg Martin Date: Wed, 24 Jun 2020 13:41:02 -0400 Subject: [PATCH 7/7] Create README.md Added readme --- spring-framework-web/README.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 spring-framework-web/README.md diff --git a/spring-framework-web/README.md b/spring-framework-web/README.md new file mode 100644 index 0000000000..9c21e93b83 --- /dev/null +++ b/spring-framework-web/README.md @@ -0,0 +1,7 @@ +## Spring Framework Web + +This module contains articles about the Spring Framework for the Web. + +### Relevant Articles + +- [Converting a Spring MultipartFile to a File](https://www.baeldung.com/converting-spring-multipartfile-to-a-file)