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 {

Reply via email to