This is an automated email from the ASF dual-hosted git repository.
slachiewicz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-changes-plugin.git
The following commit(s) were added to refs/heads/master by this push:
new d3f816d Fix a possible file handle leak when exceptions are thrown in
RestJiraDownloader and use try-with-resources in select other files.
d3f816d is described below
commit d3f816d015bc27dabc0f681cc7103d2989cfbe6f
Author: Gary Gregory <[email protected]>
AuthorDate: Sun Jan 2 10:43:09 2022 -0500
Fix a possible file handle leak when exceptions are thrown in
RestJiraDownloader and use try-with-resources in select other files.
---
.../plugins/announcement/AnnouncementMailMojo.java | 14 +++------
.../apache/maven/plugins/changes/ChangesMojo.java | 26 +++++++----------
.../apache/maven/plugins/changes/ChangesXML.java | 15 +++-------
.../schema/DefaultChangesSchemaValidator.java | 15 +++-------
.../maven/plugins/jira/RestJiraDownloader.java | 34 ++++++++++++----------
.../plugins/announcement/AnnouncementMojoTest.java | 8 ++---
.../maven/plugins/changes/FeedGeneratorTest.java | 14 ++++-----
.../maven/plugins/jira/JiraUnicodeTestCase.java | 5 +---
8 files changed, 50 insertions(+), 81 deletions(-)
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 @@ public class AnnouncementMailMojo
protected String readAnnouncement( File file )
throws MojoExecutionException
{
- InputStreamReader reader = null;
try
{
if ( StringUtils.isEmpty( templateEncoding ) )
@@ -375,11 +374,10 @@ public class AnnouncementMailMojo
}
- 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 @@ public class AnnouncementMailMojo
{
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.MavenFileFilter;
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 @@ public class ChangesMojo
{
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.ChangesDocument;
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 @@ public class ChangesXML
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 @@ public class ChangesXML
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 class DefaultChangesSchemaValidator
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 @@ public class DefaultChangesSchemaValidator
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 @@ public class DefaultChangesSchemaValidator
{
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 @@ public class RestJiraDownloader
.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 @@ public class RestJiraDownloader
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 @@ package org.apache.maven.plugins.announcement;
*/
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 @@ public class AnnouncementMojoTest
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 java.util.Locale;
import junit.framework.TestCase;
-import org.apache.maven.plugins.changes.FeedGenerator;
import org.apache.maven.plugins.changes.model.Release;
/**
@@ -94,12 +93,13 @@ public class FeedGeneratorTest
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 @@ public class JiraUnicodeTestCase
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();