@@ -57,22 +57,12 @@ public static synchronized Preferences getPreferences() {
5757        }
5858
5959        try  {
60-             final  Preferences  xpreferences ;
6160            final  File  file  = getOrCreatePreferencesFile ();
62- 
63-             if  (file .exists ()) {
64-                 Log .info ("Preferences (existing) ["  + file .getAbsolutePath () + "]" );
65-             } else  {
66-                 Log .info ("Preferences (new) ["  + file .getAbsolutePath () + "]" );
67-             }
68-             xpreferences  = new  Preferences (file );
69-             setupPersister (xpreferences );
70-             preferences  = xpreferences ;
71-             return  preferences ;
61+             Log .info ("Preferences ("  + (file .exists () ? "existing"  : "new" ) + ") ["  + file .getAbsolutePath () + "]" );
62+             return  preferences  = setupPersister (new  Preferences (file ));
7263        } catch  (IOException  ex ) {
7364            Log .warn ("Preferences get/create error!" , ex );
74-             preferences  = NULL ;
75-             return  preferences ;
65+             return  preferences  = NULL ;
7666        }
7767    }
7868
@@ -180,41 +170,32 @@ public void update(Props props) {
180170
181171    /** 
182172     * Some components are possibly sending a lot of updates (e.g., main frame 
183-      * resize) and it makes no sense to write every changes  as we want the last 
173+      * resize) and it makes no sense to write every change  as we want the last 
184174     * one only => I'm polling instead of saving each time a value has changed 
185175     * ... 
186176     */ 
187-     private  static  void  setupPersister (final  Preferences  preferences ) {
177+     private  static  Preferences  setupPersister (final  Preferences  preferences ) {
188178        new  Timer ("PreferencesWriter" ).schedule (new  TimerTask () {
189179            @ Override 
190180            public  void  run () {
191181                if  (preferences .isNull () || preferences .getWriteError ().get ()) {
192182                    return ;
193183                }
194184
195-                 try  {
196-                     Properties  cloned  = null ;
197-                     synchronized  (preferences .getCloneLOCK ()) {
198-                         if  (preferences .getDirty ().get ()) {
199-                             cloned  = (Properties ) preferences .getProps ().clone ();
200-                             preferences .getDirty ().set (false );
201-                         }
202-                     }
203-                     if  (cloned  != null ) {
204-                         Log .debug ("Writing the preferences [%s]" , () -> preferences .getFile ().getAbsolutePath ());
185+                 synchronized  (preferences .getCloneLOCK ()) {
186+                     if  (preferences .getDirty ().get ()) {
205187                        try  (PrintWriter  out  = new  PrintWriter (preferences .getFile (), UTF_8 )) {
206-                             cloned .store (out , null );
207-                             out .flush ();
188+                             Log .debug ("Writing the preferences [%s]" , () -> preferences .getFile ().getAbsolutePath ());
189+                             preferences .getProps ().store (out , null );
190+                             preferences .getDirty ().set (false );
191+                         } catch  (IOException  ex ) {
192+                             Log .error ("Preferences write error!" , ex );
193+                             preferences .getWriteError ().set (true );
208194                        }
209195                    }
210-                 } catch  (FileNotFoundException  e ) {
211-                     Log .error ("Preferences (write) permission denied" );
212-                     preferences .getWriteError ().set (true );
213-                 } catch  (IOException  ex ) {
214-                     Log .error ("Preferences write error!" , ex );
215-                     preferences .getWriteError ().set (true );
216196                }
217197            }
218198        }, 0 , 2000 );
199+         return  preferences ;
219200    }
220201}
0 commit comments