You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ti...@apache.org on 2019/08/18 21:49:48 UTC
[maven-archetype] branch release-3.1.2 updated: [ARCHETYPE-579]
Missing try-with-resources and createNewFile() before new
FileOutputStream(f)
This is an automated email from the ASF dual-hosted git repository.
tibordigana pushed a commit to branch release-3.1.2
in repository https://gitbox.apache.org/repos/asf/maven-archetype.git
The following commit(s) were added to refs/heads/release-3.1.2 by this push:
new 18c6eef [ARCHETYPE-579] Missing try-with-resources and createNewFile() before new FileOutputStream(f)
18c6eef is described below
commit 18c6eef1122f3f23466eab7b45f62e1c96cfb8b7
Author: tibordigana <ti...@apache.org>
AuthorDate: Sat Jul 27 15:46:14 2019 +0200
[ARCHETYPE-579] Missing try-with-resources and createNewFile() before new FileOutputStream(f)
---
.../maven/archetype/DefaultArchetypeManager.java | 6 ++++
.../maven/archetype/common/DefaultPomManager.java | 6 ++++
.../archetype/creator/FilesetArchetypeCreator.java | 36 ++++++++++++++++++----
.../DefaultFilesetArchetypeGenerator.java | 16 ++++++++--
.../maven/archetype/old/DefaultOldArchetype.java | 25 ++++++++++-----
.../apache/maven/archetype/old/ArchetypeTest.java | 4 +--
.../DefaultArchetypeCreationConfigurator.java | 8 +++++
7 files changed, 81 insertions(+), 20 deletions(-)
diff --git a/archetype-common/src/main/java/org/apache/maven/archetype/DefaultArchetypeManager.java b/archetype-common/src/main/java/org/apache/maven/archetype/DefaultArchetypeManager.java
index f58c233..4948afc 100644
--- a/archetype-common/src/main/java/org/apache/maven/archetype/DefaultArchetypeManager.java
+++ b/archetype-common/src/main/java/org/apache/maven/archetype/DefaultArchetypeManager.java
@@ -96,6 +96,12 @@ public class DefaultArchetypeManager
archive.getParentFile().mkdirs();
}
+
+ if ( !archive.exists() && !archive.createNewFile() )
+ {
+ getLogger().warn( "Could not create new file \"" + archive.getPath() + "\" or the file already exists." );
+ }
+
try ( ZipOutputStream zos = new ZipOutputStream( new FileOutputStream( archive ) ) )
{
zos.setLevel( 9 );
diff --git a/archetype-common/src/main/java/org/apache/maven/archetype/common/DefaultPomManager.java b/archetype-common/src/main/java/org/apache/maven/archetype/common/DefaultPomManager.java
index ca30cd7..9d572c2 100644
--- a/archetype-common/src/main/java/org/apache/maven/archetype/common/DefaultPomManager.java
+++ b/archetype-common/src/main/java/org/apache/maven/archetype/common/DefaultPomManager.java
@@ -234,6 +234,12 @@ public class DefaultPomManager
ioe.initCause( exc );
throw ioe;
}
+
+
+ if ( !pomFile.exists() && !pomFile.createNewFile() )
+ {
+ getLogger().warn( "Could not create new file \"" + pomFile.getPath() + "\" or the file already exists." );
+ }
try ( Writer outputStreamWriter = new OutputStreamWriter( new FileOutputStream( pomFile ), fileEncoding ) )
{
diff --git a/archetype-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java b/archetype-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java
index f499d03..1148f34 100644
--- a/archetype-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java
+++ b/archetype-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java
@@ -80,6 +80,8 @@ import org.codehaus.plexus.util.WriterFactory;
import org.codehaus.plexus.util.xml.Xpp3Dom;
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+import static org.apache.commons.io.IOUtils.write;
+
/**
* Create a 2.x Archetype project from a project. Since 2.0-alpha-5, an integration-test named "basic" is created along
* the archetype itself to provide immediate test when building the archetype.
@@ -327,8 +329,15 @@ public class FilesetArchetypeCreator
File basicItDirectory = new File( generatedSourcesDirectory, basic );
basicItDirectory.mkdirs();
+ File archetypePropertiesFile = new File( basicItDirectory, "archetype.properties" );
+ if ( !archetypePropertiesFile.exists() && !archetypePropertiesFile.createNewFile() )
+ {
+ getLogger().warn( "Could not create new file \"" + archetypePropertiesFile.getPath()
+ + "\" or the file already exists." );
+ }
+
try ( InputStream in = FilesetArchetypeCreator.class.getResourceAsStream( "archetype.properties" );
- OutputStream out = new FileOutputStream( new File( basicItDirectory, "archetype.properties" ) ) )
+ OutputStream out = new FileOutputStream( archetypePropertiesFile ) )
{
Properties archetypeProperties = new Properties();
archetypeProperties.load( in );
@@ -461,6 +470,12 @@ public class FilesetArchetypeCreator
private void copyResource( String name, File destination )
throws IOException
{
+ if ( !destination.exists() && !destination.createNewFile() )
+ {
+ getLogger().warn( "Could not create new file \"" + destination.getPath()
+ + "\" or the file already exists." );
+ }
+
try ( InputStream in = FilesetArchetypeCreator.class.getResourceAsStream( name );
OutputStream out = new FileOutputStream( destination ) )
{
@@ -850,6 +865,8 @@ public class FilesetArchetypeCreator
FileUtils.copyFile( initialPomFile, inputFile );
+ outputFile.getParentFile().mkdirs();
+
try ( Reader in = ReaderFactory.newXmlReader( inputFile );
Writer out = WriterFactory.newXmlWriter( outputFile ) )
{
@@ -857,8 +874,6 @@ public class FilesetArchetypeCreator
String content = getReversedContent( initialcontent, pomReversedProperties );
- outputFile.getParentFile().mkdirs();
-
IOUtil.copy( content, out );
}
@@ -1063,6 +1078,8 @@ public class FilesetArchetypeCreator
FileUtils.copyFile( initialPomFile, inputFile );
+ outputFile.getParentFile().mkdirs();
+
try ( Reader in = ReaderFactory.newXmlReader( inputFile );
Writer out = WriterFactory.newXmlWriter( outputFile ) )
{
@@ -1070,8 +1087,6 @@ public class FilesetArchetypeCreator
String content = getReversedContent( initialcontent, pomReversedProperties );
- outputFile.getParentFile().mkdirs();
-
IOUtil.copy( content, out );
}
@@ -1288,7 +1303,16 @@ public class FilesetArchetypeCreator
File outputFile = new File( archetypeFilesDirectory, outputFilename );
outputFile.getParentFile().mkdirs();
- org.apache.commons.io.IOUtils.write( content, new FileOutputStream( outputFile ), fileEncoding );
+ if ( !outputFile.exists() && !outputFile.createNewFile() )
+ {
+ getLogger().warn( "Could not create new file \"" + outputFile.getPath()
+ + "\" or the file already exists." );
+ }
+
+ try ( OutputStream os = new FileOutputStream( outputFile ) )
+ {
+ write( content, os, fileEncoding );
+ }
}
}
diff --git a/archetype-common/src/main/java/org/apache/maven/archetype/generator/DefaultFilesetArchetypeGenerator.java b/archetype-common/src/main/java/org/apache/maven/archetype/generator/DefaultFilesetArchetypeGenerator.java
index b4d22c0..a80767f 100644
--- a/archetype-common/src/main/java/org/apache/maven/archetype/generator/DefaultFilesetArchetypeGenerator.java
+++ b/archetype-common/src/main/java/org/apache/maven/archetype/generator/DefaultFilesetArchetypeGenerator.java
@@ -284,6 +284,11 @@ public class DefaultFilesetArchetypeGenerator
else
{
outFile.getParentFile().mkdirs();
+ if ( !outFile.exists() && !outFile.createNewFile() )
+ {
+ getLogger().warn( "Could not create new file \"" + outFile.getPath()
+ + "\" or the file already exists." );
+ }
try ( InputStream inputStream = archetypeZipFile.getInputStream( input );
OutputStream out = new FileOutputStream( outFile ) )
@@ -496,7 +501,7 @@ public class DefaultFilesetArchetypeGenerator
private int processFileSet( String directory, List<String> fileSetResources, boolean packaged, String packageName,
Context context, File outputDirectoryFile, String moduleOffset,
String archetypeEncoding, boolean failIfExists )
- throws OutputFileExists, ArchetypeGenerationFailure
+ throws IOException, OutputFileExists, ArchetypeGenerationFailure
{
int count = 0;
@@ -602,7 +607,7 @@ public class DefaultFilesetArchetypeGenerator
}
private void processPom( Context context, File pom, String moduleOffset )
- throws OutputFileExists, ArchetypeGenerationFailure
+ throws IOException, OutputFileExists, ArchetypeGenerationFailure
{
getLogger().debug( "Processing pom " + pom );
@@ -657,7 +662,7 @@ public class DefaultFilesetArchetypeGenerator
@SuppressWarnings( "deprecation" )
private boolean processTemplate( File outFile, Context context, String templateFileName, String encoding,
boolean failIfExists )
- throws OutputFileExists, ArchetypeGenerationFailure
+ throws IOException, OutputFileExists, ArchetypeGenerationFailure
{
templateFileName = templateFileName.replace( File.separatorChar, '/' );
@@ -696,6 +701,11 @@ public class DefaultFilesetArchetypeGenerator
outFile.getParentFile().mkdirs();
}
+ if ( !outFile.exists() && !outFile.createNewFile() )
+ {
+ getLogger().warn( "Could not create new file \"" + outFile.getPath() + "\" or the file already exists." );
+ }
+
getLogger().debug( "Merging into " + outFile );
try ( Writer writer = new OutputStreamWriter( new FileOutputStream( outFile ), encoding ) )
diff --git a/archetype-common/src/main/java/org/apache/maven/archetype/old/DefaultOldArchetype.java b/archetype-common/src/main/java/org/apache/maven/archetype/old/DefaultOldArchetype.java
index 07f75b8..530104f 100644
--- a/archetype-common/src/main/java/org/apache/maven/archetype/old/DefaultOldArchetype.java
+++ b/archetype-common/src/main/java/org/apache/maven/archetype/old/DefaultOldArchetype.java
@@ -305,6 +305,10 @@ public class DefaultOldArchetype
{
processTemplates( pomFile, outputDirectory, context, descriptor, packageName, parentModel );
}
+ catch ( IOException e )
+ {
+ throw new ArchetypeTemplateProcessingException( "Unable to process template", e );
+ }
finally
{
Thread.currentThread().setContextClassLoader( old );
@@ -395,7 +399,7 @@ public class DefaultOldArchetype
private void processTemplates( File pomFile, String outputDirectory, Context context,
ArchetypeDescriptor descriptor, String packageName, Model parentModel )
- throws ArchetypeTemplateProcessingException
+ throws ArchetypeTemplateProcessingException, IOException
{
if ( !pomFile.exists() )
{
@@ -616,7 +620,7 @@ public class DefaultOldArchetype
private void processTemplate( String outputDirectory, Context context, String template,
TemplateDescriptor descriptor, boolean packageInFileName, String packageName )
- throws ArchetypeTemplateProcessingException
+ throws ArchetypeTemplateProcessingException, IOException
{
processTemplate( outputDirectory, context, template, descriptor, packageInFileName, packageName, null );
}
@@ -633,7 +637,7 @@ public class DefaultOldArchetype
protected void processSources( String outputDirectory, Context context, ArchetypeDescriptor descriptor,
String packageName, String sourceDirectory )
- throws ArchetypeTemplateProcessingException
+ throws ArchetypeTemplateProcessingException, IOException
{
for ( String template : descriptor.getSources() )
{
@@ -644,7 +648,7 @@ public class DefaultOldArchetype
protected void processTestSources( String outputDirectory, Context context, ArchetypeDescriptor descriptor,
String packageName, String testSourceDirectory )
- throws ArchetypeTemplateProcessingException
+ throws ArchetypeTemplateProcessingException, IOException
{
for ( String template : descriptor.getTestSources() )
{
@@ -655,7 +659,7 @@ public class DefaultOldArchetype
protected void processResources( String outputDirectory, Context context, ArchetypeDescriptor descriptor,
String packageName )
- throws ArchetypeTemplateProcessingException
+ throws IOException, ArchetypeTemplateProcessingException
{
for ( String template : descriptor.getResources() )
{
@@ -666,7 +670,7 @@ public class DefaultOldArchetype
protected void processTestResources( String outputDirectory, Context context, ArchetypeDescriptor descriptor,
String packageName )
- throws ArchetypeTemplateProcessingException
+ throws IOException, ArchetypeTemplateProcessingException
{
for ( String template : descriptor.getTestResources() )
{
@@ -677,7 +681,7 @@ public class DefaultOldArchetype
protected void processSiteResources( String outputDirectory, Context context, ArchetypeDescriptor descriptor,
String packageName )
- throws ArchetypeTemplateProcessingException
+ throws IOException, ArchetypeTemplateProcessingException
{
for ( String template : descriptor.getSiteResources() )
{
@@ -689,7 +693,7 @@ public class DefaultOldArchetype
protected void processTemplate( String outputDirectory, Context context, String template,
TemplateDescriptor descriptor, boolean packageInFileName, String packageName,
String sourceDirectory )
- throws ArchetypeTemplateProcessingException
+ throws IOException, ArchetypeTemplateProcessingException
{
File f;
@@ -739,6 +743,11 @@ public class DefaultOldArchetype
f.getParentFile().mkdirs();
}
+ if ( !f.exists() && !f.createNewFile() )
+ {
+ getLogger().warn( "Could not create new file \"" + f.getPath() + "\" or the file already exists." );
+ }
+
if ( descriptor.isFiltered() )
{
try ( Writer writer = new OutputStreamWriter( new FileOutputStream( f ), descriptor.getEncoding() ) )
diff --git a/archetype-common/src/test/java/org/apache/maven/archetype/old/ArchetypeTest.java b/archetype-common/src/test/java/org/apache/maven/archetype/old/ArchetypeTest.java
index e4490d1..55875cb 100644
--- a/archetype-common/src/test/java/org/apache/maven/archetype/old/ArchetypeTest.java
+++ b/archetype-common/src/test/java/org/apache/maven/archetype/old/ArchetypeTest.java
@@ -172,10 +172,8 @@ public class ArchetypeTest
File artifactDir = getTestFile( "target", (String) parameters.get( "artifactId" ) );
File pomFile = getTestFile( artifactDir.getAbsolutePath(), OldArchetype.ARCHETYPE_POM );
- try
+ try ( FileReader pomReader = new FileReader( pomFile ) )
{
- FileReader pomReader = new FileReader( pomFile );
-
MavenXpp3Reader reader = new MavenXpp3Reader();
generatedModel = reader.read( pomReader );
diff --git a/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/creation/DefaultArchetypeCreationConfigurator.java b/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/creation/DefaultArchetypeCreationConfigurator.java
index 3c5f9e9..d98d196 100644
--- a/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/creation/DefaultArchetypeCreationConfigurator.java
+++ b/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/creation/DefaultArchetypeCreationConfigurator.java
@@ -309,6 +309,14 @@ public class DefaultArchetypeCreationConfigurator
storedProperties.setProperty( propertyKey, properties.getProperty( propertyKey ) );
}
+ propertyFile.getParentFile().mkdirs();
+
+ if ( !propertyFile.exists() && !propertyFile.createNewFile() )
+ {
+ getLogger().warn( "Could not create new file \"" + propertyFile.getPath()
+ + "\" or the file already exists." );
+ }
+
try ( OutputStream os = new FileOutputStream( propertyFile ) )
{
storedProperties.store( os, "" );