Author: iocanel
Date: Wed Sep 12 07:04:33 2012
New Revision: 1383808

URL: http://svn.apache.org/viewvc?rev=1383808&view=rev
Log:
[KARAF-1136] The regions persistence service is now injected to the features 
service via blueprint optional reference.

Modified:
    
karaf/trunk/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java
    
karaf/trunk/features/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml

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=1383808&r1=1383807&r2=1383808&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
 Wed Sep 12 07:04:33 2012
@@ -114,13 +114,11 @@ public class FeaturesServiceImpl impleme
     private String boot;
     AtomicBoolean bootFeaturesInstalled = new AtomicBoolean();
     private List<FeaturesListener> listeners = new 
CopyOnWriteArrayIdentityList<FeaturesListener>();
-    private Queue<RegionsPersistence> regionsPersistenceQueue = new 
LinkedList<RegionsPersistence>();
-    private CountDownLatch regionsPersistenceLatch = new CountDownLatch(1);
     private ThreadLocal<Repository> repo = new ThreadLocal<Repository>();
     private EventAdminListener eventAdminListener;
     private final Object refreshLock = new Object();
     private long refreshTimeout = 5000;
-    private long regionsPersistenceTimeout = 5000;
+    private RegionsPersistence regionsPersistence;
 
     public FeaturesServiceImpl() {
     }
@@ -157,6 +155,14 @@ public class FeaturesServiceImpl impleme
         this.refreshTimeout = refreshTimeout;
     }
 
+    public RegionsPersistence getRegionsPersistence() {
+        return regionsPersistence;
+    }
+
+    public void setRegionsPersistence(RegionsPersistence regionsPersistence) {
+        this.regionsPersistence = regionsPersistence;
+    }
+
     public void registerListener(FeaturesListener listener) {
         listeners.add(listener);
         for (Repository repository : listRepositories()) {
@@ -171,33 +177,6 @@ public class FeaturesServiceImpl impleme
         listeners.remove(listener);
     }
 
-    /**
-     * Returns a RegionsPersistence service.
-     * @param timeout
-     * @return
-     */
-    protected RegionsPersistence getRegionsPersistence(long timeout) {
-        if (!regionsPersistenceQueue.isEmpty()) {
-            return regionsPersistenceQueue.peek();
-        } else {
-            try {
-                regionsPersistenceLatch.await(timeout, TimeUnit.MILLISECONDS);
-            } catch (InterruptedException e) {
-                LOGGER.warn("Interrupted while waittng for RegionsPersistence 
service",e);
-            }
-            return regionsPersistenceQueue.peek();
-        }
-    }
-
-    public void registerRegionsPersistence(RegionsPersistence 
regionsPersistence) {
-        regionsPersistenceQueue.add(regionsPersistence);
-        regionsPersistenceLatch.countDown();
-    }
-
-    public void unregisterRegionsPersistence(RegionsPersistence 
regionsPersistence) {
-        regionsPersistenceQueue.remove(regionsPersistence);
-    }
-
     public void setUrls(String uris) throws URISyntaxException {
         String[] s = uris.split(",");
         this.uris = new HashSet<URI>();
@@ -610,7 +589,7 @@ public class FeaturesServiceImpl impleme
             state.bundleInfos.put(b.getBundleId(), bInfo);
             String region = feature.getRegion();
             if (region != null && state.installed.contains(b)) {
-                RegionsPersistence regionsPersistence = 
getRegionsPersistence(regionsPersistenceTimeout);
+                RegionsPersistence regionsPersistence = 
getRegionsPersistence();
                 if (regionsPersistence != null) {
                     regionsPersistence.install(b, region);
                 } else {

Modified: 
karaf/trunk/features/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml
URL: 
http://svn.apache.org/viewvc/karaf/trunk/features/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml?rev=1383808&r1=1383807&r2=1383808&view=diff
==============================================================================
--- 
karaf/trunk/features/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml 
(original)
+++ 
karaf/trunk/features/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml 
Wed Sep 12 07:04:33 2012
@@ -37,6 +37,7 @@
         <property name="resolverTimeout" value="$[resolverTimeout]" />
         <property name="configAdmin" ref="configAdmin" />
         <property name="bundleContext" ref="blueprintBundleContext" />
+        <property name="regionsPersistence" ref="regionsPersistence" />
     </bean>
 
     <reference-list id="featuresListeners" 
interface="org.apache.karaf.features.FeaturesListener" availability="optional">
@@ -51,11 +52,7 @@
 
     <service ref="featuresService" 
interface="org.apache.karaf.features.FeaturesService" />
 
-    <reference id="regionsPersistence" availability="optional" 
interface="org.apache.karaf.region.persist.RegionsPersistence">
-        <reference-listener ref="featuresService"
-                            bind-method="registerRegionsPersistence"
-                            unbind-method="unregisterRegionsPersistence" />
-    </reference>
+    <reference id="regionsPersistence" availability="optional" 
interface="org.apache.karaf.region.persist.RegionsPersistence"/>
 
     <bean id="featuresServiceMBean" 
class="org.apache.karaf.features.management.internal.FeaturesService">
         <property name="bundleContext" ref="blueprintBundleContext" />


Reply via email to