This is an automated email from the ASF dual-hosted git repository.
martin_s pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/archiva.git
The following commit(s) were added to refs/heads/master by this push:
new 735a03f API refactoring
735a03f is described below
commit 735a03f2b040a60cd85f5c3cb43257218ab9f26f
Author: Martin Stockhammer <[email protected]>
AuthorDate: Wed Jun 17 08:55:04 2020 +0200
API refactoring
---
.../consumers/core/MetadataUpdaterConsumer.java | 11 +-
.../repository/metadata/base/MetadataTools.java | 279 ++-------------------
.../apache/archiva/proxy/MetadataTransferTest.java | 71 +++---
.../maven/metadata/MetadataToolsTest.java | 140 ++++-------
.../archiva/webdav/ArchivaDavResourceFactory.java | 2 +-
5 files changed, 97 insertions(+), 406 deletions(-)
diff --git
a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/archiva/consumers/core/MetadataUpdaterConsumer.java
b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/archiva/consumers/core/MetadataUpdaterConsumer.java
index 5996a06..adbec86 100644
---
a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/archiva/consumers/core/MetadataUpdaterConsumer.java
+++
b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/archiva/consumers/core/MetadataUpdaterConsumer.java
@@ -33,6 +33,7 @@ import org.apache.archiva.repository.RepositoryException;
import org.apache.archiva.repository.RepositoryNotFoundException;
import org.apache.archiva.repository.RepositoryRegistry;
import org.apache.archiva.repository.content.Artifact;
+import org.apache.archiva.repository.content.ItemSelector;
import org.apache.archiva.repository.content.Project;
import org.apache.archiva.repository.metadata.RepositoryMetadataException;
import org.apache.archiva.repository.metadata.base.MetadataTools;
@@ -219,26 +220,22 @@ public class MetadataUpdaterConsumer
private void updateVersionMetadata( Artifact artifact, String path )
{
- VersionedReference versionRef = new VersionedReference( );
- versionRef.setGroupId( artifact.getNamespace( ).getId() );
- versionRef.setArtifactId( artifact.getId( ) );
- versionRef.setVersion( artifact.getVersion( ).getId() );
try
{
- String metadataPath = this.metadataTools.toPath( versionRef );
+ String metadataPath = this.metadataTools.toPath(
artifact.getVersion() );
StorageAsset projectMetadata = this.repositoryDir.resolve(
metadataPath );
if ( projectMetadata.exists() && (
projectMetadata.getModificationTime().toEpochMilli() >= this.scanStartTimestamp
) )
{
// This metadata is up to date. skip it.
- log.debug( "Skipping uptodate metadata: {}",
this.metadataTools.toPath( versionRef ) );
+ log.debug( "Skipping uptodate metadata: {}", metadataPath );
return;
}
metadataTools.updateMetadata( this.repository, metadataPath );
- log.debug( "Updated metadata: {}", this.metadataTools.toPath(
versionRef ) );
+ log.debug( "Updated metadata: {}", metadataPath );
}
catch ( RepositoryMetadataException e )
{
diff --git
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/metadata/base/MetadataTools.java
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/metadata/base/MetadataTools.java
index c3cca9a..38c3c0c 100644
---
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/metadata/base/MetadataTools.java
+++
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/metadata/base/MetadataTools.java
@@ -33,15 +33,12 @@ import org.apache.archiva.configuration.FileTypes;
import org.apache.archiva.configuration.ProxyConnectorConfiguration;
import org.apache.archiva.model.ArchivaRepositoryMetadata;
import org.apache.archiva.model.Plugin;
-import org.apache.archiva.model.ProjectReference;
import org.apache.archiva.model.SnapshotVersion;
-import org.apache.archiva.model.VersionedReference;
import org.apache.archiva.repository.BaseRepositoryContentLayout;
import org.apache.archiva.repository.ContentNotFoundException;
import org.apache.archiva.repository.LayoutException;
import org.apache.archiva.repository.ManagedRepositoryContent;
import org.apache.archiva.repository.RemoteRepositoryContent;
-import org.apache.archiva.repository.RepositoryContent;
import org.apache.archiva.repository.RepositoryRegistry;
import org.apache.archiva.repository.RepositoryType;
import org.apache.archiva.repository.content.Artifact;
@@ -227,80 +224,6 @@ public class MetadataTools
return foundVersions;
}
- /**
- * Gather the set of snapshot versions found in a particular versioned
reference.
- *
- * @return the Set of snapshot artifact versions found.
- * @throws LayoutException
- * @throws ContentNotFoundException
- */
- public Set<String> gatherSnapshotVersions( ManagedRepositoryContent
managedRepository,
- VersionedReference reference )
- throws LayoutException, IOException, ContentNotFoundException
- {
- Set<String> foundVersions = null;
- try
- {
- ArchivaItemSelector selector = ArchivaItemSelector.builder( )
- .withNamespace( reference.getGroupId( ) )
- .withProjectId( reference.getArtifactId( ) )
- .withArtifactId( reference.getArtifactId( ) )
- .withVersion( reference.getVersion( ) )
- .build( );
- try(Stream<? extends Artifact> stream =
managedRepository.getLayout( BaseRepositoryContentLayout.class
).newArtifactStream( selector )) {
- foundVersions = stream.map( a -> a.getArtifactVersion( ) )
- .filter( StringUtils::isNotEmpty )
- .collect( Collectors.toSet( ) );
- }
- }
- catch ( org.apache.archiva.repository.ContentAccessException e )
- {
- log.error( "Error while accessing content {}", e.getMessage( ) );
- throw new IOException( "Could not access repository content: " +
e.getMessage( ) );
- }
-
- // Next gather up the referenced 'latest' versions found in any
proxied repositories
- // maven-metadata-${proxyId}.xml files that may be present.
-
- // Does this repository have a set of remote proxied repositories?
- Set<String> proxiedRepoIds = this.proxies.get(
managedRepository.getId() );
-
- if ( CollectionUtils.isNotEmpty( proxiedRepoIds ) )
- {
- String baseVersion = VersionUtil.getBaseVersion(
reference.getVersion() );
- baseVersion = baseVersion.substring( 0, baseVersion.indexOf(
VersionUtil.SNAPSHOT ) - 1 );
-
- // Add in the proxied repo version ids too.
- Iterator<String> it = proxiedRepoIds.iterator();
- while ( it.hasNext() )
- {
- String proxyId = it.next();
-
- ArchivaRepositoryMetadata proxyMetadata = readProxyMetadata(
managedRepository, reference, proxyId );
- if ( proxyMetadata == null )
- {
- // There is no proxy metadata, skip it.
- continue;
- }
-
- // Is there some snapshot info?
- SnapshotVersion snapshot = proxyMetadata.getSnapshotVersion();
- if ( snapshot != null )
- {
- String timestamp = snapshot.getTimestamp();
- int buildNumber = snapshot.getBuildNumber();
-
- // Only interested in the timestamp + buildnumber.
- if ( StringUtils.isNotBlank( timestamp ) && ( buildNumber
> 0 ) )
- {
- foundVersions.add( baseVersion + "-" + timestamp + "-"
+ buildNumber );
- }
- }
- }
- }
-
- return foundVersions;
- }
/**
* Take a path to a maven-metadata.xml, and attempt to translate it to a
VersionedReference.
@@ -308,7 +231,7 @@ public class MetadataTools
* @param path
* @return
*/
- public VersionedReference toVersionedReference( String path )
+ public ItemSelector toVersionedSelector( String path )
throws RepositoryMetadataException
{
if ( !path.endsWith( "/" + MAVEN_METADATA ) )
@@ -316,7 +239,7 @@ public class MetadataTools
throw new RepositoryMetadataException( "Cannot convert to
versioned reference, not a metadata file. " );
}
- VersionedReference reference = new VersionedReference();
+ ArchivaItemSelector.Builder builder = ArchivaItemSelector.builder( );
String normalizedPath = StringUtils.replace( path, "\\", "/" );
String pathParts[] = StringUtils.split( normalizedPath, '/' );
@@ -325,16 +248,17 @@ public class MetadataTools
int artifactIdOffset = versionOffset - 1;
int groupIdEnd = artifactIdOffset - 1;
- reference.setVersion( pathParts[versionOffset] );
+ builder.withVersion( pathParts[versionOffset] );
- if ( !hasNumberAnywhere( reference.getVersion() ) )
+ if ( !hasNumberAnywhere( pathParts[versionOffset] ) )
{
// Scary check, but without it, all paths are version references;
throw new RepositoryMetadataException(
"Not a versioned reference, as version id on path has no
number in it." );
}
- reference.setArtifactId( pathParts[artifactIdOffset] );
+ builder.withArtifactId( pathParts[artifactIdOffset] );
+ builder.withProjectId( pathParts[artifactIdOffset] );
StringBuilder gid = new StringBuilder();
for ( int i = 0; i <= groupIdEnd; i++ )
@@ -346,9 +270,9 @@ public class MetadataTools
gid.append( pathParts[i] );
}
- reference.setGroupId( gid.toString() );
+ builder.withNamespace( gid.toString( ) );
- return reference;
+ return builder.build();
}
private boolean hasNumberAnywhere( String version )
@@ -356,7 +280,7 @@ public class MetadataTools
return StringUtils.indexOfAny( version, NUMS ) != ( -1 );
}
- public ProjectReference toProjectReference( String path )
+ public ItemSelector toProjectSelector( String path )
throws RepositoryMetadataException
{
if ( !path.endsWith( "/" + MAVEN_METADATA ) )
@@ -364,7 +288,7 @@ public class MetadataTools
throw new RepositoryMetadataException( "Cannot convert to
versioned reference, not a metadata file. " );
}
- ProjectReference reference = new ProjectReference();
+ ArchivaItemSelector.Builder builder = ArchivaItemSelector.builder( );
String normalizedPath = StringUtils.replace( path, "\\", "/" );
String pathParts[] = StringUtils.split( normalizedPath, '/' );
@@ -374,7 +298,8 @@ public class MetadataTools
int artifactIdOffset = pathParts.length - 2;
int groupIdEnd = artifactIdOffset - 1;
- reference.setArtifactId( pathParts[artifactIdOffset] );
+ builder.withArtifactId( pathParts[artifactIdOffset] );
+ builder.withProjectId( pathParts[artifactIdOffset] );
StringBuilder gid = new StringBuilder();
for ( int i = 0; i <= groupIdEnd; i++ )
@@ -386,9 +311,8 @@ public class MetadataTools
gid.append( pathParts[i] );
}
- reference.setGroupId( gid.toString() );
-
- return reference;
+ builder.withNamespace( gid.toString( ) );
+ return builder.build();
}
public String toPath( ContentItem reference )
@@ -412,33 +336,6 @@ public class MetadataTools
}
- public String toPath( ProjectReference reference )
- {
- StringBuilder path = new StringBuilder();
-
- path.append( formatAsDirectory( reference.getGroupId() ) ).append(
PATH_SEPARATOR );
- path.append( reference.getArtifactId() ).append( PATH_SEPARATOR );
- path.append( MAVEN_METADATA );
-
- return path.toString();
- }
-
- public String toPath( VersionedReference reference )
- {
- StringBuilder path = new StringBuilder();
-
- path.append( formatAsDirectory( reference.getGroupId() ) ).append(
PATH_SEPARATOR );
- path.append( reference.getArtifactId() ).append( PATH_SEPARATOR );
- if ( reference.getVersion() != null )
- {
- // add the version only if it is present
- path.append( VersionUtil.getBaseVersion( reference.getVersion() )
).append( PATH_SEPARATOR );
- }
- path.append( MAVEN_METADATA );
-
- return path.toString();
- }
-
private String formatAsDirectory( String directory )
{
return directory.replace( GROUP_SEPARATOR, PATH_SEPARATOR );
@@ -501,17 +398,6 @@ public class MetadataTools
}
public ArchivaRepositoryMetadata readProxyMetadata(
ManagedRepositoryContent managedRepository,
- ProjectReference
reference, String proxyId )
- {
- MetadataReader reader = getMetadataReader( managedRepository );
-
- String metadataPath = getRepositorySpecificName( proxyId, toPath(
reference ) );
- StorageAsset metadataFile =
managedRepository.getRepository().getAsset( metadataPath );
-
- return readMetadataFile( managedRepository, metadataFile );
- }
-
- public ArchivaRepositoryMetadata readProxyMetadata(
ManagedRepositoryContent managedRepository,
String
logicalResource, String proxyId )
{
String metadataPath = getRepositorySpecificName( proxyId,
logicalResource );
@@ -519,14 +405,6 @@ public class MetadataTools
return readMetadataFile( managedRepository, metadataFile );
}
- public ArchivaRepositoryMetadata readProxyMetadata(
ManagedRepositoryContent managedRepository,
- VersionedReference
reference, String proxyId )
- {
- String metadataPath = getRepositorySpecificName( proxyId, toPath(
reference ) );
- StorageAsset metadataFile =
managedRepository.getRepository().getAsset( metadataPath );
- return readMetadataFile( managedRepository, metadataFile );
- }
-
public void updateMetadata( ManagedRepositoryContent managedRepository,
String logicalResource )
throws RepositoryMetadataException
{
@@ -995,135 +873,6 @@ public class MetadataTools
checksum.fixChecksums( algorithms );
}
- /**
- * Update the metadata based on the following rules.
- * <p>
- * 1) If this is a SNAPSHOT reference, then utilize the proxy/repository
specific
- * metadata files to represent the current / latest SNAPSHOT available.
- * 2) If this is a RELEASE reference, and the metadata file does not
exist, then
- * create the metadata file with contents required of the
VersionedReference
- *
- * @param managedRepository the managed repository where the metadata is
kept.
- * @param reference the versioned reference to update
- * @throws LayoutException
- * @throws RepositoryMetadataException
- * @throws IOException
- * @throws ContentNotFoundException
- * @deprecated
- */
- public void updateMetadata( ManagedRepositoryContent managedRepository,
VersionedReference reference )
- throws LayoutException, RepositoryMetadataException, IOException,
ContentNotFoundException
- {
- StorageAsset metadataFile =
managedRepository.getRepository().getAsset( toPath( reference ) );
- ArchivaRepositoryMetadata existingMetadata =
readMetadataFile(managedRepository, metadataFile );
-
- long lastUpdated = getExistingLastUpdated( existingMetadata );
-
- ArchivaRepositoryMetadata metadata = new ArchivaRepositoryMetadata();
- metadata.setGroupId( reference.getGroupId() );
- metadata.setArtifactId( reference.getArtifactId() );
-
- if ( VersionUtil.isSnapshot( reference.getVersion() ) )
- {
- // Do SNAPSHOT handling.
- metadata.setVersion( VersionUtil.getBaseVersion(
reference.getVersion() ) );
-
- // Gather up all of the versions found in the reference dir, and
any
- // proxied maven-metadata.xml files.
- Set<String> snapshotVersions = gatherSnapshotVersions(
managedRepository, reference );
-
- if ( snapshotVersions.isEmpty() )
- {
- throw new ContentNotFoundException(
- "No snapshot versions found on reference [" +
VersionedReference.toKey( reference ) + "]." );
- }
-
- // sort the list to determine to aide in determining the Latest
version.
- List<String> sortedVersions = new ArrayList<>();
- sortedVersions.addAll( snapshotVersions );
- Collections.sort( sortedVersions, new VersionComparator() );
-
- String latestVersion = sortedVersions.get( sortedVersions.size() -
1 );
-
- if ( VersionUtil.isUniqueSnapshot( latestVersion ) )
- {
- // The latestVersion will contain the full version string
"1.0-alpha-5-20070821.213044-8"
- // This needs to be broken down into
${base}-${timestamp}-${build_number}
-
- Matcher m = VersionUtil.UNIQUE_SNAPSHOT_PATTERN.matcher(
latestVersion );
- if ( m.matches() )
- {
- metadata.setSnapshotVersion( new SnapshotVersion() );
- int buildNumber = NumberUtils.toInt( m.group( 3 ), -1 );
- metadata.getSnapshotVersion().setBuildNumber( buildNumber
);
-
- Matcher mtimestamp =
VersionUtil.TIMESTAMP_PATTERN.matcher( m.group( 2 ) );
- if ( mtimestamp.matches() )
- {
- String tsDate = mtimestamp.group( 1 );
- String tsTime = mtimestamp.group( 2 );
-
- long snapshotLastUpdated = toLastUpdatedLong( tsDate +
tsTime );
-
- lastUpdated = Math.max( lastUpdated,
snapshotLastUpdated );
-
- metadata.getSnapshotVersion().setTimestamp( m.group( 2
) );
- }
- }
- }
- else if ( VersionUtil.isGenericSnapshot( latestVersion ) )
- {
- // The latestVersion ends with the generic version string.
- // Example: 1.0-alpha-5-SNAPSHOT
-
- metadata.setSnapshotVersion( new SnapshotVersion() );
-
- /* Disabled due to decision in [MRM-535].
- * Do not set metadata.lastUpdated to file.lastModified.
- *
- * Should this be the last updated timestamp of the file, or
in the case of an
- * archive, the most recent timestamp in the archive?
- *
- ArtifactReference artifact = getFirstArtifact(
managedRepository, reference );
-
- if ( artifact == null )
- {
- throw new IOException( "Not snapshot artifact found to
reference in " + reference );
- }
-
- File artifactFile = managedRepository.toFile( artifact );
-
- if ( artifactFile.exists() )
- {
- Date lastModified = new Date( artifactFile.lastModified()
);
- metadata.setLastUpdatedTimestamp( lastModified );
- }
- */
- }
- else
- {
- throw new RepositoryMetadataException(
- "Unable to process snapshot version <" + latestVersion +
"> reference <" + reference + ">" );
- }
- }
- else
- {
- // Do RELEASE handling.
- metadata.setVersion( reference.getVersion() );
- }
-
- // Set last updated
- if ( lastUpdated > 0 )
- {
- metadata.setLastUpdatedTimestamp( toLastUpdatedDate( lastUpdated )
);
- }
-
- // Save the metadata model to disk.
- RepositoryMetadataWriter.write( metadata, metadataFile );
- ChecksummedFile checksum = new ChecksummedFile(
metadataFile.getFilePath() );
- checksum.fixChecksums( algorithms );
- }
-
private void initConfigVariables()
{
assert(this.artifactPatterns!=null);
diff --git
a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/MetadataTransferTest.java
b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/MetadataTransferTest.java
index 71b66b9..5f72bdc 100644
---
a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/MetadataTransferTest.java
+++
b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/MetadataTransferTest.java
@@ -24,9 +24,7 @@ import org.apache.archiva.common.utils.VersionUtil;
import org.apache.archiva.configuration.ProxyConnectorConfiguration;
import org.apache.archiva.model.ArchivaRepositoryMetadata;
import org.apache.archiva.model.Plugin;
-import org.apache.archiva.model.ProjectReference;
import org.apache.archiva.model.SnapshotVersion;
-import org.apache.archiva.model.VersionedReference;
import org.apache.archiva.policies.CachedFailuresPolicy;
import org.apache.archiva.policies.ChecksumPolicy;
import org.apache.archiva.policies.ReleasesPolicy;
@@ -34,14 +32,15 @@ import org.apache.archiva.policies.SnapshotsPolicy;
import org.apache.archiva.repository.BaseRepositoryContentLayout;
import org.apache.archiva.repository.content.ContentItem;
import org.apache.archiva.repository.content.DataItem;
+import org.apache.archiva.repository.content.ItemSelector;
import org.apache.archiva.repository.content.Project;
import org.apache.archiva.repository.content.Version;
import org.apache.archiva.repository.content.base.ArchivaItemSelector;
-import org.apache.archiva.repository.metadata.base.MetadataTools;
import org.apache.archiva.repository.metadata.RepositoryMetadataException;
+import org.apache.archiva.repository.metadata.base.MetadataTools;
import org.apache.archiva.repository.metadata.base.RepositoryMetadataWriter;
-import org.apache.archiva.repository.storage.fs.FilesystemStorage;
import org.apache.archiva.repository.storage.StorageAsset;
+import org.apache.archiva.repository.storage.fs.FilesystemStorage;
import org.apache.commons.lang3.StringUtils;
import org.apache.maven.wagon.TransferFailedException;
import org.easymock.EasyMock;
@@ -1009,11 +1008,6 @@ public class MetadataTransferTest
assertNoTempFiles( expectedFile );
}
- private ProjectReference createProjectReference( String path )
- throws RepositoryMetadataException
- {
- return metadataTools.toProjectReference( path );
- }
/**
* Transfer the metadata file, not expected to succeed.
@@ -1067,11 +1061,6 @@ public class MetadataTransferTest
assertNoTempFiles( expectedFile );
}
- private VersionedReference createVersionedReference( String path )
- throws RepositoryMetadataException
- {
- return metadataTools.toVersionedReference( path );
- }
/**
* Transfer the metadata file, not expected to succeed.
@@ -1171,18 +1160,30 @@ public class MetadataTransferTest
Path actualFile = managedDefaultDir.resolve(requestedResource);
assertTrue( "Snapshot Metadata should exist: " + requestedResource,
Files.exists(actualFile) );
- ProjectReference actualMetadata = createGroupReference(
requestedResource );
+ ItemSelector actualMetadata = createGroupSelector( requestedResource );
assertGroupMetadata( actualFile, actualMetadata, expectedPlugins );
}
- private ProjectReference createGroupReference( String requestedResource )
+ private ItemSelector createProjectSelector(String path) throws
RepositoryMetadataException
+ {
+ return metadataTools.toProjectSelector( path );
+ }
+
+ private ItemSelector createVersionedSelector(String path) throws
RepositoryMetadataException
+ {
+ return metadataTools.toVersionedSelector( path );
+ }
+
+ private ItemSelector createGroupSelector( String requestedResource )
throws RepositoryMetadataException
{
- ProjectReference projectReference = createProjectReference(
requestedResource );
- projectReference.setGroupId( projectReference.getGroupId() + "." +
projectReference.getArtifactId() );
- projectReference.setArtifactId( null );
- return projectReference;
+ ItemSelector projectSelector = createProjectSelector(
requestedResource );
+ ArchivaItemSelector.Builder projectReference =
ArchivaItemSelector.builder( ).withSelector( projectSelector );
+ projectReference.withNamespace( projectSelector.getNamespace() + "." +
projectSelector.getProjectId() );
+ projectReference.withArtifactId( null );
+ projectReference.withProjectId( null );
+ return projectReference.build();
}
private void assertRepoGroupMetadataContents( String proxiedRepoId, String
requestedResource,
@@ -1194,18 +1195,18 @@ public class MetadataTransferTest
Path actualFile = managedDefaultDir.resolve(proxiedFile);
assertTrue( "Repo Specific Group Metadata should exist: " +
requestedResource, Files.exists(actualFile) );
- ProjectReference actualMetadata = createGroupReference(
requestedResource );
+ ItemSelector actualMetadata = createGroupSelector( requestedResource );
assertGroupMetadata( actualFile, actualMetadata, expectedPlugins );
}
- private void assertGroupMetadata( Path actualFile, ProjectReference
actualMetadata, String expectedPlugins[] )
+ private void assertGroupMetadata( Path actualFile, ItemSelector
actualMetadata, String expectedPlugins[] )
throws Exception
{
// Build expected metadata XML
StringWriter expectedMetadataXml = new StringWriter();
ArchivaRepositoryMetadata m = new ArchivaRepositoryMetadata();
- m.setGroupId( actualMetadata.getGroupId() );
+ m.setGroupId( actualMetadata.getNamespace() );
for ( String pluginId : expectedPlugins )
{
@@ -1236,12 +1237,12 @@ public class MetadataTransferTest
Path actualFile = managedDefaultDir.resolve(requestedResource);
assertTrue( Files.exists(actualFile) );
- ProjectReference metadata = createProjectReference( requestedResource
);
+ ItemSelector metadata = createProjectSelector( requestedResource );
// Build expected metadata XML
StringWriter expectedMetadataXml = new StringWriter();
ArchivaRepositoryMetadata m = new ArchivaRepositoryMetadata();
- m.setGroupId( metadata.getGroupId() );
+ m.setGroupId( metadata.getNamespace() );
m.setArtifactId( metadata.getArtifactId() );
m.setLatestVersion( latestVersion );
m.setReleasedVersion( releaseVersion );
@@ -1270,12 +1271,12 @@ public class MetadataTransferTest
Path actualFile = managedDefaultDir.resolve(requestedResource);
assertTrue( "Release Metadata should exist: " + requestedResource,
Files.exists(actualFile) );
- VersionedReference metadata = createVersionedReference(
requestedResource );
+ ItemSelector metadata = createVersionedSelector( requestedResource );
// Build expected metadata XML
StringWriter expectedMetadataXml = new StringWriter();
ArchivaRepositoryMetadata m = new ArchivaRepositoryMetadata();
- m.setGroupId( metadata.getGroupId() );
+ m.setGroupId( metadata.getNamespace() );
m.setArtifactId( metadata.getArtifactId() );
m.setVersion( metadata.getVersion() );
RepositoryMetadataWriter.write( m, expectedMetadataXml );
@@ -1301,7 +1302,7 @@ public class MetadataTransferTest
Path actualFile = managedDefaultDir.resolve(requestedResource);
assertTrue( "Snapshot Metadata should exist: " + requestedResource,
Files.exists(actualFile) );
- VersionedReference actualMetadata = createVersionedReference(
requestedResource );
+ ItemSelector actualMetadata = createVersionedSelector(
requestedResource );
assertSnapshotMetadata( actualFile, actualMetadata, expectedDate,
expectedTime, expectedBuildnumber );
}
@@ -1326,19 +1327,19 @@ public class MetadataTransferTest
Path actualFile = managedDefaultDir.resolve(proxiedFile);
assertTrue( "Repo Specific Snapshot Metadata should exist: " +
requestedResource, Files.exists(actualFile) );
- VersionedReference actualMetadata = createVersionedReference(
requestedResource );
+ ItemSelector actualMetadata = createVersionedSelector(
requestedResource );
assertSnapshotMetadata( actualFile, actualMetadata, expectedDate,
expectedTime, expectedBuildnumber );
}
- private void assertSnapshotMetadata( Path actualFile, VersionedReference
actualMetadata, String expectedDate,
+ private void assertSnapshotMetadata( Path actualFile, ItemSelector
actualMetadata, String expectedDate,
String expectedTime, int
expectedBuildnumber )
throws RepositoryMetadataException, Exception
{
// Build expected metadata XML
StringWriter expectedMetadataXml = new StringWriter();
ArchivaRepositoryMetadata m = new ArchivaRepositoryMetadata();
- m.setGroupId( actualMetadata.getGroupId() );
+ m.setGroupId( actualMetadata.getNamespace() );
m.setArtifactId( actualMetadata.getArtifactId() );
m.setVersion( VersionUtil.getBaseVersion( actualMetadata.getVersion()
) );
@@ -1376,12 +1377,12 @@ public class MetadataTransferTest
Path actualFile = managedDefaultDir.resolve(proxiedFile);
assertTrue( Files.exists(actualFile) );
- ProjectReference metadata = createProjectReference( requestedResource
);
+ ItemSelector metadata = createProjectSelector( requestedResource );
// Build expected metadata XML
StringWriter expectedMetadataXml = new StringWriter();
ArchivaRepositoryMetadata m = new ArchivaRepositoryMetadata();
- m.setGroupId( metadata.getGroupId() );
+ m.setGroupId( metadata.getNamespace() );
m.setArtifactId( metadata.getArtifactId() );
if ( expectedProxyVersions != null )
@@ -1410,12 +1411,12 @@ public class MetadataTransferTest
Path actualFile = managedDefaultDir.resolve(proxiedFile);
assertTrue( "Release metadata for repo should exist: " + actualFile,
Files.exists(actualFile) );
- VersionedReference metadata = createVersionedReference(
requestedResource );
+ ItemSelector metadata = createVersionedSelector( requestedResource );
// Build expected metadata XML
StringWriter expectedMetadataXml = new StringWriter();
ArchivaRepositoryMetadata m = new ArchivaRepositoryMetadata();
- m.setGroupId( metadata.getGroupId() );
+ m.setGroupId( metadata.getNamespace() );
m.setArtifactId( metadata.getArtifactId() );
m.setVersion( metadata.getVersion() );
RepositoryMetadataWriter.write( m, expectedMetadataXml );
diff --git
a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/MetadataToolsTest.java
b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/MetadataToolsTest.java
index 437053f..c5c38de 100644
---
a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/MetadataToolsTest.java
+++
b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/MetadataToolsTest.java
@@ -254,22 +254,24 @@ public class MetadataToolsTest
@Test
public void testToPathFromVersionReference()
{
- VersionedReference reference = new VersionedReference();
- reference.setGroupId( "com.foo" );
- reference.setArtifactId( "foo-tool" );
- reference.setVersion( "1.0" );
+ ItemSelector selector = ArchivaItemSelector.builder( )
+ .withNamespace( "com.foo" )
+ .withArtifactId( "foo-tool" )
+ .withProjectId( "foo-tool" )
+ .withVersion( "1.0" ).build( );
- assertEquals( "com/foo/foo-tool/1.0/maven-metadata.xml", tools.toPath(
reference ) );
+ assertEquals( "com/foo/foo-tool/1.0/maven-metadata.xml", tools.toPath(
selector ) );
}
@Test
public void testToPathFromProjectReference()
{
- ProjectReference reference = new ProjectReference();
- reference.setGroupId( "com.foo" );
- reference.setArtifactId( "foo-tool" );
+ ItemSelector selector = ArchivaItemSelector.builder( )
+ .withNamespace( "com.foo" )
+ .withProjectId( "foo-tool" )
+ .withArtifactId( "foo-tool" ).build( );
- assertEquals( "com/foo/foo-tool/maven-metadata.xml", tools.toPath(
reference ) );
+ assertEquals( "com/foo/foo-tool/maven-metadata.xml", tools.toPath(
selector ) );
}
@Test
@@ -304,10 +306,10 @@ public class MetadataToolsTest
private void assertProjectReference( String groupId, String artifactId,
String path )
throws RepositoryMetadataException
{
- ProjectReference reference = tools.toProjectReference( path );
+ ItemSelector reference = tools.toProjectSelector( path );
assertNotNull( "Reference should not be null.", reference );
- assertEquals( "ProjectReference.groupId", groupId,
reference.getGroupId() );
+ assertEquals( "ProjectReference.groupId", groupId,
reference.getNamespace() );
assertEquals( "ProjectReference.artifactId", artifactId,
reference.getArtifactId() );
}
@@ -362,10 +364,10 @@ public class MetadataToolsTest
private void assertVersionedReference( String groupId, String artifactId,
String version, String path )
throws RepositoryMetadataException
{
- VersionedReference reference = tools.toVersionedReference( path );
+ ItemSelector reference = tools.toVersionedSelector( path );
assertNotNull( "Reference should not be null.", reference );
- assertEquals( "VersionedReference.groupId", groupId,
reference.getGroupId() );
+ assertEquals( "VersionedReference.groupId", groupId,
reference.getNamespace() );
assertEquals( "VersionedReference.artifactId", artifactId,
reference.getArtifactId() );
assertEquals( "VersionedReference.version", version,
reference.getVersion() );
}
@@ -375,10 +377,11 @@ public class MetadataToolsTest
{
Path repoRootDir = getRepositoryPath( "metadata-repository" );
- VersionedReference reference = new VersionedReference();
- reference.setGroupId( "org.apache.archiva.metadata.tests" );
- reference.setArtifactId( artifactId );
- reference.setVersion( version );
+ ItemSelector reference = ArchivaItemSelector.builder( )
+ .withNamespace( "org.apache.archiva.metadata.tests" )
+ .withArtifactId( artifactId )
+ .withProjectId( artifactId )
+ .withVersion( version ).build( );
MavenManagedRepository repo =
createRepository( "test-repo", "Test Repository: " +
name.getMethodName(), repoRootDir );
@@ -424,25 +427,7 @@ public class MetadataToolsTest
}
private void assertMetadata( String expectedMetadata,
ManagedRepositoryContent repository,
- ProjectReference reference )
- throws LayoutException, IOException, SAXException,
ParserConfigurationException
- {
- Path metadataFile =
repository.getRepository().getRoot().getFilePath().resolve(tools.toPath(
reference ) );
- String actualMetadata =
org.apache.archiva.common.utils.FileUtils.readFileToString( metadataFile,
Charset.defaultCharset() );
-
- Diff detailedDiff = DiffBuilder.compare( expectedMetadata ).withTest(
actualMetadata ).checkForSimilar().build();
- if ( detailedDiff.hasDifferences() )
- {
- for ( Difference diff : detailedDiff.getDifferences() ) {
- System.out.println( diff );
- }
- // If it isn't similar, dump the difference.
- assertEquals( expectedMetadata, actualMetadata );
- }
- }
-
- private void assertMetadata( String expectedMetadata,
ManagedRepositoryContent repository,
- VersionedReference reference )
+ ItemSelector reference )
throws LayoutException, IOException, SAXException,
ParserConfigurationException
{
Path metadataFile =
repository.getRepository().getRoot().getFilePath().resolve( tools.toPath(
reference ) );
@@ -543,62 +528,30 @@ public class MetadataToolsTest
assertProjectMetadata( buf.toString(), testRepo, reference );
}
- private void assertProjectMetadata( ManagedRepositoryContent testRepo,
ProjectReference reference,
- String artifactId, String[]
expectedVersions, String latestVersion,
- String releaseVersion )
- throws Exception
- {
- StringBuilder buf = new StringBuilder();
- buf.append( "<metadata>\n" );
- buf.append( " <groupId>" ).append( reference.getGroupId() ).append(
"</groupId>\n" );
- buf.append( " <artifactId>" ).append( reference.getArtifactId()
).append( "</artifactId>\n" );
-
- if ( expectedVersions != null )
- {
- buf.append( " <versioning>\n" );
- if ( latestVersion != null )
- {
- buf.append( " <latest>" ).append( latestVersion ).append(
"</latest>\n" );
- }
- if ( releaseVersion != null )
- {
- buf.append( " <release>" ).append( releaseVersion ).append(
"</release>\n" );
- }
-
- buf.append( " <versions>\n" );
- for ( int i = 0; i < expectedVersions.length; i++ )
- {
- buf.append( " <version>" ).append( expectedVersions[i]
).append( "</version>\n" );
- }
- buf.append( " </versions>\n" );
- buf.append( " </versioning>\n" );
- }
- buf.append( "</metadata>" );
-
- assertMetadata( buf.toString(), testRepo, reference );
- }
private void assertUpdatedReleaseVersionMetadata( String artifactId,
String version )
throws Exception
{
ManagedRepositoryContent testRepo = createTestRepoContent();
- VersionedReference reference = new VersionedReference();
- reference.setGroupId( "org.apache.archiva.metadata.tests" );
- reference.setArtifactId( artifactId );
- reference.setVersion( version );
- prepTestRepo( testRepo, reference );
+ ItemSelector selector = ArchivaItemSelector.builder()
+ .withNamespace( "org.apache.archiva.metadata.tests" )
+ .withProjectId( artifactId )
+ .withArtifactId( artifactId )
+ .withVersion( version ).build();
+
+ prepTestRepo( testRepo, selector );
- tools.updateMetadata( testRepo, reference );
+ tools.updateVersionMetadata( testRepo, selector );
StringBuilder buf = new StringBuilder();
buf.append( "<metadata>\n" );
- buf.append( " <groupId>" ).append( reference.getGroupId() ).append(
"</groupId>\n" );
- buf.append( " <artifactId>" ).append( reference.getArtifactId()
).append( "</artifactId>\n" );
- buf.append( " <version>" ).append( reference.getVersion() ).append(
"</version>\n" );
+ buf.append( " <groupId>" ).append( selector.getNamespace() ).append(
"</groupId>\n" );
+ buf.append( " <artifactId>" ).append( selector.getArtifactId()
).append( "</artifactId>\n" );
+ buf.append( " <version>" ).append( selector.getVersion() ).append(
"</version>\n" );
buf.append( "</metadata>" );
- assertMetadata( buf.toString(), testRepo, reference );
+ assertMetadata( buf.toString(), testRepo, selector );
}
private void assertUpdatedSnapshotVersionMetadata( String artifactId,
String version, String expectedDate,
@@ -606,18 +559,19 @@ public class MetadataToolsTest
throws Exception
{
ManagedRepositoryContent testRepo = createTestRepoContent();
- VersionedReference reference = new VersionedReference();
- reference.setGroupId( "org.apache.archiva.metadata.tests" );
- reference.setArtifactId( artifactId );
- reference.setVersion( version );
+ ItemSelector reference = ArchivaItemSelector.builder()
+ .withNamespace( "org.apache.archiva.metadata.tests" )
+ .withArtifactId( artifactId )
+ .withProjectId( artifactId )
+ .withVersion( version ).build();
prepTestRepo( testRepo, reference );
- tools.updateMetadata( testRepo, reference );
+ tools.updateVersionMetadata( testRepo, reference );
StringBuilder buf = new StringBuilder();
buf.append( "<metadata>\n" );
- buf.append( " <groupId>" ).append( reference.getGroupId() ).append(
"</groupId>\n" );
+ buf.append( " <groupId>" ).append( reference.getNamespace() ).append(
"</groupId>\n" );
buf.append( " <artifactId>" ).append( reference.getArtifactId()
).append( "</artifactId>\n" );
buf.append( " <version>" ).append( reference.getVersion() ).append(
"</version>\n" );
buf.append( " <versioning>\n" );
@@ -719,10 +673,10 @@ public class MetadataToolsTest
FileUtils.copyDirectory( srcDir.toFile(), destDir.toFile() );
}
- private void prepTestRepo( ManagedRepositoryContent repo, ProjectReference
reference )
+ private void prepTestRepo( ManagedRepositoryContent repo, ItemSelector
reference )
throws IOException
{
- String groupDir = StringUtils.replaceChars( reference.getGroupId(),
'.', '/' );
+ String groupDir = StringUtils.replaceChars( reference.getNamespace(),
'.', '/' );
String path = groupDir + "/" + reference.getArtifactId();
Path srcRepoDir = getRepositoryPath( "metadata-repository" );
@@ -735,15 +689,5 @@ public class MetadataToolsTest
FileUtils.copyDirectory( srcDir.toFile(), destDir.toFile() );
}
- private void prepTestRepo( ManagedRepositoryContent repo,
VersionedReference reference )
- throws IOException
- {
- ProjectReference projectRef = new ProjectReference();
- projectRef.setGroupId( reference.getGroupId() );
- projectRef.setArtifactId( reference.getArtifactId() );
-
- prepTestRepo( repo, projectRef );
- }
-
}
diff --git
a/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/archiva/webdav/ArchivaDavResourceFactory.java
b/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/archiva/webdav/ArchivaDavResourceFactory.java
index 6d58e10..1ae314e 100644
---
a/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/archiva/webdav/ArchivaDavResourceFactory.java
+++
b/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/archiva/webdav/ArchivaDavResourceFactory.java
@@ -1295,7 +1295,7 @@ public class ArchivaDavResourceFactory
{
try
{
- metadataTools.toVersionedReference( requestedResource );
+ metadataTools.toVersionedSelector( requestedResource );
return false;
}
catch ( RepositoryMetadataException re )