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();