return new EntityNotFoundException( message, parameters );
}
+ public static EntityNotFoundException ofMessage(String message, String... parameters) {
+ return new EntityNotFoundException( message, parameters );
+ }
+
public EntityNotFoundException( String s, String... parameters )
{
super( s );
import java.util.ResourceBundle;
/**
+ *
+ * Base exception class for the admin interfaces. Exceptions should set keys that allows identifying and classifying the error.
+ *
* @author Olivier Lamy
* @since 1.4-M1
*/
*/
String[] parameters = new String[0];
+ protected static String getMessage( String key, String[] params )
+ {
+ return MessageFormat.format( bundle.getString( key ), params );
+ }
+ /**
+ * Tries to retrieve a message from the bundle for the given key and returns the
+ * exception.
+ * @param key the identifier of the error
+ * @param params parameters for translating the message
+ * @return the exception
+ */
public static RepositoryAdminException ofKey(String key, String... params) {
String message = getMessage( key, params );
RepositoryAdminException ex = new RepositoryAdminException( message );
return ex;
}
- protected static String getMessage( String key, String[] params )
- {
- return MessageFormat.format( bundle.getString( key ), params );
- }
-
+ /**
+ * Tries to retrieve a message from the bundle for the given key and returns the
+ * exception.
+ * @param key the identifier of the error
+ * @param cause the exception that caused the error
+ * @param params parameters for translating the message
+ * @return the exception
+ */
public static RepositoryAdminException ofKey(String key, Throwable cause, String... params) {
String message = getMessage( key, params );
RepositoryAdminException ex = new RepositoryAdminException( message, cause );
}
+ /**
+ * Tries to retrieve a message from the bundle for the given key and the given field and returns the
+ * exception.
+ * @param key the identifier of the error
+ * @param fieldName the field this exception is for
+ * @param params parameters for translating the message
+ * @return the exception
+ */
public static RepositoryAdminException ofKeyAndField(String key, String fieldName, String... params) {
String message = getMessage( key, params );
RepositoryAdminException ex = new RepositoryAdminException( message, fieldName );
return ex;
}
+ /**
+ * Tries to retrieve a message from the bundle for the given key and the given field and returns the
+ * exception.
+ * @param key the identifier of the error
+ * @param fieldName the field this exception is for
+ * @param cause the exception that caused this error
+ * @param params parameters for translating the message
+ * @return the exception
+ */
public static RepositoryAdminException ofKeyAndField(String key, Throwable cause, String fieldName, String... params) {
String message = getMessage( key, params );
RepositoryAdminException ex = new RepositoryAdminException( message, cause, fieldName );
/**
* The TTL (time to live) of the repo group's merged index.
*/
- private int mergedIndexTtl = 30;
+ private int mergedIndexTtl = -1;
/**
* default model value is empty so none
*/
import org.apache.archiva.admin.model.AuditInformation;
+import org.apache.archiva.admin.model.EntityExistsException;
import org.apache.archiva.admin.model.EntityNotFoundException;
import org.apache.archiva.admin.model.RepositoryAdminException;
import org.apache.archiva.admin.model.beans.RepositoryGroup;
import java.util.Map;
/**
+ * Methods for administering repository groups (virtual repositories)
* @author Olivier Lamy
* @since 1.4-M1
*/
Boolean deleteRepositoryGroup( String repositoryGroupId, AuditInformation auditInformation )
throws RepositoryAdminException;
+ /**
+ * Adds the given managed repository to the repository group.
+ *
+ * @param repositoryGroupId the id of the repository group
+ * @param repositoryId the id of the managed repository
+ * @param auditInformation audit information
+ * @return <code>true</code>, if the repository was added, otherwise <code>false</code>
+ * @throws RepositoryAdminException If an error occurred , while adding the group.
+ * @throws EntityNotFoundException If the repository group or the managed repository with the given id does not exist
+ * @throws EntityExistsException If the managed repository is already member of the group
+ */
Boolean addRepositoryToGroup( String repositoryGroupId, String repositoryId, AuditInformation auditInformation )
- throws RepositoryAdminException;
+ throws RepositoryAdminException, EntityNotFoundException, EntityExistsException;
Boolean deleteRepositoryFromGroup( String repositoryGroupId, String repositoryId,
AuditInformation auditInformation )
repository_group.repository.not_found=The member repository with id "{0}" does not exist. Cannot be used in a repository group.
repository_group.registry.add_error=The registry could not add the repository "{0}": {1}
repository_group.registry.update_error=The registry could not update the repository "{0}": {1}
+repository_group.not_editable=The repository group "{0}" is not editable
org.apache.archiva.repository.RepositoryGroup repositoryGroup = repositoryRegistry.getRepositoryGroup( repositoryGroupId );
if ( repositoryGroup == null )
{
- throw new RepositoryAdminException(
- "repositoryGroup with id " + repositoryGroupId + " doesn't not exists so cannot add repository to it" );
+ throw EntityNotFoundException.ofMessage(
+ "Repository group with id " + repositoryGroupId + " doesn't not exists so cannot add repository to it", repositoryGroupId );
}
if (!(repositoryGroup instanceof EditableRepositoryGroup)) {
- throw new RepositoryAdminException("The repository group is not editable "+repositoryGroupId);
+ throw RepositoryAdminException.ofKey("repository_group.not_editable",repositoryGroupId);
}
EditableRepositoryGroup editableRepositoryGroup = (EditableRepositoryGroup) repositoryGroup;
if ( editableRepositoryGroup.getRepositories().stream().anyMatch( repo -> repositoryId.equals(repo.getId())) )
{
- throw new RepositoryAdminException(
- "repositoryGroup with id " + repositoryGroupId + " already contain repository with id" + repositoryId );
+ throw new EntityExistsException(
+ "Repository group with id " + repositoryGroupId + " already contain repository with id" + repositoryId );
}
org.apache.archiva.repository.ManagedRepository managedRepo = repositoryRegistry.getManagedRepository(repositoryId);
if (managedRepo==null) {
- throw new RepositoryAdminException("Repository with id "+repositoryId+" does not exist" );
+ throw EntityNotFoundException.ofMessage("Repository with id "+repositoryId+" does not exist", repositoryId );
}
editableRepositoryGroup.addRepository( managedRepo );
org.apache.archiva.repository.RepositoryGroup repositoryGroup = repositoryRegistry.getRepositoryGroup( repositoryGroupId );
if ( repositoryGroup == null )
{
- throw new RepositoryAdminException( "repositoryGroup with id " + repositoryGroupId
- + " doesn't not exists so cannot remove repository from it" );
+ throw EntityNotFoundException.ofMessage( "Repository group with id " + repositoryGroupId
+ + " doesn't not exists so cannot remove repository from it", repositoryGroupId );
}
if ( !repositoryGroup.getRepositories().stream().anyMatch( repo -> repositoryId.equals(repo.getId()) ) )
{
- throw new RepositoryAdminException(
+ throw EntityNotFoundException.ofMessage(
"repositoryGroup with id " + repositoryGroupId + " doesn't not contains repository with id"
- + repositoryId
+ + repositoryId, repositoryId
);
}
+
if (!(repositoryGroup instanceof EditableRepositoryGroup)) {
- throw new RepositoryAdminException("Repository group is not editable " + repositoryGroupId);
+ throw RepositoryAdminException.ofKey("repository_group.not_editable",repositoryGroupId);
}
EditableRepositoryGroup editableRepositoryGroup = (EditableRepositoryGroup) repositoryGroup;
PagedResult<RepositoryGroup> getRepositoriesGroups(@QueryParam("q") @DefaultValue( "" ) String searchTerm,
@QueryParam( "offset" ) @DefaultValue( "0" ) Integer offset,
@QueryParam( "limit" ) @DefaultValue( value = DEFAULT_PAGE_LIMIT ) Integer limit,
- @QueryParam( "orderBy") @DefaultValue( "key" ) List<String> orderBy,
+ @QueryParam( "orderBy") @DefaultValue( "id" ) List<String> orderBy,
@QueryParam("order") @DefaultValue( "asc" ) String order)
throws ArchivaRestServiceException;
import org.apache.archiva.admin.model.RepositoryAdminException;
import org.apache.archiva.admin.model.group.RepositoryGroupAdmin;
import org.apache.archiva.components.rest.model.PagedResult;
-import org.apache.archiva.components.rest.util.PagingHelper;
import org.apache.archiva.components.rest.util.QueryHelper;
import org.apache.archiva.redback.rest.services.RedbackAuthenticationThreadLocal;
import org.apache.archiva.redback.rest.services.RedbackRequestInformation;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
import javax.inject.Inject;
import javax.servlet.http.HttpServletResponse;
* REST V2 Implementation for repository groups.
*
* @author Martin Stockhammer <martin_s@apache.org>
- * @since 3.0
* @see RepositoryGroupService
+ * @since 3.0
*/
+@Service("v2.repositoryGroupService#rest")
public class DefaultRepositoryGroupService implements RepositoryGroupService
{
@Context
private static final Logger log = LoggerFactory.getLogger( DefaultRepositoryGroupService.class );
- private static final QueryHelper<org.apache.archiva.admin.model.beans.RepositoryGroup> QUERY_HELPER = new QueryHelper( new String[]{"id"} );
- private static final PagingHelper PROP_PAGING_HELPER = new PagingHelper( );
+ private static final QueryHelper<org.apache.archiva.admin.model.beans.RepositoryGroup> QUERY_HELPER = new QueryHelper<>( new String[]{"id"} );
@Inject
private RepositoryGroupAdmin repositoryGroupAdmin;
}
- protected AuditInformation getAuditInformation()
+ protected AuditInformation getAuditInformation( )
{
- RedbackRequestInformation redbackRequestInformation = RedbackAuthenticationThreadLocal.get();
- User user = redbackRequestInformation == null ? null : redbackRequestInformation.getUser();
- String remoteAddr = redbackRequestInformation == null ? null : redbackRequestInformation.getRemoteAddr();
+ RedbackRequestInformation redbackRequestInformation = RedbackAuthenticationThreadLocal.get( );
+ User user = redbackRequestInformation == null ? null : redbackRequestInformation.getUser( );
+ String remoteAddr = redbackRequestInformation == null ? null : redbackRequestInformation.getRemoteAddr( );
return new AuditInformation( user, remoteAddr );
}
catch ( RepositoryAdminException e )
{
log.error( "Repository admin error: {}", e.getMessage( ), e );
- throw new ArchivaRestServiceException( ErrorMessage.of( ErrorKeys.REPOSITORY_ADMIN_ERROR, e.getMessage() ) );
- } catch ( ArithmeticException e ) {
+ throw new ArchivaRestServiceException( ErrorMessage.of( ErrorKeys.REPOSITORY_ADMIN_ERROR, e.getMessage( ) ) );
+ }
+ catch ( ArithmeticException e )
+ {
log.error( "Could not convert total count: {}", e.getMessage( ) );
throw new ArchivaRestServiceException( ErrorMessage.of( ErrorKeys.INVALID_RESULT_SET_ERROR ) );
}
@Override
public RepositoryGroup getRepositoryGroup( String repositoryGroupId ) throws ArchivaRestServiceException
{
+ if ( StringUtils.isEmpty( repositoryGroupId ) )
+ {
+ throw new ArchivaRestServiceException( ErrorMessage.of( ErrorKeys.REPOSITORY_GROUP_NOT_EXIST, "" ), 404 );
+ }
try
{
org.apache.archiva.admin.model.beans.RepositoryGroup group = repositoryGroupAdmin.getRepositoryGroup( repositoryGroupId );
return RepositoryGroup.of( group );
}
- catch ( EntityNotFoundException e ) {
+ catch ( EntityNotFoundException e )
+ {
throw new ArchivaRestServiceException( ErrorMessage.of( ErrorKeys.REPOSITORY_GROUP_NOT_EXIST, repositoryGroupId ), 404 );
}
catch ( RepositoryAdminException e )
{
- throw new ArchivaRestServiceException( ErrorMessage.of( ErrorKeys.REPOSITORY_ADMIN_ERROR, e.getMessage() ));
+ throw new ArchivaRestServiceException( ErrorMessage.of( ErrorKeys.REPOSITORY_ADMIN_ERROR, e.getMessage( ) ) );
}
}
- private org.apache.archiva.admin.model.beans.RepositoryGroup toModel( RepositoryGroup group) {
+ private org.apache.archiva.admin.model.beans.RepositoryGroup toModel( RepositoryGroup group )
+ {
org.apache.archiva.admin.model.beans.RepositoryGroup result = new org.apache.archiva.admin.model.beans.RepositoryGroup( );
result.setId( group.getId( ) );
result.setLocation( group.getLocation( ) );
result.setRepositories( new ArrayList<>( group.getRepositories( ) ) );
- result.setMergedIndexPath( group.getMergeConfiguration().getMergedIndexPath() );
- result.setMergedIndexTtl( group.getMergeConfiguration().getMergedIndexTtlMinutes() );
- result.setCronExpression( group.getMergeConfiguration().getIndexMergeSchedule() );
+ result.setMergedIndexPath( group.getMergeConfiguration( ).getMergedIndexPath( ) );
+ result.setMergedIndexTtl( group.getMergeConfiguration( ).getMergedIndexTtlMinutes( ) );
+ result.setCronExpression( group.getMergeConfiguration( ).getIndexMergeSchedule( ) );
return result;
}
try
{
Boolean result = repositoryGroupAdmin.addRepositoryGroup( toModel( repositoryGroup ), getAuditInformation( ) );
- if (result) {
+ if ( result )
+ {
org.apache.archiva.admin.model.beans.RepositoryGroup newGroup = repositoryGroupAdmin.getRepositoryGroup( repositoryGroup.getId( ) );
- if (newGroup!=null) {
+ if ( newGroup != null )
+ {
return RepositoryGroup.of( newGroup );
- } else {
+ }
+ else
+ {
throw new ArchivaRestServiceException( ErrorMessage.of( ErrorKeys.REPOSITORY_GROUP_ADD_FAILED ) );
}
- } else {
+ }
+ else
+ {
throw new ArchivaRestServiceException( ErrorMessage.of( ErrorKeys.REPOSITORY_GROUP_ADD_FAILED ) );
}
- } catch ( EntityExistsException e ) {
- httpServletResponse.setHeader( "Location", uriInfo.getAbsolutePathBuilder( ).path( repositoryGroup.getId() ).build( ).toString( ) );
- throw new ArchivaRestServiceException( ErrorMessage.of( ErrorKeys.REPOSITORY_GROUP_EXIST, repositoryGroup.getId( )), 303 );
+ }
+ catch ( EntityExistsException e )
+ {
+ httpServletResponse.setHeader( "Location", uriInfo.getAbsolutePathBuilder( ).path( repositoryGroup.getId( ) ).build( ).toString( ) );
+ throw new ArchivaRestServiceException( ErrorMessage.of( ErrorKeys.REPOSITORY_GROUP_EXIST, repositoryGroup.getId( ) ), 303 );
}
catch ( RepositoryAdminException e )
{
- if (e.keyExists()) {
- throw new ArchivaRestServiceException( ErrorMessage.of( ErrorKeys.PREFIX+e.getKey(), e.getParameters() ) );
- } else
- {
- throw new ArchivaRestServiceException( ErrorMessage.of( ErrorKeys.REPOSITORY_ADMIN_ERROR, e.getMessage( ) ) );
- }
+ return handleAdminException( e );
+ }
+ }
+
+ private RepositoryGroup handleAdminException( RepositoryAdminException e ) throws ArchivaRestServiceException
+ {
+ log.error( "Repository admin error: {}", e.getMessage( ), e );
+ if ( e.keyExists( ) )
+ {
+ throw new ArchivaRestServiceException( ErrorMessage.of( ErrorKeys.PREFIX + e.getKey( ), e.getParameters( ) ) );
+ }
+ else
+ {
+ throw new ArchivaRestServiceException( ErrorMessage.of( ErrorKeys.REPOSITORY_ADMIN_ERROR, e.getMessage( ) ) );
}
}
@Override
- public RepositoryGroup updateRepositoryGroup( String groupId, RepositoryGroup repositoryGroup ) throws ArchivaRestServiceException
+ public RepositoryGroup updateRepositoryGroup( String repositoryGroupId, RepositoryGroup repositoryGroup ) throws ArchivaRestServiceException
{
+ if ( StringUtils.isEmpty( repositoryGroupId ) )
+ {
+ throw new ArchivaRestServiceException( ErrorMessage.of( ErrorKeys.REPOSITORY_GROUP_NOT_EXIST, "" ), 404 );
+ }
org.apache.archiva.admin.model.beans.RepositoryGroup updateGroup = toModel( repositoryGroup );
try
{
- org.apache.archiva.admin.model.beans.RepositoryGroup originGroup = repositoryGroupAdmin.getRepositoryGroup( groupId );
- if ( StringUtils.isEmpty( updateGroup.getId())) {
- updateGroup.setId( groupId );
+ org.apache.archiva.admin.model.beans.RepositoryGroup originGroup = repositoryGroupAdmin.getRepositoryGroup( repositoryGroupId );
+ if ( StringUtils.isEmpty( updateGroup.getId( ) ) )
+ {
+ updateGroup.setId( repositoryGroupId );
+ }
+ if ( StringUtils.isEmpty( updateGroup.getLocation( ) ) )
+ {
+ updateGroup.setLocation( originGroup.getLocation( ) );
+ }
+ if ( StringUtils.isEmpty( updateGroup.getMergedIndexPath( ) ) )
+ {
+ updateGroup.setMergedIndexPath( originGroup.getMergedIndexPath( ) );
}
- if (StringUtils.isEmpty( updateGroup.getLocation() )) {
- updateGroup.setLocation( originGroup.getLocation() );
+ if ( updateGroup.getCronExpression( ) == null )
+ {
+ updateGroup.setCronExpression( originGroup.getCronExpression( ) );
+ }
+ if ( updateGroup.getRepositories( ) == null || updateGroup.getRepositories( ).size( ) == 0 )
+ {
+ updateGroup.setRepositories( originGroup.getRepositories( ) );
}
- if (StringUtils.isEmpty( updateGroup.getMergedIndexPath() )) {
- updateGroup.setMergedIndexPath( originGroup.getMergedIndexPath() );
+ if ( updateGroup.getMergedIndexTtl( ) <= 0 )
+ {
+ updateGroup.setMergedIndexTtl( originGroup.getMergedIndexTtl( ) );
}
repositoryGroupAdmin.updateRepositoryGroup( updateGroup, getAuditInformation( ) );
- return RepositoryGroup.of( repositoryGroupAdmin.getRepositoryGroup( groupId ) );
+ return RepositoryGroup.of( repositoryGroupAdmin.getRepositoryGroup( repositoryGroupId ) );
+ }
+ catch ( EntityNotFoundException e )
+ {
+ throw new ArchivaRestServiceException( ErrorMessage.of( ErrorKeys.REPOSITORY_GROUP_NOT_EXIST, repositoryGroupId ), 404 );
}
catch ( RepositoryAdminException e )
{
- log.error( "Repository admin error: {}", e.getMessage( ), e );
- throw new ArchivaRestServiceException( ErrorMessage.of( ErrorKeys.REPOSITORY_ADMIN_ERROR, e.getMessage( ) ) );
+ return handleAdminException( e );
}
}
@Override
public Response deleteRepositoryGroup( String repositoryGroupId ) throws ArchivaRestServiceException
{
- return null;
+ if ( StringUtils.isEmpty( repositoryGroupId ) )
+ {
+ throw new ArchivaRestServiceException( ErrorMessage.of( ErrorKeys.REPOSITORY_GROUP_NOT_EXIST, "" ), 404 );
+ }
+ try
+ {
+ Boolean deleted = repositoryGroupAdmin.deleteRepositoryGroup( repositoryGroupId, getAuditInformation( ) );
+ if ( !deleted )
+ {
+ throw new ArchivaRestServiceException( ErrorMessage.of( ErrorKeys.REPOSITORY_GROUP_DELETE_FAILED ) );
+ }
+ return Response.ok( ).build( );
+ }
+ catch ( EntityNotFoundException e )
+ {
+ throw new ArchivaRestServiceException( ErrorMessage.of( ErrorKeys.REPOSITORY_GROUP_NOT_EXIST, repositoryGroupId ), 404 );
+ }
+ catch ( RepositoryAdminException e )
+ {
+ handleAdminException( e );
+ // cannot happen:
+ return null;
+ }
}
@Override
public RepositoryGroup addRepositoryToGroup( String repositoryGroupId, String repositoryId ) throws ArchivaRestServiceException
{
- return null;
+ if ( StringUtils.isEmpty( repositoryGroupId ) )
+ {
+ throw new ArchivaRestServiceException( ErrorMessage.of( ErrorKeys.REPOSITORY_GROUP_NOT_EXIST, "" ), 404 );
+ }
+ if ( StringUtils.isEmpty( repositoryId ) )
+ {
+ throw new ArchivaRestServiceException( ErrorMessage.of( ErrorKeys.REPOSITORY_NOT_EXIST, "" ), 404 );
+ }
+ try
+ {
+ repositoryGroupAdmin.addRepositoryToGroup( repositoryGroupId, repositoryId, getAuditInformation( ) );
+ return RepositoryGroup.of( repositoryGroupAdmin.getRepositoryGroup( repositoryGroupId ) );
+ }
+ catch ( EntityNotFoundException e )
+ {
+ return handleNotFoundException( repositoryGroupId, repositoryId, e );
+ }
+ catch ( EntityExistsException e )
+ {
+ // This is thrown, if the repositoryId is already assigned to the group. We ignore this for the PUT action (nothing to do).
+ try
+ {
+ return RepositoryGroup.of( repositoryGroupAdmin.getRepositoryGroup( repositoryGroupId ) );
+ }
+ catch ( RepositoryAdminException repositoryAdminException )
+ {
+ return handleAdminException( e );
+ }
+ }
+ catch ( RepositoryAdminException e )
+ {
+ return handleAdminException( e );
+ }
}
@Override
public RepositoryGroup deleteRepositoryFromGroup( String repositoryGroupId, String repositoryId ) throws org.apache.archiva.rest.api.services.v2.ArchivaRestServiceException
{
- return null;
+ if ( StringUtils.isEmpty( repositoryGroupId ) )
+ {
+ throw new ArchivaRestServiceException( ErrorMessage.of( ErrorKeys.REPOSITORY_GROUP_NOT_EXIST, "" ), 404 );
+ }
+ if ( StringUtils.isEmpty( repositoryId ) )
+ {
+ throw new ArchivaRestServiceException( ErrorMessage.of( ErrorKeys.REPOSITORY_NOT_EXIST, "" ), 404 );
+ }
+ try
+ {
+ repositoryGroupAdmin.deleteRepositoryFromGroup( repositoryGroupId, repositoryId, getAuditInformation( ) );
+ return RepositoryGroup.of( repositoryGroupAdmin.getRepositoryGroup( repositoryGroupId ) );
+ }
+ catch ( EntityNotFoundException e )
+ {
+ return handleNotFoundException( repositoryGroupId, repositoryId, e );
+ }
+ catch ( RepositoryAdminException e )
+ {
+ return handleAdminException( e );
+ }
+ }
+
+ protected RepositoryGroup handleNotFoundException( String repositoryGroupId, String repositoryId, EntityNotFoundException e ) throws ArchivaRestServiceException
+ {
+ if ( e.getParameters( ).length > 0 )
+ {
+ if ( repositoryGroupId.equals( e.getParameters( )[0] ) )
+ {
+ throw new ArchivaRestServiceException( ErrorMessage.of( ErrorKeys.REPOSITORY_GROUP_NOT_EXIST, repositoryGroupId ), 404 );
+ }
+ else if ( repositoryId.equals( e.getParameters( )[0] ) )
+ {
+ throw new ArchivaRestServiceException( ErrorMessage.of( ErrorKeys.REPOSITORY_NOT_EXIST, repositoryGroupId ), 404 );
+ }
+ }
+ log.warn( "Entity not found but neither group nor repo set in exception" );
+ throw new ArchivaRestServiceException( ErrorMessage.of( ErrorKeys.REPOSITORY_GROUP_NOT_EXIST, repositoryGroupId ), 404 );
}
+
+
}
import org.apache.archiva.admin.model.RepositoryAdminException;
import org.apache.archiva.admin.model.beans.RedbackRuntimeConfiguration;
import org.apache.archiva.admin.model.runtime.RedbackRuntimeConfigurationAdmin;
-import org.apache.archiva.components.cache.Cache;
import org.apache.archiva.components.rest.model.PagedResult;
import org.apache.archiva.components.rest.model.PropertyEntry;
-import org.apache.archiva.components.rest.util.PagingHelper;
import org.apache.archiva.components.rest.util.QueryHelper;
import org.apache.archiva.redback.authentication.Authenticator;
import org.apache.archiva.redback.common.ldap.connection.LdapConnection;
private static final Logger log = LoggerFactory.getLogger( DefaultSecurityConfigurationService.class );
private static final String[] KNOWN_LDAP_CONTEXT_PROVIDERS = {"com.sun.jndi.ldap.LdapCtxFactory","com.ibm.jndi.LDAPCtxFactory"};
- private List<String> availableContextProviders = new ArrayList<>( );
+ private final List<String> availableContextProviders = new ArrayList<>( );
- private static final QueryHelper<PropertyEntry> PROP_QUERY_HELPER = new QueryHelper( new String[]{"key"} );
- private static final PagingHelper PROP_PAGING_HELPER = new PagingHelper( );
+ private static final QueryHelper<PropertyEntry> PROP_QUERY_HELPER = new QueryHelper<>( new String[]{"key"} );
static
{
@Inject
private LdapUserMapper ldapUserMapper;
- @Inject
- @Named( value = "cache#users" )
- private Cache usersCache;
-
@PostConstruct
void init( )
boolean userManagerChanged = !CollectionUtils.isEqualCollection( newConfiguration.getActiveUserManagers( ), conf.getUserManagerImpls( ) );
boolean rbacManagerChanged = !CollectionUtils.isEqualCollection( newConfiguration.getActiveRbacManagers( ), conf.getRbacManagerImpls( ) );
- boolean ldapConfigured = false;
- for ( String um : newConfiguration.getActiveUserManagers( ) )
- {
- if ( um.contains( "ldap" ) )
- {
- ldapConfigured = true;
- }
- }
+ boolean ldapConfigured = newConfiguration.getActiveUserManagers( ).stream( ).anyMatch( um -> um.contains( "ldap" ) );
if ( !ldapConfigured )
{
- for ( String rbm : newConfiguration.getActiveRbacManagers( ) )
- {
- if ( rbm.contains( "ldap" ) )
- {
- ldapConfigured = true;
- }
- }
+ ldapConfigured= newConfiguration.getActiveRbacManagers( ).stream( ).anyMatch( um -> um.contains( "ldap" ) );
}
updateConfig( newConfiguration, conf );
.collect( Collectors.toList( ) );
return new PagedResult<>( totalCount, offset, limit, result );
} catch (ArithmeticException e) {
- log.error( "The total count of the result properties is higher than max integer value! {}" );
+ log.error( "The total count of the result properties is higher than max integer value!" );
throw new ArchivaRestServiceException( ErrorMessage.of( INVALID_RESULT_SET_ERROR ) );
}
catch ( RepositoryAdminException e )
}
- static final Properties toProperties( Map<String, String> values )
+ static Properties toProperties( Map<String, String> values )
{
Properties result = new Properties( );
for ( Map.Entry<String, String> entry : values.entrySet( ) )
return result;
}
- private static final boolean isContextFactoryAvailable(final String factoryClass)
+ private static boolean isContextFactoryAvailable( final String factoryClass)
{
try
{
}
@Override
- public List<BeanInformation> getAvailableUserManagers( ) throws ArchivaRestServiceException
+ public List<BeanInformation> getAvailableUserManagers( )
{
Map<String, UserManager> beans = applicationContext.getBeansOfType( UserManager.class );
}
@Override
- public List<BeanInformation> getAvailableRbacManagers( ) throws ArchivaRestServiceException
+ public List<BeanInformation> getAvailableRbacManagers( )
{
Map<String, RBACManager> beans = applicationContext.getBeansOfType( RBACManager.class );
String PREFIX = "archiva.";
String REPOSITORY_GROUP_PREFIX = PREFIX + "repository_group.";
+ String REPOSITORY_PREFIX = PREFIX + "repository.";
String INVALID_RESULT_SET_ERROR = "archiva.result_set.invalid";
String REPOSITORY_ADMIN_ERROR = "archiva.repositoryadmin.error";
String REPOSITORY_GROUP_ADD_FAILED = REPOSITORY_GROUP_PREFIX+"add.failed" ;
String REPOSITORY_GROUP_EXIST = REPOSITORY_GROUP_PREFIX+"exists";
+ String REPOSITORY_GROUP_DELETE_FAILED = REPOSITORY_GROUP_PREFIX + "delete.failed";
+ String REPOSITORY_NOT_EXIST = REPOSITORY_PREFIX + "notexist";
+
}
<jaxrs:serviceBeans>
<ref bean="v2.defaultSecurityConfigurationService" />
+ <ref bean="v2.repositoryGroupService#rest" />
</jaxrs:serviceBeans>
<jaxrs:features>
--- /dev/null
+package org.apache.archiva.rest.services.v2;
+
+/*
+ * 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 io.restassured.response.Response;
+import org.apache.archiva.components.rest.model.PagedResult;
+import org.apache.archiva.components.rest.model.PropertyEntry;
+import org.apache.archiva.rest.api.model.v2.BeanInformation;
+import org.apache.archiva.rest.api.model.v2.CacheConfiguration;
+import org.apache.archiva.rest.api.model.v2.LdapConfiguration;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.MethodOrderer;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.api.TestMethodOrder;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static io.restassured.RestAssured.given;
+import static io.restassured.http.ContentType.JSON;
+import static org.junit.jupiter.api.Assertions.*;
+
+/**
+ * @author Martin Stockhammer <martin_s@apache.org>
+ */
+@TestInstance( TestInstance.Lifecycle.PER_CLASS )
+@Tag( "rest-native" )
+@TestMethodOrder( MethodOrderer.Random.class )
+@DisplayName( "Native REST tests for V2 RepositoryGroupService" )
+public class NativeRepositoryGroupServiceTest extends AbstractNativeRestServices
+{
+ @Override
+ protected String getServicePath( )
+ {
+ return "/repository_groups";
+ }
+
+ @BeforeAll
+ void setup( ) throws Exception
+ {
+ super.setupNative( );
+ }
+
+ @AfterAll
+ void destroy( ) throws Exception
+ {
+ super.shutdownNative( );
+ }
+
+ @Test
+ void testGetConfiguration() {
+ String token = getAdminToken( );
+ Response response = given( ).spec( getRequestSpec( token ) ).contentType( JSON )
+ .when( )
+ .get( "" )
+ .prettyPeek()
+ .then( ).statusCode( 200 ).extract( ).response( );
+ assertNotNull( response );
+ }
+
+
+
+}