Polish "Use try-with-resources to close resources automatically"

- Apply code formatting
- Use try-with-resources in many other places that were missed in the
  pull request

Closes gh-8045
pull/7316/merge
Andy Wilkinson 8 years ago
parent 3e797c326a
commit d5438c299c

@ -132,7 +132,8 @@ public class EndpointDocumentation {
@Test
public void auditEvents() throws Exception {
this.mockMvc
.perform(get("/application/auditevents").param("after", "2016-11-01T10:00:00+0000")
.perform(get("/application/auditevents")
.param("after", "2016-11-01T10:00:00+0000")
.accept(ActuatorMediaTypes.APPLICATION_ACTUATOR_V2_JSON))
.andExpect(status().isOk()).andDo(document("auditevents"));
}
@ -188,15 +189,11 @@ public class EndpointDocumentation {
}
File file = new File(RESTDOCS_OUTPUT_DIR + "/endpoints.adoc");
file.getParentFile().mkdirs();
PrintWriter writer = new PrintWriter(file, "UTF-8");
try {
try (PrintWriter writer = new PrintWriter(file, "UTF-8")) {
Template template = this.templates.createTemplate(
new File("src/restdoc/resources/templates/endpoints.adoc.tpl"));
template.make(model).writeTo(writer);
}
finally {
writer.close();
}
}
private Collection<? extends MvcEndpoint> getEndpoints() {

@ -51,7 +51,7 @@ import org.springframework.web.bind.annotation.ResponseStatus;
*
* @author Lari Hotari
* @author Phillip Webb
* @author rajakolli
* @author Raja Kolli
* @since 1.4.0
*/
@ConfigurationProperties(prefix = "endpoints.heapdump")
@ -146,9 +146,9 @@ public class HeapdumpMvcEndpoint extends AbstractNamedMvcEndpoint {
response.setHeader("Content-Disposition",
"attachment; filename=\"" + (heapDumpFile.getName() + ".gz") + "\"");
try (InputStream in = new FileInputStream(heapDumpFile);
GZIPOutputStream out = new GZIPOutputStream(response.getOutputStream())) {
StreamUtils.copy(in, out);
out.finish();
GZIPOutputStream out = new GZIPOutputStream(response.getOutputStream())) {
StreamUtils.copy(in, out);
out.finish();
}
catch (NullPointerException | FileNotFoundException ex) {
}

@ -1,5 +1,5 @@
/*
* Copyright 2012-2016 the original author or authors.
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -35,15 +35,11 @@ public class JmsHealthIndicator extends AbstractHealthIndicator {
@Override
protected void doHealthCheck(Health.Builder builder) throws Exception {
Connection connection = this.connectionFactory.createConnection();
try {
try (Connection connection = this.connectionFactory.createConnection()) {
connection.start();
builder.up().withDetail("provider",
connection.getMetaData().getJMSProviderName());
}
finally {
connection.close();
}
}
}

@ -61,6 +61,7 @@ import static org.assertj.core.api.Assertions.offset;
*
* @author Stephane Nicoll
* @author Eddú Meléndez
* @author Raja Kolli
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
public class CacheStatisticsAutoConfigurationTests {

@ -338,9 +338,8 @@ public class EndpointWebMvcAutoConfigurationTests {
@Test
public void specificPortsViaPropertiesWithClash() throws Exception {
int managementPort = ports.get().management;
ServerSocket serverSocket = new ServerSocket();
serverSocket.bind(new InetSocketAddress(managementPort));
try {
try (ServerSocket serverSocket = new ServerSocket()) {
serverSocket.bind(new InetSocketAddress(managementPort));
EnvironmentTestUtils.addEnvironment(this.applicationContext,
"server.port:" + ports.get().server,
"management.port:" + ports.get().management);
@ -350,9 +349,6 @@ public class EndpointWebMvcAutoConfigurationTests {
this.thrown.expect(WebServerException.class);
this.applicationContext.refresh();
}
finally {
serverSocket.close();
}
}
@Test
@ -683,23 +679,17 @@ public class EndpointWebMvcAutoConfigurationTests {
httpClient);
ClientHttpRequest request = requestFactory.createRequest(
new URI(scheme + "://localhost:" + port + url), HttpMethod.GET);
try {
ClientHttpResponse response = request.execute();
try (ClientHttpResponse response = request.execute()) {
if (HttpStatus.NOT_FOUND.equals(response.getStatusCode())) {
throw new FileNotFoundException();
}
try {
String actual = StreamUtils.copyToString(response.getBody(),
Charset.forName("UTF-8"));
if (expected instanceof Matcher) {
assertThat(actual).is(Matched.by((Matcher<?>) expected));
}
else {
assertThat(actual).isEqualTo(expected);
}
String actual = StreamUtils.copyToString(response.getBody(),
Charset.forName("UTF-8"));
if (expected instanceof Matcher) {
assertThat(actual).is(Matched.by((Matcher<?>) expected));
}
finally {
response.close();
else {
assertThat(actual).isEqualTo(expected);
}
}
catch (Exception ex) {

@ -39,9 +39,8 @@ public class TomcatPublicMetricsTests {
@Test
public void tomcatMetrics() throws Exception {
AnnotationConfigServletWebServerApplicationContext context = new AnnotationConfigServletWebServerApplicationContext(
Config.class);
try {
try (AnnotationConfigServletWebServerApplicationContext context = new AnnotationConfigServletWebServerApplicationContext(
Config.class)) {
TomcatPublicMetrics tomcatMetrics = context
.getBean(TomcatPublicMetrics.class);
Iterator<Metric<?>> metrics = tomcatMetrics.metrics().iterator();
@ -49,9 +48,6 @@ public class TomcatPublicMetricsTests {
assertThat(metrics.next().getName()).isEqualTo("httpsessions.active");
assertThat(metrics.hasNext()).isFalse();
}
finally {
context.close();
}
}
@Configuration

@ -1,5 +1,5 @@
/*
* Copyright 2012-2016 the original author or authors.
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -62,18 +62,14 @@ public class MetricCopyExporterTests {
@Test
public void counterWithGaugeWriter() throws Exception {
SimpleGaugeWriter writer = new SimpleGaugeWriter();
MetricCopyExporter exporter = new MetricCopyExporter(this.reader, writer);
try {
try (MetricCopyExporter customExporter = new MetricCopyExporter(this.reader, writer)) {
this.reader.increment(new Delta<Number>("counter.foo", 2));
exporter.export();
customExporter.export();
this.reader.increment(new Delta<Number>("counter.foo", 3));
exporter.export();
exporter.flush();
customExporter.export();
customExporter.flush();
assertThat(writer.getValue().getValue()).isEqualTo(5L);
}
finally {
exporter.close();
}
}
@Test

@ -40,6 +40,7 @@ import org.springframework.util.CollectionUtils;
*
* @author Eddú Meléndez
* @author Stephane Nicoll
* @author Raja Kolli
* @since 1.3.0
*/
@Configuration

@ -57,6 +57,7 @@ import org.springframework.util.StringUtils;
*
* @author Eddú Meléndez
* @author Mathieu Ouellet
* @author Raja Kolli
* @since 1.5.0
*/
@Configuration

@ -127,8 +127,8 @@ public class SpringApplicationAdminJmxAutoConfigurationTests {
assertThat(this.context).isInstanceOf(ServletWebServerApplicationContext.class);
assertThat(this.mBeanServer.getAttribute(createDefaultObjectName(),
"EmbeddedWebApplication")).isEqualTo(Boolean.TRUE);
int expected = ((ServletWebServerApplicationContext) this.context)
.getWebServer().getPort();
int expected = ((ServletWebServerApplicationContext) this.context).getWebServer()
.getPort();
String actual = getProperty(createDefaultObjectName(), "local.server.port");
assertThat(actual).isEqualTo(String.valueOf(expected));
}
@ -142,26 +142,17 @@ public class SpringApplicationAdminJmxAutoConfigurationTests {
.child(JmxAutoConfiguration.class,
SpringApplicationAdminJmxAutoConfiguration.class)
.web(WebApplicationType.NONE);
ConfigurableApplicationContext parent = null;
ConfigurableApplicationContext child = null;
try {
parent = parentBuilder.run("--" + ENABLE_ADMIN_PROP);
child = childBuilder.run("--" + ENABLE_ADMIN_PROP);
try (ConfigurableApplicationContext parent = parentBuilder
.run("--" + ENABLE_ADMIN_PROP);
ConfigurableApplicationContext child = childBuilder
.run("--" + ENABLE_ADMIN_PROP)) {
BeanFactoryUtils.beanOfType(parent.getBeanFactory(),
SpringApplicationAdminMXBeanRegistrar.class);
this.thrown.expect(NoSuchBeanDefinitionException.class);
BeanFactoryUtils.beanOfType(child.getBeanFactory(),
SpringApplicationAdminMXBeanRegistrar.class);
}
finally {
if (parent != null) {
parent.close();
}
if (child != null) {
child.close();
}
}
}
private ObjectName createDefaultObjectName() {

@ -1,5 +1,5 @@
/*
* Copyright 2012-2016 the original author or authors.
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -145,17 +145,13 @@ public class ConditionalOnSingleCandidateTests {
@Test
public void singleCandidateMultipleCandidatesInContextHierarchy() {
load(FooPrimaryConfiguration.class, BarConfiguration.class);
AnnotationConfigApplicationContext child = new AnnotationConfigApplicationContext();
child.setParent(this.context);
child.register(OnBeanSingleCandidateConfiguration.class);
try {
try (AnnotationConfigApplicationContext child = new AnnotationConfigApplicationContext()) {
child.setParent(this.context);
child.register(OnBeanSingleCandidateConfiguration.class);
child.refresh();
assertThat(child.containsBean("baz")).isTrue();
assertThat(child.getBean("baz")).isEqualTo("foo");
}
finally {
child.close();
}
}
private void load(Class<?>... classes) {

@ -143,9 +143,8 @@ public class MessageSourceAutoConfigurationTests {
@Test
public void existingMessageSourceInParentIsIgnored() {
ConfigurableApplicationContext parent = new AnnotationConfigApplicationContext();
parent.refresh();
try {
try (ConfigurableApplicationContext parent = new AnnotationConfigApplicationContext()) {
parent.refresh();
this.context = new AnnotationConfigApplicationContext();
this.context.setParent(parent);
EnvironmentTestUtils.addEnvironment(this.context,
@ -156,9 +155,6 @@ public class MessageSourceAutoConfigurationTests {
assertThat(this.context.getMessage("foo", null, "Foo message", Locale.UK))
.isEqualTo("bar");
}
finally {
parent.close();
}
}
private void load(String... environment) {

@ -83,14 +83,10 @@ public class CassandraDataAutoConfigurationIntegrationTests {
}
private void createTestKeyspaceIfNotExists() {
Session session = this.cassandra.getCluster().connect();
try {
try (Session session = this.cassandra.getCluster().connect()) {
session.execute("CREATE KEYSPACE IF NOT EXISTS boot_test"
+ " WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 };");
}
finally {
session.close();
}
}
}

@ -235,20 +235,16 @@ public class NoSuchBeanDefinitionFailureAnalyzerTests {
}
private FatalBeanException createFailure(Class<?> config, String... environment) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
this.analyzer.setBeanFactory(context.getBeanFactory());
EnvironmentTestUtils.addEnvironment(context, environment);
context.register(config);
try {
try (AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext()) {
this.analyzer.setBeanFactory(context.getBeanFactory());
EnvironmentTestUtils.addEnvironment(context, environment);
context.register(config);
context.refresh();
return null;
}
catch (FatalBeanException ex) {
return ex;
}
finally {
context.close();
}
}
private FailureAnalysis analyzeFailure(Exception failure) {

@ -1,5 +1,5 @@
/*
* Copyright 2012-2016 the original author or authors.
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -177,18 +177,14 @@ public class FreeMarkerAutoConfigurationTests {
@Test
public void renderNonWebAppTemplate() throws Exception {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(
FreeMarkerAutoConfiguration.class);
try {
freemarker.template.Configuration freemarker = context
try (AnnotationConfigApplicationContext customContext = new AnnotationConfigApplicationContext(
FreeMarkerAutoConfiguration.class)) {
freemarker.template.Configuration freemarker = customContext
.getBean(freemarker.template.Configuration.class);
StringWriter writer = new StringWriter();
freemarker.getTemplate("message.ftl").process(this, writer);
assertThat(writer.toString()).contains("Hello World");
}
finally {
context.close();
}
}
@Test

@ -1,5 +1,5 @@
/*
* Copyright 2012-2016 the original author or authors.
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -56,22 +56,17 @@ public class EmbeddedDataSourceConfigurationTests {
@Test
public void generateUniqueName() throws Exception {
this.context = load("spring.datasource.generate-unique-name=true");
AnnotationConfigApplicationContext context2 = load(
"spring.datasource.generate-unique-name=true");
try {
try (AnnotationConfigApplicationContext context2 = load(
"spring.datasource.generate-unique-name=true")) {
DataSource dataSource = this.context.getBean(DataSource.class);
DataSource dataSource2 = context2.getBean(DataSource.class);
assertThat(getDatabaseName(dataSource))
.isNotEqualTo(getDatabaseName(dataSource2));
}
finally {
context2.close();
}
}
private String getDatabaseName(DataSource dataSource) throws SQLException {
Connection connection = dataSource.getConnection();
try {
try (Connection connection = dataSource.getConnection()) {
ResultSet catalogs = connection.getMetaData().getCatalogs();
if (catalogs.next()) {
return catalogs.getString(1);
@ -80,9 +75,6 @@ public class EmbeddedDataSourceConfigurationTests {
throw new IllegalStateException("Unable to get database name");
}
}
finally {
connection.close();
}
}
private AnnotationConfigApplicationContext load(String... environment) {

@ -1,5 +1,5 @@
/*
* Copyright 2012-2016 the original author or authors.
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -234,9 +234,8 @@ public class ArtemisAutoConfigurationTests {
@Test
public void severalEmbeddedBrokers() {
load(EmptyConfiguration.class, "spring.artemis.embedded.queues=Queue1");
AnnotationConfigApplicationContext anotherContext = doLoad(
EmptyConfiguration.class, "spring.artemis.embedded.queues=Queue2");
try {
try (AnnotationConfigApplicationContext anotherContext = doLoad(
EmptyConfiguration.class, "spring.artemis.embedded.queues=Queue2")) {
ArtemisProperties properties = this.context.getBean(ArtemisProperties.class);
ArtemisProperties anotherProperties = anotherContext
.getBean(ArtemisProperties.class);
@ -249,29 +248,23 @@ public class ArtemisAutoConfigurationTests {
anotherChecker.checkQueue("Queue2", true);
anotherChecker.checkQueue("Queue1", true);
}
finally {
anotherContext.close();
}
}
@Test
public void connectToASpecificEmbeddedBroker() {
load(EmptyConfiguration.class, "spring.artemis.embedded.serverId=93",
"spring.artemis.embedded.queues=Queue1");
AnnotationConfigApplicationContext anotherContext = doLoad(
try (AnnotationConfigApplicationContext anotherContext = doLoad(
EmptyConfiguration.class, "spring.artemis.mode=embedded",
"spring.artemis.embedded.serverId=93", // Connect to the "main" broker
"spring.artemis.embedded.enabled=false"); // do not start a specific one
try {
"spring.artemis.embedded.serverId=93", /* Connect to the "main" broker */
"spring.artemis.embedded.enabled=false" /* do not start a specific one */)) {
DestinationChecker checker = new DestinationChecker(this.context);
checker.checkQueue("Queue1", true);
DestinationChecker anotherChecker = new DestinationChecker(anotherContext);
anotherChecker.checkQueue("Queue1", true);
}
finally {
anotherContext.close();
}
}
private TransportConfiguration assertInVmConnectionFactory(

@ -108,9 +108,8 @@ public class EmbeddedMongoAutoConfigurationTests {
@Test
public void portIsAvailableInParentContext() {
ConfigurableApplicationContext parent = new AnnotationConfigApplicationContext();
parent.refresh();
try {
try (ConfigurableApplicationContext parent = new AnnotationConfigApplicationContext()) {
parent.refresh();
this.context = new AnnotationConfigApplicationContext();
this.context.setParent(parent);
this.context.register(EmbeddedMongoAutoConfiguration.class,
@ -119,9 +118,6 @@ public class EmbeddedMongoAutoConfigurationTests {
assertThat(parent.getEnvironment().getProperty("local.mongo.port"))
.isNotNull();
}
finally {
parent.close();
}
}
@Test

@ -108,16 +108,12 @@ public class SecurityAutoConfigurationTests {
@Test
public void testFilterIsNotRegisteredInNonWeb() throws Exception {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.register(SecurityAutoConfiguration.class,
SecurityFilterAutoConfiguration.class,
PropertyPlaceholderAutoConfiguration.class);
try {
context.refresh();
assertThat(context.containsBean("securityFilterChainRegistration")).isFalse();
}
finally {
context.close();
try (AnnotationConfigApplicationContext customContext = new AnnotationConfigApplicationContext()) {
customContext.register(SecurityAutoConfiguration.class,
SecurityFilterAutoConfiguration.class,
PropertyPlaceholderAutoConfiguration.class);
customContext.refresh();
assertThat(customContext.containsBean("securityFilterChainRegistration")).isFalse();
}
}

@ -58,8 +58,7 @@ public class SecurityFilterAutoConfigurationEarlyInitializationTests {
@Test
public void testSecurityFilterDoesNotCauseEarlyInitialization() throws Exception {
AnnotationConfigServletWebServerApplicationContext context = new AnnotationConfigServletWebServerApplicationContext();
try {
try (AnnotationConfigServletWebServerApplicationContext context = new AnnotationConfigServletWebServerApplicationContext()) {
EnvironmentTestUtils.addEnvironment(context, "server.port:0",
"security.user.password:password");
context.register(Config.class);
@ -70,10 +69,6 @@ public class SecurityFilterAutoConfigurationEarlyInitializationTests {
// If early initialization occurred a ConverterNotFoundException is thrown
}
finally {
context.close();
}
}
@Configuration

@ -44,16 +44,11 @@ public class SecurityFilterAutoConfigurationTests {
@Test
public void filterAutoConfigurationWorksWithoutSecurityAutoConfiguration()
throws Exception {
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
context.setServletContext(new MockServletContext());
try {
try (AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext()) {
context.setServletContext(new MockServletContext());
context.register(Config.class);
context.refresh();
}
finally {
context.close();
}
}
@Configuration

@ -173,20 +173,17 @@ public class ThymeleafServletAutoConfigurationTests {
@Test
public void renderNonWebAppTemplate() throws Exception {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(
try (AnnotationConfigApplicationContext customContext = new AnnotationConfigApplicationContext(
ThymeleafAutoConfiguration.class,
PropertyPlaceholderAutoConfiguration.class);
assertThat(context.getBeanNamesForType(ViewResolver.class).length).isEqualTo(0);
try {
TemplateEngine engine = context.getBean(TemplateEngine.class);
PropertyPlaceholderAutoConfiguration.class)) {
assertThat(customContext.getBeanNamesForType(ViewResolver.class).length)
.isEqualTo(0);
TemplateEngine engine = customContext.getBean(TemplateEngine.class);
Context attrs = new Context(Locale.UK,
Collections.singletonMap("greeting", "Hello World"));
String result = engine.process("message", attrs);
assertThat(result).contains("Hello World");
}
finally {
context.close();
}
}
@Test

@ -79,8 +79,7 @@ public final class CommandLineInvoker {
}
})[0];
ZipInputStream input = new ZipInputStream(new FileInputStream(zip));
try {
try (ZipInputStream input = new ZipInputStream(new FileInputStream(zip))) {
ZipEntry entry;
while ((entry = input.getNextEntry()) != null) {
File file = new File(unpacked, entry.getName());
@ -89,22 +88,15 @@ public final class CommandLineInvoker {
}
else {
file.getParentFile().mkdirs();
FileOutputStream output = new FileOutputStream(file);
try {
try (FileOutputStream output = new FileOutputStream(file)) {
StreamUtils.copy(input, output);
if (entry.getName().endsWith("/bin/spring")) {
file.setExecutable(true);
}
}
finally {
output.close();
}
}
}
}
finally {
input.close();
}
}
File bin = new File(unpacked.listFiles()[0], "bin");
File launchScript = new File(bin, isWindows() ? "spring.bat" : "spring");

@ -187,8 +187,7 @@ abstract class ArchiveCommand extends OptionParsingCommand {
List<MatchedResource> classpathEntries, List<URL> dependencies)
throws FileNotFoundException, IOException, URISyntaxException {
final List<Library> libraries;
JarWriter writer = new JarWriter(file);
try {
try (JarWriter writer = new JarWriter(file)) {
addManifest(writer, compiledClasses);
addCliClasses(writer);
for (Class<?> compiledClass : compiledClasses) {
@ -196,9 +195,6 @@ abstract class ArchiveCommand extends OptionParsingCommand {
}
libraries = addClasspathEntries(writer, classpathEntries);
}
finally {
writer.close();
}
libraries.addAll(createLibraries(dependencies));
Repackager repackager = new Repackager(file);
repackager.setMainClass(PackagedSpringApplicationLauncher.class.getName());

@ -1,5 +1,5 @@
/*
* Copyright 2012-2015 the original author or authors.
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -31,7 +31,6 @@ import org.springframework.util.StreamUtils;
* Helper class used to generate the project.
*
* @author Stephane Nicoll
* @since 1.2.0
*/
class ProjectGenerator {
@ -106,17 +105,13 @@ class ProjectGenerator {
if (!outputFolder.exists()) {
outputFolder.mkdirs();
}
ZipInputStream zipStream = new ZipInputStream(
new ByteArrayInputStream(entity.getContent()));
try {
try (ZipInputStream zipStream = new ZipInputStream(
new ByteArrayInputStream(entity.getContent()))) {
extractFromStream(zipStream, overwrite, outputFolder);
fixExecutableFlag(outputFolder, "mvnw");
fixExecutableFlag(outputFolder, "gradlew");
Log.info("Project extracted to '" + outputFolder.getAbsolutePath() + "'");
}
finally {
zipStream.close();
}
}
private void extractFromStream(ZipInputStream zipStream, boolean overwrite,

@ -36,7 +36,6 @@ import org.springframework.boot.cli.compiler.GroovyCompilerConfiguration;
*
* @author Dave Syer
* @author Andy Wilkinson
* @since 1.2.0
*/
class GroovyGrabDependencyResolver implements DependencyResolver {
@ -70,18 +69,14 @@ class GroovyGrabDependencyResolver implements DependencyResolver {
private String createSources(List<String> artifactIdentifiers) throws IOException {
File file = File.createTempFile("SpringCLIDependency", ".groovy");
file.deleteOnExit();
OutputStreamWriter stream = new OutputStreamWriter(new FileOutputStream(file),
"UTF-8");
try {
try (OutputStreamWriter stream = new OutputStreamWriter(
new FileOutputStream(file), "UTF-8")) {
for (String artifactIdentifier : artifactIdentifiers) {
stream.write("@Grab('" + artifactIdentifier + "')");
}
// Dummy class to force compiler to do grab
stream.write("class Installer {}");
}
finally {
stream.close();
}
// Windows paths get tricky unless you work with URI
return file.getAbsoluteFile().toURI().toString();
}

@ -1,5 +1,5 @@
/*
* Copyright 2012-2016 the original author or authors.
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -38,7 +38,6 @@ import org.springframework.util.SystemPropertyUtils;
* Shared logic for the {@link InstallCommand} and {@link UninstallCommand}.
*
* @author Andy Wilkinson
* @since 1.2.0
*/
class Installer {
@ -82,13 +81,9 @@ class Installer {
}
private void saveInstallCounts() throws IOException {
FileWriter writer = new FileWriter(getInstalled());
try {
try (FileWriter writer = new FileWriter(getInstalled())) {
this.installCounts.store(writer, null);
}
finally {
writer.close();
}
}
public void install(List<String> artifactIdentifiers) throws Exception {

@ -98,14 +98,10 @@ public class ExtendedGroovyClassLoader extends GroovyClassLoader {
private Class<?> findSharedClass(String name) {
try {
String path = name.replace('.', '/').concat(".class");
InputStream inputStream = getParent().getResourceAsStream(path);
if (inputStream != null) {
try {
try (InputStream inputStream = getParent().getResourceAsStream(path)) {
if (inputStream != null) {
return defineClass(name, FileCopyUtils.copyToByteArray(inputStream));
}
finally {
inputStream.close();
}
}
return null;
}

@ -365,18 +365,14 @@ public class InitCommandTests extends AbstractHttpClientMockTests {
private byte[] createFakeZipArchive(String fileName, String content)
throws IOException {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ZipOutputStream zos = new ZipOutputStream(bos);
try {
try (ByteArrayOutputStream bos = new ByteArrayOutputStream();
ZipOutputStream zos = new ZipOutputStream(bos)) {
ZipEntry entry = new ZipEntry(fileName);
zos.putNextEntry(entry);
zos.write(content.getBytes());
zos.closeEntry();
return bos.toByteArray();
}
finally {
bos.close();
}
return bos.toByteArray();
}
private static class TestableInitCommandOptionHandler

@ -92,14 +92,10 @@ public class InitializrServiceMetadataTests {
private static JSONObject readJson(String version) throws IOException, JSONException {
Resource resource = new ClassPathResource(
"metadata/service-metadata-" + version + ".json");
InputStream stream = resource.getInputStream();
try {
try (InputStream stream = resource.getInputStream()) {
return new JSONObject(
StreamUtils.copyToString(stream, Charset.forName("UTF-8")));
}
finally {
stream.close();
}
}
}

@ -282,16 +282,10 @@ public class LiveReloadServer {
private void handle() throws Exception {
try {
try {
OutputStream outputStream = this.socket.getOutputStream();
try {
Connection connection = createConnection(this.socket,
this.inputStream, outputStream);
runConnection(connection);
}
finally {
outputStream.close();
}
try (OutputStream outputStream = this.socket.getOutputStream()) {
Connection connection = createConnection(this.socket,
this.inputStream, outputStream);
runConnection(connection);
}
finally {
this.inputStream.close();

@ -1,5 +1,5 @@
/*
* Copyright 2012-2016 the original author or authors.
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -152,16 +152,12 @@ public class TunnelClient implements SmartInitializingSingleton {
public void run() {
try {
while (this.acceptConnections) {
SocketChannel socket = this.serverSocketChannel.accept();
try {
try (SocketChannel socket = this.serverSocketChannel.accept()) {
handleConnection(socket);
}
catch (AsynchronousCloseException ex) {
// Connection has been closed. Keep the server running
}
finally {
socket.close();
}
}
}
catch (Exception ex) {

@ -27,8 +27,7 @@ public final class Verify {
}
public static void verify(File file, String entry) throws Exception {
ZipFile zipFile = new ZipFile(file);
try {
try (ZipFile zipFile = new ZipFile(file)) {
Enumeration<? extends ZipEntry> entries = zipFile.entries();
while (entries.hasMoreElements()) {
if (entries.nextElement().getName().equals(entry)) {
@ -37,9 +36,6 @@ public final class Verify {
}
throw new AssertionError("No entry " + entry);
}
finally {
zipFile.close();
}
}
}
}

@ -97,14 +97,10 @@ public class SampleIntegrationApplicationTests {
}
StringBuilder builder = new StringBuilder();
for (Resource resource : resources) {
InputStream inputStream = resource.getInputStream();
try {
try (InputStream inputStream = resource.getInputStream()) {
builder.append(new String(
StreamUtils.copyToByteArray(inputStream)));
}
finally {
inputStream.close();
}
}
return builder.toString();
}

@ -64,21 +64,14 @@ public class SampleJettyApplicationTests {
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.set("Accept-Encoding", "gzip");
HttpEntity<?> requestEntity = new HttpEntity<>(requestHeaders);
ResponseEntity<byte[]> entity = this.restTemplate.exchange("/", HttpMethod.GET,
requestEntity, byte[].class);
assertThat(entity.getStatusCode()).isEqualTo(HttpStatus.OK);
GZIPInputStream inflater = new GZIPInputStream(
new ByteArrayInputStream(entity.getBody()));
try {
try (GZIPInputStream inflater = new GZIPInputStream(
new ByteArrayInputStream(entity.getBody()))) {
assertThat(StreamUtils.copyToString(inflater, Charset.forName("UTF-8")))
.isEqualTo("Hello World");
}
finally {
inflater.close();
}
}
}

@ -75,15 +75,11 @@ public class SampleTomcatApplicationTests {
ResponseEntity<byte[]> entity = this.restTemplate.exchange("/", HttpMethod.GET,
requestEntity, byte[].class);
assertThat(entity.getStatusCode()).isEqualTo(HttpStatus.OK);
GZIPInputStream inflater = new GZIPInputStream(
new ByteArrayInputStream(entity.getBody()));
try {
try (GZIPInputStream inflater = new GZIPInputStream(
new ByteArrayInputStream(entity.getBody()))) {
assertThat(StreamUtils.copyToString(inflater, Charset.forName("UTF-8")))
.isEqualTo("Hello World");
}
finally {
inflater.close();
}
}
@Test

@ -70,15 +70,12 @@ public class SampleUndertowApplicationTests {
ResponseEntity<byte[]> entity = this.restTemplate.exchange("/", HttpMethod.GET,
requestEntity, byte[].class);
assertThat(entity.getStatusCode()).isEqualTo(HttpStatus.OK);
GZIPInputStream inflater = new GZIPInputStream(
new ByteArrayInputStream(entity.getBody()));
try {
try (GZIPInputStream inflater = new GZIPInputStream(
new ByteArrayInputStream(entity.getBody()))) {
assertThat(StreamUtils.copyToString(inflater, Charset.forName("UTF-8")))
.isEqualTo("Hello World");
}
finally {
inflater.close();
}
}
private void assertOkResponse(String path, String body) {

@ -60,16 +60,12 @@ public class TestDatabaseAutoConfigurationTests {
DataSource datasource = this.context.getBean(DataSource.class);
JdbcTemplate jdbcTemplate = new JdbcTemplate(datasource);
jdbcTemplate.execute("create table example (id int, name varchar);");
ConfigurableApplicationContext anotherContext = doLoad(
ExistingDataSourceConfiguration.class);
try {
try (ConfigurableApplicationContext anotherContext = doLoad(
ExistingDataSourceConfiguration.class)) {
DataSource anotherDatasource = anotherContext.getBean(DataSource.class);
JdbcTemplate anotherJdbcTemplate = new JdbcTemplate(anotherDatasource);
anotherJdbcTemplate.execute("create table example (id int, name varchar);");
}
finally {
anotherContext.close();
}
}
private void load(Class<?> config, String... environment) {

@ -1,5 +1,5 @@
/*
* Copyright 2012-2016 the original author or authors.
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -42,25 +42,13 @@ class ContentContainingCondition extends Condition<File> {
@Override
public boolean matches(File value) {
Reader reader = null;
try {
reader = new FileReader(value);
try (Reader reader = new FileReader(value)) {
String content = FileCopyUtils.copyToString(reader);
return content.contains(this.toContain);
}
catch (IOException ex) {
throw new IllegalStateException(ex);
}
finally {
if (reader != null) {
try {
reader.close();
}
catch (IOException ex) {
// Ignore
}
}
}
}
}

@ -201,13 +201,9 @@ public class AutoConfigureAnnotationProcessor extends AbstractProcessor {
if (!this.properties.isEmpty()) {
FileObject file = this.processingEnv.getFiler()
.createResource(StandardLocation.CLASS_OUTPUT, "", PROPERTIES_PATH);
OutputStream outputStream = file.openOutputStream();
try {
try (OutputStream outputStream = file.openOutputStream()) {
this.properties.store(outputStream, null);
}
finally {
outputStream.close();
}
}
}

@ -62,15 +62,11 @@ public class TestConditionMetadataAnnotationProcessor
if (!file.exists()) {
return null;
}
FileInputStream inputStream = new FileInputStream(file);
try {
try (FileInputStream inputStream = new FileInputStream(file)) {
Properties properties = new Properties();
properties.load(inputStream);
return properties;
}
finally {
inputStream.close();
}
}
}

@ -40,8 +40,7 @@ public class ConfigurationMetadataRepositoryJsonBuilderTests
@Test
public void simpleRepository() throws IOException {
InputStream foo = getInputStreamFor("foo");
try {
try (InputStream foo = getInputStreamFor("foo")) {
ConfigurationMetadataRepository repo = ConfigurationMetadataRepositoryJsonBuilder
.create(foo).build();
validateFoo(repo);
@ -50,15 +49,11 @@ public class ConfigurationMetadataRepositoryJsonBuilderTests
"spring.foo.counter");
assertThat(repo.getAllProperties()).hasSize(3);
}
finally {
foo.close();
}
}
@Test
public void hintsOnMaps() throws IOException {
InputStream map = getInputStreamFor("map");
try {
try (InputStream map = getInputStreamFor("map")) {
ConfigurationMetadataRepository repo = ConfigurationMetadataRepositoryJsonBuilder
.create(map).build();
validateMap(repo);
@ -67,16 +62,12 @@ public class ConfigurationMetadataRepositoryJsonBuilderTests
"spring.map.keys", "spring.map.values");
assertThat(repo.getAllProperties()).hasSize(4);
}
finally {
map.close();
}
}
@Test
public void severalRepositoriesNoConflict() throws IOException {
InputStream foo = getInputStreamFor("foo");
InputStream bar = getInputStreamFor("bar");
try {
try (InputStream foo = getInputStreamFor("foo");
InputStream bar = getInputStreamFor("bar")) {
ConfigurationMetadataRepository repo = ConfigurationMetadataRepositoryJsonBuilder
.create(foo, bar).build();
validateFoo(repo);
@ -87,17 +78,12 @@ public class ConfigurationMetadataRepositoryJsonBuilderTests
"spring.bar.counter");
assertThat(repo.getAllProperties()).hasSize(6);
}
finally {
foo.close();
bar.close();
}
}
@Test
public void repositoryWithRoot() throws IOException {
InputStream foo = getInputStreamFor("foo");
InputStream root = getInputStreamFor("root");
try {
try (InputStream foo = getInputStreamFor("foo");
InputStream root = getInputStreamFor("root")) {
ConfigurationMetadataRepository repo = ConfigurationMetadataRepositoryJsonBuilder
.create(foo, root).build();
validateFoo(repo);
@ -107,17 +93,12 @@ public class ConfigurationMetadataRepositoryJsonBuilderTests
"spring.foo.counter", "spring.root.name", "spring.root2.name");
assertThat(repo.getAllProperties()).hasSize(5);
}
finally {
foo.close();
root.close();
}
}
@Test
public void severalRepositoriesIdenticalGroups() throws IOException {
InputStream foo = getInputStreamFor("foo");
InputStream foo2 = getInputStreamFor("foo2");
try {
try (InputStream foo = getInputStreamFor("foo");
InputStream foo2 = getInputStreamFor("foo2")) {
ConfigurationMetadataRepository repo = ConfigurationMetadataRepositoryJsonBuilder
.create(foo, foo2).build();
assertThat(repo.getAllGroups()).hasSize(1);
@ -132,16 +113,11 @@ public class ConfigurationMetadataRepositoryJsonBuilderTests
"spring.foo.counter", "spring.foo.enabled", "spring.foo.type");
assertThat(repo.getAllProperties()).hasSize(5);
}
finally {
foo.close();
foo2.close();
}
}
@Test
public void emptyGroups() throws IOException {
InputStream in = getInputStreamFor("empty-groups");
try {
try (InputStream in = getInputStreamFor("empty-groups")) {
ConfigurationMetadataRepository repo = ConfigurationMetadataRepositoryJsonBuilder
.create(in).build();
validateEmptyGroup(repo);
@ -149,16 +125,12 @@ public class ConfigurationMetadataRepositoryJsonBuilderTests
contains(repo.getAllProperties(), "name", "title");
assertThat(repo.getAllProperties()).hasSize(2);
}
finally {
in.close();
}
}
@Test
public void builderInstancesAreIsolated() throws IOException {
InputStream foo = getInputStreamFor("foo");
InputStream bar = getInputStreamFor("bar");
try {
try (InputStream foo = getInputStreamFor("foo");
InputStream bar = getInputStreamFor("bar")) {
ConfigurationMetadataRepositoryJsonBuilder builder = ConfigurationMetadataRepositoryJsonBuilder
.create();
ConfigurationMetadataRepository firstRepo = builder.withJsonResource(foo)
@ -175,10 +147,6 @@ public class ConfigurationMetadataRepositoryJsonBuilderTests
assertThat(secondRepo.getAllGroups()).hasSize(2);
assertThat(secondRepo.getAllProperties()).hasSize(6);
}
finally {
foo.close();
bar.close();
}
}
private void validateFoo(ConfigurationMetadataRepository repo) {

@ -64,13 +64,10 @@ public class MetadataStore {
public void writeMetadata(ConfigurationMetadata metadata) throws IOException {
if (!metadata.getItems().isEmpty()) {
OutputStream outputStream = createMetadataResource().openOutputStream();
try {
try (OutputStream outputStream = createMetadataResource()
.openOutputStream()) {
new JsonMarshaller().write(metadata, outputStream);
}
finally {
outputStream.close();
}
}
}

@ -815,13 +815,9 @@ public class ConfigurationMetadataAnnotationProcessorTests {
}
private void writeMetadata(File metadataFile, JSONObject metadata) throws Exception {
FileWriter writer = new FileWriter(metadataFile);
try {
try (FileWriter writer = new FileWriter(metadataFile)) {
writer.append(metadata.toString(2));
}
finally {
writer.close();
}
}
private static class AdditionalMetadata {

@ -83,12 +83,11 @@ final class ApplicationPluginAction implements PluginApplicationAction {
}
private String loadResource(String name) {
InputStreamReader reader = new InputStreamReader(
getClass().getResourceAsStream(name));
char[] buffer = new char[4096];
int read = 0;
StringWriter writer = new StringWriter();
try {
try (InputStreamReader reader = new InputStreamReader(
getClass().getResourceAsStream(name));) {
char[] buffer = new char[4096];
int read = 0;
StringWriter writer = new StringWriter();
while ((read = reader.read(buffer)) > 0) {
writer.write(buffer, 0, read);
}
@ -97,14 +96,6 @@ final class ApplicationPluginAction implements PluginApplicationAction {
catch (IOException ex) {
throw new GradleException("Failed to read '" + name + "'", ex);
}
finally {
try {
reader.close();
}
catch (IOException ex) {
// Continue
}
}
}
}

@ -1,5 +1,5 @@
/*
* Copyright 2012-2016 the original author or authors.
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -48,18 +48,9 @@ public final class BuildPropertiesWriter {
public void writeBuildProperties(ProjectDetails projectDetails) throws IOException {
Properties properties = createBuildInfo(projectDetails);
createFileIfNecessary(this.outputFile);
FileOutputStream outputStream = new FileOutputStream(this.outputFile);
try {
try (FileOutputStream outputStream = new FileOutputStream(this.outputFile)) {
properties.store(outputStream, "Properties");
}
finally {
try {
outputStream.close();
}
catch (IOException ex) {
// Continue
}
}
}
private void createFileIfNecessary(File file) throws IOException {

@ -1,5 +1,5 @@
/*
* Copyright 2012-2016 the original author or authors.
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -64,18 +64,14 @@ public abstract class FileUtils {
*/
public static String sha1Hash(File file) throws IOException {
try {
DigestInputStream inputStream = new DigestInputStream(
new FileInputStream(file), MessageDigest.getInstance("SHA-1"));
try {
try (DigestInputStream inputStream = new DigestInputStream(
new FileInputStream(file), MessageDigest.getInstance("SHA-1"))) {
byte[] buffer = new byte[4098];
while (inputStream.read(buffer) != -1) {
// Read the entire stream
}
return bytesToHex(inputStream.getMessageDigest().digest());
}
finally {
inputStream.close();
}
}
catch (NoSuchAlgorithmException ex) {
throw new IllegalStateException(ex);

@ -49,7 +49,7 @@ import java.util.zip.ZipEntry;
* @author Phillip Webb
* @author Andy Wilkinson
*/
public class JarWriter implements LoaderClassesWriter {
public class JarWriter implements LoaderClassesWriter, AutoCloseable {
private static final String NESTED_LOADER_JAR = "META-INF/loader/spring-boot-loader.jar";
@ -128,23 +128,24 @@ public class JarWriter implements LoaderClassesWriter {
Enumeration<JarEntry> entries = jarFile.entries();
while (entries.hasMoreElements()) {
JarEntry entry = entries.nextElement();
ZipHeaderPeekInputStream inputStream = new ZipHeaderPeekInputStream(
jarFile.getInputStream(entry));
try {
if (inputStream.hasZipHeader() && entry.getMethod() != ZipEntry.STORED) {
new CrcAndSize(inputStream).setupStoredEntry(entry);
inputStream.close();
inputStream = new ZipHeaderPeekInputStream(
jarFile.getInputStream(entry));
}
setUpStoredEntryIfNecessary(jarFile, entry);
try (ZipHeaderPeekInputStream inputStream = new ZipHeaderPeekInputStream(
jarFile.getInputStream(entry))) {
EntryWriter entryWriter = new InputStreamEntryWriter(inputStream, true);
JarEntry transformedEntry = entryTransformer.transform(entry);
if (transformedEntry != null) {
writeEntry(transformedEntry, entryWriter);
}
}
finally {
inputStream.close();
}
}
private void setUpStoredEntryIfNecessary(JarFile jarFile, JarEntry entry)
throws IOException {
try (ZipHeaderPeekInputStream inputStream = new ZipHeaderPeekInputStream(
jarFile.getInputStream(entry))) {
if (inputStream.hasZipHeader() && entry.getMethod() != ZipEntry.STORED) {
new CrcAndSize(inputStream).setupStoredEntry(entry);
}
}
}
@ -234,6 +235,7 @@ public class JarWriter implements LoaderClassesWriter {
* Close the writer.
* @throws IOException if the file cannot be closed
*/
@Override
public void close() throws IOException {
this.jarOutput.close();
}

@ -141,8 +141,7 @@ public abstract class MainClassFinder {
while (!stack.isEmpty()) {
File file = stack.pop();
if (file.isFile()) {
InputStream inputStream = new FileInputStream(file);
try {
try (InputStream inputStream = new FileInputStream(file)) {
ClassDescriptor classDescriptor = createClassDescriptor(inputStream);
if (classDescriptor != null && classDescriptor.isMainMethodFound()) {
String className = convertToClassName(file.getAbsolutePath(),
@ -154,9 +153,6 @@ public abstract class MainClassFinder {
}
}
}
finally {
inputStream.close();
}
}
if (file.isDirectory()) {
pushAllSorted(stack, file.listFiles(PACKAGE_FOLDER_FILTER));
@ -240,9 +236,8 @@ public abstract class MainClassFinder {
List<JarEntry> classEntries = getClassEntries(jarFile, classesLocation);
Collections.sort(classEntries, new ClassEntryComparator());
for (JarEntry entry : classEntries) {
InputStream inputStream = new BufferedInputStream(
jarFile.getInputStream(entry));
try {
try (InputStream inputStream = new BufferedInputStream(
jarFile.getInputStream(entry))) {
ClassDescriptor classDescriptor = createClassDescriptor(inputStream);
if (classDescriptor != null && classDescriptor.isMainMethodFound()) {
String className = convertToClassName(entry.getName(),
@ -254,9 +249,6 @@ public abstract class MainClassFinder {
}
}
}
finally {
inputStream.close();
}
}
return null;
}

@ -184,13 +184,9 @@ public class Repackager {
}
destination.delete();
try {
JarFile jarFileSource = new JarFile(workingSource);
try {
try (JarFile jarFileSource = new JarFile(workingSource)) {
repackage(jarFileSource, destination, libraries, launchScript);
}
finally {
jarFileSource.close();
}
}
finally {
if (!this.backupSource && !this.source.equals(workingSource)) {
@ -221,21 +217,16 @@ public class Repackager {
}
private boolean alreadyRepackaged() throws IOException {
JarFile jarFile = new JarFile(this.source);
try {
try (JarFile jarFile = new JarFile(this.source)) {
Manifest manifest = jarFile.getManifest();
return (manifest != null && manifest.getMainAttributes()
.getValue(BOOT_VERSION_ATTRIBUTE) != null);
}
finally {
jarFile.close();
}
}
private void repackage(JarFile sourceJar, File destination, Libraries libraries,
LaunchScript launchScript) throws IOException {
JarWriter writer = new JarWriter(destination, launchScript);
try {
try (JarWriter writer = new JarWriter(destination, launchScript)) {
final List<Library> unpackLibraries = new ArrayList<>();
final List<Library> standardLibraries = new ArrayList<>();
libraries.doWithLibraries(new LibraryCallback() {
@ -256,14 +247,6 @@ public class Repackager {
});
repackage(sourceJar, writer, unpackLibraries, standardLibraries);
}
finally {
try {
writer.close();
}
catch (Exception ex) {
// Ignore
}
}
}
private void repackage(JarFile sourceJar, JarWriter writer,
@ -309,13 +292,9 @@ public class Repackager {
private boolean isZip(File file) {
try {
FileInputStream fileInputStream = new FileInputStream(file);
try {
try (FileInputStream fileInputStream = new FileInputStream(file)) {
return isZip(fileInputStream);
}
finally {
fileInputStream.close();
}
}
catch (IOException ex) {
return false;

@ -102,13 +102,9 @@ public class FileUtilsTests {
@Test
public void hash() throws Exception {
File file = this.temporaryFolder.newFile();
OutputStream outputStream = new FileOutputStream(file);
try {
try (OutputStream outputStream = new FileOutputStream(file)) {
outputStream.write(new byte[] { 1, 2, 3 });
}
finally {
outputStream.close();
}
assertThat(FileUtils.sha1Hash(file))
.isEqualTo("7037807198c22a7d2b0807371d763779a84fdfcf");
}

@ -455,17 +455,14 @@ public class RepackagerTests {
callback.library(new Library(nestedFile, LibraryScope.COMPILE));
}
});
JarFile jarFile = new JarFile(file);
try {
try (JarFile jarFile = new JarFile(file)) {
assertThat(
jarFile.getEntry("BOOT-INF/lib/" + nestedFile.getName()).getMethod())
.isEqualTo(ZipEntry.STORED);
assertThat(jarFile.getEntry("BOOT-INF/classes/test/nested.jar").getMethod())
.isEqualTo(ZipEntry.STORED);
}
finally {
jarFile.close();
}
}
@Test
@ -508,15 +505,12 @@ public class RepackagerTests {
}
});
JarFile jarFile = new JarFile(file);
try {
try (JarFile jarFile = new JarFile(file)) {
assertThat(
jarFile.getEntry("BOOT-INF/lib/" + nestedFile.getName()).getComment())
.startsWith("UNPACK:");
}
finally {
jarFile.close();
}
}
@Test
@ -542,14 +536,10 @@ public class RepackagerTests {
}
});
JarFile jarFile = new JarFile(file);
try {
try (JarFile jarFile = new JarFile(file)) {
assertThat(jarFile.getEntry("BOOT-INF/lib/" + nestedFile.getName()).getSize())
.isEqualTo(sourceLength);
}
finally {
jarFile.close();
}
}
@Test
@ -561,13 +551,9 @@ public class RepackagerTests {
File dest = this.temporaryFolder.newFile("dest.jar");
Repackager repackager = new Repackager(source);
repackager.repackage(dest, NO_LIBRARIES);
JarFile jarFile = new JarFile(dest);
try {
try (JarFile jarFile = new JarFile(dest)) {
assertThat(jarFile.getEntry("META-INF/INDEX.LIST")).isNull();
}
finally {
jarFile.close();
}
}
@Test
@ -603,14 +589,10 @@ public class RepackagerTests {
File dest = this.temporaryFolder.newFile("dest.jar");
Repackager repackager = new Repackager(source);
repackager.repackage(dest, NO_LIBRARIES);
JarFile jarFile = new JarFile(dest);
try {
try (JarFile jarFile = new JarFile(dest)) {
assertThat(jarFile.getEntry("META-INF/aop.xml")).isNull();
assertThat(jarFile.getEntry("BOOT-INF/classes/META-INF/aop.xml")).isNotNull();
}
finally {
jarFile.close();
}
}
private boolean hasLauncherClasses(File file) throws IOException {
@ -623,23 +605,15 @@ public class RepackagerTests {
}
private JarEntry getEntry(File file, String name) throws IOException {
JarFile jarFile = new JarFile(file);
try {
try (JarFile jarFile = new JarFile(file)) {
return jarFile.getJarEntry(name);
}
finally {
jarFile.close();
}
}
private Manifest getManifest(File file) throws IOException {
JarFile jarFile = new JarFile(file);
try {
try (JarFile jarFile = new JarFile(file)) {
return jarFile.getManifest();
}
finally {
jarFile.close();
}
}
private static class MockLauncherScript implements LaunchScript {

@ -65,25 +65,17 @@ public class TestJarFile {
public void addFile(String filename, File fileToCopy) throws IOException {
File file = getFilePath(filename);
file.getParentFile().mkdirs();
InputStream inputStream = new FileInputStream(fileToCopy);
try {
try (InputStream inputStream = new FileInputStream(fileToCopy)) {
copyToFile(inputStream, file);
}
finally {
inputStream.close();
}
}
public void addManifest(Manifest manifest) throws IOException {
File manifestFile = new File(this.jarSource, "META-INF/MANIFEST.MF");
manifestFile.getParentFile().mkdirs();
OutputStream outputStream = new FileOutputStream(manifestFile);
try {
try (OutputStream outputStream = new FileOutputStream(manifestFile)) {
manifest.write(outputStream);
}
finally {
outputStream.close();
}
}
private File getFilePath(String filename) {
@ -97,13 +89,9 @@ public class TestJarFile {
private void copyToFile(InputStream inputStream, File file)
throws FileNotFoundException, IOException {
OutputStream outputStream = new FileOutputStream(file);
try {
try (OutputStream outputStream = new FileOutputStream(file)) {
copy(inputStream, outputStream);
}
finally {
outputStream.close();
}
}
private void copy(InputStream in, OutputStream out) throws IOException {

@ -164,35 +164,34 @@ public class PropertiesLauncher extends Launcher {
}
}
for (String config : configs) {
InputStream resource = getResource(config);
if (resource != null) {
debug("Found: " + config);
try {
this.properties.load(resource);
try (InputStream resource = getResource(config)) {
if (resource != null) {
debug("Found: " + config);
loadResource(resource);
// Load the first one we find
return;
}
finally {
resource.close();
}
for (Object key : Collections.list(this.properties.propertyNames())) {
String text = this.properties.getProperty((String) key);
String value = SystemPropertyUtils
.resolvePlaceholders(this.properties, text);
if (value != null) {
this.properties.put(key, value);
}
}
if ("true".equals(getProperty(SET_SYSTEM_PROPERTIES))) {
debug("Adding resolved properties to System properties");
for (Object key : Collections.list(this.properties.propertyNames())) {
String value = this.properties.getProperty((String) key);
System.setProperty((String) key, value);
}
else {
debug("Not found: " + config);
}
// Load the first one we find
return;
}
else {
debug("Not found: " + config);
}
}
private void loadResource(InputStream resource) throws IOException, Exception {
this.properties.load(resource);
for (Object key : Collections.list(this.properties.propertyNames())) {
String text = this.properties.getProperty((String) key);
String value = SystemPropertyUtils.resolvePlaceholders(this.properties, text);
if (value != null) {
this.properties.put(key, value);
}
}
if ("true".equals(getProperty(SET_SYSTEM_PROPERTIES))) {
debug("Adding resolved properties to System properties");
for (Object key : Collections.list(this.properties.propertyNames())) {
String value = this.properties.getProperty((String) key);
System.setProperty((String) key, value);
}
}
}

@ -91,13 +91,9 @@ public class ExplodedArchive implements Archive {
@Override
public Manifest getManifest() throws IOException {
if (this.manifest == null && this.manifestFile.exists()) {
FileInputStream inputStream = new FileInputStream(this.manifestFile);
try {
try (FileInputStream inputStream = new FileInputStream(this.manifestFile)) {
this.manifest = new Manifest(inputStream);
}
finally {
inputStream.close();
}
}
return this.manifest;
}

@ -145,23 +145,15 @@ public class JarFileArchive implements Archive {
}
private void unpack(JarEntry entry, File file) throws IOException {
InputStream inputStream = this.jarFile.getInputStream(entry, ResourceAccess.ONCE);
try {
OutputStream outputStream = new FileOutputStream(file);
try {
byte[] buffer = new byte[BUFFER_SIZE];
int bytesRead = -1;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
outputStream.flush();
}
finally {
outputStream.close();
try (InputStream inputStream = this.jarFile.getInputStream(entry,
ResourceAccess.ONCE);
OutputStream outputStream = new FileOutputStream(file)) {
byte[] buffer = new byte[BUFFER_SIZE];
int bytesRead = -1;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
}
finally {
inputStream.close();
outputStream.flush();
}
}

@ -1,5 +1,5 @@
/*
* Copyright 2012-2013 the original author or authors.
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -35,13 +35,9 @@ final class Bytes {
}
public static byte[] get(RandomAccessData data) throws IOException {
InputStream inputStream = data.getInputStream(ResourceAccess.ONCE);
try {
try (InputStream inputStream = data.getInputStream(ResourceAccess.ONCE)) {
return get(inputStream, data.getSize());
}
finally {
inputStream.close();
}
}
public static byte[] get(InputStream inputStream, long length) throws IOException {

@ -160,17 +160,13 @@ public class JarFile extends java.util.jar.JarFile {
manifest = new JarFile(this.getRootJarFile()).getManifest();
}
else {
InputStream inputStream = getInputStream(MANIFEST_NAME,
ResourceAccess.ONCE);
if (inputStream == null) {
return null;
}
try {
try (InputStream inputStream = getInputStream(MANIFEST_NAME,
ResourceAccess.ONCE)) {
if (inputStream == null) {
return null;
}
manifest = new Manifest(inputStream);
}
finally {
inputStream.close();
}
}
this.manifest = new SoftReference<>(manifest);
}
@ -335,9 +331,8 @@ public class JarFile extends java.util.jar.JarFile {
// Fallback to JarInputStream to obtain certificates, not fast but hopefully not
// happening that often.
try {
JarInputStream inputStream = new JarInputStream(
getData().getInputStream(ResourceAccess.ONCE));
try {
try (JarInputStream inputStream = new JarInputStream(
getData().getInputStream(ResourceAccess.ONCE))) {
java.util.jar.JarEntry certEntry = inputStream.getNextJarEntry();
while (certEntry != null) {
inputStream.closeEntry();
@ -348,9 +343,6 @@ public class JarFile extends java.util.jar.JarFile {
certEntry = inputStream.getNextJarEntry();
}
}
finally {
inputStream.close();
}
}
catch (IOException ex) {
throw new IllegalStateException(ex);

@ -1,5 +1,5 @@
/*
* Copyright 2012-2013 the original author or authors.
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -40,8 +40,7 @@ public abstract class TestJarCreator {
public static void createTestJar(File file, boolean unpackNested) throws Exception {
FileOutputStream fileOutputStream = new FileOutputStream(file);
JarOutputStream jarOutputStream = new JarOutputStream(fileOutputStream);
try {
try (JarOutputStream jarOutputStream = new JarOutputStream(fileOutputStream)) {
writeManifest(jarOutputStream, "j1");
writeEntry(jarOutputStream, "1.dat", 1);
writeEntry(jarOutputStream, "2.dat", 2);
@ -53,9 +52,6 @@ public abstract class TestJarCreator {
writeNestedEntry("nested.jar", unpackNested, jarOutputStream);
writeNestedEntry("another-nested.jar", unpackNested, jarOutputStream);
}
finally {
jarOutputStream.close();
}
}
private static void writeNestedEntry(String name, boolean unpackNested,

@ -205,21 +205,18 @@ public class StartMojo extends AbstractRunMojo {
throws IOException, MojoFailureException, MojoExecutionException {
try {
getLog().debug("Connecting to local MBeanServer at port " + this.jmxPort);
JMXConnector connector = execute(this.wait, this.maxAttempts,
new CreateJmxConnector(this.jmxPort));
if (connector == null) {
throw new MojoExecutionException(
"JMX MBean server was not reachable before the configured "
+ "timeout (" + (this.wait * this.maxAttempts) + "ms");
}
getLog().debug("Connected to local MBeanServer at port " + this.jmxPort);
try {
try (JMXConnector connector = execute(this.wait, this.maxAttempts,
new CreateJmxConnector(this.jmxPort))) {
if (connector == null) {
throw new MojoExecutionException(
"JMX MBean server was not reachable before the configured "
+ "timeout (" + (this.wait * this.maxAttempts)
+ "ms");
}
getLog().debug("Connected to local MBeanServer at port " + this.jmxPort);
MBeanServerConnection connection = connector.getMBeanServerConnection();
doWaitForSpringApplication(connection);
}
finally {
connector.close();
}
}
catch (IOException ex) {
throw ex;

@ -1,5 +1,5 @@
/*
* Copyright 2012-2016 the original author or authors.
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -110,14 +110,11 @@ public class StopMojo extends AbstractMojo {
private void stopForkedProcess()
throws IOException, MojoFailureException, MojoExecutionException {
JMXConnector connector = SpringApplicationAdminClient.connect(this.jmxPort);
try {
try (JMXConnector connector = SpringApplicationAdminClient
.connect(this.jmxPort)) {
MBeanServerConnection connection = connector.getMBeanServerConnection();
doStop(connection);
}
finally {
connector.close();
}
}
private void stop() throws IOException, MojoFailureException, MojoExecutionException {

@ -198,14 +198,10 @@ public final class Verify {
.startsWith(new String(new byte[] { 0x50, 0x4b, 0x03, 0x04 }));
}
ZipFile zipFile = new ZipFile(this.file);
try {
try (ZipFile zipFile = new ZipFile(this.file)) {
ArchiveVerifier verifier = new ArchiveVerifier(zipFile);
verifyZipEntries(verifier);
}
finally {
zipFile.close();
}
}
protected void verifyZipEntries(ArchiveVerifier verifier) throws Exception {

@ -125,14 +125,10 @@ public class ModifiedClassPathRunner extends BlockJUnit4ClassRunner {
}
private String[] getClassPath(URL booterJar) throws Exception {
JarFile jarFile = new JarFile(new File(booterJar.toURI()));
try {
try (JarFile jarFile = new JarFile(new File(booterJar.toURI()))) {
return StringUtils.delimitedListToStringArray(jarFile.getManifest()
.getMainAttributes().getValue(Attributes.Name.CLASS_PATH), " ");
}
finally {
jarFile.close();
}
}
private URL[] processUrls(URL[] urls, Class<?> testClass) throws Exception {

@ -36,6 +36,7 @@ import org.springframework.util.StringUtils;
* both Jar Files, Exploded Archives and directly running applications.
*
* @author Phillip Webb
* @author Raja Kolli
* @since 1.2.0
*/
public class ApplicationHome {

@ -1,5 +1,5 @@
/*
* Copyright 2012-2015 the original author or authors.
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -81,13 +81,9 @@ public class ApplicationPid {
public void write(File file) throws IOException {
Assert.state(this.pid != null, "No PID available");
createParentFolder(file);
FileWriter writer = new FileWriter(file);
try {
try (FileWriter writer = new FileWriter(file)) {
writer.append(this.pid);
}
finally {
writer.close();
}
}
private void createParentFolder(File file) {

@ -44,6 +44,7 @@ import org.springframework.util.Assert;
* @author Craig Burke
* @author Phillip Webb
* @author Madhura Bhave
* @author Raja Kolli
* @since 1.4.0
*/
public class ImageBanner implements Banner {

@ -37,6 +37,7 @@ import org.springframework.core.ConfigurableObjectInputStream;
*
* @author Phillip Webb
* @author Peter Leibiger
* @author Raja Kolli
*/
class FileSessionPersistence implements SessionPersistenceManager {
@ -59,13 +60,10 @@ class FileSessionPersistence implements SessionPersistenceManager {
private void save(Map<String, PersistentSession> sessionData, File file)
throws IOException {
ObjectOutputStream stream = new ObjectOutputStream(new FileOutputStream(file));
try {
try (ObjectOutputStream stream = new ObjectOutputStream(
new FileOutputStream(file))) {
save(sessionData, stream);
}
finally {
stream.close();
}
}
private void save(Map<String, PersistentSession> sessionData,

@ -83,13 +83,9 @@ public class MustacheView extends AbstractTemplateView {
}
private Template createTemplate(Resource resource) throws IOException {
Reader reader = getReader(resource);
try {
try (Reader reader = getReader(resource)) {
return this.compiler.compile(reader);
}
finally {
reader.close();
}
}
private Reader getReader(Resource resource) throws IOException {

@ -112,18 +112,12 @@ public class ConfigurationWarningsApplicationContextInitializerTests {
}
private void load(Class<?> configClass) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
new TestConfigurationWarningsApplicationContextInitializer().initialize(context);
context.register(configClass);
try {
try (AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext()) {
new TestConfigurationWarningsApplicationContextInitializer()
.initialize(context);
context.register(configClass);
context.refresh();
}
catch (Exception ex) {
ex.printStackTrace();
}
finally {
context.close();
}
}
/**

@ -196,12 +196,8 @@ public class ConfigFileApplicationListenerTests {
try {
Properties properties = new Properties();
properties.put("the.property", "fromlocalfile");
OutputStream out = new FileOutputStream(localFile);
try {
properties.store(out, "");
}
finally {
out.close();
try (OutputStream outputStream = new FileOutputStream(localFile)) {
properties.store(outputStream, "");
}
this.initializer.postProcessEnvironment(this.environment, this.application);
String property = this.environment.getProperty("the.property");

@ -44,15 +44,11 @@ public class LoggingApplicationListenerIntegrationTests {
@Test
public void loggingSystemRegisteredInTheContext() {
ConfigurableApplicationContext context = new SpringApplicationBuilder(
SampleService.class).web(WebApplicationType.NONE).run();
try {
try (ConfigurableApplicationContext context = new SpringApplicationBuilder(
SampleService.class).web(WebApplicationType.NONE).run()) {
SampleService service = context.getBean(SampleService.class);
assertThat(service.loggingSystem).isNotNull();
}
finally {
context.close();
}
}
@Test

@ -33,7 +33,7 @@ import static org.junit.Assert.fail;
*
* @author Stephane Nicoll
*/
public class BeanCreationFailureAnalyzerTest {
public class BeanCreationFailureAnalyzerTests {
private final FailureAnalyzer analyzer = new BeanCreationFailureAnalyzer();
@ -55,20 +55,14 @@ public class BeanCreationFailureAnalyzerTest {
}
private Exception createFailure(Class<?> configuration) {
ConfigurableApplicationContext context = null;
try {
context = new AnnotationConfigApplicationContext(configuration);
try (ConfigurableApplicationContext context = new AnnotationConfigApplicationContext(
configuration)) {
fail("Expected failure did not occur");
return null;
}
catch (Exception ex) {
return ex;
}
finally {
if (context != null) {
context.close();
}
}
fail("Expected failure did not occur");
return null;
}
@Configuration

@ -118,9 +118,8 @@ public class BeanCurrentlyInCreationFailureAnalyzerTests {
private List<String> readDescriptionLines(FailureAnalysis analysis)
throws IOException {
BufferedReader lineReader = new BufferedReader(
new StringReader(analysis.getDescription()));
try {
try (BufferedReader lineReader = new BufferedReader(
new StringReader(analysis.getDescription()))) {
List<String> lines = new ArrayList<>();
String line;
while ((line = lineReader.readLine()) != null) {
@ -128,9 +127,6 @@ public class BeanCurrentlyInCreationFailureAnalyzerTests {
}
return lines;
}
finally {
lineReader.close();
}
}
private FailureAnalysis performAnalysis(Class<?> configuration) {
@ -140,21 +136,15 @@ public class BeanCurrentlyInCreationFailureAnalyzerTests {
}
private Exception createFailure(Class<?> configuration) {
ConfigurableApplicationContext context = null;
try {
context = new AnnotationConfigApplicationContext(configuration);
try (ConfigurableApplicationContext context = new AnnotationConfigApplicationContext(
configuration);) {
fail("Expected failure did not occur");
return null;
}
catch (Exception ex) {
ex.printStackTrace();
return ex;
}
finally {
if (context != null) {
context.close();
}
}
fail("Expected failure did not occur");
return null;
}
@org.springframework.context.annotation.Configuration

@ -1,5 +1,5 @@
/*
* Copyright 2012-2016 the original author or authors.
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -57,20 +57,14 @@ public class BeanNotOfRequiredTypeFailureAnalyzerTests {
}
private Exception createFailure(Class<?> configuration) {
ConfigurableApplicationContext context = null;
try {
context = new AnnotationConfigApplicationContext(configuration);
try (ConfigurableApplicationContext context = new AnnotationConfigApplicationContext(
configuration)) {
fail("Expected failure did not occur");
return null;
}
catch (Exception ex) {
return ex;
}
finally {
if (context != null) {
context.close();
}
}
fail("Expected failure did not occur");
return null;
}
@Configuration

@ -1,5 +1,5 @@
/*
* Copyright 2012-2016 the original author or authors.
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -102,20 +102,19 @@ public class NoUniqueBeanDefinitionFailureAnalyzerTests {
}
private BeanCreationException createFailure(Class<?> consumer) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.register(DuplicateBeansProducer.class, consumer);
context.setParent(new AnnotationConfigApplicationContext(ParentProducer.class));
try {
context.refresh();
try (AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext()) {
context.register(DuplicateBeansProducer.class, consumer);
context.setParent(
new AnnotationConfigApplicationContext(ParentProducer.class));
try {
context.refresh();
}
catch (BeanCreationException ex) {
this.analyzer.setBeanFactory(context.getBeanFactory());
return ex;
}
return null;
}
catch (BeanCreationException ex) {
this.analyzer.setBeanFactory(context.getBeanFactory());
return ex;
}
finally {
context.close();
}
}
private FailureAnalysis analyzeFailure(BeanCreationException failure) {

@ -101,15 +101,11 @@ public class ServletWebServerMvcIntegrationTests {
ClientHttpRequest request = clientHttpRequestFactory.createRequest(new URI(
"http://localhost:" + context.getWebServer().getPort() + resourcePath),
HttpMethod.GET);
ClientHttpResponse response = request.execute();
try {
try (ClientHttpResponse response = request.execute()) {
String actual = StreamUtils.copyToString(response.getBody(),
Charset.forName("UTF-8"));
assertThat(actual).isEqualTo("Hello World");
}
finally {
response.close();
}
}
// Simple main method for testing in a browser

@ -122,6 +122,7 @@ import static org.mockito.Mockito.verify;
* @author Phillip Webb
* @author Greg Turnquist
* @author Andy Wilkinson
* @author Raja Kolli
*/
public abstract class AbstractServletWebServerFactoryTests {
@ -1058,13 +1059,9 @@ public abstract class AbstractServletWebServerFactoryTests {
protected String getResponse(String url, HttpMethod method, String... headers)
throws IOException, URISyntaxException {
ClientHttpResponse response = getClientResponse(url, method, headers);
try {
try (ClientHttpResponse response = getClientResponse(url, method, headers)) {
return StreamUtils.copyToString(response.getBody(), Charset.forName("UTF-8"));
}
finally {
response.close();
}
}
protected String getResponse(String url,
@ -1076,14 +1073,10 @@ public abstract class AbstractServletWebServerFactoryTests {
protected String getResponse(String url, HttpMethod method,
HttpComponentsClientHttpRequestFactory requestFactory, String... headers)
throws IOException, URISyntaxException {
ClientHttpResponse response = getClientResponse(url, method, requestFactory,
headers);
try {
try (ClientHttpResponse response = getClientResponse(url, method, requestFactory,
headers)) {
return StreamUtils.copyToString(response.getBody(), Charset.forName("UTF-8"));
}
finally {
response.close();
}
}
protected ClientHttpResponse getClientResponse(String url, String... headers)

@ -102,15 +102,11 @@ public class SpringBootServletInitializerTests {
@Override
public void onStartup(ServletContext servletContext)
throws ServletException {
AbstractApplicationContext context = (AbstractApplicationContext) new WithErrorPageFilterNotRegistered()
.createRootApplicationContext(servletContext);
try {
try (AbstractApplicationContext context = (AbstractApplicationContext) new WithErrorPageFilterNotRegistered()
.createRootApplicationContext(servletContext)) {
assertThat(context.getBeansOfType(ErrorPageFilter.class))
.hasSize(0);
}
finally {
context.close();
}
}
});
try {
@ -124,14 +120,10 @@ public class SpringBootServletInitializerTests {
@Test
public void executableWarThatUsesServletInitializerDoesNotHaveErrorPageFilterConfigured()
throws Exception {
ConfigurableApplicationContext context = new SpringApplication(
ExecutableWar.class).run();
try {
try (ConfigurableApplicationContext context = new SpringApplication(
ExecutableWar.class).run()) {
assertThat(context.getBeansOfType(ErrorPageFilter.class)).hasSize(0);
}
finally {
context.close();
}
}
@Test

Loading…
Cancel
Save