Refactoring of repository classes

This commit is contained in:
Martin Stockhammer 2021-07-02 19:59:13 +02:00
parent 084b9efccf
commit bf219edd16
62 changed files with 784 additions and 122 deletions

View File

@ -25,7 +25,7 @@ import org.apache.archiva.consumers.ConsumerException;
import org.apache.archiva.consumers.InvalidRepositoryContentConsumer;
import org.apache.archiva.consumers.KnownRepositoryContentConsumer;
import org.apache.archiva.consumers.RepositoryContentConsumer;
import org.apache.archiva.repository.base.BasicManagedRepository;
import org.apache.archiva.repository.base.managed.BasicManagedRepository;
import org.apache.archiva.repository.scanner.RepositoryScanStatistics;
import org.apache.archiva.repository.scanner.RepositoryScanner;
import org.apache.archiva.repository.scanner.RepositoryScannerException;
@ -36,8 +36,6 @@ import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;

View File

@ -19,6 +19,7 @@ package org.apache.archiva.configuration;
* under the License.
*/
import org.apache.archiva.components.registry.Registry;
import org.apache.archiva.components.registry.RegistryException;
import org.apache.archiva.components.registry.RegistryListener;
@ -138,5 +139,11 @@ public interface ArchivaConfiguration
* @return
*/
public Path getDataDirectory();
/**
* Return the used configuration registry
* @return
*/
Registry getRegistry( );
}

View File

@ -23,9 +23,8 @@ import org.apache.archiva.configuration.ManagedRepositoryConfiguration;
import org.apache.archiva.configuration.RemoteRepositoryConfiguration;
import org.apache.archiva.configuration.RepositoryGroupConfiguration;
import org.apache.archiva.event.EventHandler;
import org.apache.archiva.event.EventType;
import org.apache.archiva.repository.base.BasicManagedRepository;
import org.apache.archiva.repository.base.BasicRemoteRepository;
import org.apache.archiva.repository.base.managed.BasicManagedRepository;
import org.apache.archiva.repository.base.remote.BasicRemoteRepository;
import org.apache.archiva.repository.EditableManagedRepository;
import org.apache.archiva.repository.EditableRemoteRepository;
import org.apache.archiva.repository.RepositoryGroup;

View File

@ -21,7 +21,7 @@ package $package;
import org.apache.archiva.metadata.repository.MetadataRepository;
import org.apache.archiva.metadata.repository.RepositorySessionFactory;
import org.apache.archiva.repository.base.BasicManagedRepository;
import org.apache.archiva.repository.base.managed.BasicManagedRepository;
import org.apache.archiva.repository.RepositoryException;
import org.apache.archiva.repository.RepositoryRegistry;
import org.junit.Before;

View File

@ -4,7 +4,7 @@ import org.apache.archiva.checksum.ChecksumAlgorithm;
import org.apache.archiva.checksum.ChecksummedFile;
import org.apache.archiva.common.utils.PathUtil;
import org.apache.archiva.consumers.KnownRepositoryContentConsumer;
import org.apache.archiva.repository.base.BasicManagedRepository;
import org.apache.archiva.repository.base.managed.BasicManagedRepository;
import org.apache.archiva.repository.EditableManagedRepository;
import org.apache.commons.io.FileUtils;
import org.assertj.core.api.Assertions;

View File

@ -24,11 +24,9 @@ import org.apache.archiva.metadata.repository.MetadataRepository;
import org.apache.archiva.metadata.repository.RepositorySession;
import org.apache.archiva.metadata.repository.RepositorySessionFactory;
import org.apache.archiva.repository.ManagedRepositoryContent;
import org.apache.archiva.repository.RepositoryRegistry;
import org.apache.archiva.repository.base.ArchivaRepositoryRegistry;
import org.apache.archiva.repository.base.RepositoryGroupHandler;
import org.apache.archiva.repository.base.group.RepositoryGroupHandler;
import org.apache.archiva.repository.maven.metadata.storage.Maven2RepositoryPathTranslator;
import org.apache.archiva.repository.base.BasicManagedRepository;
import org.apache.archiva.repository.base.managed.BasicManagedRepository;
import org.apache.archiva.repository.ReleaseScheme;
import org.apache.archiva.repository.RepositoryContentProvider;
import org.apache.archiva.metadata.audit.RepositoryListener;
@ -43,7 +41,6 @@ import org.junit.Before;
import org.junit.runner.RunWith;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration;
import javax.inject.Inject;

View File

@ -23,8 +23,8 @@ import org.apache.archiva.configuration.ManagedRepositoryConfiguration;
import org.apache.archiva.configuration.RemoteRepositoryConfiguration;
import org.apache.archiva.configuration.RepositoryGroupConfiguration;
import org.apache.archiva.event.EventHandler;
import org.apache.archiva.repository.base.BasicManagedRepository;
import org.apache.archiva.repository.base.BasicRemoteRepository;
import org.apache.archiva.repository.base.managed.BasicManagedRepository;
import org.apache.archiva.repository.base.remote.BasicRemoteRepository;
import org.apache.archiva.repository.EditableManagedRepository;
import org.apache.archiva.repository.EditableRemoteRepository;
import org.apache.archiva.repository.EditableRepositoryGroup;

View File

@ -25,9 +25,9 @@ import org.apache.archiva.configuration.ArchivaConfiguration;
import org.apache.archiva.configuration.FileTypes;
import org.apache.archiva.components.taskqueue.TaskQueueException;
import org.apache.archiva.repository.base.ArchivaRepositoryRegistry;
import org.apache.archiva.repository.base.BasicManagedRepository;
import org.apache.archiva.repository.base.managed.BasicManagedRepository;
import org.apache.archiva.repository.ReleaseScheme;
import org.apache.archiva.repository.base.RepositoryGroupHandler;
import org.apache.archiva.repository.base.group.RepositoryGroupHandler;
import org.apache.archiva.scheduler.ArchivaTaskScheduler;
import org.apache.archiva.scheduler.indexing.ArtifactIndexingTask;
import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;

View File

@ -31,11 +31,10 @@ import org.apache.archiva.configuration.ArchivaConfiguration;
import org.apache.archiva.redback.role.RoleManager;
import org.apache.archiva.redback.users.User;
import org.apache.archiva.redback.users.memory.SimpleUser;
import org.apache.archiva.repository.base.RepositoryGroupHandler;
import org.apache.archiva.repository.base.group.RepositoryGroupHandler;
import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
import org.apache.commons.lang3.StringUtils;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

View File

@ -26,7 +26,7 @@ import org.apache.archiva.admin.repository.AbstractRepositoryAdminTest;
import org.apache.archiva.metadata.model.facets.AuditEvent;
import org.apache.archiva.repository.Repository;
import org.apache.archiva.repository.RepositoryRegistry;
import org.apache.archiva.repository.base.RepositoryGroupHandler;
import org.apache.archiva.repository.base.group.RepositoryGroupHandler;
import org.junit.Test;
import javax.inject.Inject;

View File

