org.apache.archiva.webdav
Class ArchivaDavResourceFactory

java.lang.Object
  extended by org.apache.archiva.webdav.ArchivaDavResourceFactory
All Implemented Interfaces:
Auditable, org.apache.jackrabbit.webdav.DavResourceFactory

@Service(value="davResourceFactory#archiva")
public class ArchivaDavResourceFactory
extends Object
implements org.apache.jackrabbit.webdav.DavResourceFactory, Auditable


Nested Class Summary
private static class ArchivaDavResourceFactory.LogicalResource
           
 
Field Summary
private  org.springframework.context.ApplicationContext applicationContext
           
private  ArchivaConfiguration archivaConfiguration
           
private  List<AuditListener> auditListeners
           
private  org.codehaus.plexus.digest.ChecksumFile checksum
           
private  RepositoryProxyConnectors connectors
           
private  org.codehaus.plexus.digest.Digester digestMd5
           
private  org.codehaus.plexus.digest.Digester digestSha1
           
private static String HTTP_PUT_METHOD
           
private  org.apache.archiva.redback.integration.filter.authentication.HttpAuthenticator httpAuth
           
private  IndexMerger indexMerger
           
private  org.apache.jackrabbit.webdav.lock.LockManager lockManager
          Lock Manager - use simple implementation from JackRabbit
private  org.slf4j.Logger log
           
private  MetadataTools metadataTools
           
private  MimeTypes mimeTypes
           
private static String PROXIED_SUFFIX
           
private  RemoteRepositoryAdmin remoteRepositoryAdmin
           
private  RepositoryContentFactory repositoryFactory
           
private  RepositoryRequest repositoryRequest
           
private  RepositorySearch repositorySearch
           
private  RepositoryArchivaTaskScheduler scheduler
           
private  ServletAuthenticator servletAuth
           
 
Constructor Summary
ArchivaDavResourceFactory(org.springframework.context.ApplicationContext applicationContext, PlexusSisuBridge plexusSisuBridge, ArchivaConfiguration archivaConfiguration)
           
 
Method Summary
 void addAuditListener(AuditListener listener)
          Add an AuditListener.
protected  File buildMergedIndexDirectory(List<String> repositories, String activePrincipal, org.apache.jackrabbit.webdav.DavServletRequest request, RepositoryGroupConfiguration repositoryGroupConfiguration)
           
private  ArchivaDavResourceLocator checkLocatorIsInstanceOfRepositoryLocator(org.apache.jackrabbit.webdav.DavResourceLocator locator)
           
 void clearAuditListeners()
          Remove all registered AuditListener objects.
private  void createChecksumFile(String path, org.codehaus.plexus.digest.Digester digester)
           
 org.apache.jackrabbit.webdav.DavResource createResource(org.apache.jackrabbit.webdav.DavResourceLocator locator, org.apache.jackrabbit.webdav.DavServletRequest request, org.apache.jackrabbit.webdav.DavServletResponse response)
           
 org.apache.jackrabbit.webdav.DavResource createResource(org.apache.jackrabbit.webdav.DavResourceLocator locator, org.apache.jackrabbit.webdav.DavSession davSession)
           
private  boolean fetchContentFromProxies(ManagedRepositoryContent managedRepository, org.apache.jackrabbit.webdav.DavServletRequest request, ArchivaDavResourceFactory.LogicalResource resource)
           
protected  String getActivePrincipal(org.apache.jackrabbit.webdav.DavServletRequest request)
           
 RemoteRepositoryAdmin getRemoteRepositoryAdmin()
           
private  org.apache.jackrabbit.webdav.DavResource getResourceFromGroup(org.apache.jackrabbit.webdav.DavServletRequest request, List<String> repositories, ArchivaDavResourceLocator locator, RepositoryGroupConfiguration repositoryGroupConfiguration)
           
 void initialize()
           
private  boolean isAllowedToContinue(org.apache.jackrabbit.webdav.DavServletRequest request, List<String> repositories, String activePrincipal)
          Check if the current user is authorized to access any of the repos
protected  boolean isAuthorized(org.apache.jackrabbit.webdav.DavServletRequest request, String repositoryId)
           
private  boolean isProjectReference(String requestedResource)
           
private  org.apache.jackrabbit.webdav.DavResource processRepository(org.apache.jackrabbit.webdav.DavServletRequest request, ArchivaDavResourceLocator archivaLocator, String activePrincipal, ManagedRepositoryContent managedRepository)
           
private  org.apache.jackrabbit.webdav.DavResource processRepositoryGroup(org.apache.jackrabbit.webdav.DavServletRequest request, ArchivaDavResourceLocator archivaLocator, List<String> repositories, String activePrincipal, List<String> resourcesInAbsolutePath, RepositoryGroupConfiguration repoGroupConfig)
           
 void removeAuditListener(AuditListener listener)
          Remove an AuditListener.
 void setArchivaConfiguration(ArchivaConfiguration archivaConfiguration)
           
 void setConnectors(RepositoryProxyConnectors connectors)
           
