Search in sources :

Example 16 with ArchivaRestServiceException

use of org.apache.archiva.rest.api.services.ArchivaRestServiceException in project archiva by apache.

the class DefaultFileUploadService method post.

@Override
public FileMetadata post(MultipartBody multipartBody) throws ArchivaRestServiceException {
    try {
        String classifier = getStringValue(multipartBody, "classifier");
        String packaging = getStringValue(multipartBody, "packaging");
        // skygo: http header form pomFile was once sending 1 for true and void for false
        // leading to permanent false value for pomFile if using toBoolean(); use , "1", ""
        boolean pomFile = BooleanUtils.toBoolean(getStringValue(multipartBody, "pomFile"));
        Attachment file = multipartBody.getAttachment("files[]");
        // Content-Disposition: form-data; name="files[]"; filename="org.apache.karaf.features.command-2.2.2.jar"
        String fileName = file.getContentDisposition().getParameter("filename");
        Path tmpFile = Files.createTempFile("upload-artifact", ".tmp");
        tmpFile.toFile().deleteOnExit();
        IOUtils.copy(file.getDataHandler().getInputStream(), new FileOutputStream(tmpFile.toFile()));
        FileMetadata fileMetadata = new FileMetadata(fileName, Files.size(tmpFile), "theurl");
        fileMetadata.setServerFileName(tmpFile.toString());
        fileMetadata.setClassifier(classifier);
        fileMetadata.setDeleteUrl(tmpFile.getFileName().toString());
        fileMetadata.setPomFile(pomFile);
        fileMetadata.setPackaging(packaging);
        log.info("uploading file: {}", fileMetadata);
        List<FileMetadata> fileMetadatas = getSessionFilesList();
        fileMetadatas.add(fileMetadata);
        return fileMetadata;
    } catch (IOException e) {
        throw new ArchivaRestServiceException(e.getMessage(), Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), e);
    }
}
Also used : Path(java.nio.file.Path) FileOutputStream(java.io.FileOutputStream) ArchivaRestServiceException(org.apache.archiva.rest.api.services.ArchivaRestServiceException) FileMetadata(org.apache.archiva.web.model.FileMetadata) Attachment(org.apache.cxf.jaxrs.ext.multipart.Attachment) IOException(java.io.IOException)

Example 17 with ArchivaRestServiceException

use of org.apache.archiva.rest.api.services.ArchivaRestServiceException in project archiva by apache.

the class DefaultMergeRepositoriesService method doMerge.

protected void doMerge(String sourceRepositoryId, String targetRepositoryId) throws RepositoryMergerException, ArchivaRestServiceException {
    RepositorySession repositorySession = repositorySessionFactory.createSession();
    try {
        ManagedRepository repository = managedRepositoryAdmin.getManagedRepository(targetRepositoryId);
        MetadataRepository metadataRepository = repositorySession.getRepository();
        List<ArtifactMetadata> sourceArtifacts = metadataRepository.getArtifacts(sourceRepositoryId);
        if (repository.isReleases() && !repository.isSnapshots()) {
            mergeWithOutSnapshots(metadataRepository, sourceArtifacts, sourceRepositoryId, targetRepositoryId);
        } else {
            repositoryMerger.merge(metadataRepository, sourceRepositoryId, targetRepositoryId);
            for (ArtifactMetadata metadata : sourceArtifacts) {
                triggerAuditEvent(targetRepositoryId, metadata.getId(), AuditEvent.MERGING_REPOSITORIES);
            }
        }
        doScanRepository(targetRepositoryId, false);
    } catch (MetadataRepositoryException e) {
        throw new ArchivaRestServiceException(e.getMessage(), e);
    } catch (RepositoryAdminException e) {
        throw new ArchivaRestServiceException(e.getMessage(), e);
    } finally {
        repositorySession.close();
    }
}
Also used : MetadataRepositoryException(org.apache.archiva.metadata.repository.MetadataRepositoryException) MetadataRepository(org.apache.archiva.metadata.repository.MetadataRepository) ManagedRepository(org.apache.archiva.admin.model.beans.ManagedRepository) ArchivaRestServiceException(org.apache.archiva.rest.api.services.ArchivaRestServiceException) RepositoryAdminException(org.apache.archiva.admin.model.RepositoryAdminException) RepositorySession(org.apache.archiva.metadata.repository.RepositorySession) ArtifactMetadata(org.apache.archiva.metadata.model.ArtifactMetadata)

Example 18 with ArchivaRestServiceException

use of org.apache.archiva.rest.api.services.ArchivaRestServiceException in project archiva by apache.

the class DefaultMergeRepositoriesService method mergeBySkippingConflicts.

