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;
/**
* 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.

View File

@ -81,6 +81,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
{

View File

@ -97,6 +97,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
{
@ -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
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
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();
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
public Namespace getNamespace( final ItemSelector namespaceSelector ) throws ContentAccessException, IllegalArgumentException
{
@ -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 ******************