You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ma...@apache.org on 2020/03/08 14:58:24 UTC
[archiva] 04/04: Fixing path matching for repository content
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 <ma...@apache.org>
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 ******************