Repository: karaf Updated Branches: refs/heads/karaf-2.x 08cbaf434 -> 6f3015add
[KARAF-2104] Add regex support on features repositories management Project: http://git-wip-us.apache.org/repos/asf/karaf/repo Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/6f3015ad Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/6f3015ad Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/6f3015ad Branch: refs/heads/karaf-2.x Commit: 6f3015add1af87fca14f9c722af8033c0a227362 Parents: 08cbaf4 Author: Jean-Baptiste Onofré <[email protected]> Authored: Fri Dec 19 08:03:24 2014 +0100 Committer: Jean-Baptiste Onofré <[email protected]> Committed: Fri Dec 19 08:03:24 2014 +0100 ---------------------------------------------------------------------- .../command/RemoveRepositoryCommand.java | 40 ++++++++++++-------- .../features/command/RemoveUrlCommand.java | 22 ++++++++++- .../management/FeaturesServiceMBean.java | 4 ++ .../internal/FeaturesServiceMBeanImpl.java | 32 +++++++++++++++- 4 files changed, 80 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/karaf/blob/6f3015ad/features/command/src/main/java/org/apache/karaf/features/command/RemoveRepositoryCommand.java ---------------------------------------------------------------------- diff --git a/features/command/src/main/java/org/apache/karaf/features/command/RemoveRepositoryCommand.java b/features/command/src/main/java/org/apache/karaf/features/command/RemoveRepositoryCommand.java index efb6c71..878b4d8 100644 --- a/features/command/src/main/java/org/apache/karaf/features/command/RemoveRepositoryCommand.java +++ b/features/command/src/main/java/org/apache/karaf/features/command/RemoveRepositoryCommand.java @@ -16,7 +16,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.felix.gogo.commands.Argument; import org.apache.felix.gogo.commands.Command; @@ -26,22 +29,29 @@ import org.apache.karaf.features.Repository; @Command(scope = "features", name = "removeRepository", description = "Removes the specified repository features service.") public class RemoveRepositoryCommand extends FeaturesCommandSupport { - @Argument(index = 0, name = "repository", description = "Name of the repository to remove.", required = true, multiValued = false) - private String repository; + @Argument(index = 0, name = "repositories", description = "Name of the repositories to remove.", required = true, multiValued = false) + private List<String> repositories; protected void doExecute(FeaturesService admin) throws Exception { - URI uri = null; - for (Repository r :admin.listRepositories()) { - if (r.getName().equals(repository)) { - uri = r.getURI(); - break; - } - } + ArrayList<Repository> repositoriesToRemove = new ArrayList<Repository>(); + for (String repository : repositories) { + Pattern pattern = Pattern.compile(repository); + for (Repository r : admin.listRepositories()) { + Matcher matcher = pattern.matcher(r.getName()); + if (matcher.matches()) { + repositoriesToRemove.add(r); + } + } + } + + for (Repository r : repositoriesToRemove) { + System.out.println("Removing repository " + r.getName() + " (" + r.getURI() + ")"); + try { + admin.removeRepository(r.getURI()); + } catch (Exception e) { + System.err.println("Can't remove repository " + r.getName() + " (" + r.getURI() + "): " + e.getMessage()); + } + } - if (uri == null) { - System.out.println("Repository '" + repository + "' not found.") ; - } else { - admin.removeRepository(uri); - } } } http://git-wip-us.apache.org/repos/asf/karaf/blob/6f3015ad/features/command/src/main/java/org/apache/karaf/features/command/RemoveUrlCommand.java ---------------------------------------------------------------------- diff --git a/features/command/src/main/java/org/apache/karaf/features/command/RemoveUrlCommand.java b/features/command/src/main/java/org/apache/karaf/features/command/RemoveUrlCommand.java index e592aad..0da4c9b 100644 --- a/features/command/src/main/java/org/apache/karaf/features/command/RemoveUrlCommand.java +++ b/features/command/src/main/java/org/apache/karaf/features/command/RemoveUrlCommand.java @@ -17,12 +17,16 @@ 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.felix.gogo.commands.Argument; import org.apache.felix.gogo.commands.Command; import org.apache.felix.gogo.commands.Option; import org.apache.karaf.features.FeaturesService; +import org.apache.karaf.features.Repository; @Command(scope = "features", name = "removeUrl", description = "Removes the given list of repository URLs from the features service") public class RemoveUrlCommand extends FeaturesCommandSupport { @@ -34,8 +38,24 @@ public class RemoveUrlCommand extends FeaturesCommandSupport { boolean uninstall; protected void doExecute(FeaturesService admin) throws Exception { + ArrayList<URI> urisToRemove = new ArrayList<URI>(); for (String url : urls) { - admin.removeRepository(new URI(url), uninstall); + Pattern pattern = Pattern.compile(url); + for (Repository r : admin.listRepositories()) { + Matcher matcher = pattern.matcher(r.getURI().toString()); + if (matcher.matches()) { + urisToRemove.add(r.getURI()); + } + } + } + + for (URI uri : urisToRemove) { + System.out.println("Removing repository URI " + uri); + try { + admin.removeRepository(uri, uninstall); + } catch (Exception e) { + System.err.println("Can't remove repository URI " + uri + ": " + e.getMessage()); + } } } } http://git-wip-us.apache.org/repos/asf/karaf/blob/6f3015ad/features/management/src/main/java/org/apache/karaf/features/management/FeaturesServiceMBean.java ---------------------------------------------------------------------- diff --git a/features/management/src/main/java/org/apache/karaf/features/management/FeaturesServiceMBean.java b/features/management/src/main/java/org/apache/karaf/features/management/FeaturesServiceMBean.java index 4b9284b..30e3d9c 100644 --- a/features/management/src/main/java/org/apache/karaf/features/management/FeaturesServiceMBean.java +++ b/features/management/src/main/java/org/apache/karaf/features/management/FeaturesServiceMBean.java @@ -32,6 +32,10 @@ public interface FeaturesServiceMBean { void removeRepository(String url, boolean uninstall) throws Exception; + void removeRepositoryByName(String name) throws Exception; + + void removeRepositoryByName(String name, boolean uninstall) throws Exception; + void refreshRepository(String url) throws Exception; void installFeature(String name) throws Exception; http://git-wip-us.apache.org/repos/asf/karaf/blob/6f3015ad/features/management/src/main/java/org/apache/karaf/features/management/internal/FeaturesServiceMBeanImpl.java ---------------------------------------------------------------------- diff --git a/features/management/src/main/java/org/apache/karaf/features/management/internal/FeaturesServiceMBeanImpl.java b/features/management/src/main/java/org/apache/karaf/features/management/internal/FeaturesServiceMBeanImpl.java index 9a3397f..2cbfe81 100644 --- a/features/management/src/main/java/org/apache/karaf/features/management/internal/FeaturesServiceMBeanImpl.java +++ b/features/management/src/main/java/org/apache/karaf/features/management/internal/FeaturesServiceMBeanImpl.java @@ -144,11 +144,39 @@ public class FeaturesServiceMBeanImpl extends StandardEmitterMBean implements } public void removeRepository(String uri) throws Exception { - featuresService.removeRepository(new URI(uri)); + removeRepository(uri, false); } public void removeRepository(String uri, boolean uninstall) throws Exception { - featuresService.removeRepository(new URI(uri), uninstall); + Pattern pattern = Pattern.compile(uri); + ArrayList<URI> urisToRemove = new ArrayList<URI>(); + for (Repository repository : featuresService.listRepositories()) { + Matcher matcher = pattern.matcher(repository.getURI().toString()); + if (matcher.matches()) { + urisToRemove.add(repository.getURI()); + } + } + for (URI uriToRemove : urisToRemove) { + featuresService.removeRepository(uriToRemove, uninstall); + } + } + + public void removeRepositoryByName(String name) throws Exception { + removeRepositoryByName(name, false); + } + + public void removeRepositoryByName(String name, boolean uninstall) throws Exception { + Pattern pattern = Pattern.compile(name); + ArrayList<URI> urisToRemove = new ArrayList<URI>(); + for (Repository repository : featuresService.listRepositories()) { + Matcher matcher = pattern.matcher(repository.getName()); + if (matcher.matches()) { + urisToRemove.add(repository.getURI()); + } + } + for (URI uriToRemove : urisToRemove) { + featuresService.removeRepository(uriToRemove, uninstall); + } } public void refreshRepository(String uri) throws Exception {