private  void setHeaders(org.apache.jackrabbit.webdav.DavServletResponse response, org.apache.jackrabbit.webdav.DavResourceLocator locator, org.apache.jackrabbit.webdav.DavResource resource)
           
 void setHttpAuth(org.apache.archiva.redback.integration.filter.authentication.HttpAuthenticator httpAuth)
           
 void setRemoteRepositoryAdmin(RemoteRepositoryAdmin remoteRepositoryAdmin)
           
 void setRepositoryFactory(RepositoryContentFactory repositoryFactory)
           
 void setRepositoryRequest(RepositoryRequest repositoryRequest)
           
 void setScheduler(RepositoryArchivaTaskScheduler scheduler)
           
 void setServletAuth(ServletAuthenticator servletAuth)
           
private  void triggerAuditEvent(String remoteIP, String repositoryId, String resource, String action, String principal)
           
private  File writeMergedMetadataToFile(ArchivaRepositoryMetadata mergedMetadata, String outputFilename)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

PROXIED_SUFFIX

private static final String PROXIED_SUFFIX
See Also:
Constant Field Values

HTTP_PUT_METHOD

private static final String HTTP_PUT_METHOD
See Also:
Constant Field Values

log

private org.slf4j.Logger log

auditListeners

@Inject
private List<AuditListener> auditListeners

repositoryFactory

@Inject
private RepositoryContentFactory repositoryFactory

repositoryRequest

private RepositoryRequest repositoryRequest

connectors

@Inject
@Named(value="repositoryProxyConnectors#default")
private RepositoryProxyConnectors connectors

metadataTools

@Inject
private MetadataTools metadataTools

mimeTypes

@Inject
private MimeTypes mimeTypes

archivaConfiguration

private ArchivaConfiguration archivaConfiguration

servletAuth

@Inject
private ServletAuthenticator servletAuth

httpAuth

@Inject
@Named(value="httpAuthenticator#basic")
private org.apache.archiva.redback.integration.filter.authentication.HttpAuthenticator httpAuth

remoteRepositoryAdmin

@Inject
private RemoteRepositoryAdmin remoteRepositoryAdmin

indexMerger

@Inject
private IndexMerger indexMerger

repositorySearch

@Inject
private RepositorySearch repositorySearch

lockManager

private final org.apache.jackrabbit.webdav.lock.LockManager lockManager
Lock Manager - use simple implementation from JackRabbit


checksum

private org.codehaus.plexus.digest.ChecksumFile checksum

digestSha1

private org.codehaus.plexus.digest.Digester digestSha1

digestMd5

private org.codehaus.plexus.digest.Digester digestMd5

scheduler

@Inject
@Named(value="archivaTaskScheduler#repository")
private RepositoryArchivaTaskScheduler scheduler

applicationContext

private org.springframework.context.ApplicationContext applicationContext
Constructor Detail

ArchivaDavResourceFactory

@Inject
public ArchivaDavResourceFactory(org.springframework.context.ApplicationContext applicationContext,
                                        PlexusSisuBridge plexusSisuBridge,
                                        ArchivaConfiguration archivaConfiguration)
                          throws PlexusSisuBridgeException
Throws:
PlexusSisuBridgeException
Method Detail

initialize

@PostConstruct
public void initialize()

createResource

public org.apache.jackrabbit.webdav.DavResource createResource(org.apache.jackrabbit.webdav.DavResourceLocator locator,
                                                               org.apache.jackrabbit.webdav.DavServletRequest request,
                                                               org.apache.jackrabbit.webdav.DavServletResponse response)
                                                        throws org.apache.jackrabbit.webdav.DavException
Specified by:
createResource in interface org.apache.jackrabbit.webdav.DavResourceFactory
Throws:
org.apache.jackrabbit.webdav.DavException

processRepositoryGroup

private org.apache.jackrabbit.webdav.DavResource processRepositoryGroup(org.apache.jackrabbit.webdav.DavServletRequest request,
                                                                        ArchivaDavResourceLocator archivaLocator,
                                                                        List<String> repositories,
                                                                        String activePrincipal,
                                                                        List<String> resourcesInAbsolutePath,
                                                                        RepositoryGroupConfiguration repoGroupConfig)
                                                                 throws org.apache.jackrabbit.webdav.DavException
Throws:
org.apache.jackrabbit.webdav.DavException

processRepository

private org.apache.jackrabbit.webdav.DavResource processRepository(org.apache.jackrabbit.webdav.DavServletRequest request,
                                                                   ArchivaDavResourceLocator archivaLocator,
                                                                   String activePrincipal,
                                                                   ManagedRepositoryContent managedRepository)
                                                            throws org.apache.jackrabbit.webdav.DavException
Throws:
org.apache.jackrabbit.webdav.DavException

createResource

public org.apache.jackrabbit.webdav.DavResource createResource(org.apache.jackrabbit.webdav.DavResourceLocator locator,
                                                               org.apache.jackrabbit.webdav.DavSession davSession)
                                                        throws org.apache.jackrabbit.webdav.DavException
