Index: MemoryUserDatabase.java =================================================================== RCS file: /home/cvspublic/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/users/MemoryUserDatabase.java,v retrieving revision 1.3 diff -u -r1.3 MemoryUserDatabase.java --- MemoryUserDatabase.java 5 Jan 2004 15:04:14 -0000 1.3 +++ MemoryUserDatabase.java 5 Jan 2004 15:51:54 -0000 @@ -138,12 +138,6 @@ /** - * Was the database modified ? - */ - private boolean modified = false; - - - /** * The relative (to catalina.base) or absolute pathname to * the XML file in which we will save our persistent information. */ @@ -293,7 +287,6 @@ synchronized (groups) { groups.put(group.getGroupname(), group); } - modified = true; return (group); } @@ -311,7 +304,6 @@ synchronized (roles) { roles.put(role.getRolename(), role); } - modified = true; return (role); } @@ -331,7 +323,6 @@ synchronized (users) { users.put(user.getUsername(), user); } - modified = true; return (user); } @@ -435,7 +426,6 @@ } } - modified = false; } @@ -455,7 +445,6 @@ } groups.remove(group.getGroupname()); } - modified = true; } @@ -480,7 +469,6 @@ } roles.remove(role.getRolename()); } - modified = true; } @@ -495,7 +483,6 @@ synchronized (users) { users.remove(user.getUsername()); } - modified = true; } @@ -508,16 +495,11 @@ */ public void save() throws Exception { - if (!modified) { - return; - } - modified = false; - // Write out contents to a temporary file File fileNew = new File(pathnameNew); if (!fileNew.isAbsolute()) { - fileNew = - new File(System.getProperty("catalina.base"), pathnameNew); + fileNew = File.createTempFile("tomcat-users","new"); + //new File(System.getProperty("catalina.base"), pathnameNew); } PrintWriter writer = null; try { @@ -570,34 +552,26 @@ } // Perform the required renames to permanently save this file - File fileOld = new File(pathnameNew); - if (!fileOld.isAbsolute()) { - fileOld = - new File(System.getProperty("catalina.base"), pathnameOld); - } - fileOld.delete(); + File fileOrig = new File(pathname); if (!fileOrig.isAbsolute()) { fileOrig = new File(System.getProperty("catalina.base"), pathname); } + if (fileOrig.exists()) { - fileOld.delete(); - if (!fileOrig.renameTo(fileOld)) { - throw new IOException - (sm.getString("memoryUserDatabase.renameOld", - fileOld.getAbsolutePath())); - } + if (!fileOrig.canWrite()){ + throw new IOException + (sm.getString("memoryUserDatabase.writeException", + fileOrig.getAbsolutePath())); + } } + if (!fileNew.renameTo(fileOrig)) { - if (fileOld.exists()) { - fileOld.renameTo(fileOrig); - } throw new IOException (sm.getString("memoryUserDatabase.renameNew", fileOrig.getAbsolutePath())); } - fileOld.delete(); }