From 54c9d302f3c9155614198f38d9efc7a4ad88a542 Mon Sep 17 00:00:00 2001 From: ray Date: Thu, 13 Nov 2003 18:36:52 +0000 Subject: [PATCH] Avoid making the Iterator in enumerateSites throw a ConcurrentModificationException when we add a new site. git-svn-id: https://samskivert.googlecode.com/svn/trunk@1304 6335cc39-0255-0410-8fd6-9bcaacd3b74c --- .../samskivert/servlet/JDBCTableSiteIdentifier.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/projects/samskivert/src/java/com/samskivert/servlet/JDBCTableSiteIdentifier.java b/projects/samskivert/src/java/com/samskivert/servlet/JDBCTableSiteIdentifier.java index 809c04c7..53ced013 100644 --- a/projects/samskivert/src/java/com/samskivert/servlet/JDBCTableSiteIdentifier.java +++ b/projects/samskivert/src/java/com/samskivert/servlet/JDBCTableSiteIdentifier.java @@ -1,5 +1,5 @@ // -// $Id: JDBCTableSiteIdentifier.java,v 1.10 2003/11/13 17:28:58 mdb Exp $ +// $Id: JDBCTableSiteIdentifier.java,v 1.11 2003/11/13 18:36:52 ray Exp $ // // samskivert library - useful routines for java programs // Copyright (C) 2001 Michael Bayne @@ -144,9 +144,14 @@ public class JDBCTableSiteIdentifier implements SiteIdentifier site.siteString = siteString; _repo.insertNewSite(site); - // add it to our two mapping tables - _sitesById.put(site.siteId, site); - _sitesByString.put(site.siteString, site); + // add it to our two mapping tables, + // avoiding causing enumerateSites() to choke + HashMap newStrings = (HashMap) _sitesByString.clone(); + HashIntMap newIds = (HashIntMap) _sitesById.clone(); + newIds.put(site.siteId, site); + newStrings.put(site.siteString, site); + _sitesByString = newStrings; + _sitesById = newIds; return site; }