private void deleteSilently( Path path ) { try { Files.deleteIfExists( path ); triggerAuditEvent( repository.getRepository( ).getId( ), path.toString( ), AuditEvent.PURGE_FILE ); } catch ( IOException e ) { log.error( "Error occured during file deletion {}: {} ", path, e.getMessage( ), e ); } }
/** * <p> * This find support files for the artifactFile and deletes them. * </p> * <p> * Support Files are things like ".sha1", ".md5", ".asc", etc. * </p> * * @param artifactFile the file to base off of. */ private void purgeSupportFiles( File artifactFile ) { File parentDir = artifactFile.getParentFile(); if ( !parentDir.exists() ) { return; } FilenameFilter filter = new ArtifactFilenameFilter( artifactFile.getName() ); File[] files = parentDir.listFiles( filter ); for ( File file : files ) { if ( file.exists() && file.isFile() ) { String fileName = file.getName(); file.delete(); // TODO: log that it was deleted triggerAuditEvent( repository.getRepository().getId(), fileName, AuditEvent.PURGE_FILE ); } } }
private String evaluatePathWithVersion( ArchivaDavResourceLocator archivaLocator, // ManagedRepositoryContent managedRepositoryContent, // String contextPath ) throws DavException { String layout = managedRepositoryContent.getRepository() == null ? "default" : managedRepositoryContent.getRepository().getLayout(); RepositoryStorage repositoryStorage = this.applicationContext.getBean( "repositoryStorage#" + layout, RepositoryStorage.class ); try { return repositoryStorage.getFilePathWithVersion( archivaLocator.getResourcePath(), // managedRepositoryContent ); } catch ( RelocationException e ) { String path = e.getPath(); log.debug( "Relocation to {}", path ); throw new BrowserRedirectException( addHrefPrefix( contextPath, path ), e.getRelocationType() ); } catch ( XMLException e ) { log.error( e.getMessage(), e ); throw new DavException( HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e ); } }
public ManagedRepositoryContent getManagedRepositoryContent( org.apache.archiva.repository.ManagedRepository mRepo ) throws RepositoryException { final String id = mRepo.getId(); ManagedRepositoryContent content = managedContentMap.get( id ); if ( content != null && content.getRepository()==mRepo) { return content; } RepositoryContentProvider contentProvider = getProvider( mRepo.getLayout( ), mRepo.getType( ) ); content = contentProvider.createManagedContent( mRepo ); if (content==null) { throw new RepositoryException( "Could not create repository content instance for "+mRepo.getId() ); } ManagedRepositoryContent previousContent = managedContentMap.put( id, content ); if (previousContent!=null) { previousContent.setRepository( null ); } return content; }
IndexCreationFeature idf = managedRepository.getRepository().getFeature(IndexCreationFeature.class).get(); String repoIndexDirectory = idf.getIndexPath().toString(); if ( StringUtils.isNotEmpty( repoIndexDirectory ) ) repoIndexDirectory = Paths.get( managedRepository.getRepository().getLocation() ).resolve( StringUtils.isEmpty( repoIndexDirectory ) ? ".indexer" repoIndexDirectory = Paths.get( managedRepository.getRepository().getLocation() ).resolve( ".indexer" ).toAbsolutePath().toString();
return getFilePath( requestPath, managedRepositoryContent.getRepository() ); String filePath = getFilePath( requestPath, managedRepositoryContent.getRepository() ); + "-" + buildNumber ); throw new RelocationException( "/repository/" + managedRepositoryContent.getRepository().getId() + ( StringUtils.startsWith( filePath, "/" ) ? "" : "/" ) + filePath, RelocationException.RelocationType.TEMPORARY );
return getFilePath( requestPath, managedRepositoryContent.getRepository() ); String filePath = getFilePath( requestPath, managedRepositoryContent.getRepository() ); + "-" + buildNumber ); throw new RelocationException( "/repository/" + managedRepositoryContent.getRepository().getId() + ( StringUtils.startsWith( filePath, "/" ) ? "" : "/" ) + filePath, RelocationException.RelocationType.TEMPORARY );
queueRepositoryTask( connector.getSourceRepository().getRepository().getId(), resource );
queueRepositoryTask( connector.getSourceRepository().getRepository().getId(), resource );
Path resourceFile = Paths.get( managedRepositoryContent.getRepoRoot(), path ); resource = new ArchivaDavResource( resourceFile.toAbsolutePath().toString(), path, managedRepositoryContent.getRepository(), request.getRemoteAddr(), activePrincipal, request.getDavSession(), archivaLocator, this, mimeTypes, auditListeners, scheduler, fileLockManager ); resource = new ArchivaDavResource( resourceFile.toAbsolutePath().toString(), logicalResource.getPath(), managedRepositoryContent.getRepository(), request.getRemoteAddr(), activePrincipal, request.getDavSession(), archivaLocator, this, mimeTypes, if ( managedRepositoryContent.getRepository().getActiveReleaseSchemes().contains( ReleaseScheme.RELEASE ) && !repositoryRequest.isMetadata( resourcePath ) && !repositoryRequest.isSupportFile( resourcePath ) ) && managedRepositoryContent.getRepository().blocksRedeployments())
triggerAuditEvent( repository.getRepository( ).getId( ), ArtifactReference.toKey( reference ), AuditEvent.PURGE_ARTIFACT ); purgeSupportFiles( artifactFile );
String repositoryLayout = managedRepository.getRepository().getLayout();
triggerAuditEvent( repository.getRepository().getId(), ArtifactReference.toKey( reference ), AuditEvent.PURGE_ARTIFACT ); purgeSupportFiles( artifactFile );