mirror of https://github.com/apache/archiva.git
Refactoring of repository classes
This commit is contained in:
parent
084b9efccf
commit
bf219edd16
|
@ -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;
|
||||
|
|
|
@ -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( );
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
*/
|
|
@ -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( ) );
|
||||
}
|
||||
}
|
|
@ -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 );
|
||||
}
|
||||
}
|
|
@ -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";
|
||||
}
|
|
@ -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>
|
||||
|
|
|
@ -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._/~:?!&=\\\\]+$";
|
||||
|
||||
|
||||
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 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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 ) );
|
||||
}
|
||||
|
|
|
@ -72,7 +72,7 @@ public class ConfigurationHandler
|
|||
archivaConfiguration.save( configuration, "" );
|
||||
}
|
||||
|
||||
ReentrantReadWriteLock getLock() {
|
||||
public ReentrantReadWriteLock getLock() {
|
||||
return lock;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
@ -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 );
|
||||
}
|
||||
}
|
|
@ -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 )
|
||||
{
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
|
@ -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( )
|
||||
{
|
||||
|
||||
}
|
||||
}
|
|
@ -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;
|
|
@ -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
|
|
@ -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;
|
||||
|
|
|
@ -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( )
|
||||
{
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -205,4 +205,10 @@ public class MockConfiguration
|
|||
return getAppServerBaseDir().resolve("data");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Registry getRegistry( )
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -201,7 +201,11 @@ public class MockConfiguration
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Registry getRegistry( )
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue