1
0
mirror of https://github.com/essentials/Essentials.git synced 2025-08-23 23:03:05 +02:00

Less locks please

This commit is contained in:
snowleo
2012-10-06 16:49:40 +02:00
parent 463c4ff62d
commit fabd88dc25
75 changed files with 805 additions and 1618 deletions

View File

@@ -1,11 +1,10 @@
package net.ess3.signs;
import java.util.logging.Level;
import java.util.logging.Logger;
import net.ess3.api.IEssentials;
import net.ess3.api.ISettings;
import net.ess3.api.IUser;
import net.ess3.utils.Util;
import java.util.logging.Level;
import java.util.logging.Logger;
import net.ess3.permissions.Permissions;
import net.ess3.utils.FormatUtil;
import org.bukkit.Material;
@@ -36,7 +35,6 @@ public class SignBlockListener implements Listener
public void onBlockBreak(final BlockBreakEvent event)
{
ISettings settings = ess.getSettings();
settings.acquireReadLock();
if (plugin.getSettings().areSignsDisabled())
{
return;

View File

@@ -16,16 +16,7 @@ public class SignMail extends EssentialsSign
@Override
protected boolean onSignInteract(final ISign sign, final IUser player, final String username, final IEssentials ess) throws SignException
{
final List<String> mail;
player.acquireReadLock();
try
{
mail = player.getData().getMails();
}
finally
{
player.unlock();
}
final List<String> mail = player.getData().getMails();
if (mail == null || mail.isEmpty())
{
player.sendMessage(_("noNewMail"));

View File

@@ -1,19 +1,21 @@
package net.ess3.signs;
import net.ess3.storage.StorageObject;
import java.util.HashMap;
import java.util.Collections;
import java.util.Map;
import net.ess3.storage.StorageObject;
public class SignsConfig implements StorageObject
{
private Map<String, Boolean> signs = new HashMap<String, Boolean>();
private Map<String, Boolean> signs;
public Map<String, Boolean> getSigns()
{
return signs;
return signs == null
? Collections.<String, Boolean>emptyMap()
: Collections.unmodifiableMap(signs);
}
public void setSigns(final Map<String, Boolean> signs)
{
this.signs = signs;

View File

@@ -19,43 +19,29 @@ public class SignsConfigHolder extends AsyncStorageObjectHolder<SignsConfig>
super(ess, SignsConfig.class);
this.plugin = plugin;
onReload();
acquireReadLock();
try
final Map<String, Boolean> signs = getData().getSigns();
for (Map.Entry<String, Boolean> entry : signs.entrySet())
{
final Map<String, Boolean> signs = getData().getSigns();
for (Map.Entry<String, Boolean> entry : signs.entrySet())
if (entry.getKey().trim().toUpperCase(Locale.ENGLISH).equals("COLOR") || entry.getKey().trim().toUpperCase(Locale.ENGLISH).equals("COLOUR"))
{
if (entry.getKey().trim().toUpperCase(Locale.ENGLISH).equals("COLOR") || entry.getKey().trim().toUpperCase(Locale.ENGLISH).equals("COLOUR"))
{
signsEnabled = true;
continue;
}
final Signs sign = Signs.valueOf(entry.getKey().toUpperCase(Locale.ENGLISH));
if (sign != null && entry.getValue())
{
enabledSigns.add(sign.getSign());
signsEnabled = true;
}
signsEnabled = true;
continue;
}
final Signs sign = Signs.valueOf(entry.getKey().toUpperCase(Locale.ENGLISH));
if (sign != null && entry.getValue())
{
enabledSigns.add(sign.getSign());
signsEnabled = true;
}
}
finally
final Map<String, Boolean> signs2 = new HashMap<String, Boolean>();
for (Signs sign : Signs.values())
{
unlock();
}
acquireWriteLock();
try
{
final Map<String, Boolean> signs = new HashMap<String, Boolean>();
for (Signs sign : Signs.values())
{
signs.put(sign.toString(), enabledSigns.contains(sign.getSign()));
}
getData().setSigns(signs);
}
finally
{
unlock();
signs2.put(sign.toString(), enabledSigns.contains(sign.getSign()));
}
getData().setSigns(signs2);
queueSave();
}
@Override