Use try-with-resources for AutoClosables where feasible

Where unfeasible, this commit adds inline comments to explain why
try-with-resources must not be used in certain scenarios. The purpose
of the comments is to avoid accidental conversion to try-with-resources
at a later date.

Closes gh-27823
This commit is contained in:
Marten Deinum 2021-12-16 07:10:12 +01:00 committed by Sam Brannen
parent 999376f9f9
commit e1200f34e7
6 changed files with 11 additions and 4 deletions

View File

@ -62,12 +62,9 @@ class MetadataStore {
private CandidateComponentsMetadata readMetadata(InputStream in) throws IOException {
try {
try (in){
return PropertiesMarshaller.read(in);
}
finally {
in.close();
}
}
private FileObject getMetadataResource() throws IOException {

View File

@ -101,6 +101,8 @@ public class LocalVariableTableParameterNameDiscoverer implements ParameterNameD
}
return NO_DEBUG_INFO_MAP;
}
// We cannot use try-with-resources here as, potential, exception upon closing
// would still bubble up the stack
try {
ClassReader classReader = new ClassReader(is);
Map<Executable, String[]> map = new ConcurrentHashMap<>(32);

View File

@ -169,6 +169,8 @@ public class BufferedImageHttpMessageConverter implements HttpMessageConverter<B
ImageInputStream imageInputStream = null;
ImageReader imageReader = null;
// We cannot use try-with-resources here as, potential, exception upon closing
// would still bubble up the stack
try {
imageInputStream = createImageInputStream(inputMessage.getBody());
MediaType contentType = inputMessage.getHeaders().getContentType();

View File

@ -131,6 +131,8 @@ public class ResourceHttpMessageConverter extends AbstractHttpMessageConverter<R
protected void writeContent(Resource resource, HttpOutputMessage outputMessage)
throws IOException, HttpMessageNotWritableException {
// We cannot use try-with-resources here as, potential, exception upon closing
// would still bubble up the stack
try {
InputStream in = resource.getInputStream();
try {

View File

@ -155,6 +155,8 @@ public class ResourceRegionHttpMessageConverter extends AbstractGenericHttpMessa
responseHeaders.setContentLength(rangeLength);
InputStream in = region.getResource().getInputStream();
// We cannot use try-with-resources here as, potential, exception upon closing
// would still bubble up the stack
try {
StreamUtils.copyRange(in, outputMessage.getBody(), start, end);
}

View File

@ -374,6 +374,8 @@ public class StompSubProtocolHandler implements SubProtocolHandler, ApplicationE
headerAccessor.setMessage(error.getMessage());
byte[] bytes = this.stompEncoder.encode(headerAccessor.getMessageHeaders(), EMPTY_PAYLOAD);
// We cannot use try-with-resources here as, potential, exception upon closing
// would still bubble up the stack
try {
session.sendMessage(new TextMessage(bytes));
}