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 <[email protected]>
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 <[email protected]>
  */
 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 <[email protected]>
+ */
+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() {

Reply via email to