[MRM-1097] close some open streams

git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@779841 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Emmanuel Venisse 2009-05-29 05:02:22 +00:00
parent 6a229a13bf
commit b8578cfac9
3 changed files with 106 additions and 90 deletions

View File

@ -19,6 +19,9 @@ package org.apache.maven.archiva.cli;
* under the License. * under the License.
*/ */
import com.sampullara.cli.Args;
import com.sampullara.cli.Argument;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
@ -31,6 +34,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Properties; import java.util.Properties;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
import org.apache.maven.archiva.consumers.ConsumerException; import org.apache.maven.archiva.consumers.ConsumerException;
@ -46,14 +50,11 @@ import org.apache.maven.artifact.manager.WagonManager;
import org.codehaus.plexus.spring.PlexusClassPathXmlApplicationContext; import org.codehaus.plexus.spring.PlexusClassPathXmlApplicationContext;
import org.codehaus.plexus.spring.PlexusToSpringUtils; import org.codehaus.plexus.spring.PlexusToSpringUtils;
import com.sampullara.cli.Args;
import com.sampullara.cli.Argument;
/** /**
* ArchivaCli * ArchivaCli
* *
* @todo add back reading of archiva.xml from a given location
* @version $Id$ * @version $Id$
* @todo add back reading of archiva.xml from a given location
*/ */
public class ArchivaCli public class ArchivaCli
{ {
@ -71,7 +72,8 @@ public class ArchivaCli
throws IOException throws IOException
{ {
Properties properties = new Properties(); Properties properties = new Properties();
properties.load( ArchivaCli.class.getResourceAsStream( "/META-INF/maven/org.apache.archiva/archiva-cli/pom.properties" ) ); properties.load(
ArchivaCli.class.getResourceAsStream( "/META-INF/maven/org.apache.archiva/archiva-cli/pom.properties" ) );
return properties.getProperty( "version" ); return properties.getProperty( "version" );
} }
@ -79,9 +81,8 @@ public class ArchivaCli
public ArchivaCli() public ArchivaCli()
{ {
applicationContext = applicationContext = new PlexusClassPathXmlApplicationContext(
new PlexusClassPathXmlApplicationContext( new String[] { "classpath*:/META-INF/spring-context.xml", new String[]{"classpath*:/META-INF/spring-context.xml", "classpath*:/META-INF/plexus/components.xml"} );
"classpath*:/META-INF/plexus/components.xml" } );
} }
public static void main( String[] args ) public static void main( String[] args )
@ -144,8 +145,8 @@ public class ArchivaCli
{ {
// hack around poorly configurable project builder by pointing all repositories back at this location to be self // hack around poorly configurable project builder by pointing all repositories back at this location to be self
// contained // contained
WagonManager wagonManager = WagonManager wagonManager = (WagonManager) applicationContext.getBean(
(WagonManager) applicationContext.getBean( PlexusToSpringUtils.buildSpringId( WagonManager.class.getName() ) ); PlexusToSpringUtils.buildSpringId( WagonManager.class.getName() ) );
wagonManager.addMirror( "internal", "*", new File( path ).toURL().toExternalForm() ); wagonManager.addMirror( "internal", "*", new File( path ).toURL().toExternalForm() );
ManagedRepositoryConfiguration repo = new ManagedRepositoryConfiguration(); ManagedRepositoryConfiguration repo = new ManagedRepositoryConfiguration();
@ -166,9 +167,8 @@ public class ArchivaCli
try try
{ {
RepositoryScanStatistics stats = RepositoryScanStatistics stats = scanner.scan( repo, knownConsumerList, invalidConsumerList, ignoredContent,
scanner.scan( repo, knownConsumerList, invalidConsumerList, ignoredContent, RepositoryScanner.FRESH_SCAN );
RepositoryScanner.FRESH_SCAN );
System.out.println( "\n" + stats.toDump( repo ) ); System.out.println( "\n" + stats.toDump( repo ) );
} }
@ -215,12 +215,12 @@ public class ArchivaCli
{ {
String consumerHint = (String) entry.getKey(); String consumerHint = (String) entry.getKey();
RepositoryContentConsumer consumer = (RepositoryContentConsumer) entry.getValue(); RepositoryContentConsumer consumer = (RepositoryContentConsumer) entry.getValue();
System.out.println( " " + consumerHint + ": " + consumer.getDescription() + " (" System.out.println(
+ consumer.getClass().getName() + ")" ); " " + consumerHint + ": " + consumer.getDescription() + " (" + consumer.getClass().getName() + ")" );
} }
} }
@SuppressWarnings( "unchecked" ) @SuppressWarnings("unchecked")
private Map<String, KnownRepositoryContentConsumer> getConsumers() private Map<String, KnownRepositoryContentConsumer> getConsumers()
{ {
return PlexusToSpringUtils.lookupMap( "knownRepositoryContentConsumer", applicationContext ); return PlexusToSpringUtils.lookupMap( "knownRepositoryContentConsumer", applicationContext );
@ -234,7 +234,16 @@ public class ArchivaCli
Properties p = new Properties(); Properties p = new Properties();
p.load( new FileInputStream( properties ) ); FileInputStream fis = new FileInputStream( properties );
try
{
p.load( fis );
}
finally
{
IOUtils.closeQuietly( fis );
}
File oldRepositoryPath = new File( p.getProperty( SOURCE_REPO_PATH ) ); File oldRepositoryPath = new File( p.getProperty( SOURCE_REPO_PATH ) );
@ -251,33 +260,36 @@ public class ArchivaCli
fileExclusionPatterns = Arrays.asList( StringUtils.split( s, "," ) ); fileExclusionPatterns = Arrays.asList( StringUtils.split( s, "," ) );
} }
legacyRepositoryConverter.convertLegacyRepository( oldRepositoryPath, newRepositoryPath, fileExclusionPatterns ); legacyRepositoryConverter.convertLegacyRepository( oldRepositoryPath, newRepositoryPath,
fileExclusionPatterns );
} }
private static class Commands private static class Commands
{ {
@Argument( description = "Display help information", value = "help", alias = "h" ) @Argument(description = "Display help information", value = "help", alias = "h")
private boolean help; private boolean help;
@Argument( description = "Display version information", value = "version", alias = "v" ) @Argument(description = "Display version information", value = "version", alias = "v")
private boolean version; private boolean version;
@Argument( description = "List available consumers", value = "listconsumers", alias = "l" ) @Argument(description = "List available consumers", value = "listconsumers", alias = "l")
private boolean listConsumers; private boolean listConsumers;
@Argument( description = "The consumers to use (comma delimited)", value = "consumers", alias = "u" ) @Argument(description = "The consumers to use (comma delimited)", value = "consumers", alias = "u")
private String consumers = "count-artifacts"; private String consumers = "count-artifacts";
@Argument( description = "Scan the specified repository", value = "scan", alias = "s" ) @Argument(description = "Scan the specified repository", value = "scan", alias = "s")
private boolean scan; private boolean scan;
@Argument( description = "Convert a legacy Maven 1.x repository to a Maven 2.x repository using a properties file to describe the conversion", value = "convert", alias = "c" ) @Argument(
description = "Convert a legacy Maven 1.x repository to a Maven 2.x repository using a properties file to describe the conversion",
value = "convert", alias = "c")
private boolean convert; private boolean convert;
@Argument( description = "The properties file for the converstion", value = "properties" ) @Argument(description = "The properties file for the converstion", value = "properties")
private String properties = "conversion.properties"; private String properties = "conversion.properties";
@Argument( description = "The repository to scan", value = "repository" ) @Argument(description = "The repository to scan", value = "repository")
private String repository; private String repository;
} }
} }