@ -18,8 +18,10 @@ package org.apache.archiva.repository;
*/
import org.apache.archiva.configuration.Configuration;
import org.apache.archiva.repository.validation.CheckedResult;
import org.apache.archiva.repository.validation.RepositoryChecker;
import org.apache.archiva.repository.validation.RepositoryValidator;
import org.apache.archiva.repository.validation.ValidationResponse;
import java.util.Collection;
import java.util.Map;
@ -165,6 +167,28 @@ public interface RepositoryHandler<R extends Repository, C>
*/
RepositoryValidator<R> getValidator( );
/**
* Validates the set attributes of the given repository instance and returns the validation result.
* The repository registry uses all available validators and applies their validateRepository method to the given
* repository. Validation results will be merged per field.
*
* @param repository the repository to validate against
* @return the result of the validation.
*/
ValidationResponse<R> validateRepository( R repository);
/**
* Validates the set attributes of the given repository instance for a repository update and returns the validation result.
* The repository registry uses all available validators and applies their validateRepositoryForUpdate method to the given
* repository. Validation results will be merged per field.
*
* @param repository the repository to validate against
* @return the result of the validation.
*/
ValidationResponse<R> validateRepositoryForUpdate( R repository);
/**
* Returns <code>true</code>, if the repository is registered with the given id, otherwise <code>false</code>
* @param id the repository identifier

View File

@ -29,6 +29,7 @@ import org.apache.archiva.indexer.ArchivaIndexManager;
import org.apache.archiva.indexer.IndexUpdateFailedException;
import org.apache.archiva.repository.metadata.MetadataReader;
import org.apache.archiva.repository.storage.StorageAsset;
import org.apache.archiva.repository.validation.CheckedResult;
import org.apache.archiva.repository.validation.ValidationError;
import org.apache.archiva.repository.validation.ValidationResponse;

View File

@ -17,16 +17,26 @@ package org.apache.archiva.repository.validation;
* under the License.
*/
import org.apache.archiva.repository.CheckedResult;
import org.apache.archiva.repository.Repository;
import org.apache.archiva.repository.RepositoryRegistry;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author Martin Stockhammer <martin_s@apache.org>
*/
public abstract class AbstractRepositoryValidator<R extends Repository> implements RepositoryValidator<R>
{
protected RepositoryRegistry repositoryRegistry;
private final String category;
public AbstractRepositoryValidator( String category )
{
this.category = category;
}
@Override
public void setRepositoryRegistry( RepositoryRegistry repositoryRegistry )
@ -34,6 +44,23 @@ public abstract class AbstractRepositoryValidator<R extends Repository> implemen
this.repositoryRegistry = repositoryRegistry;
}
protected String getCategory() {
return this.category;
}
protected Map<String, List<ValidationError>> appendError( Map<String, List<ValidationError>> errorMap, String attribute, String type, Object... parameter )
{
String errorKey = getCategory( ) + "." + attribute + "." + type;
Map<String, List<ValidationError>> result;
result = errorMap == null ? new HashMap<>( ) : errorMap;
ValidationError error = ValidationError.ofKey( errorKey, parameter );
List<ValidationError> errList = result.computeIfAbsent( error.getAttribute( ), k -> new ArrayList<>( ) );
errList.add( error );
return result;
}
protected abstract ValidationResponse<R> apply( R repo, boolean update );
@Override

View File

@ -1,4 +1,4 @@
package org.apache.archiva.repository;
package org.apache.archiva.repository.validation;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@ -17,6 +17,8 @@ package org.apache.archiva.repository;
* under the License.
*/
import org.apache.archiva.repository.Repository;
/**
* @author Martin Stockhammer <martin_s@apache.org>
*/

View File

@ -0,0 +1,74 @@
package org.apache.archiva.repository.validation;
/*
* 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.repository.Repository;
import org.apache.commons.lang3.StringUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author Martin Stockhammer <martin_s@apache.org>
*/
public class CombinedValidationResponse<R extends Repository> implements CheckedResult<R, Map<String, List<ValidationError>>>
{
private final Map<String, List<ValidationError>> errorMap = new HashMap<>( );
private final R repository;
public CombinedValidationResponse( R repository )
{
this.repository = repository;
}
@Override
public R getRepository( )
{
return repository;
}
@Override
public boolean isValid( )
{
return errorMap.size()==0;
}
@Override
public Map<String, List<ValidationError>> getResult( )
{
return errorMap;
}
public void addErrors(String key, List<ValidationError> errorList) {
if ( StringUtils.isNotEmpty( key ) && errorList!=null && errorList.size()>0) {
this.errorMap.put( key, errorList );
}
}
public void addErrors(Map<String, List<ValidationError>> errorMap) {
if (errorMap!=null) {
errorMap.entrySet( ).stream( ).forEach( e -> addErrors( e.getKey( ), e.getValue( ) ) );
}
}
public void addResult(CheckedResult<R, Map<String, List<ValidationError>>> result) {
this.addErrors( result.getResult( ) );
}
}

View File

@ -0,0 +1,87 @@
package org.apache.archiva.repository.validation;
/*
* 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.repository.Repository;
import org.apache.archiva.repository.RepositoryRegistry;
import java.util.List;
import java.util.Map;
/**
* A combined validator cumulates the validation results of multiple validators
*
* @author Martin Stockhammer <martin_s@apache.org>
*/
public class CombinedValidator<R extends Repository>
implements RepositoryValidator<R> {
private final List<RepositoryValidator<R>> validatorList;
private final Class<R> flavourClazz;
public CombinedValidator( Class<R> flavourClazz, List<RepositoryValidator<R>> validatorList )
{
if (flavourClazz==null) {
throw new IllegalArgumentException( "The flavour class may not be null" );
}
this.flavourClazz = flavourClazz;
if (validatorList==null) {
throw new IllegalArgumentException( "The validator list may not be null" );
}
this.validatorList = validatorList;
}
@Override
public CheckedResult<R, Map<String, List<ValidationError>>> apply( R r )
{
CombinedValidationResponse<R> response = new CombinedValidationResponse<>( r );
validatorList.stream( ).forEach(
v -> response.addResult( v.apply( r ) )
);
return response;
}
@Override
public CheckedResult<R, Map<String, List<ValidationError>>> applyForUpdate( R repo )
{
CombinedValidationResponse<R> response = new CombinedValidationResponse<>( repo );
validatorList.stream( ).forEach(
v -> response.addResult( v.applyForUpdate( repo ) )
);
return response;
}
@Override
public void setRepositoryRegistry( RepositoryRegistry repositoryRegistry )
{
// Not used
}
@Override
public Class<R> getFlavour( )
{
return flavourClazz;
}
@Override
public boolean isFlavour( Class<?> clazz )
{
return flavourClazz.isAssignableFrom( clazz );
}
}

View File

@ -0,0 +1,38 @@
package org.apache.archiva.repository.validation;
/*
* 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.components.registry.Registry;
/**
* @author Martin Stockhammer <martin_s@apache.org>
*/
public interface ErrorKeys
{
String ISNULL = "isnull";
String ISEMPTY = "empty";
String EXISTS = "exists";
String MANAGED_REPOSITORY_EXISTS = "managed_repo_exists";
String REMOTE_REPOSITORY_EXISTS = "remote_repo_exists";
String REPOSITORY_GROUP_EXISTS = "group_exists";
String MAX_LENGTH_EXCEEDED = "max_length";
String INVALID_CHARS = "invalid_chars";
String BELOW_MIN = "min";
String INVALID_SCHEDULING_EXPRESSION = "scheduling_exp_invalid";
String INVALID_LOCATION = "location_invalid";
}

View File

