mirror of https://github.com/apache/archiva.git
[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:
parent
6a229a13bf
commit
b8578cfac9
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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() +
|
||||||
|
"']." );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue