@@ -427,11 +427,7 @@ private Collection<RepositoryInfo> addRepositories(File[] files,
427
427
}
428
428
429
429
repoList .add (new RepositoryInfo (repository ));
430
- String repoDirectoryName = repository .getDirectoryName ();
431
- File repoDirectoryFile = new File (repoDirectoryName );
432
- String repoDirParent = repoDirectoryFile .getParent ();
433
- repositoryRoots .put (repoDirParent , "" );
434
- repositories .put (repoDirectoryName , repository );
430
+ putRepository (repository );
435
431
436
432
// @TODO: Search only for one type of repository - the one found here
437
433
if (recursiveSearch && repository .supportsSubRepositories ()) {
@@ -882,6 +878,11 @@ public void removeRepositories(Collection<String> repos) {
882
878
for (String repo : repos ) {
883
879
repositories .remove (repo );
884
880
}
881
+
882
+ // Re-map the repository roots.
883
+ repositoryRoots .clear ();
884
+ List <Repository > ccopy = new ArrayList <>(repositories .values ());
885
+ ccopy .forEach ((repo ) -> { putRepository (repo ); });
885
886
}
886
887
887
888
/**set
@@ -923,6 +924,7 @@ public void invalidateRepositories(Collection<? extends RepositoryInfo> repos, L
923
924
*/
924
925
public void invalidateRepositories (Collection <? extends RepositoryInfo > repos ) {
925
926
if (repos == null || repos .isEmpty ()) {
927
+ repositoryRoots .clear ();
926
928
repositories .clear ();
927
929
return ;
928
930
}
@@ -985,11 +987,25 @@ public void run() {
985
987
}
986
988
executor .shutdown ();
987
989
990
+ repositoryRoots .clear ();
988
991
repositories .clear ();
989
- repositories . putAll ( newrepos );
992
+ newrepos . forEach (( _key , repo ) -> { putRepository ( repo ); } );
990
993
991
994
if (verbose ) {
992
995
elapsed .report (LOGGER , "done invalidating repositories" );
993
996
}
994
997
}
998
+
999
+ /**
1000
+ * Adds the specified {@code repository} to this instance's repository map
1001
+ * and repository-root map (if not already there).
1002
+ * @param repository a defined instance
1003
+ */
1004
+ private void putRepository (Repository repository ) {
1005
+ String repoDirectoryName = repository .getDirectoryName ();
1006
+ File repoDirectoryFile = new File (repoDirectoryName );
1007
+ String repoDirParent = repoDirectoryFile .getParent ();
1008
+ repositoryRoots .put (repoDirParent , "" );
1009
+ repositories .put (repoDirectoryName , repository );
1010
+ }
995
1011
}
0 commit comments