From 76217dc0efdc3179778d250053f4362801de1244 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Thu, 20 Jun 2013 18:36:51 +0200 Subject: [PATCH] do not synchronize over all configuration entry stores --- .../store/JAXBConfigurationEntryStore.java | 19 ++++++++----------- .../JAXBConfigurationEntryStoreFactory.java | 10 ++++++++-- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/scm-dao-xml/src/main/java/sonia/scm/store/JAXBConfigurationEntryStore.java b/scm-dao-xml/src/main/java/sonia/scm/store/JAXBConfigurationEntryStore.java index 96e0e1ad63..0d5bcc2540 100644 --- a/scm-dao-xml/src/main/java/sonia/scm/store/JAXBConfigurationEntryStore.java +++ b/scm-dao-xml/src/main/java/sonia/scm/store/JAXBConfigurationEntryStore.java @@ -84,9 +84,6 @@ public class JAXBConfigurationEntryStore implements ConfigurationEntryStore { - /** Field description */ - private static final Object LOCK = new Object(); - /** Field description */ private static final String TAG_CONFIGURATION = "configuration"; @@ -116,11 +113,11 @@ public class JAXBConfigurationEntryStore * @param file * @param type */ - JAXBConfigurationEntryStore(KeyGenerator keyGenerator, File file, + JAXBConfigurationEntryStore(File file, KeyGenerator keyGenerator, Class type) { - this.keyGenerator = keyGenerator; this.file = file; + this.keyGenerator = keyGenerator; this.type = type; try @@ -149,7 +146,7 @@ public class JAXBConfigurationEntryStore { logger.debug("clear configuration store"); - synchronized (LOCK) + synchronized (file) { entries.clear(); store(); @@ -186,7 +183,7 @@ public class JAXBConfigurationEntryStore { logger.debug("put item {} to configuration store", id); - synchronized (LOCK) + synchronized (file) { entries.put(id, item); store(); @@ -204,7 +201,7 @@ public class JAXBConfigurationEntryStore { logger.debug("remove item {} from configuration store", id); - synchronized (LOCK) + synchronized (file) { entries.remove(id); store(); @@ -429,15 +426,15 @@ public class JAXBConfigurationEntryStore //~--- fields --------------------------------------------------------------- + /** Field description */ + private final File file; + /** Field description */ private JAXBContext context; /** Field description */ private Map entries = Maps.newHashMap(); - /** Field description */ - private File file; - /** Field description */ private KeyGenerator keyGenerator; diff --git a/scm-dao-xml/src/main/java/sonia/scm/store/JAXBConfigurationEntryStoreFactory.java b/scm-dao-xml/src/main/java/sonia/scm/store/JAXBConfigurationEntryStoreFactory.java index c203452010..bf5dae720f 100644 --- a/scm-dao-xml/src/main/java/sonia/scm/store/JAXBConfigurationEntryStoreFactory.java +++ b/scm-dao-xml/src/main/java/sonia/scm/store/JAXBConfigurationEntryStoreFactory.java @@ -30,6 +30,7 @@ */ + package sonia.scm.store; //~--- non-JDK imports -------------------------------------------------------- @@ -100,8 +101,13 @@ public class JAXBConfigurationEntryStoreFactory logger.debug("create new configuration store for type {} with name {}", type, name); - return new JAXBConfigurationEntryStore(keyGenerator, - new File(directory, name.concat(StoreConstants.FILE_EXTENSION)), type); + //J- + return new JAXBConfigurationEntryStore( + new File(directory,name.concat(StoreConstants.FILE_EXTENSION)), + keyGenerator, + type + ); + //J+ } //~--- fields ---------------------------------------------------------------