Author: olamy
Date: Mon Oct 15 12:12:43 2012
New Revision: 1398262
URL: http://svn.apache.org/viewvc?rev=1398262&view=rev
Log:
[MRM-1693] exposing index downloaded from remote repositories
Modified:
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/remote/DefaultRemoteRepositoryAdmin.java
archiva/trunk/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/archiva/webdav/ArchivaDavResourceFactory.java
Modified:
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/remote/DefaultRemoteRepositoryAdmin.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/remote/DefaultRemoteRepositoryAdmin.java?rev=1398262&r1=1398261&r2=1398262&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/remote/DefaultRemoteRepositoryAdmin.java
(original)
+++
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/remote/DefaultRemoteRepositoryAdmin.java
Mon Oct 15 12:12:43 2012
@@ -52,7 +52,7 @@ import java.util.Map;
* @author Olivier Lamy
* @since 1.4-M1
*/
-@Service( "remoteRepositoryAdmin#default" )
+@Service ( "remoteRepositoryAdmin#default" )
public class DefaultRemoteRepositoryAdmin
extends AbstractRepositoryAdmin
implements RemoteRepositoryAdmin
@@ -268,13 +268,34 @@ public class DefaultRemoteRepositoryAdmi
{
return indexingContext;
}
- // create path
+ // create remote repository path
File repoDir = new File( appServerBase, "data/remotes/" +
remoteRepository.getId() );
if ( !repoDir.exists() )
{
repoDir.mkdirs();
}
- File indexDirectory = new File( repoDir, ".index" );
+
+ File indexDirectory = null;
+
+ // is there configured indexDirectory ?
+ String indexDirectoryPath = remoteRepository.getIndexDirectory();
+
+ if ( StringUtils.isNotBlank( indexDirectoryPath ) )
+ {
+ if ( new File( indexDirectoryPath ).isAbsolute() )
+ {
+ indexDirectory = new File( indexDirectoryPath );
+ }
+ else
+ {
+ indexDirectory = new File( repoDir, indexDirectoryPath );
+ }
+ }
+ // if not configured use a default value
+ if ( indexDirectory == null )
+ {
+ indexDirectory = new File( repoDir, ".index" );
+ }
if ( !indexDirectory.exists() )
{
indexDirectory.mkdirs();
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/archiva/webdav/ArchivaDavResourceFactory.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/archiva/webdav/ArchivaDavResourceFactory.java?rev=1398262&r1=1398261&r2=1398262&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/archiva/webdav/ArchivaDavResourceFactory.java
(original)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/archiva/webdav/ArchivaDavResourceFactory.java
Mon Oct 15 12:12:43 2012
@@ -20,6 +20,8 @@ package org.apache.archiva.webdav;
*/
import org.apache.archiva.admin.model.RepositoryAdminException;
+import org.apache.archiva.admin.model.beans.RemoteRepository;
+import org.apache.archiva.admin.model.remote.RemoteRepositoryAdmin;
import org.apache.archiva.audit.AuditEvent;
import org.apache.archiva.audit.AuditListener;
import org.apache.archiva.audit.Auditable;
@@ -179,6 +181,9 @@ public class ArchivaDavResourceFactory
private HttpAuthenticator httpAuth;
@Inject
+ private RemoteRepositoryAdmin remoteRepositoryAdmin;
+
+ @Inject
private IndexMerger indexMerger;
@Inject
@@ -277,6 +282,32 @@ public class ArchivaDavResourceFactory
}
else
{
+
+ try
+ {
+ RemoteRepository remoteRepository =
+ remoteRepositoryAdmin.getRemoteRepository(
archivaLocator.getRepositoryId() );
+
+ if ( remoteRepository != null )
+ {
+ String logicalResource =
RepositoryPathUtil.getLogicalResource( locator.getResourcePath() );
+ IndexingContext indexingContext =
remoteRepositoryAdmin.createIndexContext( remoteRepository );
+ File resourceFile = StringUtils.equals( logicalResource,
"/" )
+ ? new File(
indexingContext.getIndexDirectoryFile().getParent() )
+ : new File(
indexingContext.getIndexDirectoryFile().getParent(), logicalResource );
+ resource = new ArchivaDavResource(
resourceFile.getAbsolutePath(), locator.getResourcePath(), null,
+
request.getRemoteAddr(), activePrincipal,
+
request.getDavSession(), archivaLocator, this, mimeTypes,
+ auditListeners,
scheduler );
+ return resource;
+ }
+ }
+ catch ( RepositoryAdminException e )
+ {
+ log.debug( "RepositoryException remote repository with d'{}'
not found, msg: {}",
+ archivaLocator.getRepositoryId(), e.getMessage() );
+ }
+
ManagedRepositoryContent managedRepository = null;
try
@@ -592,8 +623,8 @@ public class ArchivaDavResourceFactory
if ( managedRepository.hasContent( artifact )
&&
managedRepository.getRepository().isBlockRedeployments() )
{
- log.warn( "Overwriting released artifacts in
repository '" + managedRepository.getId()
- + "' is not allowed." );
+ log.warn( "Overwriting released artifacts in
repository '{}' is not allowed.",
+ managedRepository.getId() );
throw new DavException(
HttpServletResponse.SC_CONFLICT,
"Overwriting released
artifacts is not allowed." );
}