Fixing path matching for repository content

This commit is contained in:
Martin Stockhammer 2020-03-08 13:20:51 +01:00
parent 2b4254a391
commit c7a924305a
6 changed files with 64 additions and 2 deletions

View File

@ -58,6 +58,18 @@ public interface ManagedRepositoryContent extends RepositoryContent
*/ */
void deleteItem( ContentItem item) throws ItemNotFoundException, ContentAccessException; 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 * Returns the namespace for the given selected coordinates. The selector must specify a namespace. All other
* coordinates are ignored. * coordinates are ignored.

View File

@ -81,6 +81,12 @@ public class ManagedRepositoryContentMock implements ManagedRepositoryContent
} }
@Override
public ContentItem getItem( ItemSelector selector ) throws ContentAccessException, IllegalArgumentException
{
return null;
}
@Override @Override
public Namespace getNamespace( ItemSelector namespaceSelector ) throws ContentAccessException, IllegalArgumentException public Namespace getNamespace( ItemSelector namespaceSelector ) throws ContentAccessException, IllegalArgumentException
{ {

View File

@ -97,6 +97,12 @@ public class ManagedRepositoryContentMock implements ManagedRepositoryContent
} }
@Override
public ContentItem getItem( ItemSelector selector ) throws ContentAccessException, IllegalArgumentException
{
return null;
}
@Override @Override
public Namespace getNamespace( ItemSelector namespaceSelector ) throws ContentAccessException, IllegalArgumentException public Namespace getNamespace( ItemSelector namespaceSelector ) throws ContentAccessException, IllegalArgumentException
{ {
@ -181,6 +187,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 @Override
public void deleteVersion( VersionedReference reference ) throws ContentNotFoundException, ContentAccessException public void deleteVersion( VersionedReference reference ) throws ContentNotFoundException, ContentAccessException
{ {

View File

@ -101,6 +101,12 @@ public class ManagedRepositoryContentMock implements ManagedRepositoryContent
} }
@Override
public ContentItem getItem( ItemSelector selector ) throws ContentAccessException, IllegalArgumentException
{
return null;
}
@Override @Override
public Namespace getNamespace( ItemSelector namespaceSelector ) throws ContentAccessException, IllegalArgumentException public Namespace getNamespace( ItemSelector namespaceSelector ) throws ContentAccessException, IllegalArgumentException
{ {

View File

@ -58,6 +58,11 @@ public abstract class AbstractDefaultRepositoryContent implements RepositoryCont
private PathParser defaultPathParser = new DefaultPathParser(); private PathParser defaultPathParser = new DefaultPathParser();
PathParser getPathParser() {
return defaultPathParser;
}
/** /**
* *

View File

@ -199,6 +199,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 @Override
public Namespace getNamespace( final ItemSelector namespaceSelector ) throws ContentAccessException, IllegalArgumentException public Namespace getNamespace( final ItemSelector namespaceSelector ) throws ContentAccessException, IllegalArgumentException
{ {
@ -620,13 +634,14 @@ public class ManagedDefaultRepositoryContent
@Override @Override
public ContentItem toItem( String path ) throws LayoutException public ContentItem toItem( String path ) throws LayoutException
{ {
return getItemFromPath( getAssetByPath( path ) ); ItemSelector selector = getPathParser( ).toItemSelector( path );
return getItem( selector );
} }
@Override @Override
public ContentItem toItem( StorageAsset assetPath ) throws LayoutException public ContentItem toItem( StorageAsset assetPath ) throws LayoutException
{ {
return getItemFromPath( assetPath ); return toItem( assetPath.getPath( ) );
} }
/// ************* End of new generation interface ****************** /// ************* End of new generation interface ******************