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
commit c7a924305a643f6c495aa950838252acc26d5e49 Author: Martin Stockhammer <[email protected]> AuthorDate: Sun Mar 8 13:20:51 2020 +0100 Fixing path matching for repository content --- .../archiva/repository/ManagedRepositoryContent.java | 12 ++++++++++++ .../repository/mock/ManagedRepositoryContentMock.java | 6 ++++++ .../scanner/mock/ManagedRepositoryContentMock.java | 18 ++++++++++++++++++ .../repository/mock/ManagedRepositoryContentMock.java | 6 ++++++ .../content/AbstractDefaultRepositoryContent.java | 5 +++++ .../content/ManagedDefaultRepositoryContent.java | 19 +++++++++++++++++-- 6 files changed, 64 insertions(+), 2 deletions(-) diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/ManagedRepositoryContent.java b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/ManagedRepositoryContent.java index a4565c4..09e7621 100644 --- a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/ManagedRepositoryContent.java +++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/ManagedRepositoryContent.java @@ -58,6 +58,18 @@ public interface ManagedRepositoryContent extends RepositoryContent */ void deleteItem( ContentItem item) throws ItemNotFoundException, ContentAccessException; + + /** + * Returns a item for the given selector. The type of the returned item depends on the + * selector. + * + * @param selector the item selector + * @return the content item that matches the given selector + * @throws ContentAccessException if an error occured while accessing the backend + * @throws IllegalArgumentException if the selector does not select a valid content item + */ + ContentItem getItem(ItemSelector selector) throws ContentAccessException, IllegalArgumentException; + /** * Returns the namespace for the given selected coordinates. The selector must specify a namespace. All other * coordinates are ignored. 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 c719d38..ac14445 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 @@ -82,6 +82,12 @@ public class ManagedRepositoryContentMock implements ManagedRepositoryContent } @Override + public ContentItem getItem( ItemSelector selector ) throws ContentAccessException, IllegalArgumentException + { + return null; + } + + @Override public Namespace getNamespace( ItemSelector namespaceSelector ) throws ContentAccessException, IllegalArgumentException { 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 09794b7..66ab810 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 @@ -98,6 +98,12 @@ public class ManagedRepositoryContentMock implements ManagedRepositoryContent } @Override + public ContentItem getItem( ItemSelector selector ) throws ContentAccessException, IllegalArgumentException + { + return null; + } + + @Override public Namespace getNamespace( ItemSelector namespaceSelector ) throws ContentAccessException, IllegalArgumentException { return null; @@ -182,6 +188,18 @@ public class ManagedRepositoryContentMock implements ManagedRepositoryContent } @Override + public ContentItem toItem( String path ) throws LayoutException + { + return null; + } + + @Override + public ContentItem toItem( StorageAsset assetPath ) throws LayoutException + { + return null; + } + + @Override public void deleteVersion( VersionedReference reference ) throws ContentNotFoundException, ContentAccessException { 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 bc1a16f..d06ccd2 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 @@ -102,6 +102,12 @@ public class ManagedRepositoryContentMock implements ManagedRepositoryContent } @Override + public ContentItem getItem( ItemSelector selector ) throws ContentAccessException, IllegalArgumentException + { + return null; + } + + @Override public Namespace getNamespace( ItemSelector namespaceSelector ) throws ContentAccessException, IllegalArgumentException { return null; diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/AbstractDefaultRepositoryContent.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/AbstractDefaultRepositoryContent.java index e2532e1..d33843f 100644 --- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/AbstractDefaultRepositoryContent.java +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/AbstractDefaultRepositoryContent.java @@ -58,6 +58,11 @@ public abstract class AbstractDefaultRepositoryContent implements RepositoryCont private PathParser defaultPathParser = new DefaultPathParser(); + PathParser getPathParser() { + return defaultPathParser; + } + + /** * 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 c5d371e..dfc0f04 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 @@ -200,6 +200,20 @@ public class ManagedDefaultRepositoryContent } @Override + public ContentItem getItem( ItemSelector selector ) throws ContentAccessException, IllegalArgumentException + { + if (selector.hasVersion() && selector.hasArtifactId()) { + return getArtifact( selector ); + } else if (selector.hasProjectId() && selector.hasVersion()) { + return getVersion( selector ); + } else if (selector.hasProjectId()) { + return getProject( selector ); + } else { + return getNamespace( selector ); + } + } + + @Override public Namespace getNamespace( final ItemSelector namespaceSelector ) throws ContentAccessException, IllegalArgumentException { return namespaceMap.computeIfAbsent( namespaceSelector.getNamespace(), @@ -620,13 +634,14 @@ public class ManagedDefaultRepositoryContent @Override public ContentItem toItem( String path ) throws LayoutException { - return getItemFromPath( getAssetByPath( path ) ); + ItemSelector selector = getPathParser( ).toItemSelector( path ); + return getItem( selector ); } @Override public ContentItem toItem( StorageAsset assetPath ) throws LayoutException { - return getItemFromPath( assetPath ); + return toItem( assetPath.getPath( ) ); } /// ************* End of new generation interface ******************