@ -17,11 +17,9 @@ package org.apache.archiva.repository.validation;
* under the License.
*/
import org.apache.archiva.repository.CheckedResult;
import org.apache.archiva.repository.Repository;
import java.util.function.Function;
import java.util.function.Predicate;
/**
* @author Martin Stockhammer <martin_s@apache.org>

View File

@ -33,6 +33,11 @@ import java.util.function.Function;
public interface RepositoryValidator<R extends Repository> extends RepositoryChecker<R, Map<String, List<ValidationError>>>, Comparable<RepositoryValidator<R>>
{
String REPOSITORY_ID_VALID_EXPRESSION = "^[a-zA-Z0-9._-]+$";
String REPOSITORY_NAME_VALID_EXPRESSION = "^([a-zA-Z0-9.)/_(-]|\\s)+$";
String REPOSITORY_LOCATION_VALID_EXPRESSION = "^[-a-zA-Z0-9._/~:?!&amp;=\\\\]+$";
int DEFAULT_PRIORITY=1000;
/**
@ -81,5 +86,16 @@ public interface RepositoryValidator<R extends Repository> extends RepositoryChe
Class<R> getFlavour();
boolean isFlavour(Class<?> clazz);
default boolean isFlavour(Class<?> clazz) {
return getFlavour( ).isAssignableFrom( clazz );
}
@SuppressWarnings( "unchecked" )
default <RR extends Repository> RepositoryValidator<RR> narrowTo( Class<RR> clazz ) {
if (isFlavour( clazz )) {
return (RepositoryValidator<RR>) this;
} else {
throw new IllegalArgumentException( "Could not narrow to " + clazz );
}
}
}

View File

@ -17,7 +17,6 @@ package org.apache.archiva.repository.validation;
* under the License.
*/
import org.apache.archiva.repository.CheckedResult;
import org.apache.archiva.repository.Repository;
import java.util.ArrayList;
@ -25,7 +24,6 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
/**
* A validation response gives information about the validation status for certain attributes.

View File

@ -78,6 +78,10 @@
<groupId>org.apache.archiva.components.registry</groupId>
<artifactId>archiva-components-spring-registry-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.archiva.components</groupId>
<artifactId>archiva-components-spring-quartz</artifactId>
</dependency>
<dependency>
<groupId>com.cronutils</groupId>
<artifactId>cron-utils</artifactId>

View File

@ -38,7 +38,8 @@ import org.apache.archiva.indexer.ArchivaIndexingContext;
import org.apache.archiva.indexer.IndexCreationFailedException;
import org.apache.archiva.indexer.IndexManagerFactory;
import org.apache.archiva.indexer.IndexUpdateFailedException;
import org.apache.archiva.repository.CheckedResult;
import org.apache.archiva.repository.base.group.RepositoryGroupHandler;
import org.apache.archiva.repository.validation.CheckedResult;
import org.apache.archiva.repository.EditableManagedRepository;
import org.apache.archiva.repository.EditableRemoteRepository;
import org.apache.archiva.repository.EditableRepository;
@ -52,7 +53,6 @@ import org.apache.archiva.repository.RepositoryProvider;
import org.apache.archiva.repository.RepositoryRegistry;
import org.apache.archiva.repository.RepositoryType;
import org.apache.archiva.repository.UnsupportedRepositoryTypeException;
import org.apache.archiva.repository.base.validation.CommonGroupValidator;
import org.apache.archiva.repository.event.LifecycleEvent;
import org.apache.archiva.repository.event.RepositoryEvent;
import org.apache.archiva.repository.event.RepositoryIndexEvent;
@ -61,7 +61,6 @@ import org.apache.archiva.repository.features.IndexCreationFeature;
import org.apache.archiva.repository.features.StagingRepositoryFeature;
import org.apache.archiva.repository.metadata.MetadataReader;
import org.apache.archiva.repository.storage.StorageAsset;
import org.apache.archiva.repository.validation.RepositoryChecker;
import org.apache.archiva.repository.validation.RepositoryValidator;
import org.apache.archiva.repository.validation.ValidationError;
import org.apache.archiva.repository.validation.ValidationResponse;
@ -240,7 +239,7 @@ public class ArchivaRepositoryRegistry implements ConfigurationListener, EventHa
}
protected Map<RepositoryType, RepositoryProvider> getRepositoryProviderMap( )
public Map<RepositoryType, RepositoryProvider> getRepositoryProviderMap( )
{
Map<RepositoryType, RepositoryProvider> map = new HashMap<>( );
if ( repositoryProviders != null )
@ -256,7 +255,7 @@ public class ArchivaRepositoryRegistry implements ConfigurationListener, EventHa
return map;
}
protected RepositoryProvider getProvider( RepositoryType type ) throws RepositoryException
public RepositoryProvider getProvider( RepositoryType type ) throws RepositoryException
{
return repositoryProviders.stream( ).filter( repositoryProvider -> repositoryProvider.provides( ).contains( type ) ).findFirst( ).orElseThrow( ( ) -> new RepositoryException( "Repository type cannot be handled: " + type ) );
}

View File

@ -72,7 +72,7 @@ public class ConfigurationHandler
archivaConfiguration.save( configuration, "" );
}
ReentrantReadWriteLock getLock() {
public ReentrantReadWriteLock getLock() {
return lock;
}
}

View File

@ -1,4 +1,4 @@
package org.apache.archiva.repository.base;
package org.apache.archiva.repository.base.group;
/*
* Licensed to the Apache Software Foundation (ASF) under one
@ -9,8 +9,7 @@ package org.apache.archiva.repository.base;
* "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
*
* 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
@ -23,6 +22,7 @@ import org.apache.archiva.repository.EditableRepositoryGroup;
import org.apache.archiva.repository.ManagedRepository;
import org.apache.archiva.repository.RepositoryCapabilities;
import org.apache.archiva.repository.RepositoryType;
import org.apache.archiva.repository.base.AbstractRepository;
import org.apache.archiva.repository.storage.RepositoryStorage;
import org.apache.commons.collections4.map.ListOrderedMap;
@ -38,7 +38,7 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
public class AbstractRepositoryGroup extends AbstractRepository implements EditableRepositoryGroup
{
private ListOrderedMap<String, ManagedRepository> repositories = new ListOrderedMap<>();
private final ListOrderedMap<String, ManagedRepository> repositories = new ListOrderedMap<>();
private int mergedIndexTTL;

View File

@ -1,4 +1,4 @@
package org.apache.archiva.repository.base.validation;
package org.apache.archiva.repository.base.group;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@ -17,7 +17,6 @@ package org.apache.archiva.repository.base.validation;
* under the License.
*/
import org.apache.archiva.repository.Repository;
import org.apache.archiva.repository.RepositoryGroup;
import org.apache.archiva.repository.RepositoryRegistry;
import org.apache.archiva.repository.base.ConfigurationHandler;
@ -28,13 +27,13 @@ import org.apache.archiva.repository.validation.ValidationResponse;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static org.apache.archiva.repository.validation.ErrorKeys.*;
/**
*
* A validator for repository groups. All validation errors are prefixed with category 'repository_group'.
@ -42,54 +41,47 @@ import java.util.regex.Pattern;
* @author Martin Stockhammer <martin_s@apache.org>
*/
@Service( "repositoryValidator#common#group" )
public class CommonGroupValidator extends AbstractRepositoryValidator<RepositoryGroup> implements RepositoryValidator<RepositoryGroup>
public class BasicRepositoryGroupValidator extends AbstractRepositoryValidator<RepositoryGroup> implements RepositoryValidator<RepositoryGroup>
{
private static final Pattern REPO_GROUP_ID_PATTERN = Pattern.compile( "[A-Za-z0-9\\._\\-]+" );
private static final String CATEGORY = "repository_group";
private static final Pattern REPO_GROUP_ID_PATTERN = Pattern.compile( "[A-Za-z0-9._\\-]+" );
private final ConfigurationHandler configurationHandler;
private RepositoryRegistry repositoryRegistry;
public CommonGroupValidator( ConfigurationHandler configurationHandler )
public BasicRepositoryGroupValidator( ConfigurationHandler configurationHandler )
{
super( CATEGORY );
this.configurationHandler = configurationHandler;
}
private Map<String, List<ValidationError>> appendError( Map<String, List<ValidationError>> errorMap, String errorKey, Object... parameter )
{
Map<String, List<ValidationError>> result;
result = errorMap == null ? new HashMap<>( ) : errorMap;
ValidationError error = ValidationError.ofKey( errorKey, parameter );
List<ValidationError> errList = result.computeIfAbsent( error.getAttribute( ), k -> new ArrayList<ValidationError>( ) );
errList.add( error );
return result;
}
public ValidationResponse apply( RepositoryGroup repositoryGroup, boolean updateMode ) throws IllegalArgumentException
@Override
public ValidationResponse<RepositoryGroup> apply( RepositoryGroup repositoryGroup, boolean updateMode ) throws IllegalArgumentException
{
final String repoGroupId = repositoryGroup.getId( );
Map<String, List<ValidationError>> errors = null;
if ( StringUtils.isBlank( repoGroupId ) )
{
errors = appendError( errors, "repository_group.id.empty" );
errors = appendError( null, "id", ISEMPTY );
}
if ( repoGroupId.length( ) > 100 )
{
errors = appendError( errors, "repository_group.id.max_length", repoGroupId, Integer.toString( 100 ) );
errors = appendError( errors, "id", MAX_LENGTH_EXCEEDED, repoGroupId, Integer.toString( 100 ) );
}
Matcher matcher = REPO_GROUP_ID_PATTERN.matcher( repoGroupId );
if ( !matcher.matches( ) )
{
errors = appendError( errors, "repository_group.id.invalid_chars", "alphanumeric, '.', '-','_'" );
errors = appendError( errors, "id", INVALID_CHARS, repoGroupId, new String[]{"alphanumeric, '.', '-','_'"} );
}
if ( repositoryGroup.getMergedIndexTTL( ) <= 0 )
{
errors = appendError( errors, "repository_group.merged_index_ttl.min", "0" );
errors = appendError( errors, "merged_index_ttl",BELOW_MIN, "0" );
}
@ -97,18 +89,18 @@ public class CommonGroupValidator extends AbstractRepositoryValidator<Repository
{
if ( repositoryRegistry.hasRepositoryGroup( repoGroupId ) )
{
errors = appendError( errors, "repository_group.id.group_exists", repoGroupId );
errors = appendError( errors, "id", REPOSITORY_GROUP_EXISTS, repoGroupId );
}
else if ( repositoryRegistry.hasManagedRepository( repoGroupId ) )
{
errors = appendError( errors, "repository_group.id.managed_exists" );
errors = appendError( errors, "id", MANAGED_REPOSITORY_EXISTS );
}
else if ( repositoryRegistry.hasRemoteRepository( repoGroupId ) )
{
errors = appendError( errors, "repository_group.id.remote_exists" );
errors = appendError( errors, "id", REMOTE_REPOSITORY_EXISTS );
}
}
return new ValidationResponse(repositoryGroup, errors );
return new ValidationResponse<>(repositoryGroup, errors );
}
@ -136,9 +128,4 @@ public class CommonGroupValidator extends AbstractRepositoryValidator<Repository
return RepositoryGroup.class;
}
@Override
public boolean isFlavour( Class<?> clazz )
{
return RepositoryGroup.class.isAssignableFrom( clazz );
}
}

View File

@ -1,4 +1,4 @@
package org.apache.archiva.repository.base;
package org.apache.archiva.repository.base.group;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@ -20,13 +20,15 @@ package org.apache.archiva.repository.base;
import org.apache.archiva.components.registry.RegistryException;
import org.apache.archiva.configuration.Configuration;
import org.apache.archiva.configuration.IndeterminateConfigurationException;
import org.apache.archiva.configuration.ManagedRepositoryConfiguration;
import org.apache.archiva.configuration.RepositoryGroupConfiguration;
import org.apache.archiva.indexer.merger.MergedRemoteIndexesScheduler;
import org.apache.archiva.repository.CheckedResult;
import org.apache.archiva.repository.base.ArchivaRepositoryRegistry;
import org.apache.archiva.repository.base.ConfigurationHandler;
import org.apache.archiva.repository.validation.CheckedResult;
import org.apache.archiva.repository.EditableRepository;
import org.apache.archiva.repository.EditableRepositoryGroup;
import org.apache.archiva.repository.ManagedRepository;
import org.apache.archiva.repository.Repository;
import org.apache.archiva.repository.RepositoryException;
import org.apache.archiva.repository.RepositoryGroup;
import org.apache.archiva.repository.RepositoryHandler;
@ -35,8 +37,10 @@ import org.apache.archiva.repository.RepositoryType;
import org.apache.archiva.repository.event.RepositoryEvent;
import org.apache.archiva.repository.features.IndexCreationFeature;
import org.apache.archiva.repository.storage.StorageAsset;
import org.apache.archiva.repository.validation.CombinedValidator;
import org.apache.archiva.repository.validation.RepositoryChecker;
import org.apache.archiva.repository.validation.RepositoryValidator;
import org.apache.archiva.repository.validation.ValidationResponse;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -90,13 +94,24 @@ public class RepositoryGroupHandler implements RepositoryHandler<RepositoryGroup
public RepositoryGroupHandler( ArchivaRepositoryRegistry repositoryRegistry,
ConfigurationHandler configurationHandler,
@Named( "mergedRemoteIndexesScheduler#default" ) MergedRemoteIndexesScheduler mergedRemoteIndexesScheduler,
@Named( "repositoryValidator#common#group") RepositoryValidator<RepositoryGroup> repositoryGroupValidator
List<RepositoryValidator<? extends Repository>> repositoryGroupValidatorList
)
{
this.configurationHandler = configurationHandler;
this.mergedRemoteIndexesScheduler = mergedRemoteIndexesScheduler;
this.repositoryRegistry = repositoryRegistry;
this.validator = repositoryGroupValidator;
List<RepositoryValidator<RepositoryGroup>> validatorList = initValidators( repositoryGroupValidatorList );
this.validator = new CombinedValidator<>( RepositoryGroup.class, validatorList );
}
private List<RepositoryValidator<RepositoryGroup>> initValidators(List<RepositoryValidator<? extends Repository>> repositoryGroupValidatorList) {
if (repositoryGroupValidatorList!=null && repositoryGroupValidatorList.size()>0) {
return repositoryGroupValidatorList.stream( ).filter(
v -> v.isFlavour( RepositoryGroup.class )
).map( v -> v.narrowTo( RepositoryGroup.class ) ).collect( Collectors.toList( ) );
} else {
return Collections.emptyList( );
}
}
@Override
@ -565,6 +580,18 @@ public class RepositoryGroupHandler implements RepositoryHandler<RepositoryGroup
return this.validator;
}
@Override
public ValidationResponse<RepositoryGroup> validateRepository( RepositoryGroup repository )
{
return null;
}
@Override
public ValidationResponse<RepositoryGroup> validateRepositoryForUpdate( RepositoryGroup repository )
{
return null;
}
@Override
public boolean has( String id )
{

View File

@ -1,4 +1,4 @@
package org.apache.archiva.repository.base;
package org.apache.archiva.repository.base.managed;
/*
* Licensed to the Apache Software Foundation (ASF) under one
@ -9,8 +9,7 @@ package org.apache.archiva.repository.base;
* "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
*
* 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
@ -24,6 +23,7 @@ import org.apache.archiva.repository.EditableManagedRepository;
import org.apache.archiva.repository.ManagedRepositoryContent;
import org.apache.archiva.repository.ReleaseScheme;
import org.apache.archiva.repository.RepositoryType;
import org.apache.archiva.repository.base.AbstractRepository;
import org.apache.archiva.repository.storage.RepositoryStorage;
import java.util.Collections;

View File

@ -1,4 +1,4 @@
package org.apache.archiva.repository.base;
package org.apache.archiva.repository.base.managed;
/*
* Licensed to the Apache Software Foundation (ASF) under one
@ -9,8 +9,7 @@ package org.apache.archiva.repository.base;
* "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
*
* 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
@ -26,7 +25,6 @@ import org.apache.archiva.repository.RepositoryCapabilities;
import org.apache.archiva.repository.RepositoryRequestInfo;
import org.apache.archiva.repository.RepositoryType;
import org.apache.archiva.repository.StandardCapabilities;
import org.apache.archiva.repository.storage.StorageAsset;
import org.apache.archiva.repository.storage.fs.FilesystemStorage;
import org.apache.archiva.repository.storage.RepositoryStorage;
import org.apache.archiva.repository.features.ArtifactCleanupFeature;

View File

@ -0,0 +1,149 @@
package org.apache.archiva.repository.base.managed;
/*
* 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.components.registry.Registry;
import org.apache.archiva.repository.base.ConfigurationHandler;
import org.apache.archiva.repository.validation.AbstractRepositoryValidator;
import org.apache.archiva.repository.ManagedRepository;
import org.apache.archiva.repository.RepositoryRegistry;
import org.apache.archiva.repository.validation.RepositoryValidator;
import org.apache.archiva.repository.validation.ValidationError;
import org.apache.archiva.repository.validation.ValidationResponse;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.apache.archiva.components.scheduler.CronExpressionValidator;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
import static org.apache.archiva.repository.validation.ErrorKeys.*;
/**
* Validator for managed repository data.
*
* @author Martin Stockhammer <martin_s@apache.org>
*/
@Service( "repositoryValidator#common#managed" )
public class BasicManagedRepositoryValidator extends AbstractRepositoryValidator<ManagedRepository> implements RepositoryValidator<ManagedRepository>
{
RepositoryRegistry repositoryRegistry;
private static final String CATEGORY = "managed_repository";
private static final Pattern REPOSITORY_ID_VALID_EXPRESSION_PATTERN = Pattern.compile( REPOSITORY_ID_VALID_EXPRESSION );
private static final Pattern REPOSITORY_NAME_VALID_EXPRESSION_PATTERN = Pattern.compile( REPOSITORY_NAME_VALID_EXPRESSION );
private static final Pattern REPOSITORY_LOCATION_VALID_EXPRESSION_PATTERN = Pattern.compile( REPOSITORY_LOCATION_VALID_EXPRESSION );
private final ConfigurationHandler configurationHandler;
public BasicManagedRepositoryValidator( ConfigurationHandler configurationHandler)
{
super( CATEGORY );
this.configurationHandler = configurationHandler;
}
@Override
public ValidationResponse<ManagedRepository> apply( ManagedRepository managedRepository, boolean update )
{
Map<String, List<ValidationError>> errors = null;
if (managedRepository==null) {
errors = appendError( errors, "id", ISNULL );
}
final String repoId = managedRepository.getId( );
if ( StringUtils.isBlank( repoId ) ) {
errors = appendError( errors, "id", ISEMPTY );
}
if (!update)
{
if ( repositoryRegistry.hasManagedRepository( managedRepository.getId( ) ) )
{
errors = appendError( errors, "id", MANAGED_REPOSITORY_EXISTS, repoId );
}
else if ( repositoryRegistry.hasRemoteRepository( repoId ) )
{
errors = appendError( errors, "id", REMOTE_REPOSITORY_EXISTS, repoId );
}
else if ( repositoryRegistry.hasRepositoryGroup( repoId ) )
{
errors = appendError( errors, "id", REPOSITORY_GROUP_EXISTS, repoId );
}
}
if ( !REPOSITORY_ID_VALID_EXPRESSION_PATTERN.matcher( repoId ).matches( ) )
{
errors = appendError( errors, "id", INVALID_CHARS, repoId, new String[]{"alphanumeric", "_", ".", "-"} );
}
if ( StringUtils.isBlank( managedRepository.getName() ) )
{
errors = appendError( errors, "name", ISEMPTY );
}
if ( !REPOSITORY_NAME_VALID_EXPRESSION_PATTERN.matcher( managedRepository.getName() ).matches( ) )
{
errors = appendError( errors, "name", INVALID_CHARS, managedRepository.getName( ), new String[]{"alphanumeric", "whitespace", "/", "(", ")", "_", ".", "-"} );
}
String cronExpression = managedRepository.getSchedulingDefinition( );
if ( StringUtils.isNotBlank( cronExpression ) )
{
CronExpressionValidator validator = new CronExpressionValidator( );
if ( !validator.validate( cronExpression ) )
{
errors = appendError( errors, "scheduling_definition", INVALID_SCHEDULING_EXPRESSION, cronExpression );
}
}
// Cron expression may be empty
String repoLocation = interpolateVars( managedRepository.getLocation( ).toString() );
if ( !REPOSITORY_LOCATION_VALID_EXPRESSION_PATTERN.matcher( repoLocation ).matches() )
{
errors = appendError( errors, "location", INVALID_LOCATION, repoLocation, new String[]{"alphanumeric", "=", "?", "!", "&", "/", "\\", "_", ".", ":", "~", "-"} );
}
return new ValidationResponse<>( managedRepository, errors );
}
public String interpolateVars( String directory )
{
Registry registry = configurationHandler.getArchivaConfiguration( ).getRegistry( );
String value = StringUtils.replace( directory, "${appserver.base}",
registry.getString( "appserver.base", "${appserver.base}" ) );
value = StringUtils.replace( value, "${appserver.home}",
registry.getString( "appserver.home", "${appserver.home}" ) );
return value;
}
@Override
public void setRepositoryRegistry( RepositoryRegistry repositoryRegistry )
{
this.repositoryRegistry = repositoryRegistry;
}
@Override
public Class<ManagedRepository> getFlavour( )
{
return ManagedRepository.class;
}
}

View File

@ -0,0 +1,165 @@
package org.apache.archiva.repository.base.managed;
/*
* 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.configuration.Configuration;
import org.apache.archiva.configuration.ManagedRepositoryConfiguration;
import org.apache.archiva.repository.base.ArchivaRepositoryRegistry;
import org.apache.archiva.repository.base.ConfigurationHandler;
import org.apache.archiva.repository.validation.CheckedResult;
import org.apache.archiva.repository.ManagedRepository;
import org.apache.archiva.repository.RepositoryException;
import org.apache.archiva.repository.RepositoryHandler;
import org.apache.archiva.repository.RepositoryType;
import org.apache.archiva.repository.validation.RepositoryChecker;
import org.apache.archiva.repository.validation.RepositoryValidator;
import org.apache.archiva.repository.validation.ValidationResponse;
import javax.inject.Named;
import java.util.Collection;
import java.util.Map;
/**
* Handler implementation for managed repositories.
*
* @author Martin Stockhammer <martin_s@apache.org>
*/
public class ManagedRepositoryHandler
implements RepositoryHandler<ManagedRepository, ManagedRepositoryConfiguration>
{
public ManagedRepositoryHandler( ArchivaRepositoryRegistry repositoryRegistry,
ConfigurationHandler configurationHandler,
@Named( "repositoryValidator#common#managed") RepositoryValidator<ManagedRepository> managedRepositoryValidator )
{
}
@Override
public Map<String, ManagedRepository> newInstancesFromConfig( )
{
return null;
}
@Override
public ManagedRepository newInstance( RepositoryType type, String id ) throws RepositoryException
{
return null;
}
@Override
public ManagedRepository newInstance( ManagedRepositoryConfiguration repositoryConfiguration ) throws RepositoryException
{
return null;
}
@Override
public ManagedRepository put( ManagedRepository repository ) throws RepositoryException
{
return null;
}
@Override
public ManagedRepository put( ManagedRepositoryConfiguration repositoryConfiguration ) throws RepositoryException
{
return null;
}
@Override
public ManagedRepository put( ManagedRepositoryConfiguration repositoryConfiguration, Configuration configuration ) throws RepositoryException
{
return null;
}
@Override
public <D> CheckedResult<ManagedRepository, D> putWithCheck( ManagedRepositoryConfiguration repositoryConfiguration, RepositoryChecker<ManagedRepository, D> checker ) throws RepositoryException
{
return null;
}
@Override
public void remove( String id ) throws RepositoryException
{
}
@Override
public void remove( String id, Configuration configuration ) throws RepositoryException
{
}
@Override
public ManagedRepository get( String id )
{
return null;
}
@Override
public ManagedRepository clone( ManagedRepository repo ) throws RepositoryException
{
return null;
}
@Override
public void updateReferences( ManagedRepository repo, ManagedRepositoryConfiguration repositoryConfiguration ) throws RepositoryException
{
}
@Override
public Collection<ManagedRepository> getAll( )
{
return null;
}
@Override
public RepositoryValidator<ManagedRepository> getValidator( )
{
return null;
}
@Override
public ValidationResponse<ManagedRepository> validateRepository( ManagedRepository repository )
{
return null;
}
@Override
public ValidationResponse<ManagedRepository> validateRepositoryForUpdate( ManagedRepository repository )
{
return null;
}
@Override
public boolean has( String id )
{
return false;
}
@Override
public void init( )
{
}
@Override
public void close( )
{
}
}

View File

@ -1,4 +1,4 @@
package org.apache.archiva.repository.base;
package org.apache.archiva.repository.base.remote;
/*
* Licensed to the Apache Software Foundation (ASF) under one
@ -9,8 +9,7 @@ package org.apache.archiva.repository.base;
* "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
*
* 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
@ -24,6 +23,7 @@ import org.apache.archiva.repository.EditableRemoteRepository;
import org.apache.archiva.repository.RemoteRepositoryContent;
import org.apache.archiva.repository.RepositoryCredentials;
import org.apache.archiva.repository.RepositoryType;
import org.apache.archiva.repository.base.AbstractRepository;
import org.apache.archiva.repository.storage.RepositoryStorage;
import java.net.URI;

View File

@ -1,4 +1,4 @@
package org.apache.archiva.repository.base;
package org.apache.archiva.repository.base.remote;
/*
* Licensed to the Apache Software Foundation (ASF) under one
@ -9,8 +9,7 @@ package org.apache.archiva.repository.base;
* "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
*
* 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

View File

@ -30,6 +30,9 @@ import org.apache.archiva.repository.Repository;
import org.apache.archiva.repository.RepositoryException;
import org.apache.archiva.repository.RepositoryRegistry;
import org.apache.archiva.repository.RepositoryType;
import org.apache.archiva.repository.base.group.RepositoryGroupHandler;
import org.apache.archiva.repository.base.managed.BasicManagedRepository;
import org.apache.archiva.repository.base.remote.BasicRemoteRepository;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;

View File

@ -0,0 +1,48 @@
package org.apache.archiva.repository.base.group;
/*
* 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.junit.jupiter.api.Test;
/**
* @author Martin Stockhammer <martin_s@apache.org>
*/
class BasicManagedRepositoryValidatorTest
{
@Test
void apply( )
{
}
@Test
void applyForUpdate( )
{
}
@Test
void getFlavour( )
{
}
@Test
void isFlavour( )
{
}
}

View File

@ -30,8 +30,8 @@ import org.apache.archiva.repository.features.ArtifactCleanupFeature;
import org.apache.archiva.repository.features.IndexCreationFeature;
import org.apache.archiva.repository.features.RemoteIndexFeature;
import org.apache.archiva.repository.features.StagingRepositoryFeature;
import org.apache.archiva.repository.base.BasicManagedRepository;
import org.apache.archiva.repository.base.BasicRemoteRepository;
import org.apache.archiva.repository.base.managed.BasicManagedRepository;
import org.apache.archiva.repository.base.remote.BasicRemoteRepository;
import org.apache.archiva.repository.base.PasswordCredentials;
import org.springframework.stereotype.Service;

View File

@ -23,8 +23,8 @@ import junit.framework.TestCase;
import org.apache.archiva.configuration.ArchivaConfiguration;
import org.apache.archiva.consumers.InvalidRepositoryContentConsumer;
import org.apache.archiva.consumers.KnownRepositoryContentConsumer;
import org.apache.archiva.repository.base.BasicManagedRepository;
import org.apache.archiva.repository.base.BasicRemoteRepository;
import org.apache.archiva.repository.base.managed.BasicManagedRepository;
import org.apache.archiva.repository.base.remote.BasicRemoteRepository;
import org.apache.archiva.repository.ManagedRepository;
import org.apache.archiva.repository.RemoteRepository;
import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;

View File

@ -24,8 +24,8 @@ import org.apache.archiva.common.filelock.DefaultFileLockManager;
import org.apache.archiva.common.filelock.FileLockManager;
import org.apache.archiva.consumers.InvalidRepositoryContentConsumer;
import org.apache.archiva.consumers.KnownRepositoryContentConsumer;
import org.apache.archiva.repository.base.BasicManagedRepository;
import org.apache.archiva.repository.base.BasicRemoteRepository;
import org.apache.archiva.repository.base.managed.BasicManagedRepository;
import org.apache.archiva.repository.base.remote.BasicRemoteRepository;
import org.apache.archiva.repository.EditableManagedRepository;
import org.apache.archiva.repository.EditableRemoteRepository;
import org.apache.archiva.repository.ManagedRepository;

View File

@ -24,7 +24,7 @@ import org.apache.archiva.indexer.ArchivaIndexingContext;
import org.apache.archiva.indexer.IndexCreationFailedException;
import org.apache.archiva.repository.base.ArchivaRepositoryRegistry;
import org.apache.archiva.repository.RepositoryType;
import org.apache.archiva.repository.base.RepositoryGroupHandler;
import org.apache.archiva.repository.base.group.RepositoryGroupHandler;
import org.apache.archiva.repository.features.IndexCreationFeature;
import org.apache.archiva.repository.features.RemoteIndexFeature;
import org.apache.archiva.repository.maven.MavenManagedRepository;

View File

@ -31,8 +31,7 @@ import org.apache.archiva.indexer.search.SearchResults;
import org.apache.archiva.proxy.ProxyRegistry;
import org.apache.archiva.repository.base.ArchivaRepositoryRegistry;
import org.apache.archiva.repository.Repository;
import org.apache.archiva.repository.base.ConfigurationHandler;
import org.apache.archiva.repository.base.RepositoryGroupHandler;
import org.apache.archiva.repository.base.group.RepositoryGroupHandler;
import org.apache.archiva.repository.features.IndexCreationFeature;
import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
import org.apache.commons.lang3.SystemUtils;

View File

@ -23,7 +23,7 @@ import org.apache.archiva.indexer.search.SearchFields;
import org.apache.archiva.indexer.search.SearchResultHit;
import org.apache.archiva.indexer.search.SearchResults;
import org.apache.archiva.repository.base.ArchivaRepositoryRegistry;
import org.apache.archiva.repository.base.RepositoryGroupHandler;
import org.apache.archiva.repository.base.group.RepositoryGroupHandler;
import org.easymock.EasyMock;
import org.junit.After;
import org.junit.Test;

View File

@ -24,12 +24,11 @@ import org.apache.archiva.indexer.search.SearchResultLimits;
import org.apache.archiva.indexer.search.SearchResults;
import org.apache.archiva.indexer.util.SearchUtil;
import org.apache.archiva.repository.base.ArchivaRepositoryRegistry;
import org.apache.archiva.repository.base.RepositoryGroupHandler;
import org.apache.archiva.repository.base.group.RepositoryGroupHandler;
import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
import org.junit.After;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import javax.inject.Inject;

View File

@ -24,7 +24,7 @@ import org.apache.archiva.configuration.*;
import org.apache.archiva.policies.*;
import org.apache.archiva.proxy.model.RepositoryProxyHandler;
import org.apache.archiva.repository.*;
import org.apache.archiva.repository.base.BasicManagedRepository;
import org.apache.archiva.repository.base.managed.BasicManagedRepository;
import org.apache.archiva.repository.storage.StorageAsset;
import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
import org.apache.maven.wagon.Wagon;

View File

@ -34,7 +34,7 @@ import org.apache.archiva.repository.content.BaseRepositoryContentLayout;
import org.apache.archiva.repository.ManagedRepository;
import org.apache.archiva.repository.ManagedRepositoryContent;
import org.apache.archiva.repository.RepositoryRegistry;
import org.apache.archiva.repository.base.BasicManagedRepository;
import org.apache.archiva.repository.base.managed.BasicManagedRepository;
import org.apache.archiva.repository.content.Artifact;
import org.apache.archiva.repository.storage.StorageAsset;
import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;

View File

@ -205,4 +205,10 @@ public class MockConfiguration
return getAppServerBaseDir().resolve("data");
}
}
@Override
public Registry getRegistry( )
{
return null;
}
}

