Skip to content

Commit fbc5ff8

Browse files
committed
Implement AutoCloseable in GzippedFiles
1 parent dd8313f commit fbc5ff8

File tree

3 files changed

+30
-31
lines changed

3 files changed

+30
-31
lines changed

spring-webflux/src/test/java/org/springframework/web/reactive/resource/GzipSupport.java

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,14 @@
1919
import java.io.File;
2020
import java.io.FileOutputStream;
2121
import java.io.IOException;
22+
import java.io.UncheckedIOException;
2223
import java.nio.file.Files;
2324
import java.nio.file.Path;
2425
import java.nio.file.Paths;
2526
import java.util.HashSet;
2627
import java.util.Set;
2728
import java.util.zip.GZIPOutputStream;
2829

29-
import org.junit.jupiter.api.extension.AfterEachCallback;
3030
import org.junit.jupiter.api.extension.ExtensionContext;
3131
import org.junit.jupiter.api.extension.ExtensionContext.Namespace;
3232
import org.junit.jupiter.api.extension.ExtensionContext.Store;
@@ -40,21 +40,13 @@
4040

4141
/**
4242
* @author Andy Wilkinson
43+
* @author Sam Brannen
4344
* @since 5.2.2
4445
*/
45-
class GzipSupport implements AfterEachCallback, ParameterResolver {
46+
class GzipSupport implements ParameterResolver {
4647

4748
private static final Namespace namespace = Namespace.create(GzipSupport.class);
4849

49-
@Override
50-
public void afterEach(ExtensionContext context) {
51-
GzippedFiles gzippedFiles = getStore(context).remove(GzippedFiles.class, GzippedFiles.class);
52-
if (gzippedFiles != null) {
53-
for (File gzippedFile: gzippedFiles.created) {
54-
gzippedFile.delete();
55-
}
56-
}
57-
}
5850

5951
@Override
6052
public boolean supportsParameter(ParameterContext parameterContext, ExtensionContext extensionContext) {
@@ -70,13 +62,14 @@ private Store getStore(ExtensionContext extensionContext) {
7062
return extensionContext.getStore(namespace);
7163
}
7264

73-
static class GzippedFiles {
65+
66+
static class GzippedFiles implements AutoCloseable {
7467

7568
private final Set<File> created = new HashSet<>();
7669

7770
void create(String filePath) {
7871
try {
79-
Resource location = new ClassPathResource("test/", EncodedResourceResolverTests.class);
72+
Resource location = new ClassPathResource("test/", getClass());
8073
Resource resource = new FileSystemResource(location.createRelative(filePath).getFile());
8174

8275
Path gzFilePath = Paths.get(resource.getFile().getAbsolutePath() + ".gz");
@@ -85,13 +78,19 @@ void create(String filePath) {
8578
File gzFile = Files.createFile(gzFilePath).toFile();
8679
GZIPOutputStream out = new GZIPOutputStream(new FileOutputStream(gzFile));
8780
FileCopyUtils.copy(resource.getInputStream(), out);
88-
created.add(gzFile);
81+
this.created.add(gzFile);
8982
}
9083
catch (IOException ex) {
91-
throw new RuntimeException(ex);
84+
throw new UncheckedIOException(ex);
9285
}
9386
}
9487

88+
@Override
89+
public void close() {
90+
for (File file: this.created) {
91+
file.delete();
92+
}
93+
}
9594
}
9695

9796
}

spring-webmvc/src/test/java/org/springframework/web/servlet/resource/GzipSupport.java

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,14 @@
1919
import java.io.File;
2020
import java.io.FileOutputStream;
2121
import java.io.IOException;
22+
import java.io.UncheckedIOException;
2223
import java.nio.file.Files;
2324
import java.nio.file.Path;
2425
import java.nio.file.Paths;
2526
import java.util.HashSet;
2627
import java.util.Set;
2728
import java.util.zip.GZIPOutputStream;
2829

29-
import org.junit.jupiter.api.extension.AfterEachCallback;
3030
import org.junit.jupiter.api.extension.ExtensionContext;
3131
import org.junit.jupiter.api.extension.ExtensionContext.Namespace;
3232
import org.junit.jupiter.api.extension.ExtensionContext.Store;
@@ -40,21 +40,13 @@
4040

4141
/**
4242
* @author Andy Wilkinson
43+
* @author Sam Brannen
4344
* @since 5.2.2
4445
*/
45-
class GzipSupport implements AfterEachCallback, ParameterResolver {
46+
class GzipSupport implements ParameterResolver {
4647

4748
private static final Namespace namespace = Namespace.create(GzipSupport.class);
4849

49-
@Override
50-
public void afterEach(ExtensionContext context) {
51-
GzippedFiles gzippedFiles = getStore(context).remove(GzippedFiles.class, GzippedFiles.class);
52-
if (gzippedFiles != null) {
53-
for (File gzippedFile: gzippedFiles.created) {
54-
gzippedFile.delete();
55-
}
56-
}
57-
}
5850

5951
@Override
6052
public boolean supportsParameter(ParameterContext parameterContext, ExtensionContext extensionContext) {
@@ -70,13 +62,14 @@ private Store getStore(ExtensionContext extensionContext) {
7062
return extensionContext.getStore(namespace);
7163
}
7264

73-
static class GzippedFiles {
65+
66+
static class GzippedFiles implements AutoCloseable {
7467

7568
private final Set<File> created = new HashSet<>();
7669

7770
void create(String filePath) {
7871
try {
79-
Resource location = new ClassPathResource("test/", EncodedResourceResolverTests.class);
72+
Resource location = new ClassPathResource("test/", getClass());
8073
Resource resource = new FileSystemResource(location.createRelative(filePath).getFile());
8174

8275
Path gzFilePath = Paths.get(resource.getFile().getAbsolutePath() + ".gz");
@@ -85,13 +78,19 @@ void create(String filePath) {
8578
File gzFile = Files.createFile(gzFilePath).toFile();
8679
GZIPOutputStream out = new GZIPOutputStream(new FileOutputStream(gzFile));
8780
FileCopyUtils.copy(resource.getInputStream(), out);
88-
created.add(gzFile);
81+
this.created.add(gzFile);
8982
}
9083
catch (IOException ex) {
91-
throw new RuntimeException(ex);
84+
throw new UncheckedIOException(ex);
9285
}
9386
}
9487

88+
@Override
89+
public void close() {
90+
for (File file: this.created) {
91+
file.delete();
92+
}
93+
}
9594
}
9695

9796
}

spring-webmvc/src/test/java/org/springframework/web/servlet/resource/ResourceHttpRequestHandlerTests.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import org.springframework.web.HttpRequestMethodNotSupportedException;
3838
import org.springframework.web.context.support.StaticWebApplicationContext;
3939
import org.springframework.web.servlet.HandlerMapping;
40+
import org.springframework.web.servlet.resource.GzipSupport.GzippedFiles;
4041
import org.springframework.web.testfixture.servlet.MockHttpServletRequest;
4142
import org.springframework.web.testfixture.servlet.MockHttpServletResponse;
4243
import org.springframework.web.testfixture.servlet.MockServletContext;
@@ -357,7 +358,7 @@ void partialContentMultipleByteRanges() throws Exception {
357358
}
358359

359360
@Test // gh-25976
360-
void partialContentByteRangeWithEncodedResource(GzipSupport.GzippedFiles gzippedFiles) throws Exception {
361+
void partialContentByteRangeWithEncodedResource(GzippedFiles gzippedFiles) throws Exception {
361362
String path = "js/foo.js";
362363
gzippedFiles.create(path);
363364

0 commit comments

Comments
 (0)