mirror of https://github.com/apache/archiva.git
[MRM-1693] exposing index downloaded from remote repositories
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1398262 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
c472f04353
commit
7f2fbd20e0
|
@ -52,7 +52,7 @@ import java.util.Map;
|
||||||
* @author Olivier Lamy
|
* @author Olivier Lamy
|
||||||
* @since 1.4-M1
|
* @since 1.4-M1
|
||||||
*/
|
*/
|
||||||
@Service( "remoteRepositoryAdmin#default" )
|
@Service ( "remoteRepositoryAdmin#default" )
|
||||||
public class DefaultRemoteRepositoryAdmin
|
public class DefaultRemoteRepositoryAdmin
|
||||||
extends AbstractRepositoryAdmin
|
extends AbstractRepositoryAdmin
|
||||||
implements RemoteRepositoryAdmin
|
implements RemoteRepositoryAdmin
|
||||||
|
@ -268,13 +268,34 @@ public class DefaultRemoteRepositoryAdmin
|
||||||
{
|
{
|
||||||
return indexingContext;
|
return indexingContext;
|
||||||
}
|
}
|
||||||
// create path
|
// create remote repository path
|
||||||
File repoDir = new File( appServerBase, "data/remotes/" + remoteRepository.getId() );
|
File repoDir = new File( appServerBase, "data/remotes/" + remoteRepository.getId() );
|
||||||
if ( !repoDir.exists() )
|
if ( !repoDir.exists() )
|
||||||
{
|
{
|
||||||
repoDir.mkdirs();
|
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() )
|
if ( !indexDirectory.exists() )
|
||||||
{
|
{
|
||||||
indexDirectory.mkdirs();
|
indexDirectory.mkdirs();
|
||||||
|
|
|
@ -20,6 +20,8 @@ package org.apache.archiva.webdav;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import org.apache.archiva.admin.model.RepositoryAdminException;
|
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.AuditEvent;
|
||||||
import org.apache.archiva.audit.AuditListener;
|
import org.apache.archiva.audit.AuditListener;
|
||||||
import org.apache.archiva.audit.Auditable;
|
import org.apache.archiva.audit.Auditable;
|
||||||
|
@ -178,6 +180,9 @@ public class ArchivaDavResourceFactory
|
||||||
@Named ( value = "httpAuthenticator#basic" )
|
@Named ( value = "httpAuthenticator#basic" )
|
||||||
private HttpAuthenticator httpAuth;
|
private HttpAuthenticator httpAuth;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private RemoteRepositoryAdmin remoteRepositoryAdmin;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private IndexMerger indexMerger;
|
private IndexMerger indexMerger;
|
||||||
|
|
||||||
|
@ -277,6 +282,32 @@ public class ArchivaDavResourceFactory
|
||||||
}
|
}
|
||||||
else
|
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;
|
ManagedRepositoryContent managedRepository = null;
|
||||||
|
|
||||||
try
|
try
|
||||||
|
@ -592,8 +623,8 @@ public class ArchivaDavResourceFactory
|
||||||
if ( managedRepository.hasContent( artifact )
|
if ( managedRepository.hasContent( artifact )
|
||||||
&& managedRepository.getRepository().isBlockRedeployments() )
|
&& managedRepository.getRepository().isBlockRedeployments() )
|
||||||
{
|
{
|
||||||
log.warn( "Overwriting released artifacts in repository '" + managedRepository.getId()
|
log.warn( "Overwriting released artifacts in repository '{}' is not allowed.",
|
||||||
+ "' is not allowed." );
|
managedRepository.getId() );
|
||||||
throw new DavException( HttpServletResponse.SC_CONFLICT,
|
throw new DavException( HttpServletResponse.SC_CONFLICT,
|
||||||
"Overwriting released artifacts is not allowed." );
|
"Overwriting released artifacts is not allowed." );
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue