Author: cschneider
Date: Mon Mar 12 14:32:54 2012
New Revision: 1299688

URL: http://svn.apache.org/viewvc?rev=1299688&view=rev
Log:
KARAF-1243 Fix for trunk

Modified:
    karaf/trunk/management/mbeans/config/pom.xml
    
karaf/trunk/management/mbeans/config/src/main/resources/OSGI-INF/blueprint/config-management.xml
    karaf/trunk/shell/config/pom.xml
    
karaf/trunk/shell/config/src/main/java/org/apache/karaf/shell/config/ConfigRepository.java
    
karaf/trunk/shell/config/src/main/resources/OSGI-INF/blueprint/shell-config.xml
    
karaf/trunk/shell/config/src/test/java/org/apache/karaf/shell/config/EditCommandTest.java
    
karaf/trunk/shell/config/src/test/java/org/apache/karaf/shell/config/UpdateCommandTest.java

Modified: karaf/trunk/management/mbeans/config/pom.xml
URL: 
http://svn.apache.org/viewvc/karaf/trunk/management/mbeans/config/pom.xml?rev=1299688&r1=1299687&r2=1299688&view=diff
==============================================================================
--- karaf/trunk/management/mbeans/config/pom.xml (original)
+++ karaf/trunk/management/mbeans/config/pom.xml Mon Mar 12 14:32:54 2012
@@ -52,6 +52,10 @@
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.utils</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+        </dependency>
         
         <!--  
             Temporally depend on shell.config to reuse the ConfigRepository.

Modified: 
karaf/trunk/management/mbeans/config/src/main/resources/OSGI-INF/blueprint/config-management.xml
URL: 
http://svn.apache.org/viewvc/karaf/trunk/management/mbeans/config/src/main/resources/OSGI-INF/blueprint/config-management.xml?rev=1299688&r1=1299687&r2=1299688&view=diff
==============================================================================
--- 
karaf/trunk/management/mbeans/config/src/main/resources/OSGI-INF/blueprint/config-management.xml
 (original)
+++ 
karaf/trunk/management/mbeans/config/src/main/resources/OSGI-INF/blueprint/config-management.xml
 Mon Mar 12 14:32:54 2012
@@ -24,7 +24,10 @@
     <bean id="configRepo" 
class="org.apache.karaf.shell.config.ConfigRepository">
         <argument value="${storage}"/>
         <argument ref="configAdmin"/>
+        <argument ref="artifactInstallers"/>
     </bean>
+    
+    <reference-list id="artifactInstallers" 
interface="org.apache.felix.fileinstall.ArtifactInstaller" 
availability="optional" />
 
     <reference id="configAdmin" 
interface="org.osgi.service.cm.ConfigurationAdmin"  />
 

Modified: karaf/trunk/shell/config/pom.xml
URL: 
http://svn.apache.org/viewvc/karaf/trunk/shell/config/pom.xml?rev=1299688&r1=1299687&r2=1299688&view=diff
==============================================================================
--- karaf/trunk/shell/config/pom.xml (original)
+++ karaf/trunk/shell/config/pom.xml Mon Mar 12 14:32:54 2012
@@ -54,6 +54,11 @@
             <artifactId>org.apache.felix.utils</artifactId>
             <scope>provided</scope>
         </dependency>
+        
+        <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.fileinstall</artifactId>
+        </dependency>
 
         <dependency>
             <groupId>org.apache.karaf</groupId>
@@ -69,6 +74,11 @@
         
         <dependency>
             <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.slf4j</groupId>
             <artifactId>slf4j-jdk14</artifactId>
             <scope>test</scope>
         </dependency>

Modified: 
karaf/trunk/shell/config/src/main/java/org/apache/karaf/shell/config/ConfigRepository.java
URL: 
http://svn.apache.org/viewvc/karaf/trunk/shell/config/src/main/java/org/apache/karaf/shell/config/ConfigRepository.java?rev=1299688&r1=1299687&r2=1299688&view=diff
==============================================================================
--- 
karaf/trunk/shell/config/src/main/java/org/apache/karaf/shell/config/ConfigRepository.java
 (original)
+++ 
karaf/trunk/shell/config/src/main/java/org/apache/karaf/shell/config/ConfigRepository.java
 Mon Mar 12 14:32:54 2012
@@ -21,14 +21,19 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Dictionary;
 import java.util.Enumeration;
+import java.util.List;
 
+import org.apache.felix.fileinstall.ArtifactInstaller;
 import org.apache.felix.utils.properties.Properties;
 import org.osgi.framework.Constants;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.service.cm.Configuration;
 import org.osgi.service.cm.ConfigurationAdmin;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class ConfigRepository {
+    private static final Logger LOG = 
LoggerFactory.getLogger(ConfigRepository.class);
     private static final String 
FILEINSTALL_FILE_NAME="felix.fileinstall.filename";
 
     private static final String PID_FILTER="(service.pid=%s*)";
@@ -37,11 +42,14 @@ public class ConfigRepository {
     private static final String FACTORY_SEPARATOR = "-";
 
     private ConfigurationAdmin configAdmin;
-    private File storage;
     
-    public ConfigRepository(File storage, ConfigurationAdmin configAdmin) {
+    private File storage;
+    private List<ArtifactInstaller> artifactInstallers;
+
+    public ConfigRepository(File storage, ConfigurationAdmin configAdmin, 
List<ArtifactInstaller> artifactInstallers) {
         this.storage = storage;
         this.configAdmin = configAdmin;
+        this.artifactInstallers = artifactInstallers;
     }
     
     /**
@@ -141,7 +149,27 @@ public class ConfigRepository {
         // save the cfg file
         storage.mkdirs();
         p.save();
-
+        updateFileInstall(storageFile);
+    }
+    
+    /**
+     * Trigger felix fileinstall to update the config so there is no delay 
till it polls the file
+     * 
+     * @param storageFile
+     * @throws Exception
+     */
+    private void updateFileInstall(File storageFile) {
+        if (artifactInstallers != null) {
+            for (ArtifactInstaller installer : artifactInstallers) {
+                if (installer.canHandle(storageFile)) {
+                    try {
+                        installer.update(storageFile);
+                    } catch (Exception e) {
+                        LOG.warn("Error updating config " + storageFile + " in 
felix fileinstall" + e.getMessage(), e);
+                    }
+                }
+            }
+        }
     }
 
     private boolean shouldPersist(Object key) {

Modified: 
karaf/trunk/shell/config/src/main/resources/OSGI-INF/blueprint/shell-config.xml
URL: 
http://svn.apache.org/viewvc/karaf/trunk/shell/config/src/main/resources/OSGI-INF/blueprint/shell-config.xml?rev=1299688&r1=1299687&r2=1299688&view=diff
==============================================================================
--- 
karaf/trunk/shell/config/src/main/resources/OSGI-INF/blueprint/shell-config.xml 
(original)
+++ 
karaf/trunk/shell/config/src/main/resources/OSGI-INF/blueprint/shell-config.xml 
Mon Mar 12 14:32:54 2012
@@ -117,9 +117,10 @@
     <bean id="configRepo" 
class="org.apache.karaf.shell.config.ConfigRepository">
         <argument value="${storage}"/>
         <argument ref="configAdmin"/>
+        <argument ref="artifactInstallers"/>
     </bean>
     
-    <service interface="org.apache.karaf.shell.config.ConfigRepository" 
ref="configRepo"/>
+    <reference-list id="artifactInstallers" 
interface="org.apache.felix.fileinstall.ArtifactInstaller" 
availability="optional" />
 
     <reference id="configAdmin" 
interface="org.osgi.service.cm.ConfigurationAdmin"  />
 

Modified: 
karaf/trunk/shell/config/src/test/java/org/apache/karaf/shell/config/EditCommandTest.java
URL: 
http://svn.apache.org/viewvc/karaf/trunk/shell/config/src/test/java/org/apache/karaf/shell/config/EditCommandTest.java?rev=1299688&r1=1299687&r2=1299688&view=diff
==============================================================================
--- 
karaf/trunk/shell/config/src/test/java/org/apache/karaf/shell/config/EditCommandTest.java
 (original)
+++ 
karaf/trunk/shell/config/src/test/java/org/apache/karaf/shell/config/EditCommandTest.java
 Mon Mar 12 14:32:54 2012
@@ -52,7 +52,7 @@ public class EditCommandTest extends Tes
         command.setBundleContext(context);
         
         admin = createMock(ConfigurationAdmin.class);
-        command.setConfigRepository(new ConfigRepository(null, admin));
+        command.setConfigRepository(new ConfigRepository(null, admin, null));
         expect(context.getBundle(0)).andReturn(null).anyTimes();
 
         replay(context);

Modified: 
karaf/trunk/shell/config/src/test/java/org/apache/karaf/shell/config/UpdateCommandTest.java
URL: 
http://svn.apache.org/viewvc/karaf/trunk/shell/config/src/test/java/org/apache/karaf/shell/config/UpdateCommandTest.java?rev=1299688&r1=1299687&r2=1299688&view=diff
==============================================================================
--- 
karaf/trunk/shell/config/src/test/java/org/apache/karaf/shell/config/UpdateCommandTest.java
 (original)
+++ 
karaf/trunk/shell/config/src/test/java/org/apache/karaf/shell/config/UpdateCommandTest.java
 Mon Mar 12 14:32:54 2012
@@ -51,7 +51,7 @@ public class UpdateCommandTest extends T
         command.setBundleContext(context);
 
         admin = createMock(ConfigurationAdmin.class);
-        command.setConfigRepository(new ConfigRepository(null, admin));
+        command.setConfigRepository(new ConfigRepository(null, admin, null));
         expect(context.getBundle(0)).andReturn(null).anyTimes();
 
         replay(context);


Reply via email to