You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by cs...@apache.org on 2012/09/24 08:58:40 UTC

svn commit: r1389224 - /karaf/trunk/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java

Author: cschneider
Date: Mon Sep 24 06:58:40 2012
New Revision: 1389224

URL: http://svn.apache.org/viewvc?rev=1389224&view=rev
Log:
KARAF-608 Make FrameworkListener local to refreshPackages

Modified:
    karaf/trunk/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java

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=1389224&r1=1389223&r2=1389224&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 Mon Sep 24 06:58:40 2012
@@ -43,11 +43,8 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
-import java.util.Queue;
 import java.util.Set;
 import java.util.TreeSet;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.jar.JarInputStream;
 import java.util.jar.Manifest;
@@ -98,7 +95,7 @@ import static java.lang.String.format;
  * create dummy sub shells.  When invoked, these commands will prompt the user for
  * installing the needed bundles.
  */
-public class FeaturesServiceImpl implements FeaturesService, FrameworkListener {
+public class FeaturesServiceImpl implements FeaturesService {
 
     public static final String CONFIG_KEY = "org.apache.karaf.features.configKey";
     public static String VERSION_PREFIX = "version=";
@@ -117,7 +114,6 @@ public class FeaturesServiceImpl impleme
     private List<FeaturesListener> listeners = new CopyOnWriteArrayIdentityList<FeaturesListener>();
     private ThreadLocal<Repository> repo = new ThreadLocal<Repository>();
     private EventAdminListener eventAdminListener;
-    private final Object refreshLock = new Object();
     private long refreshTimeout = 5000;
     private RegionsPersistence regionsPersistence;
 
@@ -617,7 +613,6 @@ public class FeaturesServiceImpl impleme
     }
 
     protected void doInstallFeatureConditionals(InstallationState state, Feature feature,  boolean verbose) throws Exception {
-        InstallationState failure = new InstallationState();
         //Check conditions of the current feature.
         for (Conditional conditional : feature.getConditional()) {
 
@@ -1109,8 +1104,6 @@ public class FeaturesServiceImpl impleme
     }
 
     public void start() throws Exception {
-        // Register FrameworkEventListener
-        bundleContext.addFrameworkListener(this);
         // Register EventAdmin listener
         EventAdminListener listener = null;
         try {
@@ -1188,26 +1181,26 @@ public class FeaturesServiceImpl impleme
     }
 
     public void stop() throws Exception {
-        bundleContext.removeFrameworkListener(this);
         uris = new HashSet<URI>(repositories.keySet());
         while (!repositories.isEmpty()) {
             internalRemoveRepository(repositories.keySet().iterator().next());
         }
     }
 
-    public void frameworkEvent(FrameworkEvent event) {
-        if (event.getType() == FrameworkEvent.PACKAGES_REFRESHED) {
-            synchronized (refreshLock) {
-                refreshLock.notifyAll();
-            }
-        }
-    }
-
     protected void refreshPackages(Collection<Bundle> bundles) throws InterruptedException {
+    	final Object refreshLock = new Object();
         FrameworkWiring wiring = bundleContext.getBundle().adapt(FrameworkWiring.class);
         if (wiring != null) {
             synchronized (refreshLock) {
-                wiring.refreshBundles(bundles, this);
+                wiring.refreshBundles(bundles, new FrameworkListener() {
+					public void frameworkEvent(FrameworkEvent event) {
+						if (event.getType() == FrameworkEvent.PACKAGES_REFRESHED) {
+				            synchronized (refreshLock) {
+				                refreshLock.notifyAll();
+				            }
+				        }
+					}
+				});
                 refreshLock.wait(refreshTimeout);
             }
         }
@@ -1532,7 +1525,7 @@ public class FeaturesServiceImpl impleme
     private void waitForUrlHandler(String protocol) {
         try {
             Filter filter = bundleContext.createFilter("(&(" + Constants.OBJECTCLASS + "=" + URLStreamHandlerService.class.getName() + ")(url.handler.protocol=" + protocol + "))");
-            ServiceTracker urlHandlerTracker = new ServiceTracker(bundleContext, filter, null);
+            ServiceTracker<URLStreamHandlerService, URLStreamHandlerService> urlHandlerTracker = new ServiceTracker<URLStreamHandlerService, URLStreamHandlerService>(bundleContext, filter, null);
             try {
                 urlHandlerTracker.open();
                 urlHandlerTracker.waitForService(30000);