View File

@ -23,8 +23,8 @@ import org.apache.archiva.configuration.ManagedRepositoryConfiguration;
import org.apache.archiva.configuration.RemoteRepositoryConfiguration;
import org.apache.archiva.configuration.RepositoryGroupConfiguration;
import org.apache.archiva.event.EventHandler;
import org.apache.archiva.repository.base.BasicManagedRepository;
import org.apache.archiva.repository.base.BasicRemoteRepository;
import org.apache.archiva.repository.base.managed.BasicManagedRepository;
import org.apache.archiva.repository.base.remote.BasicRemoteRepository;
import org.apache.archiva.repository.EditableManagedRepository;
import org.apache.archiva.repository.EditableRemoteRepository;
import org.apache.archiva.repository.EditableRepositoryGroup;

View File

@ -28,7 +28,7 @@ import org.apache.archiva.repository.RepositoryRequestInfo;
import org.apache.archiva.repository.RepositoryType;
import org.apache.archiva.repository.StandardCapabilities;
import org.apache.archiva.repository.UnsupportedFeatureException;
import org.apache.archiva.repository.base.AbstractManagedRepository;
import org.apache.archiva.repository.base.managed.AbstractManagedRepository;
import org.apache.archiva.repository.features.ArtifactCleanupFeature;
import org.apache.archiva.repository.features.IndexCreationFeature;
import org.apache.archiva.repository.features.RepositoryFeature;

