Author: gnodet
Date: Fri Sep  8 08:12:54 2017
New Revision: 1807678

URL: http://svn.apache.org/viewvc?rev=1807678&view=rev
Log:
[FELIX-4416] Ability to specify an encoding for config files

Modified:
    
felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/ConfigInstaller.java
    
felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/DirectoryWatcher.java
    
felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/FileInstall.java
    
felix/trunk/fileinstall/src/test/java/org/apache/felix/fileinstall/internal/ConfigInstallerTest.java

Modified: 
felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/ConfigInstaller.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/ConfigInstaller.java?rev=1807678&r1=1807677&r2=1807678&view=diff
==============================================================================
--- 
felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/ConfigInstaller.java
 (original)
+++ 
felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/ConfigInstaller.java
 Fri Sep  8 08:12:54 2017
@@ -131,7 +131,10 @@ public class ConfigInstaller implements
                 File file = fileName != null ? fromConfigKey(fileName) : null;
                 if( file != null && file.isFile() ) {
                     TypedProperties props = new TypedProperties( 
bundleSubstitution() );
-                    props.load( file );
+                    try (Reader r = new InputStreamReader(new 
FileInputStream(file), encoding()))
+                    {
+                        props.load(r);
+                    }
                     // remove "removed" properties from the cfg file
                     List<String> propertiesToRemove = new ArrayList<>();
                     for( String key : props.keySet() )
@@ -206,6 +209,12 @@ public class ConfigInstaller implements
         return true;
     }
 
+    String encoding()
+    {
+        String str = this.context.getProperty( 
DirectoryWatcher.CONFIG_ENCODING );
+        return str != null ? str : "ISO-8859-1";
+    }
+
     ConfigurationAdmin getConfigurationAdmin()
     {
         return configAdmin;
@@ -239,7 +248,10 @@ public class ConfigInstaller implements
                 ht.putAll(strMap);
             } else {
                 TypedProperties p = new TypedProperties( bundleSubstitution() 
);
-                p.load(in);
+                try (Reader r = new InputStreamReader(in, encoding()))
+                {
+                    p.load(r);
+                }
                 for (String k : p.keySet()) {
                     ht.put(k, p.get(k));
                 }

Modified: 
felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/DirectoryWatcher.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/DirectoryWatcher.java?rev=1807678&r1=1807677&r2=1807678&view=diff
==============================================================================
--- 
felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/DirectoryWatcher.java
 (original)
+++ 
felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/DirectoryWatcher.java
 Fri Sep  8 08:12:54 2017
@@ -101,6 +101,7 @@ public class DirectoryWatcher extends Th
     public final static String NO_INITIAL_DELAY = 
"felix.fileinstall.noInitialDelay";
     public final static String DISABLE_CONFIG_SAVE = 
"felix.fileinstall.disableConfigSave";
     public final static String ENABLE_CONFIG_SAVE = 
"felix.fileinstall.enableConfigSave";
+    public final static String CONFIG_ENCODING = 
"felix.fileinstall.configEncoding";
     public final static String START_LEVEL = "felix.fileinstall.start.level";
     public final static String ACTIVE_LEVEL = "felix.fileinstall.active.level";
     public final static String UPDATE_WITH_LISTENERS = 
"felix.fileinstall.bundles.updateWithListeners";

Modified: 
felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/FileInstall.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/FileInstall.java?rev=1807678&r1=1807677&r2=1807678&view=diff
==============================================================================
--- 
felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/FileInstall.java
 (original)
+++ 
felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/FileInstall.java
 Fri Sep  8 08:12:54 2017
@@ -106,6 +106,7 @@ public class FileInstall implements Bund
             set(ht, DirectoryWatcher.NO_INITIAL_DELAY);
             set(ht, DirectoryWatcher.DISABLE_CONFIG_SAVE);
             set(ht, DirectoryWatcher.ENABLE_CONFIG_SAVE);
+            set(ht, DirectoryWatcher.CONFIG_ENCODING);
             set(ht, DirectoryWatcher.START_LEVEL);
             set(ht, DirectoryWatcher.ACTIVE_LEVEL);
             set(ht, DirectoryWatcher.UPDATE_WITH_LISTENERS);

Modified: 
felix/trunk/fileinstall/src/test/java/org/apache/felix/fileinstall/internal/ConfigInstallerTest.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/fileinstall/src/test/java/org/apache/felix/fileinstall/internal/ConfigInstallerTest.java?rev=1807678&r1=1807677&r2=1807678&view=diff
==============================================================================
--- 
felix/trunk/fileinstall/src/test/java/org/apache/felix/fileinstall/internal/ConfigInstallerTest.java
 (original)
+++ 
felix/trunk/fileinstall/src/test/java/org/apache/felix/fileinstall/internal/ConfigInstallerTest.java
 Fri Sep  8 08:12:54 2017
@@ -206,6 +206,7 @@ public class ConfigInstallerTest extends
 
     public void testSetConfiguration() throws Exception
     {
+        
EasyMock.expect(mockBundleContext.getProperty(DirectoryWatcher.CONFIG_ENCODING)).andReturn(null);
         
EasyMock.expect(mockBundleContext.getProperty(DirectoryWatcher.LOG_DEFAULT)).andReturn(null);
         
EasyMock.expect(mockBundleContext.getProperty(DirectoryWatcher.LOG_LEVEL)).andReturn(null);
         EasyMock.expect(mockConfiguration.getProperties()).andReturn(new 
Hashtable<String, Object>());


Reply via email to