public void mergeBySkippingConflicts(String sourceRepositoryId, String targetRepositoryId) throws RepositoryMergerException, ArchivaRestServiceException {
    RepositorySession repositorySession = repositorySessionFactory.createSession();
    try {
        List<ArtifactMetadata> conflictSourceArtifacts = repositoryMerger.getConflictingArtifacts(repositorySession.getRepository(), sourceRepositoryId, targetRepositoryId);
        MetadataRepository metadataRepository = repositorySession.getRepository();
        List<ArtifactMetadata> sourceArtifacts = metadataRepository.getArtifacts(sourceRepositoryId);
        sourceArtifacts.removeAll(conflictSourceArtifacts);
        ManagedRepository repository = managedRepositoryAdmin.getManagedRepository(targetRepositoryId);
        if (repository.isReleases() && !repository.isSnapshots()) {
            mergeWithOutSnapshots(metadataRepository, sourceArtifacts, sourceRepositoryId, targetRepositoryId);
        } else {
            Filter<ArtifactMetadata> artifactsWithOutConflicts = new IncludesFilter<ArtifactMetadata>(sourceArtifacts);
            repositoryMerger.merge(metadataRepository, sourceRepositoryId, targetRepositoryId, artifactsWithOutConflicts);
            for (ArtifactMetadata metadata : sourceArtifacts) {
                triggerAuditEvent(targetRepositoryId, metadata.getId(), AuditEvent.MERGING_REPOSITORIES);
            }
        }
        doScanRepository(targetRepositoryId, false);
    } catch (MetadataRepositoryException e) {
        throw new ArchivaRestServiceException(e.getMessage(), e);
    } catch (RepositoryAdminException e) {
        throw new ArchivaRestServiceException(e.getMessage(), e);
    } finally {
        repositorySession.close();
    }
}
Also used : MetadataRepositoryException(org.apache.archiva.metadata.repository.MetadataRepositoryException) MetadataRepository(org.apache.archiva.metadata.repository.MetadataRepository) ManagedRepository(org.apache.archiva.admin.model.beans.ManagedRepository) IncludesFilter(org.apache.archiva.metadata.repository.filter.IncludesFilter) ArchivaRestServiceException(org.apache.archiva.rest.api.services.ArchivaRestServiceException) RepositoryAdminException(org.apache.archiva.admin.model.RepositoryAdminException) RepositorySession(org.apache.archiva.metadata.repository.RepositorySession) ArtifactMetadata(org.apache.archiva.metadata.model.ArtifactMetadata)

Example 19 with ArchivaRestServiceException

use of org.apache.archiva.rest.api.services.ArchivaRestServiceException in project archiva by apache.

the class AbstractRestService method buildArtifacts.

protected List<Artifact> buildArtifacts(Collection<ArtifactMetadata> artifactMetadatas, String repositoryId) throws ArchivaRestServiceException {
    try {
        if (artifactMetadatas != null && !artifactMetadatas.isEmpty()) {
            List<Artifact> artifacts = new ArrayList<>(artifactMetadatas.size());
            for (ArtifactMetadata artifact : artifactMetadatas) {
                String repoId = repositoryId != null ? repositoryId : artifact.getRepositoryId();
                if (repoId == null) {
                    throw new IllegalStateException("Repository Id is null");
                }
                ManagedRepository repo = repositoryRegistry.getManagedRepository(repoId);
                if (repo == null) {
                    throw new RepositoryException("Repository not found " + repoId);
                }
                ManagedRepositoryContent content = repo.getContent();
                ArtifactBuilder builder = new ArtifactBuilder().forArtifactMetadata(artifact).withManagedRepositoryContent(content);
                Artifact art = builder.build();
                art.setUrl(getArtifactUrl(art, repositoryId));
                artifacts.add(art);
            }
            return artifacts;
        }
        return Collections.emptyList();
    } catch (RepositoryException e) {
        log.error(e.getMessage(), e);
        throw new ArchivaRestServiceException(e.getMessage(), Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), e);
    }
}
Also used : ManagedRepository(org.apache.archiva.repository.ManagedRepository) ArchivaRestServiceException(org.apache.archiva.rest.api.services.ArchivaRestServiceException) ArrayList(java.util.ArrayList) ManagedRepositoryContent(org.apache.archiva.repository.ManagedRepositoryContent) RepositoryException(org.apache.archiva.repository.RepositoryException) ArtifactMetadata(org.apache.archiva.metadata.model.ArtifactMetadata) ArtifactBuilder(org.apache.archiva.rest.services.utils.ArtifactBuilder) Artifact(org.apache.archiva.maven2.model.Artifact)

Example 20 with ArchivaRestServiceException

use of org.apache.archiva.rest.api.services.ArchivaRestServiceException in project archiva by apache.

the class AbstractRestService method getArtifactUrl.

