Fix a possible file handle leak when exceptions are thrown in
RestJiraDownloader and use try-with-resources in select other files.
diff --git a/src/main/java/org/apache/maven/plugins/announcement/AnnouncementMailMojo.java b/src/main/java/org/apache/maven/plugins/announcement/AnnouncementMailMojo.java
index d618463..f29ded1 100644
--- a/src/main/java/org/apache/maven/plugins/announcement/AnnouncementMailMojo.java
+++ b/src/main/java/org/apache/maven/plugins/announcement/AnnouncementMailMojo.java
@@ -364,7 +364,6 @@
protected String readAnnouncement( File file )
throws MojoExecutionException
{
- InputStreamReader reader = null;
try
{
if ( StringUtils.isEmpty( templateEncoding ) )
@@ -375,11 +374,10 @@
}
- reader = new InputStreamReader( new FileInputStream( file ), templateEncoding );
- final String announcement = IOUtil.toString( reader );
- reader.close();
- reader = null;
- return announcement;
+ try ( InputStreamReader reader = new InputStreamReader( new FileInputStream( file ), templateEncoding ) )
+ {
+ return IOUtil.toString( reader );
+ }
}
catch ( FileNotFoundException fnfe )
{
@@ -393,10 +391,6 @@
{
throw new MojoExecutionException( "Failed to read the announcement file.", ioe );
}
- finally
- {
- IOUtil.close( reader );
- }
}
/**
diff --git a/src/main/java/org/apache/maven/plugins/changes/ChangesMojo.java b/src/main/java/org/apache/maven/plugins/changes/ChangesMojo.java
index cae341b..be3bd78 100644
--- a/src/main/java/org/apache/maven/plugins/changes/ChangesMojo.java
+++ b/src/main/java/org/apache/maven/plugins/changes/ChangesMojo.java
@@ -47,7 +47,6 @@
import org.apache.maven.shared.filtering.MavenFileFilterRequest;
import org.apache.maven.shared.filtering.MavenFilteringException;
import org.codehaus.plexus.util.FileUtils;
-import org.codehaus.plexus.util.IOUtil;
import org.codehaus.plexus.util.StringUtils;
/**
@@ -408,31 +407,26 @@
{
filteredOutputDirectory.mkdirs();
}
- XmlStreamReader xmlStreamReader = null;
try
{
// so we get encoding from the file itself
- xmlStreamReader = new XmlStreamReader( changesXml );
- String encoding = xmlStreamReader.getEncoding();
- File resultFile = new File( filteredOutputDirectory,
+ try ( XmlStreamReader xmlStreamReader = new XmlStreamReader( changesXml ) )
+ {
+ String encoding = xmlStreamReader.getEncoding();
+ File resultFile = new File( filteredOutputDirectory,
project.getGroupId() + "." + project.getArtifactId() + "-changes.xml" );
- final MavenFileFilterRequest mavenFileFilterRequest =
- new MavenFileFilterRequest( changesXml, resultFile, true, project, Collections.<String>emptyList(),
- false, encoding, session, additionalProperties );
- mavenFileFilter.copyFile( mavenFileFilterRequest );
- changesXml = resultFile;
- xmlStreamReader.close();
- xmlStreamReader = null;
+ final MavenFileFilterRequest mavenFileFilterRequest =
+ new MavenFileFilterRequest( changesXml, resultFile, true, project,
+ Collections.<String>emptyList(), false, encoding, session, additionalProperties );
+ mavenFileFilter.copyFile( mavenFileFilterRequest );
+ changesXml = resultFile;
+ }
}
catch ( IOException | MavenFilteringException e )
{
throw new MavenReportException( "Exception during filtering changes file : " + e.getMessage(), e );
}
- finally
- {
- IOUtil.close( xmlStreamReader );
- }
}
return new ChangesXML( changesXml, getLog() );
diff --git a/src/main/java/org/apache/maven/plugins/changes/ChangesXML.java b/src/main/java/org/apache/maven/plugins/changes/ChangesXML.java
index ee40e42..5fe7959 100644
--- a/src/main/java/org/apache/maven/plugins/changes/ChangesXML.java
+++ b/src/main/java/org/apache/maven/plugins/changes/ChangesXML.java
@@ -49,7 +49,6 @@
import org.apache.maven.plugins.changes.model.Properties;
import org.apache.maven.plugins.changes.model.Release;
import org.apache.maven.plugins.changes.model.io.xpp3.ChangesXpp3Reader;
-import org.codehaus.plexus.util.IOUtil;
/**
* A facade for a changes.xml file.
@@ -91,17 +90,15 @@
return;
}
- FileInputStream fileInputStream = null;
-
try
{
ChangesXpp3Reader reader = new ChangesXpp3Reader();
- fileInputStream = new FileInputStream( xmlPath );
- changesDocument = reader.read( fileInputStream, false );
- fileInputStream.close();
- fileInputStream = null;
+ try ( FileInputStream fileInputStream = new FileInputStream( xmlPath ) )
+ {
+ changesDocument = reader.read( fileInputStream, false );
+ }
if ( changesDocument == null )
{
@@ -134,10 +131,6 @@
log.error( "An error occurred when parsing the changes.xml file: ", e );
throw new ChangesXMLRuntimeException( "An error occurred when parsing the changes.xml file", e );
}
- finally
- {
- IOUtil.close( fileInputStream );
- }
}
/**
diff --git a/src/main/java/org/apache/maven/plugins/changes/schema/DefaultChangesSchemaValidator.java b/src/main/java/org/apache/maven/plugins/changes/schema/DefaultChangesSchemaValidator.java
index a86135b..068f34a 100644
--- a/src/main/java/org/apache/maven/plugins/changes/schema/DefaultChangesSchemaValidator.java
+++ b/src/main/java/org/apache/maven/plugins/changes/schema/DefaultChangesSchemaValidator.java
@@ -56,7 +56,6 @@
public XmlValidationHandler validateXmlWithSchema( File file, String schemaVersion, boolean failOnValidationError )
throws SchemaValidatorException
{
- Reader reader = null;
try
{
String schemaPath = CHANGES_SCHEMA_PATH + "changes-" + schemaVersion + ".xsd";
@@ -69,12 +68,10 @@
validator.setErrorHandler( baseHandler );
- reader = new XmlStreamReader( file );
-
- validator.validate( new StreamSource( reader ) );
-
- reader.close();
- reader = null;
+ try ( Reader reader = new XmlStreamReader( file ) )
+ {
+ validator.validate( new StreamSource( reader ) );
+ }
return baseHandler;
}
@@ -90,10 +87,6 @@
{
throw new SchemaValidatorException( "Exception : " + e.getMessage(), e );
}
- finally
- {
- IOUtil.close( reader );
- }
}
public Schema getSchema( String schemaPath )
diff --git a/src/main/java/org/apache/maven/plugins/jira/RestJiraDownloader.java b/src/main/java/org/apache/maven/plugins/jira/RestJiraDownloader.java
index 69fa03b..b92e4bd 100644
--- a/src/main/java/org/apache/maven/plugins/jira/RestJiraDownloader.java
+++ b/src/main/java/org/apache/maven/plugins/jira/RestJiraDownloader.java
@@ -143,16 +143,17 @@
.build();
StringWriter searchParamStringWriter = new StringWriter();
- JsonGenerator gen = jsonFactory.createGenerator( searchParamStringWriter );
- gen.writeStartObject();
- gen.writeStringField( "jql", jqlQuery );
- gen.writeNumberField( "maxResults", nbEntriesMax );
- gen.writeArrayFieldStart( "fields" );
- // Retrieve all fields. If that seems slow, we can reconsider.
- gen.writeString( "*all" );
- gen.writeEndArray();
- gen.writeEndObject();
- gen.close();
+ try ( JsonGenerator gen = jsonFactory.createGenerator( searchParamStringWriter ) )
+ {
+ gen.writeStartObject();
+ gen.writeStringField( "jql", jqlQuery );
+ gen.writeNumberField( "maxResults", nbEntriesMax );
+ gen.writeArrayFieldStart( "fields" );
+ // Retrieve all fields. If that seems slow, we can reconsider.
+ gen.writeString( "*all" );
+ gen.writeEndArray();
+ gen.writeEndObject();
+ }
client.replacePath( "/rest/api/2/search" );
client.type( MediaType.APPLICATION_JSON_TYPE );
client.accept( MediaType.APPLICATION_JSON_TYPE );
@@ -526,12 +527,13 @@
client.replacePath( "/rest/auth/1/session" );
client.type( MediaType.APPLICATION_JSON_TYPE );
StringWriter jsWriter = new StringWriter();
- JsonGenerator gen = jsonFactory.createGenerator( jsWriter );
- gen.writeStartObject();
- gen.writeStringField( "username", jiraUser );
- gen.writeStringField( "password", jiraPassword );
- gen.writeEndObject();
- gen.close();
+ try ( JsonGenerator gen = jsonFactory.createGenerator( jsWriter ) )
+ {
+ gen.writeStartObject();
+ gen.writeStringField( "username", jiraUser ) ;
+ gen.writeStringField( "password", jiraPassword );
+ gen.writeEndObject();
+ }
Response authRes = client.post( jsWriter.toString() );
if ( authRes.getStatus() != Response.Status.OK.getStatusCode() )
{
diff --git a/src/test/java/org/apache/maven/plugins/announcement/AnnouncementMojoTest.java b/src/test/java/org/apache/maven/plugins/announcement/AnnouncementMojoTest.java
index 9280c8c..42346e9 100644
--- a/src/test/java/org/apache/maven/plugins/announcement/AnnouncementMojoTest.java
+++ b/src/test/java/org/apache/maven/plugins/announcement/AnnouncementMojoTest.java
@@ -20,11 +20,10 @@
*/
import java.io.File;
-import java.io.FileReader;
+import java.nio.file.Files;
import org.apache.maven.plugin.testing.AbstractMojoTestCase;
import org.codehaus.plexus.util.FileUtils;
-import org.codehaus.plexus.util.IOUtil;
/**
* @author Olivier Lamy
@@ -62,10 +61,7 @@
setVariableValueToObject( mojo, "introduction", "Nice library" );
mojo.execute();
- FileReader fileReader = new FileReader( new File( announcementDirectory, "announcement.vm" ) );
- String result = IOUtil.toString( fileReader );
-
- fileReader.close();
+ String result = new String( Files.readAllBytes( announcementDirectory.toPath().resolve( "announcement.vm" ) ) );
assertContains( "Nice library", result );
diff --git a/src/test/java/org/apache/maven/plugins/changes/FeedGeneratorTest.java b/src/test/java/org/apache/maven/plugins/changes/FeedGeneratorTest.java
index 9bbd005..d3e1a2e 100644
--- a/src/test/java/org/apache/maven/plugins/changes/FeedGeneratorTest.java
+++ b/src/test/java/org/apache/maven/plugins/changes/FeedGeneratorTest.java
@@ -29,7 +29,6 @@
import junit.framework.TestCase;
-import org.apache.maven.plugins.changes.FeedGenerator;
import org.apache.maven.plugins.changes.model.Release;
/**
@@ -94,12 +93,13 @@
for ( String type : generator.getSupportedFeedTypes() )
{
- Writer writer = new StringWriter( 512 );
- generator.export( releases, type, writer );
- String result = writer.toString(); // TODO: save for inspection?
- assertNotNull( result );
- assertTrue( result.length() > 0 );
- writer.close();
+ try ( Writer writer = new StringWriter( 512 ) )
+ {
+ generator.export( releases, type, writer );
+ String result = writer.toString(); // TODO: save for inspection?
+ assertNotNull( result );
+ assertTrue( result.length() > 0 );
+ }
}
}
}
diff --git a/src/test/java/org/apache/maven/plugins/jira/JiraUnicodeTestCase.java b/src/test/java/org/apache/maven/plugins/jira/JiraUnicodeTestCase.java
index 22a9f92..76d5be6 100644
--- a/src/test/java/org/apache/maven/plugins/jira/JiraUnicodeTestCase.java
+++ b/src/test/java/org/apache/maven/plugins/jira/JiraUnicodeTestCase.java
@@ -59,12 +59,9 @@
repoSession.setLocalRepositoryManager( new SimpleLocalRepositoryManager( "target/local-repo" ) );
setVariableValueToObject( mojo, "project", project );
setVariableValueToObject( mojo, "mavenSession", session );
- InputStream testJiraXmlStream = JiraUnicodeTestCase.class.getResourceAsStream( "unicode-jira-results.xml" );
String jiraXml;
- try {
+ try (InputStream testJiraXmlStream = JiraUnicodeTestCase.class.getResourceAsStream( "unicode-jira-results.xml" ) ) {
jiraXml = IOUtils.toString(testJiraXmlStream, UTF_8 );
- } finally {
- testJiraXmlStream.close();
}
MockJiraDownloader mockDownloader = new MockJiraDownloader();