package org.apache.archiva.rest.services; /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ import org.apache.archiva.admin.model.RepositoryAdminException; import org.apache.archiva.admin.model.admin.ArchivaAdministration; import org.apache.archiva.admin.model.beans.FileType; import org.apache.archiva.admin.model.beans.LegacyArtifactPath; import org.apache.archiva.admin.model.beans.NetworkConfiguration; import org.apache.archiva.admin.model.beans.OrganisationInformation; import org.apache.archiva.admin.model.beans.UiConfiguration; import org.apache.archiva.repository.scanner.RepositoryContentConsumers; import org.apache.archiva.rest.api.model.AdminRepositoryConsumer; import org.apache.archiva.rest.api.services.ArchivaAdministrationService; import org.apache.archiva.rest.api.services.ArchivaRestServiceException; import org.apache.archiva.rest.services.utils.AddAdminRepoConsumerClosure; import org.apache.archiva.rest.services.utils.AdminRepositoryConsumerComparator; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; import javax.inject.Inject; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * @author Olivier Lamy * @since 1.4-M1 */ @Service ( "archivaAdministrationService#default" ) public class DefaultArchivaAdministrationService extends AbstractRestService implements ArchivaAdministrationService { @Inject private ArchivaAdministration archivaAdministration; @Inject private RepositoryContentConsumers repoConsumerUtil; @Override public List<LegacyArtifactPath> getLegacyArtifactPaths() throws ArchivaRestServiceException { try { return archivaAdministration.getLegacyArtifactPaths(); } catch ( RepositoryAdminException e ) { throw new ArchivaRestServiceException( e.getMessage(), e ); } } @Override public Boolean deleteLegacyArtifactPath( String path ) throws ArchivaRestServiceException { try { archivaAdministration.deleteLegacyArtifactPath( path, getAuditInformation() ); return Boolean.TRUE; } catch ( RepositoryAdminException e ) { throw new ArchivaRestServiceException( e.getMessage(), e ); } } @Override public Boolean addFileTypePattern( String fileTypeId, String pattern ) throws ArchivaRestServiceException { try { archivaAdministration.addFileTypePattern( fileTypeId, pattern, getAuditInformation() ); return Boolean.TRUE; } catch ( RepositoryAdminException e ) { throw new ArchivaRestServiceException( e.getMessage(), e ); } } @Override public Boolean removeFileTypePattern( String fileTypeId, String pattern ) throws ArchivaRestServiceException { try { archivaAdministration.removeFileTypePattern( fileTypeId, pattern, getAuditInformation() ); return Boolean.TRUE; } catch ( RepositoryAdminException e ) { throw new ArchivaRestServiceException( e.getMessage(), e ); } } @Override public FileType getFileType( String fileTypeId ) throws ArchivaRestServiceException { try { return archivaAdministration.getFileType( fileTypeId ); } catch ( RepositoryAdminException e ) { throw new ArchivaRestServiceException( e.getMessage(), e ); } } @Override public void addFileType( FileType fileType ) throws ArchivaRestServiceException { try { archivaAdministration.addFileType( fileType, getAuditInformation() ); } catch ( RepositoryAdminException e ) { throw new ArchivaRestServiceException( e.getMessage(), e ); } } @Override public Boolean removeFileType( String fileTypeId ) throws ArchivaRestServiceException { try { archivaAdministration.removeFileType( fileTypeId, getAuditInformation() ); return Boolean.TRUE; } catch ( RepositoryAdminException e ) { throw new ArchivaRestServiceException( e.getMessage(), e ); } } @Override public Boolean enabledKnownContentConsumer( String knownContentConsumer ) throws ArchivaRestServiceException { try { archivaAdministration.addKnownContentConsumer( knownContentConsumer, getAuditInformation() ); return Boolean.TRUE; } catch ( RepositoryAdminException e ) { throw new ArchivaRestServiceException( e.getMessage(), e ); } } @Override public void enabledKnownContentConsumers( List<String> knownContentConsumers ) throws ArchivaRestServiceException { try { archivaAdministration.setKnownContentConsumers( knownContentConsumers, getAuditInformation() ); } catch ( RepositoryAdminException e ) { throw new ArchivaRestServiceException( e.getMessage(), e ); } } @Override public Boolean disabledKnownContentConsumer( String knownContentConsumer ) throws ArchivaRestServiceException { try { archivaAdministration.removeKnownContentConsumer( knownContentConsumer, getAuditInformation() ); return Boolean.TRUE; } catch ( RepositoryAdminException e ) { throw new ArchivaRestServiceException( e.getMessage(), e ); } } @Override public Boolean enabledInvalidContentConsumer( String invalidContentConsumer ) throws ArchivaRestServiceException { try { archivaAdministration.addInvalidContentConsumer( invalidContentConsumer, getAuditInformation() ); return Boolean.TRUE; } catch ( RepositoryAdminException e ) { throw new ArchivaRestServiceException( e.getMessage(), e ); } } @Override public void enabledInvalidContentConsumers( List<String> invalidContentConsumers ) throws ArchivaRestServiceException { try { archivaAdministration.setInvalidContentConsumers( invalidContentConsumers, getAuditInformation() ); } catch ( RepositoryAdminException e ) { throw new ArchivaRestServiceException( e.getMessage(), e ); } } @Override public Boolean disabledInvalidContentConsumer( String invalidContentConsumer ) throws ArchivaRestServiceException { try { archivaAdministration.removeInvalidContentConsumer( invalidContentConsumer, getAuditInformation() ); return Boolean.TRUE; } catch ( RepositoryAdminException e ) { throw new ArchivaRestServiceException( e.getMessage(), e ); } } @Override public List<FileType> getFileTypes() throws ArchivaRestServiceException { try { List<FileType> modelfileTypes = archivaAdministration.getFileTypes(); if ( modelfileTypes == null || modelfileTypes.isEmpty() ) { return Collections.emptyList(); } return modelfileTypes; } catch ( RepositoryAdminException e ) { throw new ArchivaRestServiceException( e.getMessage(), e ); } } @Override public List<String> getKnownContentConsumers() throws ArchivaRestServiceException { try { return new ArrayList<String>( archivaAdministration.getKnownContentConsumers() ); } catch ( RepositoryAdminException e ) { throw new ArchivaRestServiceException( e.getMessage(), e ); } } @Override public List<String> getInvalidContentConsumers() throws ArchivaRestServiceException { try { return new ArrayList<String>( archivaAdministration.getInvalidContentConsumers() ); } catch ( RepositoryAdminException e ) { throw new ArchivaRestServiceException( e.getMessage(), e ); } } @Override public OrganisationInformation getOrganisationInformation() throws ArchivaRestServiceException { try { return archivaAdministration.getOrganisationInformation(); } catch ( RepositoryAdminException e ) { throw new ArchivaRestServiceException( e.getMessage(), e ); } } @Override public void setOrganisationInformation( OrganisationInformation organisationInformation ) throws ArchivaRestServiceException { try { archivaAdministration.setOrganisationInformation( organisationInformation ); } catch ( RepositoryAdminException e ) { throw new ArchivaRestServiceException( e.getMessage(), e ); } } @Override public Boolean registrationDisabled() throws ArchivaRestServiceException { return getUiConfiguration().isDisableRegistration(); } @Override public UiConfiguration getUiConfiguration() throws ArchivaRestServiceException { try { return archivaAdministration.getUiConfiguration(); } catch ( RepositoryAdminException e ) { throw new ArchivaRestServiceException( e.getMessage(), e ); } } @Override public void setUiConfiguration( UiConfiguration uiConfiguration ) throws ArchivaRestServiceException { try { // fix for MRM-1757 // strip any trailing '/' at the end of the url so it won't affect url/link calculations in UI uiConfiguration.setApplicationUrl(StringUtils.stripEnd(uiConfiguration.getApplicationUrl(), "/")); archivaAdministration.updateUiConfiguration( uiConfiguration ); } catch ( RepositoryAdminException e ) { throw new ArchivaRestServiceException( e.getMessage(), e ); } } @Override public String getApplicationUrl() throws ArchivaRestServiceException { try { return archivaAdministration.getUiConfiguration().getApplicationUrl(); } catch ( RepositoryAdminException e ) { throw new ArchivaRestServiceException( e.getMessage(), e ); } } @Override public NetworkConfiguration getNetworkConfiguration() throws ArchivaRestServiceException { try { return archivaAdministration.getNetworkConfiguration(); } catch ( RepositoryAdminException e ) { throw new ArchivaRestServiceException( e.getMessage(), e ); } } @Override public void setNetworkConfiguration( NetworkConfiguration networkConfiguration ) throws ArchivaRestServiceException { try { archivaAdministration.setNetworkConfiguration( networkConfiguration ); } catch ( RepositoryAdminException e ) { throw new ArchivaRestServiceException( e.getMessage(), e ); } } @Override public List<AdminRepositoryConsumer> getKnownContentAdminRepositoryConsumers() throws ArchivaRestServiceException { try { AddAdminRepoConsumerClosure addAdminRepoConsumer = new AddAdminRepoConsumerClosure( archivaAdministration.getKnownContentConsumers() ); CollectionUtils.forAllDo( repoConsumerUtil.getAvailableKnownConsumers(), addAdminRepoConsumer ); List<AdminRepositoryConsumer> knownContentConsumers = addAdminRepoConsumer.getList(); Collections.sort( knownContentConsumers, AdminRepositoryConsumerComparator.getInstance() ); return knownContentConsumers; } catch ( RepositoryAdminException e ) { throw new ArchivaRestServiceException( e.getMessage(), e ); } } @Override public List<AdminRepositoryConsumer> getInvalidContentAdminRepositoryConsumers() throws ArchivaRestServiceException { try { AddAdminRepoConsumerClosure addAdminRepoConsumer = new AddAdminRepoConsumerClosure( archivaAdministration.getInvalidContentConsumers() ); CollectionUtils.forAllDo( repoConsumerUtil.getAvailableInvalidConsumers(), addAdminRepoConsumer ); List<AdminRepositoryConsumer> invalidContentConsumers = addAdminRepoConsumer.getList(); Collections.sort( invalidContentConsumers, AdminRepositoryConsumerComparator.getInstance() ); return invalidContentConsumers; } catch ( RepositoryAdminException e ) { throw new ArchivaRestServiceException( e.getMessage(), e ); } } }