You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by ff...@apache.org on 2010/06/29 13:34:45 UTC
svn commit: r958933 - in /karaf/trunk/features:
command/src/main/java/org/apache/karaf/features/command/
core/src/main/java/org/apache/karaf/features/
core/src/main/java/org/apache/karaf/features/internal/
Author: ffang
Date: Tue Jun 29 11:34:44 2010
New Revision: 958933
URL: http://svn.apache.org/viewvc?rev=958933&view=rev
Log:
[KARAF-4]If features:refreshUrl reads an incorrect <features> definition, it deletes the old version
Modified:
karaf/trunk/features/command/src/main/java/org/apache/karaf/features/command/RefreshUrlCommand.java
karaf/trunk/features/core/src/main/java/org/apache/karaf/features/FeaturesService.java
karaf/trunk/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java
Modified: karaf/trunk/features/command/src/main/java/org/apache/karaf/features/command/RefreshUrlCommand.java
URL: http://svn.apache.org/viewvc/karaf/trunk/features/command/src/main/java/org/apache/karaf/features/command/RefreshUrlCommand.java?rev=958933&r1=958932&r2=958933&view=diff
==============================================================================
--- karaf/trunk/features/command/src/main/java/org/apache/karaf/features/command/RefreshUrlCommand.java (original)
+++ karaf/trunk/features/command/src/main/java/org/apache/karaf/features/command/RefreshUrlCommand.java Tue Jun 29 11:34:44 2010
@@ -45,6 +45,8 @@ public class RefreshUrlCommand extends F
admin.addRepository(uri);
} catch (Exception e) {
System.out.println("Could not refresh Feature Repository:\n" + e.getMessage() );
+ //get chance to restore previous, fix for KARAF-4
+ admin.restoreRepository(new URI(strUri));
}
}
}
Modified: karaf/trunk/features/core/src/main/java/org/apache/karaf/features/FeaturesService.java
URL: http://svn.apache.org/viewvc/karaf/trunk/features/core/src/main/java/org/apache/karaf/features/FeaturesService.java?rev=958933&r1=958932&r2=958933&view=diff
==============================================================================
--- karaf/trunk/features/core/src/main/java/org/apache/karaf/features/FeaturesService.java (original)
+++ karaf/trunk/features/core/src/main/java/org/apache/karaf/features/FeaturesService.java Tue Jun 29 11:34:44 2010
@@ -35,6 +35,8 @@ public interface FeaturesService {
void addRepository(URI url) throws Exception;
void removeRepository(URI url);
+
+ void restoreRepository(URI url) throws Exception;
Repository[] listRepositories();
Modified: karaf/trunk/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java
URL: http://svn.apache.org/viewvc/karaf/trunk/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java?rev=958933&r1=958932&r2=958933&view=diff
==============================================================================
--- karaf/trunk/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java (original)
+++ karaf/trunk/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java Tue Jun 29 11:34:44 2010
@@ -82,6 +82,7 @@ public class FeaturesServiceImpl impleme
private String boot;
private boolean bootFeaturesInstalled;
private List<FeaturesListener> listeners = new CopyOnWriteArrayList<FeaturesListener>();
+ private ThreadLocal<Repository> repo = new ThreadLocal<Repository>();
public BundleContext getBundleContext() {
return bundleContext;
@@ -176,9 +177,16 @@ public class FeaturesServiceImpl impleme
public void internalRemoveRepository(URI uri) {
Repository repo = repositories.remove(uri);
+ this.repo.set(repo);
callListeners(new RepositoryEvent(repo, RepositoryEvent.EventType.RepositoryRemoved, false));
features = null;
}
+
+ public void restoreRepository(URI uri) throws Exception {
+ repositories.put(uri, (RepositoryImpl)repo.get());
+ callListeners(new RepositoryEvent(repo.get(), RepositoryEvent.EventType.RepositoryAdded, false));
+ features = null;
+ }
public Repository[] listRepositories() {
Collection<RepositoryImpl> repos = repositories.values();