protected String getArtifactUrl(Artifact artifact, String repositoryId) throws ArchivaRestServiceException {
    try {
        if (httpServletRequest == null) {
            return null;
        }
        StringBuilder sb = new StringBuilder(getBaseUrl());
        sb.append("/repository");
        // we must replace it with a valid managed one available for the user.
        if (StringUtils.isEmpty(repositoryId)) {
            List<String> userRepos = userRepositories.getObservableRepositoryIds(getPrincipal());
            // if not search the repo who is proxy for this remote
            if (!userRepos.contains(artifact.getContext())) {
                for (Map.Entry<String, List<ProxyConnector>> entry : proxyConnectorAdmin.getProxyConnectorAsMap().entrySet()) {
                    for (ProxyConnector proxyConnector : entry.getValue()) {
                        if (StringUtils.equals("remote-" + proxyConnector.getTargetRepoId(), // 
                        artifact.getContext()) && userRepos.contains(entry.getKey())) {
                            sb.append('/').append(entry.getKey());
                        }
                    }
                }
            } else {
                sb.append('/').append(artifact.getContext());
            }
        } else {
            sb.append('/').append(repositoryId);
        }
        sb.append('/').append(StringUtils.replaceChars(artifact.getGroupId(), '.', '/'));
        sb.append('/').append(artifact.getArtifactId());
        if (VersionUtil.isSnapshot(artifact.getVersion())) {
            sb.append('/').append(VersionUtil.getBaseVersion(artifact.getVersion()));
        } else {
            sb.append('/').append(artifact.getVersion());
        }
        sb.append('/').append(artifact.getArtifactId());
        sb.append('-').append(artifact.getVersion());
        if (StringUtils.isNotBlank(artifact.getClassifier())) {
            sb.append('-').append(artifact.getClassifier());
        }
        // maven-plugin packaging is a jar
        if (StringUtils.equals("maven-plugin", artifact.getPackaging())) {
            sb.append("jar");
        } else {
            sb.append('.').append(artifact.getFileExtension());
        }
        return sb.toString();
    } catch (Exception e) {
        throw new ArchivaRestServiceException(e.getMessage(), Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), e);
    }
}
Also used : ArchivaRestServiceException(org.apache.archiva.rest.api.services.ArchivaRestServiceException) List(java.util.List) ArrayList(java.util.ArrayList) ProxyConnector(org.apache.archiva.admin.model.beans.ProxyConnector) Map(java.util.Map) PropertyMap(org.modelmapper.PropertyMap) HashMap(java.util.HashMap) ArchivaSecurityException(org.apache.archiva.security.ArchivaSecurityException) TaskQueueException(org.apache.archiva.redback.components.taskqueue.TaskQueueException) ArchivaRestServiceException(org.apache.archiva.rest.api.services.ArchivaRestServiceException) PrincipalNotFoundException(org.apache.archiva.security.PrincipalNotFoundException) RepositoryAdminException(org.apache.archiva.admin.model.RepositoryAdminException) RepositoryException(org.apache.archiva.repository.RepositoryException) AccessDeniedException(org.apache.archiva.security.AccessDeniedException)

Aggregations

ArchivaRestServiceException (org.apache.archiva.rest.api.services.ArchivaRestServiceException)44 RepositoryAdminException (org.apache.archiva.admin.model.RepositoryAdminException)18 MetadataRepositoryException (org.apache.archiva.metadata.repository.MetadataRepositoryException)16 RepositorySession (org.apache.archiva.metadata.repository.RepositorySession)15 RepositoryException (org.apache.archiva.repository.RepositoryException)13 ManagedRepositoryContent (org.apache.archiva.repository.ManagedRepositoryContent)11 MetadataRepository (org.apache.archiva.metadata.repository.MetadataRepository)10 ArrayList (java.util.ArrayList)9 IOException (java.io.IOException)8 Path (java.nio.file.Path)8 ManagedRepository (org.apache.archiva.admin.model.beans.ManagedRepository)8 MetadataResolutionException (org.apache.archiva.metadata.repository.MetadataResolutionException)8 ArtifactMetadata (org.apache.archiva.metadata.model.ArtifactMetadata)7 Artifact (org.apache.archiva.maven2.model.Artifact)6 RepositorySearchException (org.apache.archiva.indexer.search.RepositorySearchException)5 MetadataResolver (org.apache.archiva.metadata.repository.MetadataResolver)5 ArtifactReference (org.apache.archiva.model.ArtifactReference)5 SearchResults (org.apache.archiva.indexer.search.SearchResults)4 ArchivaArtifact (org.apache.archiva.model.ArchivaArtifact)4 RepositoryNotFoundException (org.apache.archiva.repository.RepositoryNotFoundException)4