View File

@ -8,7 +8,7 @@ import org.apache.archiva.repository.RepositoryCapabilities;
import org.apache.archiva.repository.RepositoryType;
import org.apache.archiva.repository.StandardCapabilities;
import org.apache.archiva.repository.UnsupportedFeatureException;
import org.apache.archiva.repository.base.AbstractRemoteRepository;
import org.apache.archiva.repository.base.remote.AbstractRemoteRepository;
import org.apache.archiva.repository.features.IndexCreationFeature;
import org.apache.archiva.repository.features.RemoteIndexFeature;
import org.apache.archiva.repository.features.RepositoryFeature;

View File

@ -26,7 +26,7 @@ import org.apache.archiva.repository.ReleaseScheme;
import org.apache.archiva.repository.RepositoryCapabilities;
import org.apache.archiva.repository.RepositoryType;
import org.apache.archiva.repository.StandardCapabilities;
import org.apache.archiva.repository.base.AbstractRepositoryGroup;
import org.apache.archiva.repository.base.group.AbstractRepositoryGroup;
import org.apache.archiva.repository.features.IndexCreationFeature;
import org.apache.archiva.repository.storage.fs.FilesystemStorage;
import org.slf4j.Logger;

View File

@ -41,7 +41,7 @@ import org.apache.archiva.repository.RepositoryGroup;
import org.apache.archiva.repository.RepositoryProvider;
import org.apache.archiva.repository.RepositoryType;
import org.apache.archiva.repository.UnsupportedURIException;
import org.apache.archiva.repository.base.BasicManagedRepository;
import org.apache.archiva.repository.base.managed.BasicManagedRepository;
import org.apache.archiva.repository.base.PasswordCredentials;
import org.apache.archiva.repository.event.RepositoryEvent;
import org.apache.archiva.repository.features.ArtifactCleanupFeature;

