You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ma...@apache.org on 2021/07/11 17:23:38 UTC
[archiva] branch master updated (04a35ef -> 51f6e48)
This is an automated email from the ASF dual-hosted git repository.
martin_s pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/archiva.git.
from 04a35ef Code cleanup
new 2c2af5b Adding state to repository instances
new 678d0c9 New test for group handler
new f7e0eea Renaming method of repository handler
new 51f6e48 Changing mockito dependency
The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../resourcesstatic/archetype-resources/pom.xml | 2 +-
.../archiva-core-consumers/pom.xml | 2 +-
.../archiva-repository-admin-default/pom.xml | 2 +-
.../archiva/repository/EditableRepository.java | 5 +++
.../org/apache/archiva/repository/Repository.java | 11 ++++-
.../archiva/repository/RepositoryHandler.java | 27 ++++++++----
...tRuntimeException.java => RepositoryState.java} | 21 +++++----
.../repository/base/AbstractRepository.java | 16 +++++++
.../repository/base/AbstractRepositoryHandler.java | 18 ++++++++
.../repository/base/ArchivaRepositoryRegistry.java | 10 ++---
.../base/group/BasicRepositoryGroup.java | 2 +
.../base/group/RepositoryGroupHandler.java | 34 +++++++++++----
.../base/managed/BasicManagedRepository.java | 3 ++
.../base/managed/ManagedRepositoryHandler.java | 6 +--
.../base/remote/BasicRemoteRepository.java | 3 ++
.../base/group/RepositoryGroupHandlerTest.java | 50 ++++++++++++++++++++--
.../repository/mock/RepositoryProviderMock.java | 21 ++++++++-
.../resources/{archiva.xml => archiva-group.xml} | 10 +++++
...spring-context.xml => spring-context-group.xml} | 2 +-
.../archiva-base/archiva-storage-api/pom.xml | 2 +-
.../archiva-maven/archiva-maven-repository/pom.xml | 2 +-
.../repository/maven/MavenManagedRepository.java | 3 ++
.../repository/maven/MavenRemoteRepository.java | 4 +-
.../repository/maven/MavenRepositoryGroup.java | 3 ++
.../archiva-scheduler-repository/pom.xml | 2 +-
.../metadata-store-file/pom.xml | 2 +-
archiva-modules/plugins/problem-reports/pom.xml | 2 +-
pom.xml | 7 ---
28 files changed, 213 insertions(+), 59 deletions(-)
copy archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/{content/LayoutRuntimeException.java => RepositoryState.java} (71%)
copy archiva-modules/archiva-base/archiva-repository-layer/src/test/resources/{archiva.xml => archiva-group.xml} (96%)
copy archiva-modules/archiva-base/archiva-repository-layer/src/test/resources/{spring-context.xml => spring-context-group.xml} (96%)
[archiva] 02/04: New test for group handler
Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
martin_s pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/archiva.git
commit 678d0c98ea47b0a2fb866556ad2255f5bb30a01e
Author: Martin Stockhammer <ma...@apache.org>
AuthorDate: Tue Jul 6 20:46:51 2021 +0200
New test for group handler
---
.../archiva/repository/RepositoryHandler.java | 14 +-
.../base/group/RepositoryGroupHandler.java | 11 +-
.../base/managed/ManagedRepositoryHandler.java | 4 +-
.../base/group/RepositoryGroupHandlerTest.java | 46 +++++
.../repository/mock/RepositoryProviderMock.java | 21 +-
.../src/test/resources/archiva-group.xml | 212 +++++++++++++++++++++
.../src/test/resources/spring-context-group.xml | 57 ++++++
7 files changed, 348 insertions(+), 17 deletions(-)
diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryHandler.java b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryHandler.java
index efd6c47..058fd65 100644
--- a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryHandler.java
+++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryHandler.java
@@ -22,7 +22,6 @@ 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.ValidationError;
-import org.apache.archiva.repository.validation.ValidationResponse;
import java.util.Collection;
import java.util.List;
@@ -57,7 +56,7 @@ public interface RepositoryHandler<R extends Repository, C>
* Initializes the repository. E.g. starts scheduling and activate additional processes.
* @param repository the repository to initialize
*/
- void initialize( R repository );
+ void activateRepository( R repository );
/**
* Creates new instances from the archiva configuration. The instances are not registered in the registry.
@@ -77,7 +76,7 @@ public interface RepositoryHandler<R extends Repository, C>
R newInstance( RepositoryType type, String id ) throws RepositoryException;
/**
- * Creates a new instance and updates the given configuration object.
+ * Creates a new instance based on the given configuration instance. The instance is not activated and not registered.
*
* @param repositoryConfiguration the configuration instance
* @return a newly created instance
@@ -152,10 +151,11 @@ public interface RepositoryHandler<R extends Repository, C>
void remove( String id, Configuration configuration ) throws RepositoryException;
/**
- * Returns the repository with the given identifier or <code>null</code>, if it is not registered.
+ * Returns the repository with the given identifier or <code>null</code>, if no repository is registered
+ * with the given id.
*
* @param id the repository id
- * @return if the retrieval failed
+ * @return the repository instance or <code>null</code>
*/
R get( String id );
@@ -222,12 +222,12 @@ public interface RepositoryHandler<R extends Repository, C>
boolean has( String id );
/**
- * Initializes
+ * Initializes the handler. This method must be called before using the repository handler.
*/
void init( );
/**
- * Closes the handler
+ * Closes the handler. After closing, the repository handler instance is not usable anymore.
*/
void close( );
diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/group/RepositoryGroupHandler.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/group/RepositoryGroupHandler.java
index 560eb72..4036576 100644
--- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/group/RepositoryGroupHandler.java
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/group/RepositoryGroupHandler.java
@@ -42,7 +42,6 @@ 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;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -125,7 +124,7 @@ public class RepositoryGroupHandler
this.repositoryGroups.putAll( newInstancesFromConfig( ) );
for ( RepositoryGroup group : this.repositoryGroups.values( ) )
{
- initialize( group );
+ activateRepository( group );
}
}
@@ -147,7 +146,7 @@ public class RepositoryGroupHandler
}
@Override
- public void initialize( RepositoryGroup repositoryGroup )
+ public void activateRepository( RepositoryGroup repositoryGroup )
{
StorageAsset indexDirectory = getMergedIndexDirectory( repositoryGroup );
if ( !indexDirectory.exists( ) )
@@ -296,7 +295,7 @@ public class RepositoryGroupHandler
configuration.addRepositoryGroup( newCfg );
configurationHandler.save( configuration, ConfigurationHandler.REGISTRY_EVENT_TAG );
setLastState( repositoryGroup, RepositoryState.SAVED );
- initialize( repositoryGroup );
+ activateRepository( repositoryGroup );
}
finally
{
@@ -357,7 +356,7 @@ public class RepositoryGroupHandler
configurationHandler.save( configuration, ConfigurationHandler.REGISTRY_EVENT_TAG );
updateReferences( currentRepository, repositoryGroupConfiguration );
setLastState( currentRepository, RepositoryState.REFERENCES_SET );
- initialize( currentRepository );
+ activateRepository( currentRepository );
this.repositoryGroups.put( id, currentRepository );
setLastState( currentRepository, RepositoryState.REGISTERED );
}
@@ -379,7 +378,7 @@ public class RepositoryGroupHandler
}
updateReferences( oldRepository, oldCfg );
setLastState( oldRepository, RepositoryState.REFERENCES_SET );
- initialize( oldRepository );
+ activateRepository( oldRepository );
repositoryGroups.put( id, oldRepository );
setLastState( oldRepository, RepositoryState.REGISTERED );
} else {
diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/managed/ManagedRepositoryHandler.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/managed/ManagedRepositoryHandler.java
index c7b10c6..6cfb228 100644
--- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/managed/ManagedRepositoryHandler.java
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/managed/ManagedRepositoryHandler.java
@@ -77,13 +77,13 @@ implements RepositoryHandler<ManagedRepository, ManagedRepositoryConfiguration>
this.managedRepositories.putAll( newInstancesFromConfig( ) );
for ( ManagedRepository managedRepository : this.managedRepositories.values( ) )
{
- initialize( managedRepository );
+ activateRepository( managedRepository );
}
}
@Override
- public void initialize( ManagedRepository repository )
+ public void activateRepository( ManagedRepository repository )
{
}
diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/base/group/RepositoryGroupHandlerTest.java b/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/base/group/RepositoryGroupHandlerTest.java
index 0043ee0..09c1c1d 100644
--- a/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/base/group/RepositoryGroupHandlerTest.java
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/base/group/RepositoryGroupHandlerTest.java
@@ -18,20 +18,66 @@ package org.apache.archiva.repository.base.group;
* under the License.
*/
+import org.apache.archiva.configuration.ArchivaConfiguration;
+import org.apache.archiva.indexer.merger.MergedRemoteIndexesScheduler;
+import org.apache.archiva.repository.Repository;
+import org.apache.archiva.repository.RepositoryRegistry;
+import org.apache.archiva.repository.base.ArchivaRepositoryRegistry;
+import org.apache.archiva.repository.base.ConfigurationHandler;
+import org.apache.archiva.repository.validation.RepositoryValidator;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+
+import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
/**
* @author Martin Stockhammer <ma...@apache.org>
*/
+@ExtendWith( SpringExtension.class)
+@ContextConfiguration(locations = { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context-group.xml" })
class RepositoryGroupHandlerTest
{
+ @Inject
+ @Named("repositoryRegistry")
+ ArchivaRepositoryRegistry repositoryRegistry;
+
+ @Inject
+ ConfigurationHandler configurationHandler;
+
+ @Inject
+ @Named( "mergedRemoteIndexesScheduler#default" )
+ MergedRemoteIndexesScheduler mergedRemoteIndexesScheduler;
+
+ @Inject
+ List<RepositoryValidator<? extends Repository>> repositoryValidatorList;
+
+ @Inject
+ ArchivaConfiguration archivaConfiguration;
+
+
+ private RepositoryGroupHandler createHandler() {
+ RepositoryGroupHandler groupHandler = new RepositoryGroupHandler( repositoryRegistry, configurationHandler, mergedRemoteIndexesScheduler, repositoryValidatorList );
+ groupHandler.init();
+ return groupHandler;
+ }
@Test
void initializeFromConfig( )
{
+ RepositoryGroupHandler groupHandler = createHandler( );
+ assertNotNull( groupHandler );
+ groupHandler.initializeFromConfig();
+ assertEquals( 1, groupHandler.getAll( ).size( ) );
+ assertNotNull( groupHandler.get( "test-group-01" ).getRepositories( ) );
+ assertEquals( "internal", groupHandler.get( "test-group-01" ).getRepositories( ).get( 0 ).getId() );
}
@Test
diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/RepositoryProviderMock.java b/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/RepositoryProviderMock.java
index c98ba06..5a4c9f5 100644
--- a/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/RepositoryProviderMock.java
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/RepositoryProviderMock.java
@@ -25,6 +25,7 @@ import org.apache.archiva.configuration.RepositoryGroupConfiguration;
import org.apache.archiva.event.EventHandler;
import org.apache.archiva.repository.*;
import org.apache.archiva.event.Event;
+import org.apache.archiva.repository.base.group.BasicRepositoryGroup;
import org.apache.archiva.repository.event.RepositoryEvent;
import org.apache.archiva.repository.features.ArtifactCleanupFeature;
import org.apache.archiva.repository.features.IndexCreationFeature;
@@ -81,7 +82,15 @@ public class RepositoryProviderMock implements RepositoryProvider
@Override
public EditableRepositoryGroup createRepositoryGroup(String id, String name) {
- return null;
+ try
+ {
+ return BasicRepositoryGroup.newFilesystemInstance( id, name, Paths.get( "target/groups" ) );
+ }
+ catch ( IOException e )
+ {
+ throw new RuntimeException( );
+ }
+
}
@Override
@@ -195,7 +204,15 @@ public class RepositoryProviderMock implements RepositoryProvider
@Override
public RepositoryGroup createRepositoryGroup(RepositoryGroupConfiguration configuration) throws RepositoryException {
- return null;
+ EditableRepositoryGroup group = createRepositoryGroup( configuration.getId( ), configuration.getName( ) );
+ updateGroupInstance( group, configuration );
+ return group;
+ }
+
+ private void updateGroupInstance( EditableRepositoryGroup group, RepositoryGroupConfiguration configuration )
+ {
+ group.setMergedIndexTTL( configuration.getMergedIndexTtl() );
+ group.setSchedulingDefinition( configuration.getCronExpression() );
}
@Override
diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/test/resources/archiva-group.xml b/archiva-modules/archiva-base/archiva-repository-layer/src/test/resources/archiva-group.xml
new file mode 100644
index 0000000..693d106
--- /dev/null
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/test/resources/archiva-group.xml
@@ -0,0 +1,212 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ 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.
+ -->
+<configuration>
+ <version>3.0.0</version>
+ <managedRepositories>
+ <managedRepository>
+ <id>internal</id>
+ <name>Archiva Managed Internal Repository</name>
+ <description>This is internal repository.</description>
+ <location>${appserver.base}/repositories/internal</location>
+ <indexDir>${appserver.base}/repositories/internal/.indexer</indexDir>
+ <layout>default</layout>
+ <releases>true</releases>
+ <snapshots>false</snapshots>
+ <blockRedeployments>true</blockRedeployments>
+ <scanned>true</scanned>
+ <refreshCronExpression>0 0 * * * ?</refreshCronExpression>
+ <retentionPeriod>30</retentionPeriod>
+ </managedRepository>
+ <managedRepository>
+ <id>staging</id>
+ <name>Repository with staging</name>
+ <description>This is repository with staging.</description>
+ <location>${appserver.base}/repositories/internal</location>
+ <indexDir>${appserver.base}/repositories/internal/.indexer</indexDir>
+ <layout>default</layout>
+ <releases>true</releases>
+ <snapshots>false</snapshots>
+ <blockRedeployments>true</blockRedeployments>
+ <scanned>true</scanned>
+ <refreshCronExpression>0 0 * * * ?</refreshCronExpression>
+ <retentionPeriod>30</retentionPeriod>
+ <stageRepoNeeded>true</stageRepoNeeded>
+ </managedRepository>
+ <managedRepository>
+ <id>snapshots</id>
+ <name>Archiva Managed Snapshot Repository</name>
+ <location>${appserver.base}/repositories/snapshots</location>
+ <indexDir>${appserver.base}/repositories/snapshots/.indexer</indexDir>
+ <layout>default</layout>
+ <releases>false</releases>
+ <snapshots>true</snapshots>
+ <blockRedeployments>false</blockRedeployments>
+ <scanned>true</scanned>
+ <refreshCronExpression>0 0\,30 * * * ?</refreshCronExpression>
+ <retentionPeriod>30</retentionPeriod>
+ </managedRepository>
+ </managedRepositories>
+ <remoteRepositories>
+ <remoteRepository>
+ <id>central</id>
+ <name>Central Repository</name>
+ <url>https://repo.maven.apache.org/maven2</url>
+ <layout>default</layout>
+ <timeout>35</timeout>
+ </remoteRepository>
+ </remoteRepositories>
+ <repositoryGroups>
+ <repositoryGroup>
+ <id>test-group-01</id>
+ <name>Test Group 01</name>
+ <type>MAVEN</type>
+ <repositories>
+ <repository>internal</repository>
+ </repositories>
+ </repositoryGroup>
+ </repositoryGroups>
+
+ <proxyConnectors>
+ <proxyConnector>
+ <sourceRepoId>internal</sourceRepoId>
+ <targetRepoId>central</targetRepoId>
+ <proxyId/>
+ <policies>
+ <snapshots>disabled</snapshots>
+ <releases>once</releases>
+ <checksum>fix</checksum>
+ <cache-failures>cached</cache-failures>
+ </policies>
+ <whiteListPatterns>
+ <whiteListPattern>**/*</whiteListPattern>
+ </whiteListPatterns>
+ </proxyConnector>
+ </proxyConnectors>
+
+ <legacyArtifactPaths>
+ <legacyArtifactPath>
+ <path>jaxen/jars/jaxen-1.0-FCS-full.jar</path>
+ <artifact>jaxen:jaxen:1.0-FCS:full:jar</artifact>
+ </legacyArtifactPath>
+ </legacyArtifactPaths>
+
+ <repositoryScanning>
+ <fileTypes>
+ <fileType>
+ <id>artifacts</id>
+ <patterns>
+ <pattern>**/*.pom</pattern>
+ <pattern>**/*.jar</pattern>
+ <pattern>**/*.ear</pattern>
+ <pattern>**/*.war</pattern>
+ <pattern>**/*.car</pattern>
+ <pattern>**/*.sar</pattern>
+ <pattern>**/*.mar</pattern>
+ <pattern>**/*.rar</pattern>
+ <pattern>**/*.dtd</pattern>
+ <pattern>**/*.tld</pattern>
+ <pattern>**/*.tar.gz</pattern>
+ <pattern>**/*.tar.bz2</pattern>
+ <pattern>**/*.zip</pattern>
+ </patterns>
+ </fileType>
+ <fileType>
+ <id>indexable-content</id>
+ <patterns>
+ <pattern>**/*.txt</pattern>
+ <pattern>**/*.TXT</pattern>
+ <pattern>**/*.block</pattern>
+ <pattern>**/*.config</pattern>
+ <pattern>**/*.pom</pattern>
+ <pattern>**/*.xml</pattern>
+ <pattern>**/*.xsd</pattern>
+ <pattern>**/*.dtd</pattern>
+ <pattern>**/*.tld</pattern>
+ </patterns>
+ </fileType>
+ <fileType>
+ <id>auto-remove</id>
+ <patterns>
+ <pattern>**/*.bak</pattern>
+ <pattern>**/*~</pattern>
+ <pattern>**/*-</pattern>
+ </patterns>
+ </fileType>
+ <fileType>
+ <id>ignored</id>
+ <patterns>
+ <pattern>**/.htaccess</pattern>
+ <pattern>**/KEYS</pattern>
+ <pattern>**/*.rb</pattern>
+ <pattern>**/*.sh</pattern>
+ <pattern>**/.svn/**</pattern>
+ <pattern>**/.DAV/**</pattern>
+ <pattern>.index/**</pattern>
+ <pattern>.indexer/**</pattern>
+ </patterns>
+ </fileType>
+ </fileTypes>
+ <knownContentConsumers>
+ <knownContentConsumer>create-missing-checksums</knownContentConsumer>
+ <knownContentConsumer>validate-checksum</knownContentConsumer>
+ <knownContentConsumer>validate-signature</knownContentConsumer>
+ <knownContentConsumer>index-content</knownContentConsumer>
+ <knownContentConsumer>auto-remove</knownContentConsumer>
+ <knownContentConsumer>auto-rename</knownContentConsumer>
+ <knownContentConsumer>metadata-updater</knownContentConsumer>
+ <knownContentConsumer>create-archiva-metadata</knownContentConsumer>
+ <knownContentConsumer>duplicate-artifacts</knownContentConsumer>
+ <!--knownContentConsumer>repository-purge</knownContentConsumer-->
+ </knownContentConsumers>
+ <invalidContentConsumers>
+ <invalidContentConsumer>update-db-bad-content</invalidContentConsumer>
+ </invalidContentConsumers>
+ </repositoryScanning>
+
+ <webapp>
+ <ui>
+ <showFindArtifacts>true</showFindArtifacts>
+ <appletFindEnabled>true</appletFindEnabled>
+ </ui>
+ </webapp>
+
+ <redbackRuntimeConfiguration>
+ <userManagerImpls>
+ <userManagerImpl>jpa</userManagerImpl>
+ </userManagerImpls>
+ <rbacManagerImpls>
+ <rbacManagerImpl>cached</rbacManagerImpl>
+ </rbacManagerImpls>
+ </redbackRuntimeConfiguration>
+
+ <archivaDefaultConfiguration>
+ <defaultCheckPaths>
+ <defaultCheckPath>
+ <url>http://download.oracle.com/maven</url>
+ <path>com/sleepycat/je/license.txt</path>
+ </defaultCheckPath>
+ <defaultCheckPath>
+ <url>https://download.oracle.com/maven</url>
+ <path>com/sleepycat/je/license.txt</path>
+ </defaultCheckPath>
+ </defaultCheckPaths>
+ </archivaDefaultConfiguration>
+
+</configuration>
diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/test/resources/spring-context-group.xml b/archiva-modules/archiva-base/archiva-repository-layer/src/test/resources/spring-context-group.xml
new file mode 100644
index 0000000..ccf6211
--- /dev/null
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/test/resources/spring-context-group.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+
+<!--
+ ~ 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.
+ -->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:context="http://www.springframework.org/schema/context"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans
+ http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://www.springframework.org/schema/context
+ http://www.springframework.org/schema/context/spring-context.xsd"
+ default-lazy-init="true">
+
+ <context:annotation-config/>
+ <context:component-scan base-package="org.apache.archiva.repository.mock"/>
+
+
+ <bean name="commons-configuration" class="org.apache.archiva.components.registry.commons.CommonsConfigurationRegistry">
+ <property name="initialConfiguration">
+ <value>
+ <![CDATA[
+ <configuration>
+ <system/>
+ <xml fileName="archiva-group.xml" config-forceCreate="true"
+ config-optional="true"
+ config-name="org.apache.archiva.base" config-at="org.apache.archiva"/>
+ </configuration>
+ ]]>
+ </value>
+ </property>
+ </bean>
+
+
+ <bean name="taskScheduler#mergeRemoteIndexes"
+ class="org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler">
+ <property name="poolSize" value="4"/>
+ <property name="threadGroupName" value="mergeRemoteIndexes"/>
+ </bean>
+
+
+</beans>
\ No newline at end of file
[archiva] 03/04: Renaming method of repository handler
Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
martin_s pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/archiva.git
commit f7e0eea716b5a65fa1e848ffbdcc960a18d31222
Author: Martin Stockhammer <ma...@apache.org>
AuthorDate: Sun Jul 11 19:00:54 2021 +0200
Renaming method of repository handler
---
.../java/org/apache/archiva/repository/RepositoryHandler.java | 2 +-
.../archiva/repository/base/ArchivaRepositoryRegistry.java | 10 +++++-----
.../archiva/repository/base/group/RepositoryGroupHandler.java | 2 +-
.../repository/base/managed/ManagedRepositoryHandler.java | 2 +-
.../repository/base/group/RepositoryGroupHandlerTest.java | 2 +-
5 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryHandler.java b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryHandler.java
index 058fd65..9ecc323 100644
--- a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryHandler.java
+++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryHandler.java
@@ -219,7 +219,7 @@ public interface RepositoryHandler<R extends Repository, C>
* @param id the repository identifier
* @return <code>true</code>, if it is registered, otherwise <code>false</code>
*/
- boolean has( String id );
+ boolean hasRepository( String id );
/**
* Initializes the handler. This method must be called before using the repository handler.
diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/ArchivaRepositoryRegistry.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/ArchivaRepositoryRegistry.java
index 34a4f95..8eef5b2 100644
--- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/ArchivaRepositoryRegistry.java
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/ArchivaRepositoryRegistry.java
@@ -565,7 +565,7 @@ public class ArchivaRepositoryRegistry implements ConfigurationListener, EventHa
log.debug( "Remote repo" );
return remoteRepositories.get( repoId );
}
- else if ( groupHandler.has( repoId ) )
+ else if ( groupHandler.hasRepository( repoId ) )
{
return groupHandler.get( repoId );
}
@@ -639,7 +639,7 @@ public class ArchivaRepositoryRegistry implements ConfigurationListener, EventHa
@Override
public boolean hasRepository( String repoId )
{
- return this.managedRepositories.containsKey( repoId ) || this.remoteRepositories.containsKey( repoId ) || groupHandler.has( repoId );
+ return this.managedRepositories.containsKey( repoId ) || this.remoteRepositories.containsKey( repoId ) || groupHandler.hasRepository( repoId );
}
@Override
@@ -657,7 +657,7 @@ public class ArchivaRepositoryRegistry implements ConfigurationListener, EventHa
@Override
public boolean hasRepositoryGroup( String groupId )
{
- return groupHandler.has( groupId );
+ return groupHandler.hasRepository( groupId );
}
protected void saveConfiguration( Configuration configuration ) throws IndeterminateConfigurationException, RegistryException
@@ -1293,7 +1293,7 @@ public class ArchivaRepositoryRegistry implements ConfigurationListener, EventHa
return;
}
final String id = repositoryGroup.getId( );
- if ( groupHandler.has( id ) )
+ if ( groupHandler.hasRepository( id ) )
{
rwLock.writeLock( ).lock( );
try
@@ -1315,7 +1315,7 @@ public class ArchivaRepositoryRegistry implements ConfigurationListener, EventHa
return;
}
final String id = repositoryGroup.getId( );
- if ( groupHandler.has( id ) )
+ if ( groupHandler.hasRepository( id ) )
{
rwLock.writeLock( ).lock( );
try
diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/group/RepositoryGroupHandler.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/group/RepositoryGroupHandler.java
index 4036576..c97a59e 100644
--- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/group/RepositoryGroupHandler.java
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/group/RepositoryGroupHandler.java
@@ -606,7 +606,7 @@ public class RepositoryGroupHandler
return this.validator.applyForUpdate( repository );
}
@Override
- public boolean has( String id )
+ public boolean hasRepository( String id )
{
return repositoryGroups.containsKey( id );
}
diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/managed/ManagedRepositoryHandler.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/managed/ManagedRepositoryHandler.java
index 6cfb228..fee66b8 100644
--- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/managed/ManagedRepositoryHandler.java
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/managed/ManagedRepositoryHandler.java
@@ -221,7 +221,7 @@ implements RepositoryHandler<ManagedRepository, ManagedRepositoryConfiguration>
}
@Override
- public boolean has( String id )
+ public boolean hasRepository( String id )
{
return false;
}
diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/base/group/RepositoryGroupHandlerTest.java b/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/base/group/RepositoryGroupHandlerTest.java
index 09c1c1d..07992da 100644
--- a/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/base/group/RepositoryGroupHandlerTest.java
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/base/group/RepositoryGroupHandlerTest.java
@@ -81,7 +81,7 @@ class RepositoryGroupHandlerTest
}
@Test
- void initialize( )
+ void activateRepository( )
{
}
[archiva] 04/04: Changing mockito dependency
Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
martin_s pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/archiva.git
commit 51f6e48839a54873d120d6ccd97f2cf391314005
Author: Martin Stockhammer <ma...@apache.org>
AuthorDate: Sun Jul 11 19:23:07 2021 +0200
Changing mockito dependency
---
.../src/main/resourcesstatic/archetype-resources/pom.xml | 2 +-
.../archiva-base/archiva-consumers/archiva-core-consumers/pom.xml | 2 +-
.../archiva-repository-admin-default/pom.xml | 2 +-
archiva-modules/archiva-base/archiva-storage-api/pom.xml | 2 +-
archiva-modules/archiva-maven/archiva-maven-repository/pom.xml | 2 +-
.../archiva-scheduler/archiva-scheduler-repository/pom.xml | 2 +-
.../metadata/metadata-store-provider/metadata-store-file/pom.xml | 2 +-
archiva-modules/plugins/problem-reports/pom.xml | 2 +-
pom.xml | 7 -------
9 files changed, 8 insertions(+), 15 deletions(-)
diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-archetype/src/main/resourcesstatic/archetype-resources/pom.xml b/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-archetype/src/main/resourcesstatic/archetype-resources/pom.xml
index e394f51..81a7743 100644
--- a/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-archetype/src/main/resourcesstatic/archetype-resources/pom.xml
+++ b/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-archetype/src/main/resourcesstatic/archetype-resources/pom.xml
@@ -270,7 +270,7 @@
<dependencies>
<dependency>
<groupId>org.mockito</groupId>
- <artifactId>mockito-all</artifactId>
+ <artifactId>mockito-core</artifactId>
<version>${mockito.version}</version>
</dependency>
<dependency>
diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/pom.xml b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/pom.xml
index a10ae81..c7c69e4 100644
--- a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/pom.xml
+++ b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/pom.xml
@@ -242,7 +242,7 @@
</dependency>
<dependency>
<groupId>org.mockito</groupId>
- <artifactId>mockito-all</artifactId>
+ <artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
<dependency>
diff --git a/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/pom.xml b/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/pom.xml
index 2f5f277..341d2a3 100644
--- a/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/pom.xml
+++ b/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/pom.xml
@@ -180,7 +180,7 @@
<!-- Test scope -->
<dependency>
<groupId>org.mockito</groupId>
- <artifactId>mockito-all</artifactId>
+ <artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
<dependency>
diff --git a/archiva-modules/archiva-base/archiva-storage-api/pom.xml b/archiva-modules/archiva-base/archiva-storage-api/pom.xml
index 3bc8be6..589e7d3 100644
--- a/archiva-modules/archiva-base/archiva-storage-api/pom.xml
+++ b/archiva-modules/archiva-base/archiva-storage-api/pom.xml
@@ -52,7 +52,7 @@
<dependency>
<groupId>org.mockito</groupId>
- <artifactId>mockito-all</artifactId>
+ <artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
<dependency>
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/pom.xml b/archiva-modules/archiva-maven/archiva-maven-repository/pom.xml
index c3259e1..8561777 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/pom.xml
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/pom.xml
@@ -300,7 +300,7 @@
</dependency>
<dependency>
<groupId>org.mockito</groupId>
- <artifactId>mockito-all</artifactId>
+ <artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
<dependency>
diff --git a/archiva-modules/archiva-scheduler/archiva-scheduler-repository/pom.xml b/archiva-modules/archiva-scheduler/archiva-scheduler-repository/pom.xml
index fdde84c..019d52b 100644
--- a/archiva-modules/archiva-scheduler/archiva-scheduler-repository/pom.xml
+++ b/archiva-modules/archiva-scheduler/archiva-scheduler-repository/pom.xml
@@ -188,7 +188,7 @@
</dependency>
<dependency>
<groupId>org.mockito</groupId>
- <artifactId>mockito-all</artifactId>
+ <artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
diff --git a/archiva-modules/metadata/metadata-store-provider/metadata-store-file/pom.xml b/archiva-modules/metadata/metadata-store-provider/metadata-store-file/pom.xml
index f35811d..1ecb1ac 100644
--- a/archiva-modules/metadata/metadata-store-provider/metadata-store-file/pom.xml
+++ b/archiva-modules/metadata/metadata-store-provider/metadata-store-file/pom.xml
@@ -92,7 +92,7 @@
</dependency>
<dependency>
<groupId>org.mockito</groupId>
- <artifactId>mockito-all</artifactId>
+ <artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
<dependency>
diff --git a/archiva-modules/plugins/problem-reports/pom.xml b/archiva-modules/plugins/problem-reports/pom.xml
index d86467c..3da8501 100644
--- a/archiva-modules/plugins/problem-reports/pom.xml
+++ b/archiva-modules/plugins/problem-reports/pom.xml
@@ -95,7 +95,7 @@
</dependency>
<dependency>
<groupId>org.mockito</groupId>
- <artifactId>mockito-all</artifactId>
+ <artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
<dependency>
diff --git a/pom.xml b/pom.xml
index b88d7a3..7b38dd1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -95,7 +95,6 @@
<html.unit.version>2.27</html.unit.version>
<springockito.version>1.0.9</springockito.version>
- <mockito.version>1.9.5</mockito.version>
<easymock.version>4.1</easymock.version>
@@ -1758,12 +1757,6 @@
<dependency>
<groupId>org.mockito</groupId>
- <artifactId>mockito-all</artifactId>
- <version>${mockito.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>${mockito.version}</version>
<scope>test</scope>
[archiva] 01/04: Adding state to repository instances
Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
martin_s pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/archiva.git
commit 2c2af5bbbc92257d3a159fc8f2b534166dc51b3a
Author: Martin Stockhammer <ma...@apache.org>
AuthorDate: Sun Jul 4 22:09:56 2021 +0200
Adding state to repository instances
---
.../archiva/repository/EditableRepository.java | 5 +++
.../org/apache/archiva/repository/Repository.java | 11 ++++++-
.../archiva/repository/RepositoryHandler.java | 11 +++++++
.../apache/archiva/repository/RepositoryState.java | 37 ++++++++++++++++++++++
.../repository/base/AbstractRepository.java | 16 ++++++++++
.../repository/base/AbstractRepositoryHandler.java | 18 +++++++++++
.../base/group/BasicRepositoryGroup.java | 2 ++
.../base/group/RepositoryGroupHandler.java | 21 +++++++++++-
.../base/managed/BasicManagedRepository.java | 3 ++
.../base/remote/BasicRemoteRepository.java | 3 ++
.../base/group/RepositoryGroupHandlerTest.java | 4 ---
.../repository/maven/MavenManagedRepository.java | 3 ++
.../repository/maven/MavenRemoteRepository.java | 4 ++-
.../repository/maven/MavenRepositoryGroup.java | 3 ++
14 files changed, 134 insertions(+), 7 deletions(-)
diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/EditableRepository.java b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/EditableRepository.java
index 7b7dd8f..46b9b32 100644
--- a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/EditableRepository.java
+++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/EditableRepository.java
@@ -128,5 +128,10 @@ public interface EditableRepository extends Repository
*/
void setIndexingContext(ArchivaIndexingContext context);
+ /**
+ * Sets the last repository state.
+ * @param state the state value
+ */
+ void setLastState(RepositoryState state);
}
diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/Repository.java b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/Repository.java
index e8c26f9..ac20ed5 100644
--- a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/Repository.java
+++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/Repository.java
@@ -173,5 +173,14 @@ public interface Repository extends EventSource, RepositoryStorage {
*/
boolean isOpen();
-
+ /**
+ * Returns the last state of this repository instance. As multiple repository instances may point to the
+ * same repository, this is only a representation of the last state, when this particular instance was
+ * used by the registry.
+ *
+ * @return the last known state of this repository instance
+ */
+ default RepositoryState getLastState() {
+ return RepositoryState.CREATED;
+ }
}
diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryHandler.java b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryHandler.java
index 5ff5263..efd6c47 100644
--- a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryHandler.java
+++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryHandler.java
@@ -32,6 +32,17 @@ import java.util.Map;
* This is the generic interface that handles different repository flavours, currently for
* ManagedRepository, RemoteRepository and RepositoryGroup
*
+ * Lifecycle/states of a repository:
+ * <ul>
+ * <li>Instance created: This state is reached by the newInstance-methods. The instance is created, filled with the
+ * corresponding attribute data and references are updated. References are object references to other repositories, if they exist.
+ * The instance is not registered on the registry (stored) and configuration is not updated.</li>
+ * <li>Instance registered: Instances added/updated by the put()-methods are created and registered on the registry.
+ * If all goes well, the configuration is updated.</li>
+ * <li>Instance initialized: </li>
+ * </ul>
+ *
+ *
* @author Martin Stockhammer <ma...@apache.org>
*/
public interface RepositoryHandler<R extends Repository, C>
diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryState.java b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryState.java
new file mode 100644
index 0000000..4b09236
--- /dev/null
+++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryState.java
@@ -0,0 +1,37 @@
+package org.apache.archiva.repository;
+/*
+ * 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.
+ */
+
+/**
+ * @author Martin Stockhammer <ma...@apache.org>
+ */
+public enum RepositoryState
+{
+ CREATED(0),REFERENCES_SET(100),SAVED(200),INITIALIZED(300),REGISTERED(400),UNREGISTERED(500),CLOSED(600);
+
+ private final int orderNumber;
+
+ RepositoryState( int orderNumber )
+ {
+ this.orderNumber = orderNumber;
+ }
+
+ public int getOrderNumber() {
+ return orderNumber;
+ }
+}
diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/AbstractRepository.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/AbstractRepository.java
index c92e227..b01efaf 100644
--- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/AbstractRepository.java
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/AbstractRepository.java
@@ -30,6 +30,7 @@ import org.apache.archiva.event.EventType;
import org.apache.archiva.indexer.ArchivaIndexingContext;
import org.apache.archiva.repository.EditableRepository;
import org.apache.archiva.repository.RepositoryCapabilities;
+import org.apache.archiva.repository.RepositoryState;
import org.apache.archiva.repository.RepositoryType;
import org.apache.archiva.repository.UnsupportedFeatureException;
import org.apache.archiva.repository.event.*;
@@ -85,6 +86,7 @@ public abstract class AbstractRepository implements EditableRepository, EventHan
String schedulingDefinition = "0 0 02 * * ?";
private String layout = "default";
public static final CronDefinition CRON_DEFINITION = CronDefinitionBuilder.instanceDefinitionFor(CronType.QUARTZ);
+ private RepositoryState state;
private final EventManager eventManager;
@@ -324,6 +326,7 @@ public abstract class AbstractRepository implements EditableRepository, EventHan
sf.getStagingRepository().close();
}
}
+ setLastState( RepositoryState.CLOSED );
}
}
@@ -425,4 +428,17 @@ public abstract class AbstractRepository implements EditableRepository, EventHan
protected RepositoryStorage getStorage() {
return storage;
}
+
+
+ @Override
+ public RepositoryState getLastState( )
+ {
+ return this.state;
+ }
+
+ @Override
+ public void setLastState( RepositoryState state )
+ {
+ this.state = state;
+ }
}
diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/AbstractRepositoryHandler.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/AbstractRepositoryHandler.java
index 4637687..24bbd62 100644
--- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/AbstractRepositoryHandler.java
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/AbstractRepositoryHandler.java
@@ -17,10 +17,15 @@ package org.apache.archiva.repository.base;
* under the License.
*/
+import org.apache.archiva.repository.EditableRepository;
import org.apache.archiva.repository.Repository;
import org.apache.archiva.repository.RepositoryHandler;
+import org.apache.archiva.repository.RepositoryState;
+import org.apache.archiva.repository.base.group.RepositoryGroupHandler;
import org.apache.archiva.repository.validation.CombinedValidator;
import org.apache.archiva.repository.validation.RepositoryValidator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.util.Collections;
import java.util.List;
@@ -32,6 +37,9 @@ import java.util.stream.Collectors;
*/
public abstract class AbstractRepositoryHandler<R extends Repository, C> implements RepositoryHandler<R, C>
{
+
+ private static final Logger log = LoggerFactory.getLogger( AbstractRepositoryHandler.class );
+
protected List<RepositoryValidator<R>> initValidators( Class<R> clazz, List<RepositoryValidator<? extends Repository>> repositoryGroupValidatorList) {
if (repositoryGroupValidatorList!=null && repositoryGroupValidatorList.size()>0) {
return repositoryGroupValidatorList.stream( ).filter(
@@ -46,4 +54,14 @@ public abstract class AbstractRepositoryHandler<R extends Repository, C> impleme
return new CombinedValidator<>( clazz, initValidators( clazz, repositoryGroupValidatorList ) );
}
+ protected void setLastState(Repository repo, RepositoryState state) {
+ if (repo instanceof EditableRepository ) {
+ if (state.getOrderNumber()>repo.getLastState().getOrderNumber())
+ {
+ ( (EditableRepository) repo ).setLastState( state );
+ }
+ } else {
+ log.error( "Found a not editable repository instance: {}, {}", repo.getId( ), repo.getClass().getName() );
+ }
+ }
}
diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/group/BasicRepositoryGroup.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/group/BasicRepositoryGroup.java
index 7f3df85..d9b6245 100644
--- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/group/BasicRepositoryGroup.java
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/group/BasicRepositoryGroup.java
@@ -24,6 +24,7 @@ import org.apache.archiva.repository.ManagedRepository;
import org.apache.archiva.repository.ReleaseScheme;
import org.apache.archiva.repository.RepositoryCapabilities;
import org.apache.archiva.repository.RepositoryGroup;
+import org.apache.archiva.repository.RepositoryState;
import org.apache.archiva.repository.RepositoryType;
import org.apache.archiva.repository.StandardCapabilities;
import org.apache.archiva.repository.base.AbstractRepository;
@@ -70,6 +71,7 @@ public class BasicRepositoryGroup extends AbstractRepository implements Editable
feature.setLocalIndexPath( repositoryStorage.getRoot( ).resolve(".indexer") );
feature.setLocalPackedIndexPath( repositoryStorage.getRoot( ).resolve(".index") );
addFeature( feature );
+ setLastState( RepositoryState.CREATED );
}
@Override
diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/group/RepositoryGroupHandler.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/group/RepositoryGroupHandler.java
index f77b745..560eb72 100644
--- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/group/RepositoryGroupHandler.java
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/group/RepositoryGroupHandler.java
@@ -22,6 +22,7 @@ import org.apache.archiva.configuration.Configuration;
import org.apache.archiva.configuration.IndeterminateConfigurationException;
import org.apache.archiva.configuration.RepositoryGroupConfiguration;
import org.apache.archiva.indexer.merger.MergedRemoteIndexesScheduler;
+import org.apache.archiva.repository.RepositoryState;
import org.apache.archiva.repository.base.AbstractRepositoryHandler;
import org.apache.archiva.repository.base.ArchivaRepositoryRegistry;
import org.apache.archiva.repository.base.ConfigurationHandler;
@@ -174,6 +175,7 @@ public class RepositoryGroupHandler
}
mergedRemoteIndexesScheduler.schedule( repositoryGroup,
indexDirectory );
+ setLastState( repositoryGroup, RepositoryState.INITIALIZED );
}
public StorageAsset getMergedIndexDirectory( RepositoryGroup group )
@@ -251,10 +253,13 @@ public class RepositoryGroupHandler
{
RepositoryGroup repositoryGroup = provider.createRepositoryGroup( config );
updateReferences( repositoryGroup, config );
+ if (repositoryGroup instanceof EditableRepository)
+ {
+ ( (EditableRepository) repositoryGroup ).setLastState( RepositoryState.REFERENCES_SET );
+ }
return repositoryGroup;
}
-
/**
* Adds a new repository group to the current list, or replaces the repository group definition with
* the same id, if it exists already.
@@ -290,6 +295,7 @@ public class RepositoryGroupHandler
}
configuration.addRepositoryGroup( newCfg );
configurationHandler.save( configuration, ConfigurationHandler.REGISTRY_EVENT_TAG );
+ setLastState( repositoryGroup, RepositoryState.SAVED );
initialize( repositoryGroup );
}
finally
@@ -297,6 +303,7 @@ public class RepositoryGroupHandler
configLock.unlock( );
}
repositoryGroups.put( id, repositoryGroup );
+ setLastState( repositoryGroup, RepositoryState.REGISTERED );
return repositoryGroup;
}
catch ( Exception e )
@@ -349,8 +356,10 @@ public class RepositoryGroupHandler
}
configurationHandler.save( configuration, ConfigurationHandler.REGISTRY_EVENT_TAG );
updateReferences( currentRepository, repositoryGroupConfiguration );
+ setLastState( currentRepository, RepositoryState.REFERENCES_SET );
initialize( currentRepository );
this.repositoryGroups.put( id, currentRepository );
+ setLastState( currentRepository, RepositoryState.REGISTERED );
}
catch ( IndeterminateConfigurationException | RegistryException | RepositoryException e )
{
@@ -369,7 +378,12 @@ public class RepositoryGroupHandler
log.error( "Fatal error, config save during rollback failed: {}", e.getMessage( ), e );
}
updateReferences( oldRepository, oldCfg );
+ setLastState( oldRepository, RepositoryState.REFERENCES_SET );
initialize( oldRepository );
+ repositoryGroups.put( id, oldRepository );
+ setLastState( oldRepository, RepositoryState.REGISTERED );
+ } else {
+ repositoryGroups.remove( id );
}
log.error( "Could not save the configuration for repository group {}: {}", id, e.getMessage( ), e );
if (e instanceof RepositoryException) {
@@ -409,9 +423,11 @@ public class RepositoryGroupHandler
else
{
repo = repositoryRegistry.getProvider( repoType ).createRepositoryGroup( repositoryGroupConfiguration );
+ setLastState( repo, RepositoryState.CREATED );
}
replaceOrAddRepositoryConfig( repositoryGroupConfiguration, configuration );
updateReferences( repo, repositoryGroupConfiguration );
+ setLastState( repo, RepositoryState.REFERENCES_SET );
return repo;
}
@@ -501,6 +517,7 @@ public class RepositoryGroupHandler
configuration.removeRepositoryGroup( cfg );
}
this.configurationHandler.save( configuration, ConfigurationHandler.REGISTRY_EVENT_TAG );
+ setLastState( repo, RepositoryState.UNREGISTERED );
}
}
@@ -530,6 +547,7 @@ public class RepositoryGroupHandler
{
configuration.removeRepositoryGroup( cfg );
}
+ setLastState( repo, RepositoryState.UNREGISTERED );
}
}
@@ -548,6 +566,7 @@ public class RepositoryGroupHandler
RepositoryGroupConfiguration cfg = provider.getRepositoryGroupConfiguration( repo );
RepositoryGroup cloned = provider.createRepositoryGroup( cfg );
cloned.registerEventHandler( RepositoryEvent.ANY, repositoryRegistry );
+ setLastState( cloned, RepositoryState.CREATED );
return cloned;
}
diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/managed/BasicManagedRepository.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/managed/BasicManagedRepository.java
index 5840d22..c40071c 100644
--- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/managed/BasicManagedRepository.java
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/managed/BasicManagedRepository.java
@@ -23,6 +23,7 @@ import org.apache.archiva.common.filelock.FileLockManager;
import org.apache.archiva.repository.ReleaseScheme;
import org.apache.archiva.repository.RepositoryCapabilities;
import org.apache.archiva.repository.RepositoryRequestInfo;
+import org.apache.archiva.repository.RepositoryState;
import org.apache.archiva.repository.RepositoryType;
import org.apache.archiva.repository.StandardCapabilities;
import org.apache.archiva.repository.storage.fs.FilesystemStorage;
@@ -61,12 +62,14 @@ public class BasicManagedRepository extends AbstractManagedRepository
{
super( RepositoryType.MAVEN, id, name, repositoryStorage );
initFeatures();
+ setLastState( RepositoryState.CREATED );
}
public BasicManagedRepository( Locale primaryLocale, RepositoryType type, String id, String name, RepositoryStorage repositoryStorage )
{
super( primaryLocale, type, id, name, repositoryStorage);
initFeatures();
+ setLastState( RepositoryState.CREATED );
}
private void initFeatures() {
diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/remote/BasicRemoteRepository.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/remote/BasicRemoteRepository.java
index 0b6d49b..5f9da87 100644
--- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/remote/BasicRemoteRepository.java
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/base/remote/BasicRemoteRepository.java
@@ -22,6 +22,7 @@ import org.apache.archiva.common.filelock.DefaultFileLockManager;
import org.apache.archiva.common.filelock.FileLockManager;
import org.apache.archiva.repository.ReleaseScheme;
import org.apache.archiva.repository.RepositoryCapabilities;
+import org.apache.archiva.repository.RepositoryState;
import org.apache.archiva.repository.RepositoryType;
import org.apache.archiva.repository.StandardCapabilities;
import org.apache.archiva.repository.storage.fs.FilesystemStorage;
@@ -61,12 +62,14 @@ public class BasicRemoteRepository extends AbstractRemoteRepository
{
super( RepositoryType.MAVEN, id, name, storage);
initFeatures();
+ setLastState( RepositoryState.CREATED );
}
public BasicRemoteRepository( Locale primaryLocale, RepositoryType type, String id, String name, RepositoryStorage storage )
{
super( primaryLocale, type, id, name, storage );
initFeatures();
+ setLastState( RepositoryState.CREATED );
}
private void initFeatures() {
diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/base/group/RepositoryGroupHandlerTest.java b/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/base/group/RepositoryGroupHandlerTest.java
index 26b6fbf..0043ee0 100644
--- a/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/base/group/RepositoryGroupHandlerTest.java
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/base/group/RepositoryGroupHandlerTest.java
@@ -28,10 +28,6 @@ import static org.junit.jupiter.api.Assertions.*;
class RepositoryGroupHandlerTest
{
- @Test
- void init( )
- {
- }
@Test
void initializeFromConfig( )
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/MavenManagedRepository.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/MavenManagedRepository.java
index 4005b87..eea28df 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/MavenManagedRepository.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/MavenManagedRepository.java
@@ -25,6 +25,7 @@ import org.apache.archiva.indexer.ArchivaIndexingContext;
import org.apache.archiva.repository.ReleaseScheme;
import org.apache.archiva.repository.RepositoryCapabilities;
import org.apache.archiva.repository.RepositoryRequestInfo;
+import org.apache.archiva.repository.RepositoryState;
import org.apache.archiva.repository.RepositoryType;
import org.apache.archiva.repository.StandardCapabilities;
import org.apache.archiva.repository.UnsupportedFeatureException;
@@ -77,12 +78,14 @@ public class MavenManagedRepository extends AbstractManagedRepository
super( RepositoryType.MAVEN, id, name, storage);
this.indexCreationFeature = new IndexCreationFeature(this, this);
setLocation(storage.getRoot().getFilePath().toUri());
+ setLastState( RepositoryState.CREATED );
}
public MavenManagedRepository( Locale primaryLocale, String id, String name, FilesystemStorage storage )
{
super( primaryLocale, RepositoryType.MAVEN, id, name, storage );
setLocation(storage.getRoot().getFilePath().toUri());
+ setLastState( RepositoryState.CREATED );
}
@Override
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/MavenRemoteRepository.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/MavenRemoteRepository.java
index 6c73f65..f4e8720 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/MavenRemoteRepository.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/MavenRemoteRepository.java
@@ -5,6 +5,7 @@ import org.apache.archiva.common.filelock.FileLockManager;
import org.apache.archiva.repository.ReleaseScheme;
import org.apache.archiva.repository.RemoteRepository;
import org.apache.archiva.repository.RepositoryCapabilities;
+import org.apache.archiva.repository.RepositoryState;
import org.apache.archiva.repository.RepositoryType;
import org.apache.archiva.repository.StandardCapabilities;
import org.apache.archiva.repository.UnsupportedFeatureException;
@@ -67,13 +68,14 @@ public class MavenRemoteRepository extends AbstractRemoteRepository
{
super( RepositoryType.MAVEN, id, name, storage );
this.indexCreationFeature = new IndexCreationFeature(this, this);
-
+ setLastState( RepositoryState.CREATED );
}
public MavenRemoteRepository( Locale primaryLocale, String id, String name, FilesystemStorage storage )
{
super( primaryLocale, RepositoryType.MAVEN, id, name, storage );
this.indexCreationFeature = new IndexCreationFeature(this, this);
+ setLastState( RepositoryState.CREATED );
}
@Override
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/MavenRepositoryGroup.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/MavenRepositoryGroup.java
index c1be960..2bfd34a 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/MavenRepositoryGroup.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/MavenRepositoryGroup.java
@@ -24,6 +24,7 @@ import org.apache.archiva.common.filelock.FileLockManager;
import org.apache.archiva.repository.EditableRepositoryGroup;
import org.apache.archiva.repository.ReleaseScheme;
import org.apache.archiva.repository.RepositoryCapabilities;
+import org.apache.archiva.repository.RepositoryState;
import org.apache.archiva.repository.RepositoryType;
import org.apache.archiva.repository.StandardCapabilities;
import org.apache.archiva.repository.base.group.AbstractRepositoryGroup;
@@ -58,11 +59,13 @@ public class MavenRepositoryGroup extends AbstractRepositoryGroup implements Edi
public MavenRepositoryGroup(String id, String name, FilesystemStorage storage) {
super(RepositoryType.MAVEN, id, name, storage);
init();
+ setLastState( RepositoryState.CREATED );
}
public MavenRepositoryGroup(Locale primaryLocale, String id, String name, FilesystemStorage storage) {
super(primaryLocale, RepositoryType.MAVEN, id, name, storage);
init();
+ setLastState( RepositoryState.CREATED );
}
private Path getRepositoryPath() {