Repository: karaf Updated Branches: refs/heads/master 5150de12a -> b079b93e5
[KARAF-2104] Add regex support on feature:repo-remove command Project: http://git-wip-us.apache.org/repos/asf/karaf/repo Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/b079b93e Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/b079b93e Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/b079b93e Branch: refs/heads/master Commit: b079b93e55390b9c1c29403a494ac1575d3199b0 Parents: 5150de1 Author: Jean-Baptiste Onofré <[email protected]> Authored: Thu Dec 11 16:16:36 2014 +0100 Committer: Jean-Baptiste Onofré <[email protected]> Committed: Thu Dec 11 16:16:36 2014 +0100 ---------------------------------------------------------------------- .../features/command/RepoRemoveCommand.java | 43 ++++++++++++++------ .../org/apache/karaf/itests/FeatureTest.java | 8 ++++ 2 files changed, 39 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/karaf/blob/b079b93e/features/command/src/main/java/org/apache/karaf/features/command/RepoRemoveCommand.java ---------------------------------------------------------------------- diff --git a/features/command/src/main/java/org/apache/karaf/features/command/RepoRemoveCommand.java b/features/command/src/main/java/org/apache/karaf/features/command/RepoRemoveCommand.java index 0710b72..b1a1da8 100644 --- a/features/command/src/main/java/org/apache/karaf/features/command/RepoRemoveCommand.java +++ b/features/command/src/main/java/org/apache/karaf/features/command/RepoRemoveCommand.java @@ -17,6 +17,10 @@ package org.apache.karaf.features.command; import java.net.URI; +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import org.apache.karaf.features.FeaturesService; import org.apache.karaf.features.Repository; @@ -39,18 +43,33 @@ public class RepoRemoveCommand extends FeaturesCommandSupport { private boolean uninstall; protected void doExecute(FeaturesService featuresService) throws Exception { - URI uri = null; - for (Repository r : featuresService.listRepositories()) { - if (r.getName() != null && r.getName().equals(repository)) { - uri = r.getURI(); - break; - } - } + List<URI> uris = new ArrayList<>(); + Pattern pattern = Pattern.compile(repository); + for (Repository r : featuresService.listRepositories()) { + if (r.getName() != null && !r.getName().isEmpty()) { + // repository has a name, try regex on the name + Matcher nameMatcher = pattern.matcher(r.getName()); + if (nameMatcher.matches()) { + uris.add(r.getURI()); + } else { + // the name regex doesn't match, fallback to repository URI regex + Matcher uriMatcher = pattern.matcher(r.getURI().toString()); + if (uriMatcher.matches()) { + uris.add(r.getURI()); + } + } + } else { + // the repository name is not defined, use repository URI regex + Matcher uriMatcher = pattern.matcher(r.getURI().toString()); + if (uriMatcher.matches()) { + uris.add(r.getURI()); + } + } + } - if (uri == null) { - uri = new URI(repository); - } - - featuresService.removeRepository(uri, uninstall); + for (URI uri : uris) { + System.out.println("Removing features repository " + uri); + featuresService.removeRepository(uri, uninstall); + } } } http://git-wip-us.apache.org/repos/asf/karaf/blob/b079b93e/itests/src/test/java/org/apache/karaf/itests/FeatureTest.java ---------------------------------------------------------------------- diff --git a/itests/src/test/java/org/apache/karaf/itests/FeatureTest.java b/itests/src/test/java/org/apache/karaf/itests/FeatureTest.java index 88fbf11..64efffc 100644 --- a/itests/src/test/java/org/apache/karaf/itests/FeatureTest.java +++ b/itests/src/test/java/org/apache/karaf/itests/FeatureTest.java @@ -95,6 +95,14 @@ public class FeatureTest extends KarafTestSupport { } @Test + public void repoAddRemoveCommandWithRegex() throws Exception { + System.out.println(executeCommand("feature:repo-add mvn:org.apache.karaf.cellar/apache-karaf-cellar/3.0.0/xml/features")); + assertContains("apache-karaf-cellar", executeCommand("feature:repo-list")); + System.out.println(executeCommand("feature:repo-remove .*apache-karaf-cellar.*")); + assertContainsNot("apache-karaf-cellar", executeCommand("feature:repo-list")); + } + + @Test public void repoAddRemoveViaMBean() throws Exception { JMXConnector connector = null; try {
