Author: krosenvold Date: Wed Oct 22 06:58:47 2014 New Revision: 1633544 URL: http://svn.apache.org/r1633544 Log: Minor cleanups
Added: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/ReaderFormatter.java Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/filter/SimpleAggregatingDescriptorHandler.java maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/FileFormatter.java maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/AssemblyFileUtils.java Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java?rev=1633544&r1=1633543&r2=1633544&view=diff ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java (original) +++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java Wed Oct 22 06:58:47 2014 @@ -20,28 +20,20 @@ package org.apache.maven.plugin.assembly */ import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.Reader; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import org.apache.commons.io.input.ReaderInputStream; import org.apache.maven.plugin.assembly.AssemblerConfigurationSource; import org.apache.maven.plugin.assembly.archive.ArchiveCreationException; import org.apache.maven.plugin.assembly.format.AssemblyFormattingException; -import org.apache.maven.plugin.assembly.format.FileFormatter; +import org.apache.maven.plugin.assembly.format.ReaderFormatter; import org.apache.maven.plugin.assembly.model.FileSet; import org.apache.maven.plugin.assembly.utils.AssemblyFormatUtils; -import org.apache.maven.plugin.assembly.utils.LineEndings; -import org.apache.maven.plugin.assembly.utils.LineEndingsUtils; import org.apache.maven.plugin.assembly.utils.TypeConversionUtils; import org.apache.maven.project.MavenProject; import org.codehaus.plexus.archiver.Archiver; import org.codehaus.plexus.components.io.functions.InputStreamTransformer; -import org.codehaus.plexus.components.io.resources.PlexusIoResource; import org.codehaus.plexus.logging.Logger; import org.codehaus.plexus.logging.console.ConsoleLogger; @@ -139,7 +131,8 @@ public class AddFileSetsTask if ( fileSetDir.exists() ) { - InputStreamTransformer fileSetTransformers = getFileSetTransformers( configSource, fileSet ); + InputStreamTransformer fileSetTransformers = ReaderFormatter.getFileSetTransformers( configSource, fileSet.isFiltered(), + fileSet.getLineEnding() ); if (fileSetTransformers == null) { logger.debug( "NOT reformatting any files in " + fileSetDir ); @@ -179,65 +172,6 @@ public class AddFileSetsTask } } - private InputStreamTransformer getFileSetTransformers( final AssemblerConfigurationSource configSource, - final org.apache.maven.plugin.assembly.model.FileSet set ) - throws AssemblyFormattingException - { - final String lineEndingHint = set.getLineEnding(); - - String lineEnding = LineEndingsUtils.getLineEndingCharacters( lineEndingHint ); - - if ( ( lineEnding != null ) || set.isFiltered() ) - { - InputStreamTransformer isf = new InputStreamTransformer() - { - public InputStream transform( PlexusIoResource plexusIoResource, InputStream inputStream ) - throws IOException - { - FileFormatter fileFormatter = new FileFormatter( configSource, logger ); - - if ( set.isFiltered() ) - { - final String encoding = configSource.getEncoding(); - - Reader source = encoding != null ? new InputStreamReader( inputStream, encoding ) - : new InputStreamReader( inputStream ); // wtf platform encoding ? - try - { - Reader filtered = fileFormatter.doReaderFilter( source, plexusIoResource.getName(), - configSource.getEncoding(), - configSource.getEscapeString(), - configSource.getDelimiters() ); - final ReaderInputStream readerInputStream = encoding != null ? new ReaderInputStream( filtered, encoding) - : new ReaderInputStream( filtered ); - - LineEndings lineEnding = LineEndingsUtils.getLineEnding( lineEndingHint ); - if ( !LineEndings.keep.equals( lineEnding ) ) - { - return LineEndingsUtils.lineEndingConverter( readerInputStream, lineEnding ); - - } - return readerInputStream; - - } - catch ( AssemblyFormattingException e ) - { - throw new IOException( e ); - } - - } - else - { - return inputStream; - } - } - }; - return isf; - } - return null; - } - - protected File getFileSetDirectory( final FileSet fileSet, final File basedir, final File archiveBaseDir ) throws ArchiveCreationException, AssemblyFormattingException { Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/filter/SimpleAggregatingDescriptorHandler.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/filter/SimpleAggregatingDescriptorHandler.java?rev=1633544&r1=1633543&r2=1633544&view=diff ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/filter/SimpleAggregatingDescriptorHandler.java (original) +++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/filter/SimpleAggregatingDescriptorHandler.java Wed Oct 22 06:58:47 2014 @@ -19,18 +19,6 @@ package org.apache.maven.plugin.assembly * under the License. */ -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.Reader; -import java.io.StringWriter; -import java.io.Writer; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Date; -import java.util.List; - import org.apache.maven.plugin.assembly.utils.AssemblyFileUtils; import org.codehaus.plexus.archiver.Archiver; import org.codehaus.plexus.archiver.ArchiverException; @@ -42,6 +30,20 @@ import org.codehaus.plexus.logging.Logge import org.codehaus.plexus.logging.console.ConsoleLogger; import org.codehaus.plexus.util.IOUtil; +import javax.annotation.Nonnull; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.io.Reader; +import java.io.StringWriter; +import java.io.Writer; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Date; +import java.util.List; + /** * @version $Id$ */ @@ -56,7 +58,7 @@ public class SimpleAggregatingDescriptor private String outputPath; - private final String commentChars = "#"; + private static final String commentChars = "#"; // calculated, temporary values. @@ -107,8 +109,11 @@ public class SimpleAggregatingDescriptor f = File.createTempFile( "maven-assembly-plugin", "tmp" ); f.deleteOnExit(); - // FIXME if it is a properties file, encoding should be ISO-8859-1 - writer = new FileWriter( f ); // platform encoding + + boolean isProperty = AssemblyFileUtils.isPropertyFile(f); + FileOutputStream fos = new FileOutputStream( f ); + writer = isProperty ? new OutputStreamWriter( fos, "ISO-8859-1") + : new OutputStreamWriter( fos); // Still platform encoding writer.write( commentChars + " Aggregated on " + new Date() + " from: " ); @@ -186,8 +191,10 @@ public class SimpleAggregatingDescriptor Reader reader = null; try { - // FIXME if it is a properties file, encoding should be ISO-8859-1 - reader = new InputStreamReader( fileInfo.getContents() ); // platform encoding + boolean isProperty = AssemblyFileUtils.isPropertyFile(fileInfo.getName()); + + reader = isProperty ? new InputStreamReader( fileInfo.getContents(), "ISO-8859-1" ) : + new InputStreamReader( fileInfo.getContents() ); // platform encoding IOUtil.copy( reader, writer ); } Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/FileFormatter.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/FileFormatter.java?rev=1633544&r1=1633543&r2=1633544&view=diff ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/FileFormatter.java (original) +++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/FileFormatter.java Wed Oct 22 06:58:47 2014 @@ -22,7 +22,6 @@ package org.apache.maven.plugin.assembly import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; -import java.io.Reader; import java.util.LinkedHashSet; import java.util.List; import java.util.Locale; @@ -36,10 +35,8 @@ import org.apache.maven.plugin.assembly. import org.apache.maven.plugin.assembly.utils.LineEndingsUtils; import org.apache.maven.shared.filtering.MavenFileFilterRequest; import org.apache.maven.shared.filtering.MavenFilteringException; -import org.apache.maven.shared.filtering.MavenReaderFilterRequest; import org.codehaus.plexus.logging.Logger; import org.codehaus.plexus.util.FileUtils; -import org.codehaus.plexus.util.IOUtil; import org.codehaus.plexus.util.ReaderFactory; import org.codehaus.plexus.util.StringUtils; @@ -59,16 +56,10 @@ public class FileFormatter this.logger = logger; } - public File format( File source, boolean filter, String lineEnding, String encoding ) - throws AssemblyFormattingException - { - return format( source, filter, lineEnding, configSource.getTemporaryRootDirectory(), encoding ); - } - - private File format( @Nonnull File source, boolean filter, String lineEndingCharacters, @Nullable File tempRoot, - String encoding ) + public File format( @Nonnull File source, boolean filter, String lineEnding, String encoding ) throws AssemblyFormattingException { + File tempRoot = configSource.getTemporaryRootDirectory(); AssemblyFileUtils.verifyTempDirectoryAvailability( tempRoot ); File result = source; @@ -85,10 +76,10 @@ public class FileFormatter doFileFilter( source, tempRoot, encoding, configSource.getEscapeString(), configSource.getDelimiters() ); } - LineEndings lineEnding = LineEndingsUtils.getLineEnding( lineEndingCharacters ); - if ( !LineEndings.keep.equals( lineEnding ) ) + LineEndings lineEnding1 = LineEndingsUtils.getLineEnding( lineEnding ); + if ( !LineEndings.keep.equals( lineEnding1 ) ) { - result = formatLineEndings( lineEnding, result, tempRoot, encoding ); + result = formatLineEndings( lineEnding1, result, tempRoot, encoding ); } return result; @@ -145,58 +136,10 @@ public class FileFormatter } } - public Reader doReaderFilter( @Nonnull Reader source, String sourceName, String encoding, String escapeString, - List<String> delimiters ) - throws AssemblyFormattingException - { - try - { - // @todo this test can be improved - boolean isPropertiesFile = sourceName.toLowerCase( Locale.ENGLISH ).endsWith( ".properties" ); - - MavenReaderFilterRequest filterRequest = - new MavenReaderFilterRequest( source, true, configSource.getProject(), configSource.getFilters(), - isPropertiesFile, encoding, configSource.getMavenSession(), null ); - filterRequest.setEscapeString( escapeString ); - - // if these are NOT set, just use the defaults, which are '${*}' and '@'. - if ( delimiters != null && !delimiters.isEmpty() ) - { - LinkedHashSet<String> delims = new LinkedHashSet<String>(); - for ( String delim : delimiters ) - { - if ( delim == null ) - { - // FIXME: ${filter:*} could also trigger this condition. Need a better long-term solution. - delims.add( "${*}" ); - } - else - { - delims.add( delim ); - } - } - - filterRequest.setDelimiters( delims ); - } - else - { - filterRequest.setDelimiters( filterRequest.getDelimiters() ); - } - - filterRequest.setInjectProjectBuildFilters( configSource.isIncludeProjectBuildFilters() ); - return configSource.getMavenReaderFilter().filter( filterRequest ); - } - catch ( MavenFilteringException e ) - { - throw new AssemblyFormattingException( "Error filtering file '" + source + "': " + e.getMessage(), e ); - } - } - private File formatLineEndings( LineEndings lineEnding, File source, File tempRoot, String encoding ) throws AssemblyFormattingException { - Reader contentReader = null; try { File target = FileUtils.createTempFile( source.getName() + ".", ".formatted", tempRoot ); @@ -213,9 +156,5 @@ public class FileFormatter { throw new AssemblyFormattingException( "Error line formatting file '" + source + "': " + e.getMessage(), e ); } - finally - { - IOUtil.close( contentReader ); - } } } Added: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/ReaderFormatter.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/ReaderFormatter.java?rev=1633544&view=auto ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/ReaderFormatter.java (added) +++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/ReaderFormatter.java Wed Oct 22 06:58:47 2014 @@ -0,0 +1,144 @@ +package org.apache.maven.plugin.assembly.format; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import org.apache.commons.io.input.ReaderInputStream; +import org.apache.maven.plugin.assembly.AssemblerConfigurationSource; +import org.apache.maven.plugin.assembly.utils.AssemblyFileUtils; +import org.apache.maven.plugin.assembly.utils.LineEndings; +import org.apache.maven.plugin.assembly.utils.LineEndingsUtils; +import org.apache.maven.shared.filtering.MavenFilteringException; +import org.apache.maven.shared.filtering.MavenReaderFilterRequest; +import org.codehaus.plexus.components.io.functions.InputStreamTransformer; +import org.codehaus.plexus.components.io.resources.PlexusIoResource; + +import javax.annotation.Nonnull; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.util.LinkedHashSet; +import java.util.List; + +public class ReaderFormatter +{ + public static Reader createReaderFilter( @Nonnull Reader source, String sourceName, String encoding, + String escapeString, List<String> delimiters, + AssemblerConfigurationSource configSource ) + throws AssemblyFormattingException + { + try + { + // @todo this test can be improved + boolean isPropertiesFile = AssemblyFileUtils.isPropertyFile( sourceName ); + + MavenReaderFilterRequest filterRequest = + new MavenReaderFilterRequest( source, true, configSource.getProject(), configSource.getFilters(), + isPropertiesFile, encoding, configSource.getMavenSession(), null ); + filterRequest.setEscapeString( escapeString ); + + // if these are NOT set, just use the defaults, which are '${*}' and '@'. + if ( delimiters != null && !delimiters.isEmpty() ) + { + LinkedHashSet<String> delims = new LinkedHashSet<String>(); + for ( String delim : delimiters ) + { + if ( delim == null ) + { + // FIXME: ${filter:*} could also trigger this condition. Need a better long-term solution. + delims.add( "${*}" ); + } + else + { + delims.add( delim ); + } + } + + filterRequest.setDelimiters( delims ); + } + else + { + filterRequest.setDelimiters( filterRequest.getDelimiters() ); + } + + filterRequest.setInjectProjectBuildFilters( configSource.isIncludeProjectBuildFilters() ); + return configSource.getMavenReaderFilter().filter( filterRequest ); + } + catch ( MavenFilteringException e ) + { + throw new AssemblyFormattingException( "Error filtering file '" + source + "': " + e.getMessage(), e ); + } + } + + public static InputStreamTransformer getFileSetTransformers( final AssemblerConfigurationSource configSource, final boolean isFiltered, String fileSetLineEnding ) + throws AssemblyFormattingException + { + final String lineEndingHint = fileSetLineEnding; + + String lineEnding = LineEndingsUtils.getLineEndingCharacters( lineEndingHint ); + + if ( ( lineEnding != null ) || isFiltered ) + { + return new InputStreamTransformer() + { + public InputStream transform( PlexusIoResource plexusIoResource, InputStream inputStream ) + throws IOException + { + if ( isFiltered ) + { + final String encoding = configSource.getEncoding(); + + Reader source = encoding != null ? new InputStreamReader( inputStream, encoding ) + : new InputStreamReader( inputStream ); // wtf platform encoding ? + try + { + Reader filtered = createReaderFilter( source, plexusIoResource.getName(), + configSource.getEncoding(), + configSource.getEscapeString(), + configSource.getDelimiters(), + configSource ); + final ReaderInputStream readerInputStream = encoding != null ? new ReaderInputStream( filtered, encoding) + : new ReaderInputStream( filtered ); + + LineEndings lineEnding = LineEndingsUtils.getLineEnding( lineEndingHint ); + if ( !LineEndings.keep.equals( lineEnding ) ) + { + return LineEndingsUtils.lineEndingConverter( readerInputStream, lineEnding ); + + } + return readerInputStream; + + } + catch ( AssemblyFormattingException e ) + { + throw new IOException( e ); + } + + } + else + { + return inputStream; + } + } + }; + } + return null; + } +} Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/AssemblyFileUtils.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/AssemblyFileUtils.java?rev=1633544&r1=1633543&r2=1633544&view=diff ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/AssemblyFileUtils.java (original) +++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/AssemblyFileUtils.java Wed Oct 22 06:58:47 2014 @@ -23,6 +23,7 @@ import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; import java.nio.channels.FileChannel; +import java.util.Locale; import javax.annotation.Nonnull; @@ -150,4 +151,13 @@ public final class AssemblyFileUtils return name.replace( File.separatorChar, '/' ); // How can this be anything but a no-op } + public static boolean isPropertyFile( String sourceName ) + { + return sourceName.toLowerCase( Locale.ENGLISH ).endsWith( ".properties" ); + } + + public static boolean isPropertyFile( File file ) + { + return isPropertyFile( file.getName()); + } }