View File

@ -201,7 +201,11 @@ public class MockConfiguration
}
}
@Override
public Registry getRegistry( )
{
return null;
}
}

View File

@ -18,6 +18,7 @@ package org.apache.archiva.repository.maven.mock.configuration;
* under the License.
*/
import org.apache.archiva.components.registry.Registry;
import org.apache.archiva.components.registry.RegistryException;
import org.apache.archiva.components.registry.RegistryListener;
import org.apache.archiva.configuration.ArchivaConfiguration;
@ -149,4 +150,10 @@ public class StubConfiguration
}
}
@Override
public Registry getRegistry( )
{
return null;
}
}

View File

@ -1,5 +1,6 @@
package org.apache.archiva.repository.maven.mock.configuration;
import org.apache.archiva.components.registry.Registry;
import org.apache.archiva.components.registry.RegistryException;
import org.apache.archiva.components.registry.RegistryListener;
import org.apache.archiva.configuration.ArchivaConfiguration;
@ -138,4 +139,10 @@ public class TestConfiguration
return getAppServerBaseDir().resolve("data");
}
}
@Override
public Registry getRegistry( )
{
return null;
}
}

View File

@ -23,10 +23,10 @@ import junit.framework.TestCase;
import org.apache.archiva.indexer.ArchivaIndexingContext;
import org.apache.archiva.indexer.UnsupportedBaseContextException;
import org.apache.archiva.repository.base.ArchivaRepositoryRegistry;
import org.apache.archiva.repository.base.BasicManagedRepository;
import org.apache.archiva.repository.base.managed.BasicManagedRepository;
import org.apache.archiva.repository.ManagedRepository;
import org.apache.archiva.repository.ReleaseScheme;
import org.apache.archiva.repository.base.RepositoryGroupHandler;
import org.apache.archiva.repository.base.group.RepositoryGroupHandler;
import org.apache.archiva.repository.storage.StorageAsset;
import org.apache.archiva.repository.features.IndexCreationFeature;
import org.apache.archiva.scheduler.indexing.ArtifactIndexingTask;

View File

@ -29,7 +29,7 @@ import org.apache.archiva.mock.MockRepositorySessionFactory;
import org.apache.archiva.components.taskqueue.execution.TaskExecutor;
import org.apache.archiva.repository.ManagedRepository;
import org.apache.archiva.repository.RepositoryRegistry;
import org.apache.archiva.repository.base.RepositoryGroupHandler;
import org.apache.archiva.repository.base.group.RepositoryGroupHandler;
import org.apache.archiva.scheduler.repository.model.RepositoryTask;
import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
import org.junit.After;

View File

@ -47,7 +47,7 @@ import org.apache.archiva.redback.system.SecuritySystem;
import org.apache.archiva.redback.users.User;
import org.apache.archiva.redback.users.UserManagerException;
import org.apache.archiva.redback.users.UserNotFoundException;
import org.apache.archiva.repository.base.RepositoryGroupHandler;
import org.apache.archiva.repository.base.group.RepositoryGroupHandler;
import org.apache.archiva.repository.content.BaseRepositoryContentLayout;
import org.apache.archiva.repository.content.ContentNotFoundException;
import org.apache.archiva.repository.content.LayoutException;

View File

@ -34,19 +34,15 @@ package org.apache.archiva.rest.services.v2;/*
* under the License.
*/
import org.apache.archiva.components.registry.RegistryException;
import org.apache.archiva.components.rest.model.PagedResult;
import org.apache.archiva.components.rest.util.QueryHelper;
import org.apache.archiva.configuration.Configuration;
import org.apache.archiva.configuration.IndeterminateConfigurationException;
import org.apache.archiva.configuration.RepositoryGroupConfiguration;
import org.apache.archiva.repository.CheckedResult;
import org.apache.archiva.repository.validation.CheckedResult;
import org.apache.archiva.repository.EditableRepositoryGroup;
import org.apache.archiva.repository.RepositoryException;
import org.apache.archiva.repository.RepositoryRegistry;
import org.apache.archiva.repository.base.ConfigurationHandler;
import org.apache.archiva.repository.validation.ValidationError;
import org.apache.archiva.repository.validation.ValidationResponse;
import org.apache.archiva.rest.api.model.v2.MergeConfiguration;
import org.apache.archiva.rest.api.model.v2.RepositoryGroup;
import org.apache.archiva.rest.api.services.v2.ArchivaRestServiceException;

View File

@ -28,7 +28,7 @@ import org.apache.archiva.metadata.repository.MetadataRepository;
import org.apache.archiva.metadata.repository.RepositorySession;
import org.apache.archiva.metadata.repository.RepositorySessionFactory;
import org.apache.archiva.repository.base.ArchivaRepositoryRegistry;
import org.apache.archiva.repository.base.BasicManagedRepository;
import org.apache.archiva.repository.base.managed.BasicManagedRepository;
import org.apache.archiva.repository.Repository;
import org.apache.archiva.repository.RepositoryRegistry;
import org.apache.archiva.repository.storage.fs.FilesystemStorage;

View File

@ -23,7 +23,7 @@ package org.apache.archiva.web.rss;
import junit.framework.TestCase;
import org.apache.archiva.common.filelock.DefaultFileLockManager;
import org.apache.archiva.configuration.ArchivaConfiguration;
import org.apache.archiva.repository.base.BasicManagedRepository;
import org.apache.archiva.repository.base.managed.BasicManagedRepository;
import org.apache.archiva.repository.RepositoryRegistry;
import org.apache.archiva.repository.storage.fs.FilesystemStorage;
import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;

View File

@ -30,7 +30,7 @@ import org.apache.archiva.indexer.ArchivaIndexingContext;
import org.apache.archiva.repository.base.ArchivaRepositoryRegistry;
import org.apache.archiva.repository.ManagedRepository;
import org.apache.archiva.repository.RepositoryType;
import org.apache.archiva.repository.base.RepositoryGroupHandler;
import org.apache.archiva.repository.base.group.RepositoryGroupHandler;
import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
import org.apache.archiva.webdav.httpunit.MkColMethodWebRequest;
import org.apache.commons.io.FileUtils;

View File

@ -34,7 +34,7 @@ import org.apache.archiva.configuration.FileTypes;
import org.apache.archiva.configuration.RepositoryGroupConfiguration;
import org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator;
import org.apache.archiva.repository.ManagedRepositoryContent;
import org.apache.archiva.repository.base.RepositoryGroupHandler;
import org.apache.archiva.repository.base.group.RepositoryGroupHandler;
import org.apache.archiva.repository.maven.content.MavenContentHelper;
import org.apache.archiva.repository.maven.metadata.storage.ArtifactMappingProvider;
import org.apache.archiva.proxy.ProxyRegistry;

View File

@ -35,7 +35,7 @@ import org.apache.archiva.redback.users.User;
import org.apache.archiva.redback.users.memory.SimpleUser;
import org.apache.archiva.repository.RepositoryRegistry;
import org.apache.archiva.metadata.audit.TestAuditListener;
import org.apache.archiva.repository.base.RepositoryGroupHandler;
import org.apache.archiva.repository.base.group.RepositoryGroupHandler;
import org.apache.archiva.security.ServletAuthenticator;
import org.apache.archiva.security.common.ArchivaRoleConstants;
import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;

View File

@ -28,7 +28,7 @@ import org.apache.archiva.metadata.repository.MetadataRepository;
import org.apache.archiva.metadata.repository.RepositorySession;
import org.apache.archiva.metadata.repository.RepositorySessionFactory;
import org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator;
import org.apache.archiva.repository.base.BasicManagedRepository;
import org.apache.archiva.repository.base.managed.BasicManagedRepository;
import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
import org.junit.Before;
import org.junit.Test;