Specified by:
createResource in interface org.apache.jackrabbit.webdav.DavResourceFactory
Throws:
org.apache.jackrabbit.webdav.DavException

fetchContentFromProxies

private boolean fetchContentFromProxies(ManagedRepositoryContent managedRepository,
                                        org.apache.jackrabbit.webdav.DavServletRequest request,
                                        ArchivaDavResourceFactory.LogicalResource resource)
                                 throws org.apache.jackrabbit.webdav.DavException
Throws:
org.apache.jackrabbit.webdav.DavException

triggerAuditEvent

private void triggerAuditEvent(String remoteIP,
                               String repositoryId,
                               String resource,
                               String action,
                               String principal)

addAuditListener

public void addAuditListener(AuditListener listener)
Description copied from interface: Auditable
Add an AuditListener.

Specified by:
addAuditListener in interface Auditable

clearAuditListeners

public void clearAuditListeners()
Description copied from interface: Auditable
Remove all registered AuditListener objects.

Specified by:
clearAuditListeners in interface Auditable

removeAuditListener

public void removeAuditListener(AuditListener listener)
Description copied from interface: Auditable
Remove an AuditListener.

Specified by:
removeAuditListener in interface Auditable

setHeaders

private void setHeaders(org.apache.jackrabbit.webdav.DavServletResponse response,
                        org.apache.jackrabbit.webdav.DavResourceLocator locator,
                        org.apache.jackrabbit.webdav.DavResource resource)

checkLocatorIsInstanceOfRepositoryLocator

private ArchivaDavResourceLocator checkLocatorIsInstanceOfRepositoryLocator(org.apache.jackrabbit.webdav.DavResourceLocator locator)
                                                                     throws org.apache.jackrabbit.webdav.DavException
Throws:
org.apache.jackrabbit.webdav.DavException

isAuthorized

protected boolean isAuthorized(org.apache.jackrabbit.webdav.DavServletRequest request,
                               String repositoryId)
                        throws org.apache.jackrabbit.webdav.DavException
Throws:
org.apache.jackrabbit.webdav.DavException

getResourceFromGroup

private org.apache.jackrabbit.webdav.DavResource getResourceFromGroup(org.apache.jackrabbit.webdav.DavServletRequest request,
                                                                      List<String> repositories,
                                                                      ArchivaDavResourceLocator locator,
                                                                      RepositoryGroupConfiguration repositoryGroupConfiguration)
                                                               throws org.apache.jackrabbit.webdav.DavException
Throws:
org.apache.jackrabbit.webdav.DavException

getActivePrincipal

protected String getActivePrincipal(org.apache.jackrabbit.webdav.DavServletRequest request)

isAllowedToContinue

private boolean isAllowedToContinue(org.apache.jackrabbit.webdav.DavServletRequest request,
                                    List<String> repositories,
                                    String activePrincipal)
Check if the current user is authorized to access any of the repos

Parameters:
request -
repositories -
activePrincipal -
Returns:

writeMergedMetadataToFile

private File writeMergedMetadataToFile(ArchivaRepositoryMetadata mergedMetadata,
                                       String outputFilename)
                                throws RepositoryMetadataException,
                                       org.codehaus.plexus.digest.DigesterException,
                                       IOException
Throws:
RepositoryMetadataException
org.codehaus.plexus.digest.DigesterException
IOException

createChecksumFile

private void createChecksumFile(String path,
                                org.codehaus.plexus.digest.Digester digester)
                         throws org.codehaus.plexus.digest.DigesterException,
                                IOException
Throws:
org.codehaus.plexus.digest.DigesterException
IOException

isProjectReference

private boolean isProjectReference(String requestedResource)

buildMergedIndexDirectory

protected File buildMergedIndexDirectory(List<String> repositories,
                                         String activePrincipal,
                                         org.apache.jackrabbit.webdav.DavServletRequest request,
                                         RepositoryGroupConfiguration repositoryGroupConfiguration)
                                  throws org.apache.jackrabbit.webdav.DavException
Throws:
org.apache.jackrabbit.webdav.DavException

setServletAuth

public void setServletAuth(ServletAuthenticator servletAuth)

setHttpAuth

public void setHttpAuth(org.apache.archiva.redback.integration.filter.authentication.HttpAuthenticator httpAuth)

setScheduler

public void setScheduler(RepositoryArchivaTaskScheduler scheduler)

setArchivaConfiguration

public void setArchivaConfiguration(ArchivaConfiguration archivaConfiguration)

setRepositoryFactory

public void setRepositoryFactory(RepositoryContentFactory repositoryFactory)

setRepositoryRequest

public void setRepositoryRequest(RepositoryRequest repositoryRequest)

setConnectors

public void setConnectors(RepositoryProxyConnectors connectors)

getRemoteRepositoryAdmin

public RemoteRepositoryAdmin getRemoteRepositoryAdmin()

setRemoteRepositoryAdmin

public void setRemoteRepositoryAdmin(RemoteRepositoryAdmin remoteRepositoryAdmin)


Copyright © 2006-2013 The Apache Software Foundation. All Rights Reserved.