@@ -288,8 +288,14 @@ public abstract class DefaultRepositoryProxyHandler implements RepositoryProxyHa | |||
} | |||
@Override | |||
public ProxyFetchResult fetchMetadataFromProxies( ManagedRepository repository, String logicalPath ) | |||
public ProxyFetchResult fetchMetadataFromProxies( ManagedRepository repository, String rawLogicalPath ) | |||
{ | |||
String logicalPath; | |||
if (rawLogicalPath.startsWith( "/" )){ | |||
logicalPath = rawLogicalPath.substring( 1 ); | |||
} else { | |||
logicalPath = rawLogicalPath; | |||
} | |||
StorageAsset localFile = repository.getAsset( logicalPath ); | |||
Properties requestProperties = new Properties(); | |||
@@ -470,7 +476,11 @@ public abstract class DefaultRepositoryProxyHandler implements RepositoryProxyHa | |||
{ | |||
url = url + "/"; | |||
} | |||
url = url + remotePath; | |||
if (remotePath.startsWith( "/" )) { | |||
url = url + remotePath.substring( 1 ); | |||
} else { | |||
url = url + remotePath; | |||
} | |||
requestProperties.setProperty( "url", url ); | |||
// Is a whitelist defined? |
@@ -258,6 +258,14 @@ public interface BaseRepositoryContentLayout extends ManagedRepositoryContentLay | |||
*/ | |||
DataItem getMetadataItem( Version version ); | |||
/** | |||
* Returns the metadata file for the given project | |||
* | |||
* @param project the project | |||
* @return the metadata file | |||
*/ | |||
DataItem getMetadataItem( Project project ); | |||
/// ***************** End of new generation interface ********************** | |||
@@ -292,6 +292,14 @@ public class ManagedRepositoryContentMock implements BaseRepositoryContentLayout | |||
.withDataType( BaseDataItemTypes.METADATA ).build(); | |||
} | |||
@Override | |||
public DataItem getMetadataItem( Project project ) | |||
{ | |||
return ArchivaDataItem.withAsset( project.getAsset( ).resolve( "maven-metadata.xml" ) ).withId( "maven-metadata.xml" ) | |||
.withDataType( BaseDataItemTypes.METADATA ).build( ); | |||
} | |||
@Override | |||
public ContentItem toItem( String path ) throws LayoutException | |||
{ |
@@ -29,6 +29,7 @@ import org.apache.archiva.model.ProjectReference; | |||
import org.apache.archiva.model.VersionedReference; | |||
import org.apache.archiva.repository.*; | |||
import org.apache.archiva.repository.content.Artifact; | |||
import org.apache.archiva.repository.content.BaseDataItemTypes; | |||
import org.apache.archiva.repository.content.ContentItem; | |||
import org.apache.archiva.repository.content.DataItem; | |||
import org.apache.archiva.repository.content.ItemNotFoundException; | |||
@@ -36,6 +37,7 @@ import org.apache.archiva.repository.content.ItemSelector; | |||
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.ArchivaDataItem; | |||
import org.apache.archiva.repository.content.base.ArchivaNamespace; | |||
import org.apache.archiva.repository.content.base.ArchivaProject; | |||
import org.apache.archiva.repository.content.base.ArchivaVersion; | |||
@@ -286,6 +288,14 @@ public class ManagedRepositoryContentMock implements BaseRepositoryContentLayout | |||
return null; | |||
} | |||
@Override | |||
public DataItem getMetadataItem( Project project ) | |||
{ | |||
return ArchivaDataItem.withAsset( project.getAsset( ).resolve( "maven-metadata.xml" ) ).withId( "maven-metadata.xml" ) | |||
.withDataType( BaseDataItemTypes.METADATA ).build( ); | |||
} | |||
@Override | |||
public ContentItem toItem( String path ) throws LayoutException | |||
{ |
@@ -34,7 +34,9 @@ import org.apache.archiva.policies.SnapshotsPolicy; | |||
import org.apache.archiva.repository.BaseRepositoryContentLayout; | |||
import org.apache.archiva.repository.content.ContentItem; | |||
import org.apache.archiva.repository.content.DataItem; | |||
import org.apache.archiva.repository.content.Project; | |||
import org.apache.archiva.repository.content.Version; | |||
import org.apache.archiva.repository.content.base.ArchivaItemSelector; | |||
import org.apache.archiva.repository.metadata.base.MetadataTools; | |||
import org.apache.archiva.repository.metadata.RepositoryMetadataException; | |||
import org.apache.archiva.repository.metadata.base.RepositoryMetadataWriter; | |||
@@ -129,13 +131,13 @@ public class MetadataTransferTest | |||
assertNoRepoMetadata( ID_PROXIED1, requestedResource ); | |||
Path expectedFile = managedDefaultDir.resolve(requestedResource); | |||
ProjectReference metadata = createProjectReference( requestedResource ); | |||
BaseRepositoryContentLayout layout = managedDefaultRepository.getLayout( BaseRepositoryContentLayout.class ); | |||
ContentItem metaItem = managedDefaultRepository.toItem( requestedResource ); | |||
Project project = layout.adaptItem( Project.class, managedDefaultRepository.getParent( metaItem ) ); | |||
assertNotNull( project ); | |||
String metaPath = managedDefaultRepository.toPath( layout.getMetadataItem( project ) ); | |||
StorageAsset downloadedFile = proxyHandler.fetchMetadataFromProxies( managedDefaultRepository.getRepository(), | |||
layout.toMetadataPath( | |||
metadata ) ).getFile(); | |||
metaPath ).getFile(); | |||
assertNull( "Should not have downloaded a file.", downloadedFile ); | |||
assertNoTempFiles( expectedFile ); | |||
@@ -994,13 +996,14 @@ public class MetadataTransferTest | |||
{ | |||
Path expectedFile = managedDefaultDir.resolve(requestedResource); | |||
ProjectReference metadata = createProjectReference( requestedResource ); | |||
BaseRepositoryContentLayout layout = managedDefaultRepository.getLayout( BaseRepositoryContentLayout.class ); | |||
ContentItem metaItem = managedDefaultRepository.toItem( requestedResource ); | |||
Project project = layout.adaptItem( Project.class, managedDefaultRepository.getParent( metaItem ) ); | |||
assertNotNull( project ); | |||
String metaPath = managedDefaultRepository.toPath( layout.getMetadataItem( project ) ); | |||
StorageAsset downloadedFile = proxyHandler.fetchMetadataFromProxies( managedDefaultRepository.getRepository(), | |||
layout.toMetadataPath( | |||
metadata ) ).getFile(); | |||
metaPath ).getFile(); | |||
assertNotNull( "Should have downloaded a file.", downloadedFile ); | |||
assertNoTempFiles( expectedFile ); | |||
@@ -1022,12 +1025,14 @@ public class MetadataTransferTest | |||
throws Exception | |||
{ | |||
Path expectedFile = managedDefaultDir.resolve(requestedResource); | |||
ProjectReference metadata = createProjectReference( requestedResource ); | |||
BaseRepositoryContentLayout layout = managedDefaultRepository.getLayout( BaseRepositoryContentLayout.class ); | |||
ContentItem metaItem = managedDefaultRepository.toItem( requestedResource ); | |||
Project project = layout.adaptItem( Project.class, managedDefaultRepository.getParent( metaItem ) ); | |||
assertNotNull( project ); | |||
String metaPath = managedDefaultRepository.toPath( layout.getMetadataItem( project ) ); | |||
StorageAsset downloadedFile = proxyHandler.fetchMetadataFromProxies( managedDefaultRepository.getRepository(), | |||
layout.toMetadataPath( | |||
metadata ) ).getFile(); | |||
metaPath ).getFile(); | |||
assertNull( downloadedFile ); | |||
assertNoTempFiles( expectedFile ); |
@@ -293,6 +293,13 @@ public class ManagedRepositoryContentMock implements BaseRepositoryContentLayout | |||
.withDataType( BaseDataItemTypes.METADATA ).build(); | |||
} | |||
@Override | |||
public DataItem getMetadataItem( Project project ) | |||
{ | |||
return ArchivaDataItem.withAsset( project.getAsset( ).resolve( "maven-metadata.xml" ) ).withId( "maven-metadata.xml" ) | |||
.withDataType( BaseDataItemTypes.METADATA ).build( ); | |||
} | |||
@Override | |||
public ContentItem toItem( String path ) throws LayoutException | |||
{ |
@@ -1336,6 +1336,13 @@ public class ManagedDefaultRepositoryContent | |||
return getDataItemFromPath( metaPath ); | |||
} | |||
@Override | |||
public DataItem getMetadataItem( Project project ) | |||
{ | |||
StorageAsset metaPath = project.getAsset( ).resolve( MAVEN_METADATA ); | |||
return getDataItemFromPath( metaPath ); | |||
} | |||
@Override | |||
public void deleteVersion( VersionedReference ref ) throws ContentNotFoundException, ContentAccessException |