This is an automated email from the ASF dual-hosted git repository.

martin_s pushed a commit to branch feature/storage_refactoring
in repository https://gitbox.apache.org/repos/asf/archiva.git


The following commit(s) were added to refs/heads/feature/storage_refactoring by 
this push:
     new b48158f  Fixing RepositoryGroupAdmin after refactor
b48158f is described below

commit b48158fdcd72c5f8a9dfc2fd38e2ff60660d6f81
Author: Martin Stockhammer <[email protected]>
AuthorDate: Sat Jun 22 08:03:00 2019 +0200

    Fixing RepositoryGroupAdmin after refactor
---
 .../admin/repository/group/DefaultRepositoryGroupAdmin.java |  3 ++-
 .../org/apache/archiva/repository/RepositoryRegistry.java   | 13 +++++++++++++
 .../content/maven2/ManagedDefaultRepositoryContent.java     |  8 +++++---
 3 files changed, 20 insertions(+), 4 deletions(-)

diff --git 
a/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/group/DefaultRepositoryGroupAdmin.java
 
b/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/group/DefaultRepositoryGroupAdmin.java
index 142f4f4..757aa12 100644
--- 
a/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/group/DefaultRepositoryGroupAdmin.java
+++ 
b/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/group/DefaultRepositoryGroupAdmin.java
@@ -165,7 +165,7 @@ public class DefaultRepositoryGroupAdmin
             throw new RepositoryAdminException("Removal of repository failed: 
" + e.getMessage(), e);
         }
         mergedRemoteIndexesScheduler.unschedule(
-            repositoryRegistry.getRepositoryGroup( repositoryGroupId ) );
+            repositoryGroup );
         triggerAuditEvent( repositoryGroupId, null, 
AuditEvent.DELETE_REPO_GROUP, auditInformation );
 
         return Boolean.TRUE;
@@ -204,6 +204,7 @@ public class DefaultRepositoryGroupAdmin
         org.apache.archiva.repository.RepositoryGroup rg = 
repositoryRegistry.getRepositoryGroup( repositoryGroup.getId( ) );
         mergedRemoteIndexesScheduler.unschedule( rg );
         mergedRemoteIndexesScheduler.schedule( rg, getMergedIndexDirectory( 
repositoryGroup.getId() ) );
+        triggerAuditEvent( repositoryGroup.getId(), null, 
AuditEvent.MODIFY_REPO_GROUP, auditInformation );
         return Boolean.TRUE;
     }
 
diff --git 
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryRegistry.java
 
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryRegistry.java
index 6a9db1d..79c28bb 100644
--- 
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryRegistry.java
+++ 
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/RepositoryRegistry.java
@@ -1029,6 +1029,10 @@ public class RepositoryRegistry implements 
ConfigurationListener, RepositoryEven
     @SuppressWarnings( "unchecked" )
     public void removeRepository(Repository repo) throws RepositoryException
     {
+        if (repo==null) {
+            log.warn("Trying to remove null repository");
+            return;
+        }
         if (repo instanceof RemoteRepository ) {
             removeRepository( (RemoteRepository)repo );
         } else if (repo instanceof ManagedRepository) {
@@ -1057,6 +1061,7 @@ public class RepositoryRegistry implements 
ConfigurationListener, RepositoryEven
                 repo = managedRepositories.remove( id );
                 if (repo!=null) {
                     repo.close();
+                    removeRepositoryFromGroups(repo);
                     Configuration configuration = 
getArchivaConfiguration().getConfiguration();
                     ManagedRepositoryConfiguration cfg = 
configuration.findManagedRepositoryById( id );
                     if (cfg!=null) {
@@ -1079,6 +1084,13 @@ public class RepositoryRegistry implements 
ConfigurationListener, RepositoryEven
         }
     }
 
+    private void removeRepositoryFromGroups(ManagedRepository repo) {
+        if (repo!=null) {
+            repositoryGroups.values().stream().filter(repoGroup -> repoGroup 
instanceof EditableRepository).
+                    map(repoGroup -> (EditableRepositoryGroup) 
repoGroup).forEach(repoGroup -> repoGroup.removeRepository(repo));
+        }
+    }
+
     public void removeRepository(ManagedRepository managedRepository, 
Configuration configuration) throws RepositoryException
     {
         final String id = managedRepository.getId();
@@ -1089,6 +1101,7 @@ public class RepositoryRegistry implements 
ConfigurationListener, RepositoryEven
                 repo = managedRepositories.remove( id );
                 if (repo!=null) {
                     repo.close();
+                    removeRepositoryFromGroups(repo);
                     ManagedRepositoryConfiguration cfg = 
configuration.findManagedRepositoryById( id );
                     if (cfg!=null) {
                         configuration.removeManagedRepository( cfg );
diff --git 
a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/ManagedDefaultRepositoryContent.java
 
b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/ManagedDefaultRepositoryContent.java
index c34c01d..f0d81e2 100644
--- 
a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/ManagedDefaultRepositoryContent.java
+++ 
b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/ManagedDefaultRepositoryContent.java
@@ -423,9 +423,11 @@ public class ManagedDefaultRepositoryContent
     public void setRepository( ManagedRepository repo )
     {
         this.repository = repo;
-        this.repoDir = PathUtil.getPathFromUri( repository.getLocation() );
-        if (repository instanceof EditableManagedRepository ) {
-            ((EditableManagedRepository)repository).setContent(this);
+        if (repo!=null) {
+            this.repoDir = PathUtil.getPathFromUri(repository.getLocation());
+            if (repository instanceof EditableManagedRepository) {
+                ((EditableManagedRepository) repository).setContent(this);
+            }
         }
 
     }

Reply via email to