From: <va...@us...> - 2007-02-19 23:08:26
|
Revision: 8992 http://svn.sourceforge.net/jedit/?rev=8992&view=rev Author: vanza Date: 2007-02-19 15:08:24 -0800 (Mon, 19 Feb 2007) Log Message: ----------- - use CommonControls's AtomicOutputStream where it makes sense, trying to avoid data loss in some error situations. - remove unneeded variable in the config class. Modified Paths: -------------- plugins/ProjectViewer/trunk/docs/CHANGELOG plugins/ProjectViewer/trunk/projectviewer/ProjectManager.java plugins/ProjectViewer/trunk/projectviewer/config/ProjectViewerConfig.java plugins/ProjectViewer/trunk/projectviewer/persist/ProjectPersistenceManager.java Modified: plugins/ProjectViewer/trunk/docs/CHANGELOG =================================================================== --- plugins/ProjectViewer/trunk/docs/CHANGELOG 2007-02-19 23:07:01 UTC (rev 8991) +++ plugins/ProjectViewer/trunk/docs/CHANGELOG 2007-02-19 23:08:24 UTC (rev 8992) @@ -52,6 +52,9 @@ of ImageIcon. - deprecate VPTNode(String); force use of VPTNode(String,boolean) to avoid an ugly hack in the first one. + - use CommonControls's new AtomicOutputStream to write important + files, in an attempt to avoid overwriting data when something + goes wrong. Version 2.1.3.5 requires JDK 1.4 [Alan Ezust] Modified: plugins/ProjectViewer/trunk/projectviewer/ProjectManager.java =================================================================== --- plugins/ProjectViewer/trunk/projectviewer/ProjectManager.java 2007-02-19 23:07:01 UTC (rev 8991) +++ plugins/ProjectViewer/trunk/projectviewer/ProjectManager.java 2007-02-19 23:08:24 UTC (rev 8992) @@ -52,6 +52,8 @@ import org.gjt.sp.jedit.View; import org.gjt.sp.jedit.msg.DynamicMenuChanged; +import common.io.AtomicOutputStream; + import projectviewer.vpt.VPTFilterData; import projectviewer.vpt.VPTGroup; import projectviewer.vpt.VPTNode; @@ -533,19 +535,23 @@ */ public void saveProjectList() { // save the global configuration - OutputStreamWriter out = null; + AtomicOutputStream aout = null; try { - OutputStream outs = ProjectPlugin.getResourceAsOutputStream(CONFIG_FILE); - out = new OutputStreamWriter(outs, "UTF-8"); + aout = new AtomicOutputStream(ProjectPlugin.getResourcePath(CONFIG_FILE)); + OutputStreamWriter out = new OutputStreamWriter(aout, "UTF-8"); writeXMLHeader("UTF-8", out); writeGroup(PROJECT_ROOT, VPTRoot.getInstance(), out); + out.close(); } catch (IOException ioe) { GUIUtilities.error(jEdit.getActiveView(), "projectviewer.error.save", new Object[] { jEdit.getProperty("projectviewer.error.project_list_str"), ioe.getMessage() }); Log.log(Log.ERROR, this, ioe); + return; } finally { - if (out != null) try { out.close(); } catch (IOException ioe) { } + if (aout != null) { + aout.rollback(); + } } if (nodeActions != null) { Modified: plugins/ProjectViewer/trunk/projectviewer/config/ProjectViewerConfig.java =================================================================== --- plugins/ProjectViewer/trunk/projectviewer/config/ProjectViewerConfig.java 2007-02-19 23:07:01 UTC (rev 8991) +++ plugins/ProjectViewer/trunk/projectviewer/config/ProjectViewerConfig.java 2007-02-19 23:08:24 UTC (rev 8992) @@ -929,7 +929,6 @@ } // saves the properties back to the file - Properties props = new Properties(); OutputStream out = ProjectPlugin.getResourceAsOutputStream("fileassocs.properties"); if (out != null) { try { Modified: plugins/ProjectViewer/trunk/projectviewer/persist/ProjectPersistenceManager.java =================================================================== --- plugins/ProjectViewer/trunk/projectviewer/persist/ProjectPersistenceManager.java 2007-02-19 23:07:01 UTC (rev 8991) +++ plugins/ProjectViewer/trunk/projectviewer/persist/ProjectPersistenceManager.java 2007-02-19 23:08:24 UTC (rev 8992) @@ -42,6 +42,8 @@ import org.gjt.sp.jedit.PluginJAR; import org.gjt.sp.util.Log; +import common.io.AtomicOutputStream; + import projectviewer.ProjectPlugin; import projectviewer.ProjectManager; @@ -150,14 +152,21 @@ //{{{ +_save(VPTProject, String)_ : void /** Saves the given project data to the disk. */ public static void save(VPTProject p, String filename) throws IOException { - OutputStream outs = ProjectPlugin.getResourceAsOutputStream(CONFIG_DIR + filename); - OutputStreamWriter out = new OutputStreamWriter(outs, "UTF-8"); - ProjectManager.writeXMLHeader("UTF-8", out); + AtomicOutputStream aout = null; + try { + aout = new AtomicOutputStream(ProjectPlugin.getResourcePath(CONFIG_DIR + filename)); + OutputStreamWriter out = new OutputStreamWriter(aout, "UTF-8"); + ProjectManager.writeXMLHeader("UTF-8", out); - saveNode(p, out); + saveNode(p, out); - out.flush(); - out.close(); + out.flush(); + out.close(); + } finally { + if (aout != null) { + aout.rollback(); + } + } } //}}} //{{{ -_saveNode(VPTNode, Writer)_ : void This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |