Using the new repository interfaces where necessary.pull/46/head
@@ -724,7 +724,7 @@ public class Maven2RepositoryStorage | |||
@Override | |||
public String getFilePath( String requestPath, ManagedRepository managedRepository ) | |||
public String getFilePath( String requestPath, org.apache.archiva.repository.ManagedRepository managedRepository ) | |||
{ | |||
// managedRepository can be null | |||
// extract artifact reference from url |
@@ -19,7 +19,7 @@ package org.apache.archiva.repository.content.maven2; | |||
* under the License. | |||
*/ | |||
import org.apache.archiva.admin.model.beans.ManagedRepository; | |||
import org.apache.archiva.common.utils.PathUtil; | |||
import org.apache.archiva.configuration.FileTypes; | |||
import org.apache.archiva.metadata.repository.storage.maven2.DefaultArtifactMappingProvider; | |||
import org.apache.archiva.model.ArchivaArtifact; | |||
@@ -37,6 +37,7 @@ import org.springframework.stereotype.Service; | |||
import javax.inject.Inject; | |||
import javax.inject.Named; | |||
import java.io.IOException; | |||
import java.net.URI; | |||
import java.nio.file.Files; | |||
import java.nio.file.Path; | |||
import java.nio.file.Paths; | |||
@@ -50,7 +51,7 @@ import java.util.stream.Stream; | |||
/** | |||
* ManagedDefaultRepositoryContent | |||
*/ | |||
@Service ("managedRepositoryContent#default") | |||
@Service ("managedRepositoryContent#maven") | |||
@Scope ("prototype") | |||
public class ManagedDefaultRepositoryContent | |||
extends AbstractDefaultRepositoryContent | |||
@@ -60,7 +61,7 @@ public class ManagedDefaultRepositoryContent | |||
@Named ( "fileTypes" ) | |||
private FileTypes filetypes; | |||
private ManagedRepository repository; | |||
private org.apache.archiva.repository.ManagedRepository repository; | |||
public ManagedDefaultRepositoryContent() | |||
{ | |||
@@ -171,7 +172,7 @@ public class ManagedDefaultRepositoryContent | |||
throws ContentNotFoundException | |||
{ | |||
Path artifactFile = toFile( reference ); | |||
Path repoBase = Paths.get(repository.getLocation()).toAbsolutePath(); | |||
Path repoBase = PathUtil.getPathFromUri(repository.getLocation()).toAbsolutePath(); | |||
Path repoDir = artifactFile.getParent().toAbsolutePath(); | |||
if ( !Files.exists(repoDir)) | |||
@@ -215,11 +216,21 @@ public class ManagedDefaultRepositoryContent | |||
@Override | |||
public String getRepoRoot() | |||
{ | |||
return repository.getLocation(); | |||
return convertUriToPath( repository.getLocation() ); | |||
} | |||
private String convertUriToPath( URI uri ) { | |||
if (uri.getScheme()==null) { | |||
return Paths.get(uri.getPath()).toString(); | |||
} else if ("file".equals(uri.getScheme())) { | |||
return Paths.get(uri).toString(); | |||
} else { | |||
return uri.toString(); | |||
} | |||
} | |||
@Override | |||
public ManagedRepository getRepository() | |||
public org.apache.archiva.repository.ManagedRepository getRepository() | |||
{ | |||
return repository; | |||
} | |||
@@ -244,7 +255,7 @@ public class ManagedDefaultRepositoryContent | |||
path = path.substring( 0, idx ); | |||
} | |||
Path repoDir = Paths.get( repository.getLocation(), path ); | |||
Path repoDir = PathUtil.getPathFromUri( repository.getLocation() ).resolve( path ); | |||
if ( !Files.exists(repoDir) ) | |||
{ | |||
@@ -297,7 +308,7 @@ public class ManagedDefaultRepositoryContent | |||
path = path.substring( 0, idx ); | |||
} | |||
Path repoBase = Paths.get(repository.getLocation()); | |||
Path repoBase = PathUtil.getPathFromUri(repository.getLocation()); | |||
Path repoDir = repoBase.resolve( path ); | |||
if ( !Files.exists(repoDir) ) | |||
@@ -370,7 +381,7 @@ public class ManagedDefaultRepositoryContent | |||
} | |||
@Override | |||
public void setRepository( ManagedRepository repository ) | |||
public void setRepository( org.apache.archiva.repository.ManagedRepository repository ) | |||
{ | |||
this.repository = repository; | |||
} | |||
@@ -385,9 +396,10 @@ public class ManagedDefaultRepositoryContent | |||
public ArtifactReference toArtifactReference( String path ) | |||
throws LayoutException | |||
{ | |||
if ( ( path != null ) && path.startsWith( repository.getLocation() ) && repository.getLocation().length() > 0 ) | |||
String repoPath = convertUriToPath( repository.getLocation() ); | |||
if ( ( path != null ) && path.startsWith( repoPath ) && repoPath.length() > 0 ) | |||
{ | |||
return super.toArtifactReference( path.substring( repository.getLocation().length() + 1 ) ); | |||
return super.toArtifactReference( path.substring( repoPath.length() + 1 ) ); | |||
} | |||
return super.toArtifactReference( path ); | |||
@@ -407,13 +419,13 @@ public class ManagedDefaultRepositoryContent | |||
@Override | |||
public Path toFile( ArtifactReference reference ) | |||
{ | |||
return Paths.get( repository.getLocation(), toPath( reference ) ); | |||
return PathUtil.getPathFromUri( repository.getLocation()).resolve( toPath( reference ) ); | |||
} | |||
@Override | |||
public Path toFile( ArchivaArtifact reference ) | |||
{ | |||
return Paths.get( repository.getLocation(), toPath( reference ) ); | |||
return PathUtil.getPathFromUri( repository.getLocation()).resolve( toPath( reference ) ); | |||
} | |||
/** | |||
@@ -436,7 +448,7 @@ public class ManagedDefaultRepositoryContent | |||
path = path.substring( 0, idx ); | |||
} | |||
Path repoBase = Paths.get(repository.getLocation()).toAbsolutePath(); | |||
Path repoBase = PathUtil.getPathFromUri(repository.getLocation()).toAbsolutePath(); | |||
Path repoDir = repoBase.resolve( path ); | |||
if ( !Files.exists(repoDir) ) |
@@ -19,9 +19,9 @@ package org.apache.archiva.repository.content.maven2; | |||
* under the License. | |||
*/ | |||
import org.apache.archiva.admin.model.beans.RemoteRepository; | |||
import org.apache.archiva.model.ArtifactReference; | |||
import org.apache.archiva.model.RepositoryURL; | |||
import org.apache.archiva.repository.RemoteRepository; | |||
import org.apache.archiva.repository.RemoteRepositoryContent; | |||
import org.apache.archiva.repository.layout.LayoutException; | |||
import org.springframework.context.annotation.Scope; | |||
@@ -29,10 +29,8 @@ import org.springframework.stereotype.Service; | |||
/** | |||
* RemoteDefaultRepositoryContent | |||
* | |||
* | |||
*/ | |||
@Service( "remoteRepositoryContent#default" ) | |||
@Service( "remoteRepositoryContent#maven" ) | |||
@Scope( "prototype" ) | |||
public class RemoteDefaultRepositoryContent | |||
extends AbstractDefaultRepositoryContent | |||
@@ -41,21 +39,29 @@ public class RemoteDefaultRepositoryContent | |||
private RemoteRepository repository; | |||
@Override | |||
public String getId() | |||
public String getId( ) | |||
{ | |||
return repository.getId(); | |||
return repository.getId( ); | |||
} | |||
@Override | |||
public RemoteRepository getRepository() | |||
public RemoteRepository getRepository( ) | |||
{ | |||
return repository; | |||
} | |||
@Override | |||
public RepositoryURL getURL() | |||
public RepositoryURL getURL( ) | |||
{ | |||
return new RepositoryURL( repository.getUrl() ); | |||
try | |||
{ | |||
return new RepositoryURL( repository.getLocation( ).toString( ) ); | |||
} | |||
catch ( Exception e ) | |||
{ | |||
log.error( "Could not convert location url {}", repository.getLocation( ) ); | |||
return new RepositoryURL( "" ); | |||
} | |||
} | |||
@Override | |||
@@ -74,9 +80,10 @@ public class RemoteDefaultRepositoryContent | |||
public ArtifactReference toArtifactReference( String path ) | |||
throws LayoutException | |||
{ | |||
if ( ( path != null ) && path.startsWith( repository.getUrl() ) ) | |||
if ( ( path != null ) && repository.getLocation()!=null && path.startsWith( repository.getLocation().toString() ) ) | |||
{ | |||
return super.toArtifactReference( path.substring( repository.getUrl().length() ) ); | |||
return super.toArtifactReference( path.substring( repository.getLocation().toString().length( ) ) ); | |||
} | |||
return super.toArtifactReference( path ); | |||
@@ -85,7 +92,7 @@ public class RemoteDefaultRepositoryContent | |||
@Override | |||
public RepositoryURL toURL( ArtifactReference reference ) | |||
{ | |||
String url = repository.getUrl() + toPath( reference ); | |||
String url = repository.getLocation( ) + toPath( reference ); | |||
return new RepositoryURL( url ); | |||
} | |||
} |
@@ -19,6 +19,7 @@ package org.apache.archiva.repository.maven2; | |||
* under the License. | |||
*/ | |||
import org.apache.archiva.common.utils.PathUtil; | |||
import org.apache.archiva.repository.AbstractManagedRepository; | |||
import org.apache.archiva.repository.ReleaseScheme; | |||
import org.apache.archiva.repository.RepositoryCapabilities; | |||
@@ -29,7 +30,14 @@ import org.apache.archiva.repository.features.ArtifactCleanupFeature; | |||
import org.apache.archiva.repository.features.IndexCreationFeature; | |||
import org.apache.archiva.repository.features.RepositoryFeature; | |||
import org.apache.archiva.repository.features.StagingRepositoryFeature; | |||
import org.slf4j.Logger; | |||
import org.slf4j.LoggerFactory; | |||
import java.io.IOException; | |||
import java.net.URI; | |||
import java.nio.file.Files; | |||
import java.nio.file.Path; | |||
import java.nio.file.Paths; | |||
import java.util.Collections; | |||
import java.util.HashSet; | |||
import java.util.Locale; | |||
@@ -40,6 +48,9 @@ import java.util.Set; | |||
*/ | |||
public class MavenManagedRepository extends AbstractManagedRepository | |||
{ | |||
private static final Logger log = LoggerFactory.getLogger( MavenManagedRepository.class ); | |||
public static final String DEFAULT_LAYOUT = "default"; | |||
public static final String LEGACY_LAYOUT = "legacy"; | |||
private ArtifactCleanupFeature artifactCleanupFeature = new ArtifactCleanupFeature( ); | |||
@@ -106,4 +117,21 @@ public class MavenManagedRepository extends AbstractManagedRepository | |||
{ | |||
return indexCreationFeature.hasIndex(); | |||
} | |||
@Override | |||
public void setLocation( URI location ) | |||
{ | |||
super.setLocation( location ); | |||
Path newLoc = PathUtil.getPathFromUri( location ); | |||
if (!Files.exists( newLoc )) { | |||
try | |||
{ | |||
Files.createDirectories( newLoc ); | |||
} | |||
catch ( IOException e ) | |||
{ | |||
log.error("Could not create directory {}",location, e); | |||
} | |||
} | |||
} | |||
} |
@@ -7,11 +7,9 @@ import org.apache.archiva.repository.RepositoryCapabilities; | |||
import org.apache.archiva.repository.RepositoryType; | |||
import org.apache.archiva.repository.StandardCapabilities; | |||
import org.apache.archiva.repository.UnsupportedFeatureException; | |||
import org.apache.archiva.repository.features.ArtifactCleanupFeature; | |||
import org.apache.archiva.repository.features.IndexCreationFeature; | |||
import org.apache.archiva.repository.features.RemoteIndexFeature; | |||
import org.apache.archiva.repository.features.RepositoryFeature; | |||
import org.apache.archiva.repository.features.StagingRepositoryFeature; | |||
import java.util.Locale; | |||
@@ -19,6 +19,7 @@ package org.apache.archiva.repository.maven2; | |||
* under the License. | |||
*/ | |||
import org.apache.archiva.common.utils.PathUtil; | |||
import org.apache.archiva.configuration.AbstractRepositoryConfiguration; | |||
import org.apache.archiva.configuration.ArchivaConfiguration; | |||
import org.apache.archiva.configuration.ManagedRepositoryConfiguration; | |||
@@ -94,6 +95,9 @@ public class MavenRepositoryProvider implements RepositoryProvider | |||
private URI getURIFromString( String uriStr) throws RepositoryException { | |||
URI uri; | |||
try { | |||
if (StringUtils.isEmpty( uriStr )) { | |||
return new URI(""); | |||
} | |||
if (uriStr.startsWith("/")) { | |||
// only absolute paths are prepended with file scheme | |||
uri = new URI("file://"+uriStr); | |||
@@ -117,6 +121,7 @@ public class MavenRepositoryProvider implements RepositoryProvider | |||
throw new RepositoryException( "The config entry "+uriStr+" cannot be converted to URI." ); | |||
} | |||
} | |||
log.debug("Setting location uri: {}", uri); | |||
return uri; | |||
} | |||
@@ -140,8 +145,9 @@ public class MavenRepositoryProvider implements RepositoryProvider | |||
throw new RepositoryException( "The location entry is not a valid uri: "+cfg.getLocation() ); | |||
} | |||
setBaseConfig( repo, cfg ); | |||
Path repoDir = Paths.get(repo.getAbsoluteLocation()); | |||
Path repoDir = PathUtil.getPathFromUri(repo.getAbsoluteLocation()); | |||
if (!Files.exists(repoDir)) { | |||
log.debug("Creating repo directory {}", repoDir); | |||
try | |||
{ | |||
Files.createDirectories( repoDir ); | |||
@@ -168,18 +174,40 @@ public class MavenRepositoryProvider implements RepositoryProvider | |||
IndexCreationFeature indexCreationFeature = repo.getFeature( IndexCreationFeature.class ).get( ); | |||
indexCreationFeature.setSkipPackedIndexCreation( cfg.isSkipPackedIndexCreation() ); | |||
indexCreationFeature.setIndexPath( getURIFromString( cfg.getIndexDir() ) ); | |||
Path indexPath; | |||
if (indexCreationFeature.getIndexPath().getScheme()==null) { | |||
indexPath = Paths.get(indexCreationFeature.getIndexPath().getPath()); | |||
} else { | |||
indexPath = Paths.get(indexCreationFeature.getIndexPath()); | |||
} | |||
Path absoluteIndexPath; | |||
if (indexPath.isAbsolute()) { | |||
absoluteIndexPath = indexPath; | |||
} else { | |||
absoluteIndexPath = PathUtil.getPathFromUri( repo.getLocation()).resolve(indexCreationFeature.getIndexPath().getPath()); | |||
} | |||
try | |||
{ | |||
Files.createDirectories( absoluteIndexPath ); | |||
} | |||
catch ( IOException e ) | |||
{ | |||
log.error("Could not create index directory {}", absoluteIndexPath); | |||
throw new RepositoryException( "Could not create index directory "+absoluteIndexPath ); | |||
} | |||
ArtifactCleanupFeature artifactCleanupFeature = repo.getFeature( ArtifactCleanupFeature.class ).get(); | |||
artifactCleanupFeature.setDeleteReleasedSnapshots( cfg.isDeleteReleasedSnapshots() ); | |||
artifactCleanupFeature.setRetentionCount( cfg.getRetentionCount() ); | |||
artifactCleanupFeature.setRetentionTime( Period.ofDays( cfg.getRetentionTime() ) ); | |||
artifactCleanupFeature.setRetentionPeriod( Period.ofDays( cfg.getRetentionPeriod() ) ); | |||
} | |||
@Override | |||
public ManagedRepository createStagingInstance( ManagedRepositoryConfiguration baseConfiguration ) throws RepositoryException | |||
{ | |||
log.debug("Creating staging instance for {}", baseConfiguration.getId()); | |||
return createManagedInstance( getStageRepoConfig( baseConfiguration ) ); | |||
} | |||
@@ -192,6 +220,16 @@ public class MavenRepositoryProvider implements RepositoryProvider | |||
return repo; | |||
} | |||
private String convertUriToPath(URI uri) { | |||
if (uri.getScheme()==null) { | |||
return uri.getPath(); | |||
} else if ("file".equals(uri.getScheme())) { | |||
return Paths.get(uri).toString(); | |||
} else { | |||
return uri.toString(); | |||
} | |||
} | |||
@Override | |||
public void updateRemoteInstance( EditableRemoteRepository repo, RemoteRepositoryConfiguration cfg ) throws RepositoryException | |||
{ | |||
@@ -228,7 +266,7 @@ public class MavenRepositoryProvider implements RepositoryProvider | |||
} | |||
repo.setExtraHeaders( cfg.getExtraHeaders() ); | |||
repo.setExtraParameters( cfg.getExtraParameters() ); | |||
PasswordCredentials credentials = new PasswordCredentials(); | |||
PasswordCredentials credentials = new PasswordCredentials("", new char[0]); | |||
if (cfg.getPassword()!=null && cfg.getUsername()!=null) | |||
{ | |||
credentials.setPassword( cfg.getPassword( ).toCharArray( ) ); | |||
@@ -273,7 +311,7 @@ public class MavenRepositoryProvider implements RepositoryProvider | |||
cfg.setRefreshCronExpression( remoteRepository.getSchedulingDefinition() ); | |||
IndexCreationFeature indexCreationFeature = remoteRepository.getFeature( IndexCreationFeature.class ).get(); | |||
cfg.setIndexDir( indexCreationFeature.getIndexPath().toString()); | |||
cfg.setIndexDir( convertUriToPath( indexCreationFeature.getIndexPath())); | |||
RemoteIndexFeature remoteIndexFeature = remoteRepository.getFeature( RemoteIndexFeature.class ).get(); | |||
cfg.setRemoteIndexUrl( remoteIndexFeature.getIndexUri().toString() ); | |||
@@ -301,22 +339,20 @@ public class MavenRepositoryProvider implements RepositoryProvider | |||
cfg.setId( managedRepository.getId() ); | |||
cfg.setName( managedRepository.getName() ); | |||
cfg.setDescription( managedRepository.getDescription() ); | |||
cfg.setLocation( managedRepository.getLocation().toString() ); | |||
cfg.setLocation( convertUriToPath( managedRepository.getLocation() ) ); | |||
cfg.setLayout( managedRepository.getLayout() ); | |||
cfg.setRefreshCronExpression( managedRepository.getSchedulingDefinition() ); | |||
cfg.setScanned( managedRepository.isScanned() ); | |||
cfg.setBlockRedeployments( managedRepository.blocksRedeployments() ); | |||
StagingRepositoryFeature stagingRepositoryFeature = managedRepository.getFeature( StagingRepositoryFeature.class ).get(); | |||
cfg.setStageRepoNeeded(stagingRepositoryFeature.isStageRepoNeeded()); | |||
IndexCreationFeature indexCreationFeature = managedRepository.getFeature( IndexCreationFeature.class ).get(); | |||
cfg.setIndexDir( indexCreationFeature.getIndexPath().toString()); | |||
cfg.setIndexDir(convertUriToPath( indexCreationFeature.getIndexPath() )); | |||
cfg.setSkipPackedIndexCreation( indexCreationFeature.isSkipPackedIndexCreation() ); | |||
ArtifactCleanupFeature artifactCleanupFeature = managedRepository.getFeature( ArtifactCleanupFeature.class ).get(); | |||
cfg.setRetentionCount( artifactCleanupFeature.getRetentionCount()); | |||
cfg.setRetentionTime( artifactCleanupFeature.getRetentionTime().getDays() ); | |||
cfg.setRetentionPeriod( artifactCleanupFeature.getRetentionPeriod().getDays() ); | |||
cfg.setDeleteReleasedSnapshots(artifactCleanupFeature.isDeleteReleasedSnapshots()); | |||
if (managedRepository.getActiveReleaseSchemes().contains( ReleaseScheme.RELEASE )) { | |||
@@ -340,8 +376,9 @@ public class MavenRepositoryProvider implements RepositoryProvider | |||
stagingRepository.setLayout( repository.getLayout() ); | |||
stagingRepository.setName( repository.getName() + StagingRepositoryFeature.STAGING_REPO_POSTFIX ); | |||
stagingRepository.setBlockRedeployments( repository.isBlockRedeployments() ); | |||
stagingRepository.setRetentionTime( repository.getRetentionTime() ); | |||
stagingRepository.setRetentionPeriod( repository.getRetentionPeriod() ); | |||
stagingRepository.setDeleteReleasedSnapshots( repository.isDeleteReleasedSnapshots() ); | |||
stagingRepository.setStageRepoNeeded( false ); | |||
String path = repository.getLocation(); | |||
int lastIndex = path.replace( '\\', '/' ).lastIndexOf( '/' ); | |||
@@ -349,16 +386,28 @@ public class MavenRepositoryProvider implements RepositoryProvider | |||
if ( StringUtils.isNotBlank( repository.getIndexDir() ) ) | |||
{ | |||
Path indexDir = Paths.get( repository.getIndexDir() ); | |||
// in case of absolute dir do not use the same | |||
if ( indexDir.isAbsolute() ) | |||
Path indexDir = null; | |||
try | |||
{ | |||
stagingRepository.setIndexDir( stagingRepository.getLocation() + "/.index" ); | |||
indexDir = Paths.get( new URI(repository.getIndexDir().startsWith( "file://" ) ? repository.getIndexDir() : "file://"+repository.getIndexDir()) ); | |||
if ( indexDir.isAbsolute() ) | |||
{ | |||
Path newDir = Paths.get(new URI(stagingRepository.getLocation().startsWith( "file://" ) ? stagingRepository.getLocation() : "file://"+stagingRepository.getLocation())).resolve(".index"); | |||
log.debug("Changing index directory {} -> {}", indexDir, newDir); | |||
stagingRepository.setIndexDir( newDir.toString() ); | |||
} | |||
else | |||
{ | |||
log.debug("Keeping index directory {}", repository.getIndexDir()); | |||
stagingRepository.setIndexDir( repository.getIndexDir() ); | |||
} | |||
} | |||
else | |||
catch ( URISyntaxException e ) | |||
{ | |||
stagingRepository.setIndexDir( repository.getIndexDir() ); | |||
log.error("Could not parse index path as uri {}", repository.getIndexDir()); | |||
stagingRepository.setIndexDir( "" ); | |||
} | |||
// in case of absolute dir do not use the same | |||
} | |||
stagingRepository.setRefreshCronExpression( repository.getRefreshCronExpression() ); | |||
stagingRepository.setReleases( repository.isReleases() ); | |||
@@ -372,7 +421,10 @@ public class MavenRepositoryProvider implements RepositoryProvider | |||
} | |||
private void setBaseConfig( EditableRepository repo, AbstractRepositoryConfiguration cfg) throws RepositoryException { | |||
final String baseUriStr = archivaConfiguration.getConfiguration().getArchivaRuntimeConfiguration().getRepositoryBaseDirectory(); | |||
String baseUriStr = archivaConfiguration.getConfiguration().getArchivaRuntimeConfiguration().getRepositoryBaseDirectory(); | |||
if (baseUriStr==null) { | |||
baseUriStr = Paths.get(System.getProperty( "appserver.base" )).resolve("repositories").normalize().toString(); | |||
} | |||
try | |||
{ | |||
URI baseUri = new URI(baseUriStr); | |||
@@ -383,9 +435,9 @@ public class MavenRepositoryProvider implements RepositoryProvider | |||
log.error("Could not set base URI {}: {}", baseUriStr, e.getMessage(), e); | |||
throw new RepositoryException( "Could not set base URI "+ baseUriStr); | |||
} | |||
repo.setName( repo.getPrimaryLocale(), cfg.getName() ); | |||
repo.setDescription( repo.getPrimaryLocale(), cfg.getDescription() ); | |||
repo.setLayout( cfg.getLayout() ); | |||
} | |||
public ArchivaConfiguration getArchivaConfiguration( ) |
@@ -42,6 +42,7 @@ import java.util.Collections; | |||
import java.util.HashMap; | |||
import java.util.Iterator; | |||
import java.util.List; | |||
import java.util.Locale; | |||
import java.util.Map; | |||
/** | |||
@@ -64,7 +65,7 @@ public class MockRepoAdmin | |||
for ( RemoteRepositoryConfiguration repositoryConfiguration : archivaConfiguration.getConfiguration().getRemoteRepositories() ) | |||
{ | |||
RemoteRepository remoteRepository = | |||
new RemoteRepository( repositoryConfiguration.getId(), repositoryConfiguration.getName(), | |||
new RemoteRepository( Locale.getDefault(), repositoryConfiguration.getId(), repositoryConfiguration.getName(), | |||
repositoryConfiguration.getUrl(), repositoryConfiguration.getLayout(), | |||
repositoryConfiguration.getUsername(), repositoryConfiguration.getPassword(), | |||
repositoryConfiguration.getTimeout() ); | |||
@@ -153,11 +154,11 @@ public class MockRepoAdmin | |||
{ | |||
if ( StringUtils.equals( repositoryId, repoConfig.getId() ) ) | |||
{ | |||
return new ManagedRepository( repoConfig.getId(), repoConfig.getName(), repoConfig.getLocation(), | |||
return new ManagedRepository( Locale.getDefault(), repoConfig.getId(), repoConfig.getName(), repoConfig.getLocation(), | |||
repoConfig.getLayout(), repoConfig.isSnapshots(), repoConfig.isReleases(), | |||
repoConfig.isBlockRedeployments(), repoConfig.getRefreshCronExpression(), | |||
repoConfig.getIndexDir(), repoConfig.isScanned(), | |||
repoConfig.getRetentionTime(), repoConfig.getRetentionCount(), | |||
repoConfig.getRetentionPeriod(), repoConfig.getRetentionCount(), | |||
repoConfig.isDeleteReleasedSnapshots(), false ); | |||
} | |||
} | |||
@@ -195,6 +196,12 @@ public class MockRepoAdmin | |||
return null; //To change body of implemented methods use File | Settings | File Templates. | |||
} | |||
@Override | |||
public IndexingContext createIndexContext( org.apache.archiva.repository.ManagedRepository repository ) throws RepositoryAdminException | |||
{ | |||
return null; | |||
} | |||
@Override | |||
public List<ProxyConnector> getProxyConnectors() | |||
throws RepositoryAdminException |
@@ -4,6 +4,9 @@ import org.apache.archiva.redback.components.registry.RegistryException; | |||
import org.apache.archiva.redback.components.registry.RegistryListener; | |||
import org.springframework.stereotype.Service; | |||
import java.util.List; | |||
import java.util.Locale; | |||
/* | |||
* Licensed to the Apache Software Foundation (ASF) under one | |||
* or more contributor license agreements. See the NOTICE file | |||
@@ -77,4 +80,16 @@ public class TestConfiguration | |||
{ | |||
// no op | |||
} | |||
@Override | |||
public Locale getDefaultLocale( ) | |||
{ | |||
return Locale.getDefault(); | |||
} | |||
@Override | |||
public List<Locale.LanguageRange> getLanguagePriorities( ) | |||
{ | |||
return Locale.LanguageRange.parse("en,fr,de"); | |||
} | |||
} |
@@ -19,7 +19,6 @@ package org.apache.archiva.metadata.repository.storage.maven2; | |||
* under the License. | |||
*/ | |||
import org.apache.archiva.admin.model.beans.ManagedRepository; | |||
import org.apache.archiva.common.utils.VersionComparator; | |||
import org.apache.archiva.configuration.ArchivaConfiguration; | |||
import org.apache.archiva.configuration.FileType; | |||
@@ -27,8 +26,10 @@ import org.apache.archiva.configuration.FileTypes; | |||
import org.apache.archiva.model.ArtifactReference; | |||
import org.apache.archiva.model.ProjectReference; | |||
import org.apache.archiva.model.VersionedReference; | |||
import org.apache.archiva.repository.EditableManagedRepository; | |||
import org.apache.archiva.repository.ManagedRepositoryContent; | |||
import org.apache.archiva.repository.layout.LayoutException; | |||
import org.apache.archiva.repository.maven2.MavenManagedRepository; | |||
import org.junit.Before; | |||
import org.junit.Test; | |||
@@ -36,7 +37,11 @@ import javax.inject.Inject; | |||
import javax.inject.Named; | |||
import java.nio.file.Path; | |||
import java.nio.file.Paths; | |||
import java.util.*; | |||
import java.util.ArrayList; | |||
import java.util.Arrays; | |||
import java.util.Collections; | |||
import java.util.List; | |||
import java.util.Set; | |||
import static org.junit.Assert.assertEquals; | |||
import static org.junit.Assert.fail; | |||
@@ -64,7 +69,7 @@ public class ManagedDefaultRepositoryContentTest | |||
{ | |||
Path repoDir = Paths.get( "src/test/repositories/default-repository" ); | |||
ManagedRepository repository = createRepository( "testRepo", "Unit Test Repo", repoDir ); | |||
MavenManagedRepository repository = createRepository( "testRepo", "Unit Test Repo", repoDir ); | |||
FileType fileType = archivaConfiguration.getConfiguration().getRepositoryScanning().getFileTypes().get( 0 ); | |||
fileType.addPattern( "**/*.xml" ); | |||
@@ -176,7 +181,7 @@ public class ManagedDefaultRepositoryContentTest | |||
// Use the test metadata-repository, which is already setup for | |||
// These kind of version tests. | |||
Path repoDir = Paths.get( "src/test/repositories/metadata-repository" ); | |||
repoContent.getRepository().setLocation( repoDir.toAbsolutePath().toString() ); | |||
(( EditableManagedRepository)repoContent.getRepository()).setLocation( repoDir.toAbsolutePath().toUri() ); | |||
// Request the versions. | |||
Set<String> testedVersionSet = repoContent.getVersions( reference ); | |||
@@ -201,7 +206,7 @@ public class ManagedDefaultRepositoryContentTest | |||
// Use the test metadata-repository, which is already setup for | |||
// These kind of version tests. | |||
Path repoDir = Paths.get( "src/test/repositories/metadata-repository" ); | |||
repoContent.getRepository().setLocation( repoDir.toAbsolutePath().toString() ); | |||
((EditableManagedRepository)repoContent.getRepository()).setLocation( repoDir.toAbsolutePath().toUri() ); | |||
// Request the versions. | |||
Set<String> testedVersionSet = repoContent.getVersions( reference ); |
@@ -19,8 +19,8 @@ package org.apache.archiva.metadata.repository.storage.maven2; | |||
* under the License. | |||
*/ | |||
import org.apache.archiva.admin.model.beans.RemoteRepository; | |||
import org.apache.archiva.model.ArtifactReference; | |||
import org.apache.archiva.repository.RemoteRepository; | |||
import org.apache.archiva.repository.RemoteRepositoryContent; | |||
import org.apache.archiva.repository.layout.LayoutException; | |||
import org.junit.Before; |
@@ -29,6 +29,8 @@ import org.easymock.IMocksControl; | |||
import org.springframework.stereotype.Service; | |||
import java.util.HashSet; | |||
import java.util.List; | |||
import java.util.Locale; | |||
import java.util.Set; | |||
import static org.easymock.EasyMock.createNiceControl; | |||
@@ -121,4 +123,16 @@ public class MockConfiguration | |||
{ | |||
// no op | |||
} | |||
@Override | |||
public Locale getDefaultLocale( ) | |||
{ | |||
return Locale.getDefault(); | |||
} | |||
@Override | |||
public List<Locale.LanguageRange> getLanguagePriorities( ) | |||
{ | |||
return Locale.LanguageRange.parse( "en,fr,de" ); | |||
} | |||
} |
@@ -21,6 +21,8 @@ package org.apache.archiva.repository; | |||
import org.apache.archiva.admin.model.beans.ManagedRepository; | |||
import org.apache.archiva.admin.model.beans.RemoteRepository; | |||
import org.apache.archiva.repository.maven2.MavenManagedRepository; | |||
import org.apache.archiva.repository.maven2.MavenRemoteRepository; | |||
import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner; | |||
import org.junit.Rule; | |||
import org.junit.rules.TestName; | |||
@@ -29,7 +31,10 @@ import org.springframework.context.ApplicationContext; | |||
import org.springframework.test.context.ContextConfiguration; | |||
import javax.inject.Inject; | |||
import java.net.URI; | |||
import java.net.URISyntaxException; | |||
import java.nio.file.Path; | |||
import java.util.Locale; | |||
/** | |||
* AbstractRepositoryLayerTestCase | |||
@@ -46,21 +51,17 @@ public abstract class AbstractRepositoryLayerTestCase | |||
@Inject | |||
protected ApplicationContext applicationContext; | |||
protected ManagedRepository createRepository( String id, String name, Path location ) | |||
protected MavenManagedRepository createRepository( String id, String name, Path location ) | |||
{ | |||
ManagedRepository repo = new ManagedRepository(); | |||
repo.setId( id ); | |||
repo.setName( name ); | |||
repo.setLocation( location.toAbsolutePath().toString() ); | |||
MavenManagedRepository repo = new MavenManagedRepository( id, name); | |||
repo.setLocation( location.toAbsolutePath().toUri() ); | |||
return repo; | |||
} | |||
protected RemoteRepository createRemoteRepository( String id, String name, String url ) | |||
protected MavenRemoteRepository createRemoteRepository( String id, String name, String url ) throws URISyntaxException | |||
{ | |||
RemoteRepository repo = new RemoteRepository(); | |||
repo.setId( id ); | |||
repo.setName( name ); | |||
repo.setUrl( url ); | |||
MavenRemoteRepository repo = new MavenRemoteRepository(id, name); | |||
repo.setLocation( new URI( url ) ); | |||
return repo; | |||
} | |||
@@ -68,10 +69,8 @@ public abstract class AbstractRepositoryLayerTestCase | |||
String layout ) | |||
throws Exception | |||
{ | |||
ManagedRepository repo = new ManagedRepository(); | |||
repo.setId( id ); | |||
repo.setName( name ); | |||
repo.setLocation( location.toAbsolutePath().toString() ); | |||
MavenManagedRepository repo = new MavenManagedRepository( id, name ); | |||
repo.setLocation( location.toAbsolutePath().toUri() ); | |||
repo.setLayout( layout ); | |||
ManagedRepositoryContent repoContent = | |||
@@ -84,10 +83,8 @@ public abstract class AbstractRepositoryLayerTestCase | |||
protected RemoteRepositoryContent createRemoteRepositoryContent( String id, String name, String url, String layout ) | |||
throws Exception | |||
{ | |||
RemoteRepository repo = new RemoteRepository(); | |||
repo.setId( id ); | |||
repo.setName( name ); | |||
repo.setUrl( url ); | |||
MavenRemoteRepository repo = new MavenRemoteRepository(id, name); | |||
repo.setLocation( new URI( url ) ); | |||
repo.setLayout( layout ); | |||
RemoteRepositoryContent repoContent = |
@@ -19,12 +19,12 @@ package org.apache.archiva.repository.content.maven2; | |||
* under the License. | |||
*/ | |||
import org.apache.archiva.admin.model.beans.ManagedRepository; | |||
import org.apache.archiva.common.utils.FileUtils; | |||
import org.apache.archiva.configuration.ArchivaConfiguration; | |||
import org.apache.archiva.model.ArtifactReference; | |||
import org.apache.archiva.repository.ManagedRepositoryContent; | |||
import org.apache.archiva.repository.layout.LayoutException; | |||
import org.apache.archiva.repository.maven2.MavenManagedRepository; | |||
import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner; | |||
import org.apache.commons.lang.StringUtils; | |||
import org.junit.Before; | |||
@@ -514,10 +514,8 @@ public class RepositoryRequestTest | |||
String layout ) | |||
throws Exception | |||
{ | |||
ManagedRepository repo = new ManagedRepository(); | |||
repo.setId( id ); | |||
repo.setName( name ); | |||
repo.setLocation( location.toAbsolutePath().toString() ); | |||
MavenManagedRepository repo = new MavenManagedRepository( id, name); | |||
repo.setLocation( location.toAbsolutePath().toUri() ); | |||
repo.setLayout( layout ); | |||
ManagedRepositoryContent repoContent = |
@@ -20,17 +20,10 @@ package org.apache.archiva.repository.maven2; | |||
*/ | |||
import org.apache.archiva.common.utils.FileUtils; | |||
import org.apache.archiva.configuration.ArchivaConfiguration; | |||
import org.apache.archiva.configuration.ArchivaRuntimeConfiguration; | |||
import org.apache.archiva.configuration.Configuration; | |||
import org.apache.archiva.configuration.ConfigurationListener; | |||
import org.apache.archiva.configuration.DefaultArchivaConfiguration; | |||
import org.apache.archiva.configuration.IndeterminateConfigurationException; | |||
import org.apache.archiva.configuration.ManagedRepositoryConfiguration; | |||
import org.apache.archiva.configuration.RemoteRepositoryConfiguration; | |||
import org.apache.archiva.metadata.repository.storage.maven2.conf.MockConfiguration; | |||
import org.apache.archiva.redback.components.registry.RegistryException; | |||
import org.apache.archiva.redback.components.registry.RegistryListener; | |||
import org.apache.archiva.repository.ManagedRepository; | |||
import org.apache.archiva.repository.PasswordCredentials; | |||
import org.apache.archiva.repository.ReleaseScheme; | |||
@@ -41,23 +34,16 @@ import org.apache.archiva.repository.features.ArtifactCleanupFeature; | |||
import org.apache.archiva.repository.features.IndexCreationFeature; | |||
import org.apache.archiva.repository.features.RemoteIndexFeature; | |||
import org.apache.archiva.repository.features.StagingRepositoryFeature; | |||
import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner; | |||
import org.junit.After; | |||
import org.junit.Before; | |||
import org.junit.Test; | |||
import org.junit.runner.RunWith; | |||
import org.sonatype.aether.util.layout.RepositoryLayout; | |||
import org.springframework.test.context.ContextConfiguration; | |||
import javax.inject.Inject; | |||
import javax.inject.Named; | |||
import java.net.URI; | |||
import java.nio.file.Files; | |||
import java.nio.file.Path; | |||
import java.time.Duration; | |||
import java.time.Period; | |||
import java.time.temporal.ChronoUnit; | |||
import java.time.temporal.TemporalUnit; | |||
import java.util.HashMap; | |||
import java.util.Map; | |||
@@ -106,7 +92,7 @@ public class MavenRepositoryProviderTest | |||
repo.setId("testm001"); | |||
repo.setName("Managed Test Repo 001"); | |||
repo.setDescription( "This is a managed test" ); | |||
repo.setRetentionTime( 37 ); | |||
repo.setRetentionPeriod( 37 ); | |||
repoLocation = Files.createTempDirectory( "test-repo-001"); | |||
repo.setLocation( repoLocation.toAbsolutePath().toString() ); | |||
repo.setSnapshots( true ); | |||
@@ -139,7 +125,7 @@ public class MavenRepositoryProviderTest | |||
assertEquals("4 0 0 ? * TUE", mr.getSchedulingDefinition()); | |||
assertTrue(mr.isScanned()); | |||
ArtifactCleanupFeature artifactCleanupFeature = mr.getFeature( ArtifactCleanupFeature.class ).get(); | |||
assertEquals( Period.ofDays( 37), artifactCleanupFeature.getRetentionTime()); | |||
assertEquals( Period.ofDays( 37), artifactCleanupFeature.getRetentionPeriod()); | |||
assertTrue(artifactCleanupFeature.isDeleteReleasedSnapshots()); | |||
assertEquals(33, artifactCleanupFeature.getRetentionCount()); | |||
@@ -229,7 +215,7 @@ public class MavenRepositoryProviderTest | |||
public void getManagedConfiguration() throws Exception { | |||
MavenManagedRepository repo = new MavenManagedRepository( "test01", "My Test repo" ); | |||
repo.setLocation( new URI("https://this.is/a/test") ); | |||
repo.setLocation( new URI("file:///this.is/a/test") ); | |||
repo.setScanned( true ); | |||
repo.setDescription( repo.getPrimaryLocale(), "This is a description" ); | |||
repo.setLayout( "maven2" ); | |||
@@ -244,12 +230,12 @@ public class MavenRepositoryProviderTest | |||
indexCreationFeature.setIndexPath( new URI("test/.indexes") ); | |||
indexCreationFeature.setSkipPackedIndexCreation( true ); | |||
ArtifactCleanupFeature artifactCleanupFeature = repo.getFeature( ArtifactCleanupFeature.class ).get(); | |||
artifactCleanupFeature.setRetentionTime( Period.ofDays( 5 ) ); | |||
artifactCleanupFeature.setRetentionPeriod( Period.ofDays( 5 ) ); | |||
artifactCleanupFeature.setRetentionCount( 7 ); | |||
artifactCleanupFeature.setDeleteReleasedSnapshots( true ); | |||
ManagedRepositoryConfiguration cfg = provider.getManagedConfiguration( repo ); | |||
assertEquals("https://this.is/a/test", cfg.getLocation()); | |||
assertEquals("/this.is/a/test", cfg.getLocation()); | |||
assertTrue(cfg.isScanned()); | |||
assertEquals( "This is a description", cfg.getDescription() ); | |||
assertEquals("maven2", cfg.getLayout()); | |||
@@ -259,7 +245,7 @@ public class MavenRepositoryProviderTest | |||
assertTrue(cfg.isStageRepoNeeded()); | |||
assertEquals("test/.indexes", cfg.getIndexDir()); | |||
assertTrue(cfg.isSkipPackedIndexCreation()); | |||
assertEquals(5, cfg.getRetentionTime()); | |||
assertEquals(5, cfg.getRetentionPeriod()); | |||
assertEquals(7, cfg.getRetentionCount()); | |||
assertTrue(cfg.isDeleteReleasedSnapshots()); | |||
assertTrue(cfg.isReleases()); |
@@ -21,6 +21,7 @@ package org.apache.archiva.repository.metadata; | |||
import org.apache.archiva.admin.model.beans.ManagedRepository; | |||
import org.apache.archiva.metadata.repository.storage.RepositoryStorage; | |||
import org.apache.archiva.repository.maven2.MavenManagedRepository; | |||
import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner; | |||
import org.junit.Assert; | |||
import org.junit.Test; | |||
@@ -29,6 +30,7 @@ import org.springframework.test.context.ContextConfiguration; | |||
import javax.inject.Inject; | |||
import javax.inject.Named; | |||
import java.util.Locale; | |||
/** | |||
* @author Olivier Lamy | |||
@@ -46,17 +48,17 @@ public class Maven2RepositoryStorageTest | |||
{ | |||
String href = "/repository/internal/org/apache/maven/someartifact.jar"; | |||
Assert.assertEquals( "/org/apache/maven/someartifact.jar", | |||
repositoryStorage.getFilePath( href, new ManagedRepository() ) ); | |||
repositoryStorage.getFilePath( href, new MavenManagedRepository( "repo01", "repo01") ) ); | |||
href = "repository/internal/org/apache/maven/someartifact.jar"; | |||
Assert.assertEquals( "/org/apache/maven/someartifact.jar", | |||
repositoryStorage.getFilePath( href, new ManagedRepository() ) ); | |||
repositoryStorage.getFilePath( href, new MavenManagedRepository( "repo01", "repo01" ) ) ); | |||
href = "repository/internal/org/apache/maven/"; | |||
Assert.assertEquals( "/org/apache/maven/", repositoryStorage.getFilePath( href, new ManagedRepository() ) ); | |||
Assert.assertEquals( "/org/apache/maven/", repositoryStorage.getFilePath( href, new MavenManagedRepository("repo01", "repo01") ) ); | |||
href = "mypath"; | |||
Assert.assertEquals( "/", repositoryStorage.getFilePath( href, new ManagedRepository() ) ); | |||
Assert.assertEquals( "/", repositoryStorage.getFilePath( href, new MavenManagedRepository("repo01", "repo01") ) ); | |||
} | |||
@@ -33,6 +33,7 @@ import org.apache.archiva.repository.AbstractRepositoryLayerTestCase; | |||
import org.apache.archiva.repository.ManagedRepositoryContent; | |||
import org.apache.archiva.repository.RemoteRepositoryContent; | |||
import org.apache.archiva.repository.layout.LayoutException; | |||
import org.apache.archiva.repository.maven2.MavenManagedRepository; | |||
import org.apache.commons.io.FileUtils; | |||
import org.apache.commons.lang.StringUtils; | |||
import org.custommonkey.xmlunit.DetailedDiff; | |||
@@ -362,7 +363,7 @@ public class MetadataToolsTest | |||
reference.setArtifactId( artifactId ); | |||
reference.setVersion( version ); | |||
ManagedRepository repo = | |||
MavenManagedRepository repo = | |||
createRepository( "test-repo", "Test Repository: " + name.getMethodName(), repoRootDir ); | |||
ManagedRepositoryContent repoContent = | |||
applicationContext.getBean( "managedRepositoryContent#default", ManagedRepositoryContent.class ); | |||
@@ -614,7 +615,7 @@ public class MetadataToolsTest | |||
Files.createDirectories(repoRoot); | |||
ManagedRepository repoConfig = | |||
MavenManagedRepository repoConfig = | |||
createRepository( "test-repo", "Test Repository: " + name.getMethodName(), repoRoot ); | |||
ManagedRepositoryContent repoContent = |
@@ -27,6 +27,10 @@ | |||
http://www.springframework.org/schema/context/spring-context-3.0.xsd"> | |||
<context:annotation-config/> | |||
<context:component-scan base-package="org.apache.archiva.metadata.repository.storage.maven2.conf"/> | |||
<context:component-scan base-package="org.apache.archiva.metadata.repository.storage.maven2.conf,org.apache.archiva.repository.content.maven2"/> | |||
<alias name="managedRepositoryContent#maven" alias="managedRepositoryContent#default" /> | |||
<alias name="remoteRepositoryContent#maven" alias="remoteRepositoryContent#default" /> | |||
</beans> |
@@ -27,6 +27,7 @@ | |||
http://www.springframework.org/schema/context/spring-context-3.0.xsd"> | |||
<context:property-placeholder system-properties-mode="OVERRIDE"/> | |||
<context:component-scan base-package="org.apache.archiva.repository.content.maven2" /> | |||
<bean name="archivaConfiguration#repo-request-test" class="org.apache.archiva.configuration.DefaultArchivaConfiguration"> | |||
<property name="registry" ref="registry#configured"/> | |||
</bean> | |||
@@ -34,6 +35,10 @@ | |||
<alias name="archivaConfiguration#repo-request-test" alias="archivaConfiguration#default"/> | |||
<alias name="archivaConfiguration#repo-request-test" alias="archivaConfiguration"/> | |||
<alias name="managedRepositoryContent#maven" alias="managedRepositoryContent#default" /> | |||
<alias name="remoteRepositoryContent#maven" alias="remoteRepositoryContent#default" /> | |||
<bean name="registry#configured" class="org.apache.archiva.redback.components.registry.commons.CommonsConfigurationRegistry"> | |||
<property name="properties"> | |||
<value> |
@@ -28,9 +28,12 @@ | |||
default-lazy-init="true"> | |||
<context:annotation-config/> | |||
<context:component-scan base-package="org.apache.archiva.configuration,org.apache.archiva.metadata.repository"/> | |||
<context:component-scan base-package="org.apache.archiva.configuration,org.apache.archiva.metadata.repository,org.apache.archiva.repository.content.maven2"/> | |||
<alias name="archivaConfiguration#test" alias="archivaConfiguration#default"/> | |||
<alias name="archivaConfiguration#test" alias="archivaConfiguration"/> | |||
<alias name="managedRepositoryContent#maven" alias="managedRepositoryContent#default" /> | |||
<alias name="metadataResolver#test" alias="metadataResolver#default"/> | |||
</beans> |