View File

@ -19,6 +19,9 @@ package org.apache.maven.archiva.web.action;
* under the License. * under the License.
*/ */
import com.opensymphony.xwork2.Preparable;
import com.opensymphony.xwork2.Validateable;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileOutputStream; import java.io.FileOutputStream;
@ -27,13 +30,15 @@ import java.text.DateFormat;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date;
import java.util.Collections; import java.util.Collections;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.TimeZone; import java.util.TimeZone;
import org.apache.archiva.checksum.ChecksumAlgorithm; import org.apache.archiva.checksum.ChecksumAlgorithm;
import org.apache.archiva.checksum.ChecksummedFile; import org.apache.archiva.checksum.ChecksummedFile;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.maven.archiva.common.utils.VersionComparator; import org.apache.maven.archiva.common.utils.VersionComparator;
import org.apache.maven.archiva.common.utils.VersionUtil; import org.apache.maven.archiva.common.utils.VersionUtil;
import org.apache.maven.archiva.configuration.ArchivaConfiguration; import org.apache.maven.archiva.configuration.ArchivaConfiguration;
@ -46,7 +51,6 @@ import org.apache.maven.archiva.repository.ManagedRepositoryContent;
import org.apache.maven.archiva.repository.RepositoryContentFactory; import org.apache.maven.archiva.repository.RepositoryContentFactory;
import org.apache.maven.archiva.repository.RepositoryException; import org.apache.maven.archiva.repository.RepositoryException;
import org.apache.maven.archiva.repository.RepositoryNotFoundException; import org.apache.maven.archiva.repository.RepositoryNotFoundException;
import org.apache.maven.archiva.repository.scanner.RepositoryContentConsumers;
import org.apache.maven.archiva.repository.audit.AuditEvent; import org.apache.maven.archiva.repository.audit.AuditEvent;
import org.apache.maven.archiva.repository.audit.Auditable; import org.apache.maven.archiva.repository.audit.Auditable;
import org.apache.maven.archiva.repository.metadata.MetadataTools; import org.apache.maven.archiva.repository.metadata.MetadataTools;
@ -56,6 +60,7 @@ import org.apache.maven.archiva.repository.metadata.RepositoryMetadataWriter;
import org.apache.maven.archiva.repository.project.ProjectModelException; import org.apache.maven.archiva.repository.project.ProjectModelException;
import org.apache.maven.archiva.repository.project.ProjectModelWriter; import org.apache.maven.archiva.repository.project.ProjectModelWriter;
import org.apache.maven.archiva.repository.project.writers.ProjectModel400Writer; import org.apache.maven.archiva.repository.project.writers.ProjectModel400Writer;
import org.apache.maven.archiva.repository.scanner.RepositoryContentConsumers;
import org.apache.maven.archiva.scheduled.ArchivaTaskScheduler; import org.apache.maven.archiva.scheduled.ArchivaTaskScheduler;
import org.apache.maven.archiva.scheduled.tasks.RepositoryTask; import org.apache.maven.archiva.scheduled.tasks.RepositoryTask;
import org.apache.maven.archiva.scheduled.tasks.TaskCreator; import org.apache.maven.archiva.scheduled.tasks.TaskCreator;
@ -63,17 +68,12 @@ import org.apache.maven.archiva.security.AccessDeniedException;
import org.apache.maven.archiva.security.ArchivaSecurityException; import org.apache.maven.archiva.security.ArchivaSecurityException;
import org.apache.maven.archiva.security.PrincipalNotFoundException; import org.apache.maven.archiva.security.PrincipalNotFoundException;
import org.apache.maven.archiva.security.UserRepositories; import org.apache.maven.archiva.security.UserRepositories;
import com.opensymphony.xwork2.Preparable;
import com.opensymphony.xwork2.Validateable;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang.StringUtils;
import org.codehaus.plexus.taskqueue.TaskQueueException; import org.codehaus.plexus.taskqueue.TaskQueueException;
/** /**
* Upload an artifact using Jakarta file upload in webwork. If set by the user a pom will also be generated. Metadata * Upload an artifact using Jakarta file upload in webwork. If set by the user a pom will also be generated. Metadata
* will also be updated if one exists, otherwise it would be created. * will also be updated if one exists, otherwise it would be created.
* *
* @plexus.component role="com.opensymphony.xwork2.Action" role-hint="uploadAction" instantiation-strategy="per-lookup" * @plexus.component role="com.opensymphony.xwork2.Action" role-hint="uploadAction" instantiation-strategy="per-lookup"
*/ */
public class UploadAction public class UploadAction
@ -81,11 +81,11 @@ public class UploadAction
implements Validateable, Preparable, Auditable implements Validateable, Preparable, Auditable
{ {
/** /**
* @plexus.requirement * @plexus.requirement
*/ */
private RepositoryContentConsumers consumers; private RepositoryContentConsumers consumers;
/** /**
* The groupId of the artifact to be deployed. * The groupId of the artifact to be deployed.
*/ */
private String groupId; private String groupId;
@ -149,16 +149,16 @@ public class UploadAction
* @plexus.requirement * @plexus.requirement
*/ */
private RepositoryContentFactory repositoryFactory; private RepositoryContentFactory repositoryFactory;
/** /**
* @plexus.requirement * @plexus.requirement
*/ */
private ArchivaTaskScheduler scheduler; private ArchivaTaskScheduler scheduler;
private ChecksumAlgorithm[] algorithms = new ChecksumAlgorithm[] { ChecksumAlgorithm.SHA1, ChecksumAlgorithm.MD5 }; private ChecksumAlgorithm[] algorithms = new ChecksumAlgorithm[]{ChecksumAlgorithm.SHA1, ChecksumAlgorithm.MD5};
private ProjectModelWriter pomWriter = new ProjectModel400Writer(); private ProjectModelWriter pomWriter = new ProjectModel400Writer();
public void setArtifact( File file ) public void setArtifact( File file )
{ {
this.artifactFile = file; this.artifactFile = file;
@ -293,7 +293,7 @@ public class UploadAction
repositoryId = ""; repositoryId = "";
generatePom = false; generatePom = false;
} }
public String doUpload() public String doUpload()
{ {
try try
@ -319,11 +319,11 @@ public class UploadAction
Date lastUpdatedTimestamp = Calendar.getInstance().getTime(); Date lastUpdatedTimestamp = Calendar.getInstance().getTime();
int newBuildNumber = -1; int newBuildNumber = -1;
String timestamp = null; String timestamp = null;
File metadataFile = getMetadata( targetPath.getAbsolutePath() ); File metadataFile = getMetadata( targetPath.getAbsolutePath() );
ArchivaRepositoryMetadata metadata = getMetadata( metadataFile ); ArchivaRepositoryMetadata metadata = getMetadata( metadataFile );
if (VersionUtil.isSnapshot(version)) if ( VersionUtil.isSnapshot( version ) )
{ {
TimeZone timezone = TimeZone.getTimeZone( "UTC" ); TimeZone timezone = TimeZone.getTimeZone( "UTC" );
DateFormat fmt = new SimpleDateFormat( "yyyyMMdd.HHmmss" ); DateFormat fmt = new SimpleDateFormat( "yyyyMMdd.HHmmss" );
@ -335,8 +335,8 @@ public class UploadAction
} }
else else
{ {
metadata.setSnapshotVersion( new SnapshotVersion() ); metadata.setSnapshotVersion( new SnapshotVersion() );
newBuildNumber = 1; newBuildNumber = 1;
} }
} }
@ -364,12 +364,12 @@ public class UploadAction
} }
String pomFilename = filename; String pomFilename = filename;
if( classifier != null && !"".equals( classifier ) ) if ( classifier != null && !"".equals( classifier ) )
{ {
pomFilename = StringUtils.remove( pomFilename, "-" + classifier ); pomFilename = StringUtils.remove( pomFilename, "-" + classifier );
} }
pomFilename = FilenameUtils.removeExtension( pomFilename ) + ".pom"; pomFilename = FilenameUtils.removeExtension( pomFilename ) + ".pom";
if ( generatePom ) if ( generatePom )
{ {
try try
@ -389,11 +389,11 @@ public class UploadAction
return ERROR; return ERROR;
} }
} }
if ( pomFile != null && pomFile.length() > 0 ) if ( pomFile != null && pomFile.length() > 0 )
{ {
try try
{ {
copyFile( pomFile, targetPath, pomFilename ); copyFile( pomFile, targetPath, pomFilename );
queueRepositoryTask( repoConfig.getId(), new File( targetPath, pomFilename ) ); queueRepositoryTask( repoConfig.getId(), new File( targetPath, pomFilename ) );
//consumers.executeConsumers( repoConfig, new File( targetPath, pomFilename ) ); //consumers.executeConsumers( repoConfig, new File( targetPath, pomFilename ) );
@ -403,16 +403,16 @@ public class UploadAction
addActionError( "Error encountered while uploading pom file: " + ie.getMessage() ); addActionError( "Error encountered while uploading pom file: " + ie.getMessage() );
return ERROR; return ERROR;
} }
} }
updateMetadata( metadata, metadataFile, lastUpdatedTimestamp, timestamp, newBuildNumber ); updateMetadata( metadata, metadataFile, lastUpdatedTimestamp, timestamp, newBuildNumber );
String msg = "Artifact \'" + groupId + ":" + artifactId + ":" + version + String msg = "Artifact \'" + groupId + ":" + artifactId + ":" + version +
"\' was successfully deployed to repository \'" + repositoryId + "\'"; "\' was successfully deployed to repository \'" + repositoryId + "\'";
triggerAuditEvent( repositoryId, groupId + ":" + artifactId + ":" + version, AuditEvent.UPLOAD_FILE ); triggerAuditEvent( repositoryId, groupId + ":" + artifactId + ":" + version, AuditEvent.UPLOAD_FILE );
addActionMessage( msg ); addActionMessage( msg );
reset(); reset();
@ -434,11 +434,11 @@ public class UploadAction
throws IOException throws IOException
{ {
FileOutputStream out = new FileOutputStream( new File( targetPath, targetFilename ) ); FileOutputStream out = new FileOutputStream( new File( targetPath, targetFilename ) );
FileInputStream input = new FileInputStream( sourceFile );
try try
{ {
FileInputStream input = new FileInputStream( sourceFile ); int i;
int i = 0;
while ( ( i = input.read() ) != -1 ) while ( ( i = input.read() ) != -1 )
{ {
out.write( i ); out.write( i );
@ -448,6 +448,7 @@ public class UploadAction
finally finally
{ {
out.close(); out.close();
input.close();
} }
} }
@ -459,8 +460,8 @@ public class UploadAction
projectModel.setArtifactId( artifactId ); projectModel.setArtifactId( artifactId );
projectModel.setVersion( version ); projectModel.setVersion( version );
projectModel.setPackaging( packaging ); projectModel.setPackaging( packaging );
File pomFile = new File( targetPath, filename); File pomFile = new File( targetPath, filename );
pomWriter.write( projectModel, pomFile ); pomWriter.write( projectModel, pomFile );
return pomFile; return pomFile;
@ -486,7 +487,7 @@ public class UploadAction
/** /**
* Update artifact level metadata. If it does not exist, create the metadata. * Update artifact level metadata. If it does not exist, create the metadata.
* *
* @param metadata * @param metadata
*/ */
private void updateMetadata( ArchivaRepositoryMetadata metadata, File metadataFile, Date lastUpdatedTimestamp, private void updateMetadata( ArchivaRepositoryMetadata metadata, File metadataFile, Date lastUpdatedTimestamp,
@ -519,11 +520,11 @@ public class UploadAction
if ( metadata.getGroupId() == null ) if ( metadata.getGroupId() == null )
{ {
metadata.setGroupId( groupId ); metadata.setGroupId( groupId );
} }
if ( metadata.getArtifactId() == null ) if ( metadata.getArtifactId() == null )
{ {
metadata.setArtifactId( artifactId ); metadata.setArtifactId( artifactId );
} }
metadata.setLatestVersion( latestVersion ); metadata.setLatestVersion( latestVersion );
@ -560,11 +561,11 @@ public class UploadAction
{ {
addActionError( "Please add a file to upload." ); addActionError( "Please add a file to upload." );
} }
if ( version == null || !VersionUtil.isVersion( version ) ) if ( version == null || !VersionUtil.isVersion( version ) )
{ {
addActionError( "Invalid version." ); addActionError( "Invalid version." );
} }
} }
catch ( PrincipalNotFoundException pe ) catch ( PrincipalNotFoundException pe )
{ {
@ -575,7 +576,7 @@ public class UploadAction
addActionError( ae.getMessage() ); addActionError( ae.getMessage() );
} }
} }
private List<String> getManagableRepos() private List<String> getManagableRepos()
{ {
try try
@ -597,19 +598,20 @@ public class UploadAction
} }
return Collections.emptyList(); return Collections.emptyList();
} }
private void queueRepositoryTask( String repositoryId, File localFile ) private void queueRepositoryTask( String repositoryId, File localFile )
{ {
RepositoryTask task = TaskCreator.createRepositoryTask( repositoryId, localFile.getName(), localFile ); RepositoryTask task = TaskCreator.createRepositoryTask( repositoryId, localFile.getName(), localFile );
try try
{ {
scheduler.queueRepositoryTask( task ); scheduler.queueRepositoryTask( task );
} }
catch ( TaskQueueException e ) catch ( TaskQueueException e )
{ {
log.error( "Unable to queue repository task to execute consumers on resource file ['" + log.error(
localFile.getName() + "']." ); "Unable to queue repository task to execute consumers on resource file ['" + localFile.getName() +
"']." );
} }
} }
} }

View File

@ -19,24 +19,24 @@ package org.apache.maven.archiva.web.startup;
* under the License. * under the License.
*/ */
import org.apache.commons.io.IOUtils;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.IOException; import java.io.IOException;
import java.util.zip.GZIPInputStream; import java.util.zip.GZIPInputStream;
import org.apache.commons.io.IOUtils;
import junit.framework.TestCase; import junit.framework.TestCase;
/** /**
* BannerTest * BannerTest
* *
* @version $Id$ * @version $Id$
*/ */
public class BannerTest public class BannerTest
extends TestCase extends TestCase
{ {
private static final String eol = System.getProperty("line.separator"); private static final String eol = System.getProperty( "line.separator" );
private void assertEncodeDecode( String encoded, String decoded ) private void assertEncodeDecode( String encoded, String decoded )
{ {
@ -47,17 +47,17 @@ public class BannerTest
public void testEncodeDecode() public void testEncodeDecode()
{ {
assertEncodeDecode( "[$10 ]", "[ ]" ); assertEncodeDecode( "[$10 ]", "[ ]" );
assertEncodeDecode( "$$$5_$n$5_", "$_____"+eol+"_____" ); assertEncodeDecode( "$$$5_$n$5_", "$_____" + eol + "_____" );
assertEncodeDecode( "$${Refgjuvyr}", "${Erstwhile}" ); assertEncodeDecode( "$${Refgjuvyr}", "${Erstwhile}" );
} }
public void testInjectVersion() public void testInjectVersion()
{ {
assertEquals( "[ 1.0 ]", Banner.injectVersion( "[#####]", "1.0" ) ); assertEquals( "[ 1.0 ]", Banner.injectVersion( "[#####]", "1.0" ) );
assertEquals( ".\\ 1.0-SNAPSHOT \\._____", Banner.injectVersion( ".\\################\\._____", assertEquals( ".\\ 1.0-SNAPSHOT \\._____",
"1.0-SNAPSHOT" ) ); Banner.injectVersion( ".\\################\\._____", "1.0-SNAPSHOT" ) );
assertEquals( "Archiva:\"+eol+\" ( 1.0-alpha-1 )", Banner assertEquals( "Archiva:\"+eol+\" ( 1.0-alpha-1 )",
.injectVersion( "Archiva:\"+eol+\" (##############)", "1.0-alpha-1" ) ); Banner.injectVersion( "Archiva:\"+eol+\" (##############)", "1.0-alpha-1" ) );
} }
public void testGetBanner() public void testGetBanner()
@ -67,16 +67,16 @@ public class BannerTest
String banner = Banner.getBanner( version ); String banner = Banner.getBanner( version );
assertNotNull( "Banner should not be null.", banner ); assertNotNull( "Banner should not be null.", banner );
assertTrue( "Banner contains version.", banner.indexOf( version ) > 0 ); assertTrue( "Banner contains version.", banner.indexOf( version ) > 0 );
/* Want to make a new banner? /* Want to make a new banner?
* Steps to do it. * Steps to do it.
* 1) Edit the src/test/resources/banner.gz file. * 1) Edit the src/test/resources/banner.gz file.
* 2) Save it compressed. * 2) Save it compressed.
* 3) Add (to this test method) ... * 3) Add (to this test method) ...
* System.out.println( "\"" + Banner.encode( getRawBanner() ) + "\"" ); * System.out.println( "\"" + Banner.encode( getRawBanner() ) + "\"" );
* 4) Run the test * 4) Run the test
* 5) Copy / Paste the encoded form into the Banner.getBanner() method. * 5) Copy / Paste the encoded form into the Banner.getBanner() method.
*/ */
} }
public String getRawBanner() public String getRawBanner()
@ -86,6 +86,8 @@ public class BannerTest
assertTrue( "File [" + gzBanner.getPath() + "] not found.", gzBanner.exists() ); assertTrue( "File [" + gzBanner.getPath() + "] not found.", gzBanner.exists() );
FileInputStream fis = new FileInputStream( gzBanner ); FileInputStream fis = new FileInputStream( gzBanner );
GZIPInputStream gzis = new GZIPInputStream( fis ); GZIPInputStream gzis = new GZIPInputStream( fis );
return IOUtils.toString( gzis ); String str = IOUtils.toString( gzis );
IOUtils.closeQuietly( gzis );
return str;
} }
} }