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 311fe09 Refactoring to new content API
311fe09 is described below
commit 311fe09dd61c4ac09789ed052006395e5df02785
Author: Martin Stockhammer <[email protected]>
AuthorDate: Sat Jun 6 20:02:53 2020 +0200
Refactoring to new content API
---
.../src/main/java/SimpleArtifactConsumer.java | 9 +-
.../consumers/core/MetadataUpdaterConsumer.java | 19 +-
.../core/repository/AbstractRepositoryPurge.java | 6 +-
.../CleanupReleasedSnapshotsRepositoryPurge.java | 46 +--
.../core/repository/DaysOldRepositoryPurge.java | 8 +-
.../repository/RetentionCountRepositoryPurge.java | 10 +-
.../repository/BaseRepositoryContentLayout.java | 13 +-
.../archiva/repository/LayoutRuntimeException.java | 40 +++
.../archiva/repository/RepositoryContent.java | 4 +-
.../archiva/repository/content/Artifact.java | 12 +
.../archiva/repository/content/Namespace.java | 2 +-
.../apache/archiva/repository/content/Version.java | 9 +-
.../repository/content/base/ArchivaArtifact.java | 17 +-
.../content/base/ArchivaItemSelector.java | 12 +-
.../repository/content/base/ArchivaNamespace.java | 2 +-
.../repository/content/base/ArchivaVersion.java | 8 +-
.../repository/content/base/BaseContentItem.java | 1 -
.../repository/metadata/base/MetadataTools.java | 4 +-
.../content/base/ArchivaNamespaceTest.java | 6 +-
.../content/base/ArchivaVersionTest.java | 4 +-
.../mock/ManagedRepositoryContentMock.java | 6 +
.../scanner/mock/ManagedRepositoryContentMock.java | 6 +
.../mock/ManagedRepositoryContentMock.java | 6 +
.../content/ManagedDefaultRepositoryContent.java | 376 ++++++++++++++-------
.../content/AbstractRepositoryContentTest.java | 4 +-
.../ManagedDefaultRepositoryContentTest.java | 19 +-
.../rest/services/utils/ArtifactBuilder.java | 4 +-
.../archiva/webdav/ArchivaDavResourceFactory.java | 2 +-
28 files changed, 436 insertions(+), 219 deletions(-)
diff --git
a/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-archetype/src/main/resources/archetype-resources/src/main/java/SimpleArtifactConsumer.java
b/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-archetype/src/main/resources/archetype-resources/src/main/java/SimpleArtifactConsumer.java
index f1a219b..8387941 100644
---
a/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-archetype/src/main/resources/archetype-resources/src/main/java/SimpleArtifactConsumer.java
+++
b/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-archetype/src/main/resources/archetype-resources/src/main/java/SimpleArtifactConsumer.java
@@ -36,6 +36,8 @@ import org.apache.archiva.repository.LayoutException;
import org.apache.archiva.repository.ManagedRepository;
import org.apache.archiva.repository.BaseRepositoryContentLayout;
import org.apache.archiva.repository.RepositoryContentFactory;
+import org.apache.archiva.repository.content.Artifact;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Scope;
@@ -126,10 +128,9 @@ public class SimpleArtifactConsumer
{
ManagedRepositoryContent repositoryContent =
repository.getContent();
BaseRepositoryContentLayout layout = repositoryContent.getLayout(
BaseRepositoryContentLayout.class );
- ArtifactReference artifact =
repositoryContent.toArtifactReference( path );
-
- repositorySession.getRepository().getArtifacts( repositorySession,
repository.getId(), artifact.getGroupId(),
-
artifact.getArtifactId(), artifact.getVersion() );
+ Artifact artifact = layout.getArtifact( path );
+ repositorySession.getRepository().getArtifacts( repositorySession,
repository.getId(), artifact.getNamespace().getId(),
+ artifact.getId(),
artifact.getVersion().getId() );
}
catch ( LayoutException | MetadataResolutionException e )
{
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 9c0aeb7..cbe3dc5 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
@@ -24,7 +24,6 @@ import org.apache.archiva.configuration.FileTypes;
import org.apache.archiva.consumers.AbstractMonitoredConsumer;
import org.apache.archiva.consumers.ConsumerException;
import org.apache.archiva.consumers.KnownRepositoryContentConsumer;
-import org.apache.archiva.model.ArtifactReference;
import org.apache.archiva.model.ProjectReference;
import org.apache.archiva.model.VersionedReference;
import org.apache.archiva.repository.ManagedRepositoryContent;
@@ -34,6 +33,7 @@ import
org.apache.archiva.repository.BaseRepositoryContentLayout;
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.metadata.base.MetadataTools;
import org.apache.archiva.repository.metadata.RepositoryMetadataException;
import org.apache.archiva.repository.storage.StorageAsset;
@@ -174,7 +174,8 @@ public class MetadataUpdaterConsumer
{
try
{
- ArtifactReference artifact = repository.toArtifactReference(
path );
+ BaseRepositoryContentLayout layout = repository.getLayout(
BaseRepositoryContentLayout.class );
+ Artifact artifact = layout.getArtifact( path );
updateVersionMetadata( artifact, path );
updateProjectMetadata( artifact, path );
}
@@ -192,11 +193,11 @@ public class MetadataUpdaterConsumer
processFile( path );
}
- private void updateProjectMetadata( ArtifactReference artifact, String
path )
+ private void updateProjectMetadata( Artifact artifact, String path )
{
ProjectReference projectRef = new ProjectReference( );
- projectRef.setGroupId( artifact.getGroupId( ) );
- projectRef.setArtifactId( artifact.getArtifactId( ) );
+ projectRef.setGroupId( artifact.getNamespace( ).getId() );
+ projectRef.setArtifactId( artifact.getId( ) );
try
{
@@ -221,12 +222,12 @@ public class MetadataUpdaterConsumer
}
}
- private void updateVersionMetadata( ArtifactReference artifact, String
path )
+ private void updateVersionMetadata( Artifact artifact, String path )
{
VersionedReference versionRef = new VersionedReference( );
- versionRef.setGroupId( artifact.getGroupId( ) );
- versionRef.setArtifactId( artifact.getArtifactId( ) );
- versionRef.setVersion( artifact.getVersion( ) );
+ versionRef.setGroupId( artifact.getNamespace( ).getId() );
+ versionRef.setArtifactId( artifact.getId( ) );
+ versionRef.setVersion( artifact.getVersion( ).getId() );
try
{
diff --git
a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/archiva/consumers/core/repository/AbstractRepositoryPurge.java
b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/archiva/consumers/core/repository/AbstractRepositoryPurge.java
index 72cf81a..e676e0b 100644
---
a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/archiva/consumers/core/repository/AbstractRepositoryPurge.java
+++
b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/archiva/consumers/core/repository/AbstractRepositoryPurge.java
@@ -192,8 +192,8 @@ public abstract class AbstractRepositoryPurge
Map<String, Collection<ArtifactMetadata>> metaResolved = new
HashMap<>( );
for ( Artifact reference : references )
{
- String baseVersion = reference.getVersion( ).getVersion( );
- String namespace = reference.getVersion( ).getProject(
).getNamespace( ).getNamespace( );
+ String baseVersion = reference.getVersion( ).getId( );
+ String namespace = reference.getVersion( ).getProject(
).getNamespace( ).getId( );
// Needed for tracking in the hashmap
String metaBaseId = reference.toKey();
@@ -214,7 +214,7 @@ public abstract class AbstractRepositoryPurge
for ( RepositoryListener listener : listeners )
{
listener.deleteArtifact( metadataRepository,
repository.getId( ), namespace,
- reference.getId( ), reference.getVersion(
).getVersion(),
+ reference.getId( ), reference.getVersion( ).getId(),
artifactFile.getName( ));
}
if (reference.exists())
diff --git
a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurge.java
b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurge.java
index f9dca99..efa7e3c 100644
---
a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurge.java
+++
b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurge.java
@@ -34,6 +34,7 @@ import
org.apache.archiva.repository.BaseRepositoryContentLayout;
import org.apache.archiva.repository.ReleaseScheme;
import org.apache.archiva.repository.RepositoryRegistry;
import org.apache.archiva.metadata.audit.RepositoryListener;
+import org.apache.archiva.repository.content.Artifact;
import org.apache.archiva.repository.content.ItemNotFoundException;
import org.apache.archiva.repository.content.ItemSelector;
import org.apache.archiva.repository.content.Project;
@@ -101,17 +102,18 @@ public class CleanupReleasedSnapshotsRepositoryPurge
return;
}
- ArtifactReference artifactRef = repository.toArtifactReference(
path );
+ Artifact artifactRef = layout.getArtifact( path );
+ // ArtifactReference artifactRef = repository.toArtifactReference(
path );
- if ( !VersionUtil.isSnapshot( artifactRef.getVersion( ) ) )
+ if ( !VersionUtil.isSnapshot( artifactRef.getVersion().getId( ) ) )
{
// Nothing to do here, not a snapshot, skip it.
return;
}
ItemSelector projectSelector = ArchivaItemSelector.builder( )
- .withNamespace( artifactRef.getGroupId( ) )
- .withProjectId( artifactRef.getArtifactId( ) )
+ .withNamespace( artifactRef.getNamespace( ).getId() )
+ .withProjectId( artifactRef.getId( ) )
.build();
@@ -128,9 +130,9 @@ public class CleanupReleasedSnapshotsRepositoryPurge
Project proj = repoContent.getProject( projectSelector );
for ( Version version : repoContent.getVersions( proj ) )
{
- if ( !VersionUtil.isSnapshot( version.getVersion() ) )
+ if ( !VersionUtil.isSnapshot( version.getId() ) )
{
- releasedVersions.add( version.getVersion() );
+ releasedVersions.add( version.getId() );
}
}
}
@@ -142,19 +144,19 @@ public class CleanupReleasedSnapshotsRepositoryPurge
boolean needsMetadataUpdate = false;
VersionedReference versionRef = new VersionedReference( );
- versionRef.setGroupId( artifactRef.getGroupId( ) );
- versionRef.setArtifactId( artifactRef.getArtifactId( ) );
+ versionRef.setGroupId( artifactRef.getNamespace( ).getId() );
+ versionRef.setArtifactId( artifactRef.getId( ) );
ArchivaItemSelector.Builder versionSelectorBuilder =
ArchivaItemSelector.builder( )
- .withNamespace( artifactRef.getGroupId( ) )
- .withProjectId( artifactRef.getArtifactId( ) )
- .withArtifactId( artifactRef.getArtifactId( ) );
+ .withNamespace( artifactRef.getNamespace().getId() )
+ .withProjectId( artifactRef.getId( ) )
+ .withArtifactId( artifactRef.getId( ) );
MetadataRepository metadataRepository =
repositorySession.getRepository( );
- if ( releasedVersions.contains( VersionUtil.getReleaseVersion(
artifactRef.getVersion( ) ) ) )
+ if ( releasedVersions.contains( VersionUtil.getReleaseVersion(
artifactRef.getVersion().getId( ) ) ) )
{
- ArchivaItemSelector selector =
versionSelectorBuilder.withVersion( artifactRef.getVersion( ) ).build( );
+ ArchivaItemSelector selector =
versionSelectorBuilder.withVersion( artifactRef.getVersion().getId( ) ).build(
);
Version version = layout.getVersion( selector );
if (version.exists())
{
@@ -162,12 +164,12 @@ public class CleanupReleasedSnapshotsRepositoryPurge
}
for ( RepositoryListener listener : listeners )
{
- listener.deleteArtifact( metadataRepository,
repository.getId( ), artifactRef.getGroupId( ),
- artifactRef.getArtifactId( ), artifactRef.getVersion(
),
+ listener.deleteArtifact( metadataRepository,
repository.getId( ), artifactRef.getNamespace().getId(),
+ artifactRef.getId( ), artifactRef.getVersion().getId(
),
artifactFile.getName() );
}
metadataRepository.removeProjectVersion( repositorySession,
repository.getId( ),
- artifactRef.getGroupId( ), artifactRef.getArtifactId( ),
artifactRef.getVersion( ) );
+ artifactRef.getNamespace().getId(), artifactRef.getId( ),
artifactRef.getVersion().getId() );
needsMetadataUpdate = true;
}
@@ -201,16 +203,16 @@ public class CleanupReleasedSnapshotsRepositoryPurge
* -> not sure what needs to be changed here.
*/
@SuppressWarnings( "deprecation" )
- private void updateMetadata( ArtifactReference artifact )
+ private void updateMetadata( Artifact artifact )
{
VersionedReference versionRef = new VersionedReference( );
- versionRef.setGroupId( artifact.getGroupId( ) );
- versionRef.setArtifactId( artifact.getArtifactId( ) );
- versionRef.setVersion( artifact.getVersion( ) );
+ versionRef.setGroupId( artifact.getNamespace().getId( ) );
+ versionRef.setArtifactId( artifact.getId( ) );
+ versionRef.setVersion( artifact.getVersion().getId( ) );
ProjectReference projectRef = new ProjectReference( );
- projectRef.setGroupId( artifact.getGroupId( ) );
- projectRef.setArtifactId( artifact.getArtifactId( ) );
+ projectRef.setGroupId( artifact.getNamespace().getId( ) );
+ projectRef.setArtifactId( artifact.getId( ) );
try
{
diff --git
a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/archiva/consumers/core/repository/DaysOldRepositoryPurge.java
b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/archiva/consumers/core/repository/DaysOldRepositoryPurge.java
index 7238fd8..fb42390 100644
---
a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/archiva/consumers/core/repository/DaysOldRepositoryPurge.java
+++
b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/archiva/consumers/core/repository/DaysOldRepositoryPurge.java
@@ -89,9 +89,9 @@ public class DaysOldRepositoryPurge
olderThanThisDate.add( Calendar.DATE, -retentionPeriod );
ArchivaItemSelector selector = ArchivaItemSelector.builder( )
- .withNamespace( artifactItem.getVersion( ).getProject(
).getNamespace( ).getNamespace( ) )
+ .withNamespace( artifactItem.getVersion( ).getProject(
).getNamespace( ).getId( ) )
.withProjectId( artifactItem.getVersion( ).getProject(
).getId( ) )
- .withVersion( artifactItem.getVersion( ).getVersion( ) )
+ .withVersion( artifactItem.getVersion( ).getId( ) )
.withClassifier( "*" )
.includeRelatedArtifacts( )
.build( );
@@ -116,9 +116,9 @@ public class DaysOldRepositoryPurge
ArchivaItemSelector.Builder artifactSelectorBuilder =
ArchivaItemSelector.builder( )
- .withNamespace( artifactItem.getVersion( ).getProject(
).getNamespace( ).getNamespace( ) )
+ .withNamespace( artifactItem.getVersion( ).getProject(
).getNamespace( ).getId( ) )
.withProjectId( artifactItem.getVersion( ).getProject(
).getId( ) )
- .withVersion( artifactItem.getVersion( ).getVersion( ) )
+ .withVersion( artifactItem.getVersion( ).getId( ) )
.withArtifactId( artifactItem.getId() )
.withClassifier( "*" )
.includeRelatedArtifacts( );
diff --git
a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/archiva/consumers/core/repository/RetentionCountRepositoryPurge.java
b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/archiva/consumers/core/repository/RetentionCountRepositoryPurge.java
index be10380..ec3a242 100644
---
a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/archiva/consumers/core/repository/RetentionCountRepositoryPurge.java
+++
b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/archiva/consumers/core/repository/RetentionCountRepositoryPurge.java
@@ -68,13 +68,13 @@ public class RetentionCountRepositoryPurge
return;
}
- if ( VersionUtil.isSnapshot( artifact.getVersion(
).getVersion() ) )
+ if ( VersionUtil.isSnapshot( artifact.getVersion( ).getId() ) )
{
ArchivaItemSelector selector =
ArchivaItemSelector.builder( )
- .withNamespace( artifact.getVersion( ).getProject(
).getNamespace( ).getNamespace( ) )
+ .withNamespace( artifact.getVersion( ).getProject(
).getNamespace( ).getId( ) )
.withProjectId( artifact.getVersion( ).getProject(
).getId( ) )
.withArtifactId( artifact.getId( ) )
- .withVersion( artifact.getVersion( ).getVersion( ) )
+ .withVersion( artifact.getVersion( ).getId( ) )
.withClassifier( "*" )
.includeRelatedArtifacts()
.build( );
@@ -98,12 +98,12 @@ public class RetentionCountRepositoryPurge
}
ArchivaItemSelector.Builder selectorBuilder =
ArchivaItemSelector.builder( )
- .withNamespace( artifact.getVersion( ).getProject(
).getNamespace( ).getNamespace( ) )
+ .withNamespace( artifact.getVersion( ).getProject(
).getNamespace( ).getId( ) )
.withProjectId( artifact.getVersion( ).getProject(
).getId( ) )
.withArtifactId( artifact.getId( ) )
.withClassifier( "*" )
.includeRelatedArtifacts()
- .withVersion( artifact.getVersion( ).getVersion( ) );
+ .withVersion( artifact.getVersion( ).getId( ) );
int countToPurge = versions.size( ) - retentionCount;
Set<Artifact> artifactsToDelete = new HashSet<>( );
for ( String version : versions )
diff --git
a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/BaseRepositoryContentLayout.java
b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/BaseRepositoryContentLayout.java
index 71562b1..2aeb645 100644
---
a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/BaseRepositoryContentLayout.java
+++
b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/BaseRepositoryContentLayout.java
@@ -138,8 +138,16 @@ public interface BaseRepositoryContentLayout extends
ManagedRepositoryContentLay
* @throws IllegalArgumentException if the selector coordinates do not
specify a artifact
* @throws ContentAccessException if the access to the underlying storage
failed
*/
- Artifact getArtifact(ItemSelector selector) throws ContentAccessException;
+ Artifact getArtifact(ItemSelector selector) throws ContentAccessException,
IllegalArgumentException;
+ /**
+ * Returns the artifact at the given path
+ * @param path the path to the artifact
+ * @return the artifact instance
+ * @throws LayoutException if the path does not point to a artifact
+ * @throws ContentAccessException if the access to the underlying storage
failed
+ */
+ Artifact getArtifact( String path ) throws LayoutException,
ContentAccessException;
/**
* Returns the artifacts that match the given selector. It is up to the
repository implementation
@@ -162,10 +170,11 @@ public interface BaseRepositoryContentLayout extends
ManagedRepositoryContentLay
*
* @param selector the selector for the artifacts
* @return a stream with artifact elements.
+ * @throws IllegalArgumentException if the selector is not valid for the
layout
* @throws ItemNotFoundException if the specified coordinates cannot be
found in the repository
* @throws ContentAccessException if the access to the underlying storage
failed
*/
- Stream<? extends Artifact> newArtifactStream( ItemSelector selector)
throws ContentAccessException;
+ Stream<? extends Artifact> newArtifactStream( ItemSelector selector)
throws ContentAccessException, IllegalArgumentException;
/**
diff --git
a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/LayoutRuntimeException.java
b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/LayoutRuntimeException.java
new file mode 100644
index 0000000..9abc5e0
--- /dev/null
+++
b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/LayoutRuntimeException.java
@@ -0,0 +1,40 @@
+package org.apache.archiva.repository;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.archiva.common.ArchivaException;
+
+/**
+ * LayoutException
+ *
+ *
+ */
+public class LayoutRuntimeException extends RuntimeException
+{
+ public LayoutRuntimeException( String message, Throwable cause )
+ {
+ super( message, cause );
+ }
+
+ public LayoutRuntimeException( String message )
+ {
+ super( message );
+ }
+}
diff --git
a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryContent.java
b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryContent.java
index 5de655d..fd92be1 100644
---
a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryContent.java
+++
b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryContent.java
@@ -20,8 +20,6 @@ package org.apache.archiva.repository;
*/
import org.apache.archiva.model.ArtifactReference;
-import org.apache.archiva.model.VersionedReference;
-import org.apache.archiva.repository.content.ContentItem;
import org.apache.archiva.repository.content.ItemSelector;
@@ -33,7 +31,7 @@ public interface RepositoryContent
/**
- * Given a repository relative path to a filename, return the {@link
VersionedReference} object suitable for the path.
+ * Given a repository relative path to a filename, return the {@link
ArtifactReference} object suitable for the path.
*
* @param path the path relative to the repository base dir for the
artifact.
* @return the {@link ArtifactReference} representing the path. (or null
if path cannot be converted to
diff --git
a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/content/Artifact.java
b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/content/Artifact.java
index 0bb7e84..693b696 100644
---
a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/content/Artifact.java
+++
b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/content/Artifact.java
@@ -61,6 +61,18 @@ public interface Artifact extends DataItem
String getArtifactVersion( );
/**
+ * Returns the project this artifact is attached to
+ * @return the project
+ */
+ Project getProject();
+
+ /**
+ * Returns the namespace this artifact is attached to
+ * @return the namespace object
+ */
+ Namespace getNamespace();
+
+ /**
* Returns the attached version this artifact is part of.
*
* @return the version object
diff --git
a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/content/Namespace.java
b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/content/Namespace.java
index d31aeed..fe21c98 100644
---
a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/content/Namespace.java
+++
b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/content/Namespace.java
@@ -53,7 +53,7 @@ public interface Namespace extends ContentItem
*
* @return the unique name of the namespace
*/
- String getNamespace( );
+ String getId( );
/**
* Returns the elements that represent the path to the namespace.
diff --git
a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/content/Version.java
b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/content/Version.java
index 071ef5b..d5441ae 100644
---
a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/content/Version.java
+++
b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/content/Version.java
@@ -30,12 +30,13 @@ import java.util.List;
*/
public interface Version extends ContentItem
{
+
/**
* Returns the version string.
*
* @return the version string
*/
- String getVersion( );
+ String getId( );
/**
* Returns the version segments. E.g. for 1.3.4 it will return
["1","3"."4"]
@@ -45,6 +46,12 @@ public interface Version extends ContentItem
List<String> getVersionSegments( );
/**
+ * Returns the namespace this version is attached to
+ * @return the namespace instance
+ */
+ Namespace getNamespace();
+
+ /**
* Returns the project this version is attached to.
*
* @return the project instance. Will never return <code>null</code>
diff --git
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/content/base/ArchivaArtifact.java
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/content/base/ArchivaArtifact.java
index b65fa74..cf0ead9 100644
---
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/content/base/ArchivaArtifact.java
+++
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/content/base/ArchivaArtifact.java
@@ -22,6 +22,8 @@ package org.apache.archiva.repository.content.base;
import org.apache.archiva.repository.content.Artifact;
import org.apache.archiva.repository.content.ArtifactType;
import org.apache.archiva.repository.content.BaseArtifactTypes;
+import org.apache.archiva.repository.content.Namespace;
+import org.apache.archiva.repository.content.Project;
import org.apache.archiva.repository.content.Version;
import org.apache.archiva.repository.content.base.builder.ArtifactOptBuilder;
import
org.apache.archiva.repository.content.base.builder.ArtifactVersionBuilder;
@@ -114,6 +116,17 @@ public class ArchivaArtifact extends BaseContentItem
implements Artifact
return artifactType;
}
+ @Override
+ public Namespace getNamespace( )
+ {
+ return version.getProject( ).getNamespace( );
+ }
+
+ @Override
+ public Project getProject( )
+ {
+ return version.getProject( );
+ }
/**
* Returns the builder for creating a new artifact instance. You have to
fill the
@@ -186,9 +199,9 @@ public class ArchivaArtifact extends BaseContentItem
implements Artifact
{
StringBuilder key = new StringBuilder();
- key.append( defaultString(
getVersion().getProject().getNamespace().getNamespace() )).append( ":" );
+ key.append( defaultString(
getVersion().getProject().getNamespace().getId() )).append( ":" );
key.append( defaultString( getId() ) ).append( ":" );
- key.append( defaultString( getVersion().getVersion() ) ).append( ":" );
+ key.append( defaultString( getVersion().getId() ) ).append( ":" );
key.append( defaultString( getArtifactVersion( ) ) ).append( ":" );
key.append( defaultString( getClassifier() ) ).append( ":" );
key.append( defaultString( getRemainder() ) );
diff --git
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/content/base/ArchivaItemSelector.java
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/content/base/ArchivaItemSelector.java
index 73b730c..cb50630 100644
---
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/content/base/ArchivaItemSelector.java
+++
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/content/base/ArchivaItemSelector.java
@@ -67,21 +67,21 @@ public class ArchivaItemSelector implements ItemSelector
public Builder withItem( ContentItem item ) {
if (item instanceof Namespace ) {
Namespace ns = (Namespace) item;
- selector.namespace = ns.getNamespace();
+ selector.namespace = ns.getId();
} else if (item instanceof Project ) {
Project proj = (Project)item;
- selector.namespace = proj.getNamespace( ).getNamespace( );
+ selector.namespace = proj.getNamespace( ).getId( );
selector.projectId = proj.getId( );
} else if (item instanceof Version) {
Version version = (Version)item;
- selector.namespace = version.getProject( ).getNamespace(
).getNamespace( );
+ selector.namespace = version.getProject( ).getNamespace(
).getId( );
selector.projectId = version.getProject( ).getId( );
- selector.version = version.getVersion( );
+ selector.version = version.getId( );
} else if (item instanceof Artifact ) {
Artifact artifact = (Artifact)item;
- selector.namespace = artifact.getVersion( ).getProject(
).getNamespace( ).getNamespace( );
+ selector.namespace = artifact.getVersion( ).getProject(
).getNamespace( ).getId( );
selector.projectId = artifact.getVersion( ).getProject(
).getId( );
- selector.version = artifact.getVersion( ).getVersion( );
+ selector.version = artifact.getVersion( ).getId( );
selector.artifactId = artifact.getId( );
selector.artifactVersion = artifact.getArtifactVersion( );
selector.extension = artifact.getExtension( );
diff --git
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/content/base/ArchivaNamespace.java
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/content/base/ArchivaNamespace.java
index 9982ea0..1cd744a 100644
---
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/content/base/ArchivaNamespace.java
+++
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/content/base/ArchivaNamespace.java
@@ -50,7 +50,7 @@ public class ArchivaNamespace extends BaseContentItem
implements Namespace
}
@Override
- public String getNamespace( )
+ public String getId( )
{
return namespace;
}
diff --git
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/content/base/ArchivaVersion.java
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/content/base/ArchivaVersion.java
index e462116..a146dd1 100644
---
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/content/base/ArchivaVersion.java
+++
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/content/base/ArchivaVersion.java
@@ -20,6 +20,7 @@ package org.apache.archiva.repository.content.base;
*/
import org.apache.archiva.repository.ManagedRepositoryContent;
+import org.apache.archiva.repository.content.Namespace;
import org.apache.archiva.repository.content.Project;
import org.apache.archiva.repository.content.Version;
import org.apache.archiva.repository.content.base.builder.VersionOptBuilder;
@@ -80,7 +81,7 @@ public class ArchivaVersion extends BaseContentItem
implements Version
}
@Override
- public String getVersion( )
+ public String getId( )
{
return version;
}
@@ -91,6 +92,11 @@ public class ArchivaVersion extends BaseContentItem
implements Version
return project;
}
+ @Override
+ public Namespace getNamespace( )
+ {
+ return project.getNamespace( );
+ }
@Override
public boolean equals( Object o )
diff --git
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/content/base/BaseContentItem.java
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/content/base/BaseContentItem.java
index 69c7545..2be5937 100644
---
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/content/base/BaseContentItem.java
+++
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/content/base/BaseContentItem.java
@@ -40,7 +40,6 @@ public abstract class BaseContentItem implements ContentItem
protected StorageAsset asset;
private Map<String, String> attributes;
private Map<Class<?>, ContentItem> characteristics = new HashMap<>( );
- private Set<Class<?>> failedConversions = new HashSet<>( );
@Override
public <T extends ContentItem> T adapt( Class<T> clazz ) throws
ItemConversionException
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 3a02bbe..ce82fa1 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
@@ -21,7 +21,6 @@ package org.apache.archiva.repository.metadata.base;
import org.apache.archiva.checksum.ChecksumAlgorithm;
import org.apache.archiva.checksum.ChecksummedFile;
-import org.apache.archiva.common.utils.PathUtil;
import org.apache.archiva.common.utils.VersionComparator;
import org.apache.archiva.common.utils.VersionUtil;
import org.apache.archiva.configuration.ArchivaConfiguration;
@@ -66,7 +65,6 @@ import javax.inject.Named;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
-import java.nio.file.Paths;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -552,7 +550,7 @@ public class MetadataTools
{
Project project = layout.getProject( selector );
allVersions = layout.getVersions( project ).stream()
- .map( v -> v.getVersion() ).collect( Collectors.toSet());
+ .map( v -> v.getId() ).collect( Collectors.toSet());
}
catch ( org.apache.archiva.repository.ContentAccessException e )
{
diff --git
a/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/content/base/ArchivaNamespaceTest.java
b/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/content/base/ArchivaNamespaceTest.java
index 93774bd..cddffac 100644
---
a/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/content/base/ArchivaNamespaceTest.java
+++
b/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/content/base/ArchivaNamespaceTest.java
@@ -53,7 +53,7 @@ class ArchivaNamespaceTest extends ContentItemTest
assertNotNull( result );
assertEquals( this.repository, result.getRepository( ) );
assertEquals( this.asset, result.getAsset( ) );
- assertEquals( "test.1d.d", result.getNamespace( ) );
+ assertEquals( "test.1d.d", result.getId( ) );
assertNotNull( result.getAttributes( ) );
assertEquals( 0, result.getAttributes( ).size( ) );
assertArrayEquals( new String[]{ "test", "1d", "d" },
result.getNamespacePath().toArray() );
@@ -69,7 +69,7 @@ class ArchivaNamespaceTest extends ContentItemTest
assertNotNull( result );
assertEquals( this.repository, result.getRepository( ) );
assertEquals( this.asset, result.getAsset( ) );
- assertEquals( "test.1d..d.", result.getNamespace( ) );
+ assertEquals( "test.1d..d.", result.getId( ) );
assertNotNull( result.getAttributes( ) );
assertEquals( 0, result.getAttributes( ).size( ) );
assertArrayEquals( new String[]{ "test", "1d", "","d" },
result.getNamespacePath().toArray() );
@@ -87,7 +87,7 @@ class ArchivaNamespaceTest extends ContentItemTest
assertNotNull( result );
assertEquals( this.repository, result.getRepository( ) );
assertEquals( this.asset, result.getAsset( ) );
- assertEquals( "test.1d.d/abc/def", result.getNamespace( ) );
+ assertEquals( "test.1d.d/abc/def", result.getId( ) );
assertNotNull( result.getAttributes( ) );
assertEquals( 0, result.getAttributes( ).size( ) );
assertArrayEquals( new String[]{ "test.1d.d", "abc", "def" },
result.getNamespacePath().toArray() );
diff --git
a/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/content/base/ArchivaVersionTest.java
b/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/content/base/ArchivaVersionTest.java
index 151bb23..799e477 100644
---
a/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/content/base/ArchivaVersionTest.java
+++
b/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/content/base/ArchivaVersionTest.java
@@ -55,8 +55,8 @@ class ArchivaVersionTest extends ContentItemTest
assertEquals( asset, item.getAsset( ) );
assertNotNull( item.getProject( ) );
assertEquals( project, item.getProject( ) );
- assertNotNull( item.getVersion( ) );
- assertEquals( "3.4.5", item.getVersion( ) );
+ assertNotNull( item.getId( ) );
+ assertEquals( "3.4.5", item.getId( ) );
assertNotNull( item.getVersionSegments( ) );
assertArrayEquals( new String[]{"3", "4", "5"},
item.getVersionSegments( ).toArray( ) );
}
diff --git
a/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
b/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
index 83bddf8..bab8373 100644
---
a/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
+++
b/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
@@ -148,6 +148,12 @@ public class ManagedRepositoryContentMock implements
BaseRepositoryContentLayout
}
@Override
+ public Artifact getArtifact( String path ) throws LayoutException,
ContentAccessException
+ {
+ return null;
+ }
+
+ @Override
public List<? extends Artifact> getArtifacts( ItemSelector selector )
throws ContentAccessException
{
return null;
diff --git
a/archiva-modules/archiva-base/archiva-repository-scanner/src/test/java/org/apache/archiva/repository/scanner/mock/ManagedRepositoryContentMock.java
b/archiva-modules/archiva-base/archiva-repository-scanner/src/test/java/org/apache/archiva/repository/scanner/mock/ManagedRepositoryContentMock.java
index 1a96707..5deb975 100644
---
a/archiva-modules/archiva-base/archiva-repository-scanner/src/test/java/org/apache/archiva/repository/scanner/mock/ManagedRepositoryContentMock.java
+++
b/archiva-modules/archiva-base/archiva-repository-scanner/src/test/java/org/apache/archiva/repository/scanner/mock/ManagedRepositoryContentMock.java
@@ -159,6 +159,12 @@ public class ManagedRepositoryContentMock implements
BaseRepositoryContentLayout
}
@Override
+ public Artifact getArtifact( String path ) throws LayoutException,
ContentAccessException
+ {
+ return null;
+ }
+
+ @Override
public List<? extends Artifact> getArtifacts( ItemSelector selector )
throws ContentAccessException
{
return null;
diff --git
a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
index d00159f..c59bfad 100644
---
a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
+++
b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
@@ -172,6 +172,12 @@ public class ManagedRepositoryContentMock implements
BaseRepositoryContentLayout
}
@Override
+ public Artifact getArtifact( String path ) throws LayoutException,
ContentAccessException
+ {
+ return null;
+ }
+
+ @Override
public List<? extends Artifact> getArtifacts( ItemSelector selector )
throws ContentAccessException
{
return null;
diff --git
a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContent.java
b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContent.java
index 662a3c8..319eaa7 100644
---
a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContent.java
+++
b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContent.java
@@ -24,15 +24,14 @@ import org.apache.archiva.configuration.FileTypes;
import org.apache.archiva.metadata.maven.MavenMetadataReader;
import org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator;
import org.apache.archiva.model.ArtifactReference;
-import org.apache.archiva.model.VersionedReference;
+import org.apache.archiva.repository.BaseRepositoryContentLayout;
import org.apache.archiva.repository.ContentAccessException;
-import org.apache.archiva.repository.ContentNotFoundException;
import org.apache.archiva.repository.EditableManagedRepository;
-import org.apache.archiva.repository.ManagedRepositoryContent;
import org.apache.archiva.repository.ItemDeleteStatus;
import org.apache.archiva.repository.LayoutException;
+import org.apache.archiva.repository.LayoutRuntimeException;
import org.apache.archiva.repository.ManagedRepository;
-import org.apache.archiva.repository.BaseRepositoryContentLayout;
+import org.apache.archiva.repository.ManagedRepositoryContent;
import org.apache.archiva.repository.ManagedRepositoryContentLayout;
import org.apache.archiva.repository.content.Artifact;
import org.apache.archiva.repository.content.ArtifactType;
@@ -65,9 +64,10 @@ import java.net.URI;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
-import java.util.Arrays;
import java.util.Collections;
import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.regex.Matcher;
@@ -315,7 +315,14 @@ public class ManagedDefaultRepositoryContent
public Namespace getNamespace( final ItemSelector namespaceSelector )
throws ContentAccessException, IllegalArgumentException
{
StorageAsset nsPath = getAsset( namespaceSelector.getNamespace() );
- return getNamespaceFromPath( nsPath );
+ try
+ {
+ return getNamespaceFromPath( nsPath );
+ }
+ catch ( LayoutException e )
+ {
+ throw new IllegalArgumentException( "Not a valid selector " +
e.getMessage( ), e );
+ }
}
@@ -327,7 +334,14 @@ public class ManagedDefaultRepositoryContent
throw new IllegalArgumentException( "Project id must be set" );
}
final StorageAsset path = getAsset( selector.getNamespace( ),
selector.getProjectId( ) );
- return getProjectFromPath( path );
+ try
+ {
+ return getProjectFromPath( path );
+ }
+ catch ( LayoutException e )
+ {
+ throw new IllegalArgumentException( "Not a valid selector " +
e.getMessage( ), e );
+ }
}
@@ -343,12 +357,19 @@ public class ManagedDefaultRepositoryContent
throw new IllegalArgumentException( "Version must be set" );
}
final StorageAsset path = getAsset( selector.getNamespace( ),
selector.getProjectId( ), selector.getVersion( ) );
- return getVersionFromPath( path );
+ try
+ {
+ return getVersionFromPath( path );
+ }
+ catch ( LayoutException e )
+ {
+ throw new IllegalArgumentException( "Not a valid selector " +
e.getMessage( ), e );
+ }
}
public Artifact createArtifact( final StorageAsset artifactPath, final
ItemSelector selector,
- final String classifier, final String
extension )
+ final String classifier )
{
Version version = getVersion( selector );
ArtifactOptBuilder builder =
org.apache.archiva.repository.content.base.ArchivaArtifact.withAsset(
artifactPath )
@@ -363,23 +384,42 @@ public class ManagedDefaultRepositoryContent
return builder.build( );
}
- public Namespace getNamespaceFromArtifactPath( final StorageAsset
artifactPath )
+ public Namespace getNamespaceFromArtifactPath( final StorageAsset
artifactPath ) throws LayoutException
{
+ if (artifactPath == null) {
+ throw new LayoutException( "Path null is not valid for artifact" );
+ }
final StorageAsset namespacePath = artifactPath.getParent(
).getParent( ).getParent( );
return getNamespaceFromPath( namespacePath );
}
- public Namespace getNamespaceFromPath( final StorageAsset nsPath )
+ public Namespace getNamespaceFromPath( final StorageAsset nsPath ) throws
LayoutException
{
- ContentItem item = itemMap.computeIfAbsent( nsPath,
- path -> createNamespaceFromPath( nsPath ) );
+ if (nsPath == null) {
+ throw new LayoutException( "Path null is not valid for namespace"
);
+ }
+
+ ContentItem item;
+ try
+ {
+ item = itemMap.computeIfAbsent( nsPath,
+ path -> createNamespaceFromPath( nsPath ) );
+ }
+ catch ( LayoutRuntimeException e )
+ {
+ throw new LayoutException( e.getMessage( ), e.getCause() );
+ }
if (!item.hasCharacteristic( Namespace.class )) {
item.setCharacteristic( Namespace.class, createNamespaceFromPath(
nsPath ) );
}
return item.adapt( Namespace.class );
}
- public Namespace createNamespaceFromPath( final StorageAsset
namespacePath) {
+ public Namespace createNamespaceFromPath( final StorageAsset
namespacePath) throws LayoutRuntimeException
+ {
+ if (namespacePath == null) {
+ throw new LayoutRuntimeException( "Path null is not valid for
namespace" );
+ }
final String namespace =
MavenContentHelper.getNamespaceFromNamespacePath( namespacePath );
return ArchivaNamespace.withRepository( this )
.withAsset( namespacePath )
@@ -387,67 +427,148 @@ public class ManagedDefaultRepositoryContent
.build( );
}
- private Project getProjectFromPath( final StorageAsset path )
+ private Project getProjectFromPath( final StorageAsset path ) throws
LayoutException
{
- ContentItem item = itemMap.computeIfAbsent( path, projectPath ->
- createProjectFromPath( projectPath )
- );
+ if (path == null) {
+ throw new LayoutException( "Path null is not valid for project" );
+ }
+ ContentItem item;
+ try
+ {
+ item = itemMap.computeIfAbsent( path, this::createProjectFromPath
);
+ }
+ catch ( LayoutRuntimeException e )
+ {
+ throw new LayoutException( e.getMessage( ), e.getCause( ) );
+ }
if (!item.hasCharacteristic( Project.class )) {
item.setCharacteristic( Project.class, createProjectFromPath( path
) );
}
return item.adapt( Project.class );
}
- private Project createProjectFromPath( final StorageAsset projectPath ) {
- Namespace namespace = getNamespaceFromPath( projectPath.getParent( ) );
+ private Project createProjectFromPath( final StorageAsset projectPath )
throws LayoutRuntimeException
+ {
+ if (projectPath==null) {
+ throw new LayoutRuntimeException( "Path null is not valid for
project" );
+ }
+ Namespace namespace;
+ try
+ {
+ namespace = getNamespaceFromPath( projectPath.getParent( ) );
+ }
+ catch ( LayoutException e )
+ {
+ throw new LayoutRuntimeException( e.getMessage( ), e.getCause() );
+ }
return ArchivaProject.withRepository( this ).withAsset( projectPath )
.withNamespace( namespace )
.withId( projectPath.getName( ) ).build( );
}
- private Project getProjectFromArtifactPath( final StorageAsset
artifactPath )
+ private Project getProjectFromArtifactPath( final StorageAsset
artifactPath ) throws LayoutException
{
+ if (artifactPath == null) {
+ throw new LayoutException( "Path null is not valid for artifact" );
+ }
final StorageAsset projectPath = artifactPath.getParent( ).getParent(
);
return getProjectFromPath( projectPath );
}
- private Version getVersionFromArtifactPath( final StorageAsset
artifactPath )
+ private Version getVersionFromArtifactPath( final StorageAsset
artifactPath ) throws LayoutException
{
+ if (artifactPath==null) {
+ throw new LayoutException( "Path null is not valid for version" );
+ }
final StorageAsset versionPath = artifactPath.getParent( );
return getVersionFromPath( versionPath );
}
- private Version getVersionFromPath( StorageAsset path )
+ private Version getVersionFromPath( StorageAsset path ) throws
LayoutException
{
- ContentItem item = itemMap.computeIfAbsent( path, versionPath ->
- createVersionFromPath( versionPath )
- );
+ if (path==null) {
+ throw new LayoutException( "Path null is not valid for version" );
+ }
+ ContentItem item;
+ try
+ {
+ item = itemMap.computeIfAbsent( path, this::createVersionFromPath
);
+ }
+ catch ( LayoutRuntimeException e )
+ {
+ throw new LayoutException( e.getMessage( ), e.getCause( ) );
+ }
if (!item.hasCharacteristic( Version.class )) {
item.setCharacteristic( Version.class, createVersionFromPath( path
) );
}
return item.adapt( Version.class );
}
- private Version createVersionFromPath(StorageAsset path) {
- Project proj = getProjectFromPath( path.getParent( ) );
+ private Version createVersionFromPath(StorageAsset path) throws
LayoutRuntimeException
+ {
+ if (path==null) {
+ throw new LayoutRuntimeException( "Path null is not valid for
version" );
+ }
+ Project proj;
+ try
+ {
+ proj = getProjectFromPath( path.getParent( ) );
+ }
+ catch ( LayoutException e )
+ {
+ throw new LayoutRuntimeException( e.getMessage( ), e );
+ }
return ArchivaVersion.withRepository( this ).withAsset( path )
.withProject( proj ).withVersion(path.getName()).build();
}
- private Artifact getArtifactFromPath( final StorageAsset artifactPath )
+ private Optional<Artifact> getOptionalArtifactFromPath( final StorageAsset
artifactPath) {
+ try
+ {
+ return Optional.of( getArtifactFromPath( artifactPath ) );
+ }
+ catch ( LayoutException e )
+ {
+ log.error( "Could not get artifact from path {}",
artifactPath.getPath( ) );
+ return Optional.empty( );
+ }
+ }
+
+ private Artifact getArtifactFromPath( final StorageAsset artifactPath )
throws LayoutException
{
- DataItem item = dataItemMap.computeIfAbsent( artifactPath,
myArtifactPath ->
- createArtifactFromPath( myArtifactPath )
- );
+ if (artifactPath==null) {
+ throw new LayoutException( "Path null is not valid for artifact" );
+ }
+ DataItem item;
+ try
+ {
+ item = dataItemMap.computeIfAbsent( artifactPath,
this::createArtifactFromPath );
+ }
+ catch ( LayoutRuntimeException e )
+ {
+ throw new LayoutException( e.getMessage( ), e.getCause() );
+ }
if (!item.hasCharacteristic( Artifact.class )) {
item.setCharacteristic( Artifact.class, createArtifactFromPath(
artifactPath ) );
}
return item.adapt( Artifact.class );
}
- private Artifact createArtifactFromPath( final StorageAsset artifactPath )
{
- final Version version = getVersionFromArtifactPath( artifactPath );
- final ArtifactInfo info = getArtifactInfoFromPath( version.getVersion(
), artifactPath );
+ private Artifact createArtifactFromPath( final StorageAsset artifactPath )
throws LayoutRuntimeException
+ {
+ if (artifactPath==null) {
+ throw new LayoutRuntimeException( "Path null is not valid for
artifact" );
+ }
+ final Version version;
+ try
+ {
+ version = getVersionFromArtifactPath( artifactPath );
+ }
+ catch ( LayoutException e )
+ {
+ throw new LayoutRuntimeException( e.getMessage( ), e );
+ }
+ final ArtifactInfo info = getArtifactInfoFromPath( version.getId( ),
artifactPath );
return
org.apache.archiva.repository.content.base.ArchivaArtifact.withAsset(
artifactPath )
.withVersion( version )
.withId( info.id )
@@ -474,7 +595,6 @@ public class ManagedDefaultRepositoryContent
private DataItem getDataItemFromPath( final StorageAsset artifactPath )
{
- final String extension = StringUtils.substringAfterLast(
artifactPath.getName( ), "." );
final String contentType = getContentType( artifactPath );
return dataItemMap.computeIfAbsent( artifactPath, myArtifactPath ->
org.apache.archiva.repository.content.base.ArchivaDataItem.withAsset(
artifactPath )
@@ -511,7 +631,7 @@ public class ManagedDefaultRepositoryContent
}
// Simple object to hold artifact information
- private class ArtifactInfo
+ private static class ArtifactInfo
{
private String id;
private String version;
@@ -690,7 +810,21 @@ public class ManagedDefaultRepositoryContent
final String fileName = MavenContentHelper.getArtifactFileName(
artifactId, artifactVersion, classifier, extension );
final StorageAsset path = getAsset( selector.getNamespace( ),
selector.getProjectId( ),
selector.getVersion( ), fileName );
- return getArtifactFromPath( path );
+ try
+ {
+ return getArtifactFromPath( path );
+ }
+ catch ( LayoutException e )
+ {
+ throw new IllegalArgumentException( "The selector is not valid " +
e.getMessage( ), e );
+ }
+ }
+
+ @Override
+ public Artifact getArtifact( String path ) throws LayoutException,
ContentAccessException
+ {
+ StorageAsset asset = getAssetByPath( path );
+ return getArtifactFromPath( asset );
}
/**
@@ -700,8 +834,19 @@ public class ManagedDefaultRepositoryContent
public List<? extends Project> getProjects( Namespace namespace )
{
return namespace.getAsset( ).list( ).stream( )
- .filter( a -> a.isContainer( ) )
- .map( a -> getProjectFromPath( a ) )
+ .filter( StorageAsset::isContainer )
+ .map( a -> {
+ try
+ {
+ return getProjectFromPath( a );
+ }
+ catch ( LayoutException e )
+ {
+ log.error( "Not a valid project path " + a.getPath( ), e );
+ return null;
+ }
+ } )
+ .filter( Objects::nonNull )
.collect( Collectors.toList( ) );
}
@@ -720,8 +865,8 @@ public class ManagedDefaultRepositoryContent
@Override
public List<? extends Version> getVersions( final Project project )
{
- StorageAsset asset = getAsset( project.getNamespace( ).getNamespace(
), project.getId( ) );
- return asset.list( ).stream( ).filter( a -> a.isContainer( ) )
+ StorageAsset asset = getAsset( project.getNamespace( ).getId( ),
project.getId( ) );
+ return asset.list( ).stream( ).filter( StorageAsset::isContainer )
.map( a -> ArchivaVersion.withAsset( a )
.withProject( project )
.withVersion( a.getName( ) ).build( ) )
@@ -750,7 +895,18 @@ public class ManagedDefaultRepositoryContent
final StorageAsset asset = getAsset( selector.getNamespace( ),
selector.getProjectId( ), selector.getVersion( ) );
return asset.list( ).stream( ).map( a -> getArtifactInfoFromPath(
selector.getVersion( ), a ) )
.filter( ai -> StringUtils.isNotEmpty( ai.version ) )
- .map( v -> getVersionFromArtifactPath( v.asset ) )
+ .map( v -> {
+ try
+ {
+ return getVersionFromArtifactPath( v.asset );
+ }
+ catch ( LayoutException e )
+ {
+ log.error( "Could not get version from asset " +
v.asset.getPath( ) );
+ return null;
+ }
+ } )
+ .filter( Objects::nonNull )
.distinct( )
.collect( Collectors.toList( ) );
}
@@ -779,8 +935,18 @@ public class ManagedDefaultRepositoryContent
}
else
{
- return project.getAsset( ).list( ).stream( ).map( a ->
getVersionFromPath( a ) )
- .flatMap( v -> v.getAsset( ).list( ).stream( ).map( a ->
getArtifactInfoFromPath( v.getVersion( ), a ) ) )
+ return project.getAsset( ).list( ).stream( ).map( a -> {
+ try
+ {
+ return getVersionFromPath( a );
+ }
+ catch ( LayoutException e )
+ {
+ log.error( "Could not get version from path " + a.getPath(
) );
+ return null;
+ }
+ } ).filter( Objects::nonNull )
+ .flatMap( v -> v.getAsset( ).list( ).stream( ).map( a ->
getArtifactInfoFromPath( v.getId( ), a ) ) )
.filter( ai -> StringUtils.isNotEmpty( ai.version ) )
.map( v -> v.version )
.distinct( )
@@ -811,7 +977,7 @@ public class ManagedDefaultRepositoryContent
*/
private Predicate<StorageAsset> getArtifactFileFilterFromSelector( final
ItemSelector selector )
{
- Predicate<StorageAsset> p = a -> a.isLeaf( );
+ Predicate<StorageAsset> p = StorageAsset::isLeaf;
StringBuilder fileNamePattern = new StringBuilder( "^" );
if ( selector.hasArtifactId( ) )
{
@@ -921,16 +1087,18 @@ public class ManagedDefaultRepositoryContent
{
return getAsset( selector.getNamespace( ), projectId,
selector.getVersion( ) )
.list( ).stream( ).filter( filter )
- .map( this::getArtifactFromPath );
+ .map( this::getOptionalArtifactFromPath )
+ .filter( Optional::isPresent ).map( Optional::get );
}
else if ( projectId != null )
{
final StorageAsset projDir = getAsset( selector.getNamespace( ),
projectId );
return projDir.list( ).stream( )
- .map( a -> a.isContainer( ) ? a.list( ) : Arrays.asList( a ) )
+ .map( a -> a.isContainer( ) ? a.list( ) :
Collections.singletonList( a ) )
.flatMap( List::stream )
.filter( filter )
- .map( this::getArtifactFromPath );
+ .map( this::getOptionalArtifactFromPath )
+ .filter( Optional::isPresent ).map( Optional::get );
}
else
{
@@ -939,19 +1107,20 @@ public class ManagedDefaultRepositoryContent
{
return StorageUtil.newAssetStream( namespaceDir, true )
.filter( filter )
- .map( this::getArtifactFromPath );
-
+ .map( this::getOptionalArtifactFromPath )
+ .filter( Optional::isPresent ).map( Optional::get );
}
else
{
// We descend into 2 subdirectories (project and version)
return namespaceDir.list( ).stream( )
- .map( a -> a.isContainer( ) ? a.list( ) : Arrays.asList( a
) )
+ .map( a -> a.isContainer( ) ? a.list( ) :
Collections.singletonList( a ) )
.flatMap( List::stream )
- .map( a -> a.isContainer( ) ? a.list( ) : Arrays.asList( a
) )
+ .map( a -> a.isContainer( ) ? a.list( ) :
Collections.singletonList( a ) )
.flatMap( List::stream )
.filter( filter )
- .map( this::getArtifactFromPath );
+ .map( this::getOptionalArtifactFromPath )
+ .filter( Optional::isPresent ).map( Optional::get );
}
}
}
@@ -974,26 +1143,26 @@ public class ManagedDefaultRepositoryContent
/**
* Returns all artifacts
*
- * @param item
- * @return
- * @throws ContentAccessException
+ * @param item the namespace to search for artifacts
+ * @return the stream of artifacts
+ * @throws ContentAccessException if the access to the underlying storage
failed
*/
public Stream<? extends Artifact> newArtifactStream( Namespace item )
throws ContentAccessException
{
- return newArtifactStream( ArchivaItemSelector.builder(
).withNamespace( item.getNamespace( ) ).build( ) );
+ return newArtifactStream( ArchivaItemSelector.builder(
).withNamespace( item.getId( ) ).build( ) );
}
public Stream<? extends Artifact> newArtifactStream( Project item ) throws
ContentAccessException
{
- return newArtifactStream( ArchivaItemSelector.builder(
).withNamespace( item.getNamespace( ).getNamespace( ) )
+ return newArtifactStream( ArchivaItemSelector.builder(
).withNamespace( item.getNamespace( ).getId( ) )
.withProjectId( item.getId( ) ).build( ) );
}
public Stream<? extends Artifact> newArtifactStream( Version item ) throws
ContentAccessException
{
- return newArtifactStream( ArchivaItemSelector.builder(
).withNamespace( item.getProject( ).getNamespace( ).getNamespace( ) )
+ return newArtifactStream( ArchivaItemSelector.builder(
).withNamespace( item.getProject( ).getNamespace( ).getId( ) )
.withProjectId( item.getProject( ).getId( ) )
- .withVersion( item.getVersion( ) ).build( ) );
+ .withVersion( item.getId( ) ).build( ) );
}
/**
@@ -1002,7 +1171,7 @@ public class ManagedDefaultRepositoryContent
*
* @param item the artifact
* @return the stream of artifacts
- * @throws ContentAccessException
+ * @throws ContentAccessException if access to the underlying storage
failed
*/
public Stream<? extends Artifact> newArtifactStream( Artifact item )
throws ContentAccessException
{
@@ -1011,15 +1180,25 @@ public class ManagedDefaultRepositoryContent
final Predicate<StorageAsset> filter = ( StorageAsset a ) ->
a.getName( ).startsWith( fileName + "." );
return v.getAsset( ).list( ).stream( ).filter( filter )
- .map( a -> getArtifactFromPath( a ) );
+ .map( a -> {
+ try
+ {
+ return getArtifactFromPath( a );
+ }
+ catch ( LayoutException e )
+ {
+ log.error( "Not a valid artifact path " + a.getPath( ), e
);
+ return null;
+ }
+ } ).filter( Objects::nonNull );
}
/**
* Returns the stream of artifacts that are children of the given item.
*
* @param item the item from where the artifacts should be returned
- * @return
- * @throws ContentAccessException
+ * @return the stream of artifacts
+ * @throws ContentAccessException if access to the underlying storage
failed
*/
@Override
public Stream<? extends Artifact> newArtifactStream( ContentItem item )
throws ContentAccessException
@@ -1173,7 +1352,6 @@ public class ManagedDefaultRepositoryContent
.map( this::getItemFromPath );
}
}
- ;
return StorageUtil.newAssetStream( startDir, parallel )
.filter( filter )
.map( this::getItemFromPath );
@@ -1201,7 +1379,7 @@ public class ManagedDefaultRepositoryContent
if (item.getAsset().isLeaf()) {
return Collections.emptyList( );
} else {
- return item.getAsset( ).list( ).stream( ).map( a ->
getItemFromPath( a ) ).collect( Collectors.toList( ) );
+ return item.getAsset( ).list( ).stream( ).map(
this::getItemFromPath ).collect( Collectors.toList( ) );
}
}
@@ -1462,70 +1640,6 @@ public class ManagedDefaultRepositoryContent
}
}
-
- /**
- * Get the first Artifact found in the provided VersionedReference
location.
- *
- * @param reference the reference to the versioned reference to search
within
- * @return the ArtifactReference to the first artifact located within the
versioned reference. or null if
- * no artifact was found within the versioned reference.
- * @throws java.io.IOException if the versioned reference is invalid
(example: doesn't exist, or isn't a directory)
- * @throws LayoutException
- */
- private ArtifactReference getFirstArtifact( VersionedReference reference )
- throws ContentNotFoundException, LayoutException, IOException
- {
- try ( Stream<ArtifactReference> stream = newArtifactStream( reference
) )
- {
- return stream.findFirst( ).orElse( null );
- }
- catch ( RuntimeException e )
- {
- throw new ContentNotFoundException( e.getMessage( ), e.getCause( )
);
- }
- }
-
- private Stream<ArtifactReference> newArtifactStream( VersionedReference
reference ) throws ContentNotFoundException, LayoutException, IOException
- {
- final Path repoBase = getRepoDir( );
- String path = toMetadataPath( reference );
- Path versionDir = repoBase.resolve( path ).getParent( );
- if ( !Files.exists( versionDir ) )
- {
- throw new ContentNotFoundException( "Unable to gather the list of
artifacts on a non-existant directory: "
- + versionDir.toAbsolutePath( ) );
- }
-
- if ( !Files.isDirectory( versionDir ) )
- {
- throw new ContentNotFoundException(
- "Unable to gather the list of snapshot versions on a
non-directory: " + versionDir.toAbsolutePath( ) );
- }
- return Files.list( versionDir ).filter( Files::isRegularFile )
- .map( p -> repoBase.relativize( p ).toString( ) )
- .filter( p -> !filetypes.matchesDefaultExclusions( p ) )
- .filter( filetypes::matchesArtifactPattern )
- .map( this::toArtifactRef );
- }
-
- private boolean hasArtifact( VersionedReference reference )
-
- {
- try ( Stream<ArtifactReference> stream = newArtifactStream( reference
) )
- {
- return stream.anyMatch( e -> true );
- }
- catch ( ContentNotFoundException e )
- {
- return false;
- }
- catch ( LayoutException | IOException e )
- {
- // We throw the runtime exception for better stream handling
- throw new RuntimeException( e );
- }
- }
-
public void setFiletypes( FileTypes filetypes )
{
this.filetypes = filetypes;
diff --git
a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/AbstractRepositoryContentTest.java
b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/AbstractRepositoryContentTest.java
index f1a6444..c3c987f 100644
---
a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/AbstractRepositoryContentTest.java
+++
b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/AbstractRepositoryContentTest.java
@@ -584,7 +584,7 @@ public abstract class AbstractRepositoryContentTest
{
ns = getManaged( ).getLayout(
BaseRepositoryContentLayout.class ).getNamespace( expectedArtifact );
assertNotNull( ns );
- assertEquals( groupId, ns.getNamespace( ) );
+ assertEquals( groupId, ns.getId( ) );
}
if ( StringUtils.isNotEmpty( artifactId ) )
{
@@ -597,7 +597,7 @@ public abstract class AbstractRepositoryContentTest
{
ver = getManaged( ).getLayout(
BaseRepositoryContentLayout.class ).getVersion( expectedArtifact );
assertNotNull( ver );
- assertEquals( version, ver.getVersion( ) );
+ assertEquals( version, ver.getId( ) );
assertEquals( pr, ver.getProject( ) );
}
Artifact artifact = getManaged( ).getLayout(
BaseRepositoryContentLayout.class ).getArtifact( expectedArtifact );
diff --git
a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContentTest.java
b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContentTest.java
index 39be5fa..f751abb 100644
---
a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContentTest.java
+++
b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContentTest.java
@@ -203,7 +203,7 @@ public class ManagedDefaultRepositoryContentTest
.withVersion( version )
.build( );
List<String> versions = repoContent.getVersions( selector ).stream()
- .map(v -> v.getVersion()).sorted( comparator ).collect(
Collectors.toList());
+ .map(v -> v.getId()).sorted( comparator ).collect(
Collectors.toList());
assertArrayEquals( expectedVersions, versions.toArray( ) );
@@ -512,12 +512,12 @@ public class ManagedDefaultRepositoryContentTest
assertNotNull( artifact );
assertEquals( "pom", artifact.getExtension( ) );
assertEquals( BaseArtifactTypes.MAIN, artifact.getDataType( ) );
- assertEquals( "1.3-SNAPSHOT", artifact.getVersion( ).getVersion( ) );
+ assertEquals( "1.3-SNAPSHOT", artifact.getVersion( ).getId( ) );
assertEquals( "1.3-20070725.210059-1", artifact.getArtifactVersion( )
);
assertEquals( ".pom", artifact.getRemainder( ) );
assertEquals( "axis2", artifact.getId( ) );
assertEquals( "axis2", artifact.getVersion( ).getProject( ).getId( ) );
- assertEquals( "org.apache.axis2", artifact.getVersion( ).getProject(
).getNamespace( ).getNamespace( ) );
+ assertEquals( "org.apache.axis2", artifact.getVersion( ).getProject(
).getNamespace( ).getId( ) );
assertEquals( "", artifact.getClassifier( ) );
assertEquals( "pom", artifact.getType( ) );
@@ -528,12 +528,12 @@ public class ManagedDefaultRepositoryContentTest
assertNotNull( artifact );
assertEquals( "md5", artifact.getExtension( ) );
assertEquals( BaseArtifactTypes.RELATED, artifact.getDataType( ) );
- assertEquals( "1.3-SNAPSHOT", artifact.getVersion( ).getVersion( ) );
+ assertEquals( "1.3-SNAPSHOT", artifact.getVersion( ).getId( ) );
assertEquals( "1.3-20070725.210059-1", artifact.getArtifactVersion( )
);
assertEquals( ".pom.md5", artifact.getRemainder( ) );
assertEquals( "axis2", artifact.getId( ) );
assertEquals( "axis2", artifact.getVersion( ).getProject( ).getId( ) );
- assertEquals( "org.apache.axis2", artifact.getVersion( ).getProject(
).getNamespace( ).getNamespace( ) );
+ assertEquals( "org.apache.axis2", artifact.getVersion( ).getProject(
).getNamespace( ).getId( ) );
assertEquals( "", artifact.getClassifier( ) );
assertEquals( "md5", artifact.getType( ) );
@@ -543,7 +543,7 @@ public class ManagedDefaultRepositoryContentTest
.findFirst( ).get( );
assertNotNull( artifact );
assertEquals( BaseArtifactTypes.METADATA, artifact.getDataType( ) );
- assertEquals( "1.3-SNAPSHOT", artifact.getVersion( ).getVersion( ) );
+ assertEquals( "1.3-SNAPSHOT", artifact.getVersion( ).getId( ) );
assertEquals( "xml", artifact.getExtension( ) );
}
@@ -920,7 +920,7 @@ public class ManagedDefaultRepositoryContentTest
ContentItem item = result.get( 39 );
Version version = item.adapt( Version.class );
assertNotNull( version );
- assertEquals( "1.3-SNAPSHOT", version.getVersion( ) );
+ assertEquals( "1.3-SNAPSHOT", version.getId( ) );
Project project = result.get( 40 ).adapt( Project.class );
assertNotNull( project );
assertEquals( "axis2", project.getId( ) );
@@ -1115,11 +1115,12 @@ public class ManagedDefaultRepositoryContentTest
}
@Test
- public void testGetNamespaceFromPath() {
+ public void testGetNamespaceFromPath() throws LayoutException
+ {
StorageAsset path = repoContent.getRepository( ).getAsset(
"/org/apache/axis2" );
Namespace ns = repoContent.getNamespaceFromPath( path );
assertNotNull( ns );
- assertEquals( "org.apache.axis2", ns.getNamespace( ) );
+ assertEquals( "org.apache.axis2", ns.getId( ) );
}
diff --git
a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/utils/ArtifactBuilder.java
b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/utils/ArtifactBuilder.java
index 6b48247..051adde 100644
---
a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/utils/ArtifactBuilder.java
+++
b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/utils/ArtifactBuilder.java
@@ -21,11 +21,9 @@ package org.apache.archiva.rest.services.utils;
import org.apache.archiva.maven2.model.Artifact;
import org.apache.archiva.metadata.model.ArtifactMetadata;
import org.apache.archiva.metadata.maven.model.MavenArtifactFacet;
-import org.apache.archiva.model.ArtifactReference;
import org.apache.archiva.repository.BaseRepositoryContentLayout;
import org.apache.archiva.repository.ManagedRepositoryContent;
import org.apache.archiva.repository.LayoutException;
-import org.apache.archiva.repository.content.ItemSelector;
import org.apache.archiva.repository.content.base.ArchivaItemSelector;
import org.apache.archiva.repository.storage.StorageAsset;
import org.apache.archiva.repository.storage.util.StorageUtil;
@@ -104,7 +102,7 @@ public class ArtifactBuilder
String extension = repoArtifact.getExtension();
- Artifact artifact = new Artifact( repoArtifact.getVersion(
).getProject( ).getNamespace( ).getNamespace( ), repoArtifact.getId( ),
repoArtifact.getArtifactVersion( ) );
+ Artifact artifact = new Artifact( repoArtifact.getVersion(
).getProject( ).getNamespace( ).getId( ), repoArtifact.getId( ),
repoArtifact.getArtifactVersion( ) );
artifact.setRepositoryId( artifactMetadata.getRepositoryId() );
artifact.setClassifier( classifier );
artifact.setPackaging( type );
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 093830b..8528b65 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
@@ -656,7 +656,7 @@ public class ArchivaDavResourceFactory
BaseRepositoryContentLayout layout =
managedRepositoryContent.getLayout( BaseRepositoryContentLayout.class );
ContentItem artifactItem =
managedRepositoryContent.toItem( resourcePath );
artifact = layout.adaptItem( Artifact.class,
artifactItem );
- if ( !VersionUtil.isSnapshot(
artifact.getVersion().getVersion() ) )
+ if ( !VersionUtil.isSnapshot(
artifact.getVersion().getId() ) )
{
// check if artifact already exists and if
artifact re-deployment to the repository is allowed
if ( artifactItem.exists()