diff --git a/.fbprefs b/.fbprefs index 3c5342714..a22ba4272 100644 --- a/.fbprefs +++ b/.fbprefs @@ -1,5 +1,5 @@ #FindBugs User Preferences -#Thu Apr 28 21:39:39 BRT 2011 +#Sun Jul 31 22:17:12 BRT 2011 detectorAppendingToAnObjectOutputStream=AppendingToAnObjectOutputStream|true detectorBadAppletConstructor=BadAppletConstructor|false detectorBadResultSetAccess=BadResultSetAccess|true @@ -120,8 +120,8 @@ detectorVolatileUsage=VolatileUsage|true detectorWaitInLoop=WaitInLoop|true detectorWrongMapIterator=WrongMapIterator|true detectorXMLFactoryBypass=XMLFactoryBypass|true -detector_threshold=2 +detector_threshold=3 effort=default -filter_settings=Medium|BAD_PRACTICE,CORRECTNESS,MT_CORRECTNESS,PERFORMANCE,STYLE|false -filter_settings_neg=MALICIOUS_CODE,NOISE,I18N,SECURITY,EXPERIMENTAL| +filter_settings=Low|BAD_PRACTICE,CORRECTNESS,EXPERIMENTAL,MALICIOUS_CODE,MT_CORRECTNESS,NOISE,PERFORMANCE,SECURITY,STYLE|false +filter_settings_neg=I18N| run_at_full_build=false diff --git a/data/plugin/com/l2jserver/plugin/PluginLoader.java b/data/plugin/com/l2jserver/plugin/PluginLoader.java index 430b726b9..10c0dcbf5 100644 --- a/data/plugin/com/l2jserver/plugin/PluginLoader.java +++ b/data/plugin/com/l2jserver/plugin/PluginLoader.java @@ -10,8 +10,6 @@ import com.google.inject.Inject; import com.l2jserver.model.template.Template; import com.l2jserver.service.game.scripting.classlistener.Loader; import com.l2jserver.service.game.scripting.classlistener.Unloader; -import com.l2jserver.service.game.template.ScriptTemplateService; -import com.l2jserver.service.game.template.TemplateService; import com.l2jserver.util.ClassUtils; import com.l2jserver.util.factory.CollectionFactory; @@ -23,32 +21,22 @@ import com.l2jserver.util.factory.CollectionFactory; * @author Rogiel */ public class PluginLoader implements Loader, Unloader { + @SuppressWarnings("unused") private static final Logger log = LoggerFactory .getLogger(PluginLoader.class); - private final ScriptTemplateService templateService; - @Inject - public PluginLoader(TemplateService templateService) { - this.templateService = (ScriptTemplateService) templateService; + public PluginLoader() { } @Override public void load(Class[] classes) { - log.debug("Loading templates from {} classes", classes.length); - for (final Class> template : getSuitableClasses(classes)) { - log.debug("Found loadable template class: {}", template); - templateService.addTemplate(template); - } + } @Override public void unload(Class[] classes) { - log.debug("Unloading templates from {} classes", classes.length); - for (final Class> template : getSuitableClasses(classes)) { - log.debug("Found unloadable template class: {}", template); - // TODO unloading - } + } /** @@ -56,7 +44,7 @@ public class PluginLoader implements Loader, Unloader { * * @return list of Template classes to load/unload */ - @SuppressWarnings({ "unchecked" }) + @SuppressWarnings({ "unchecked", "unused" }) private static Set>> getSuitableClasses( Class[] classes) { final Set>> suitable = CollectionFactory diff --git a/src/dao/com/l2jserver/db/dao/jdbc/JDBCClanDAO.java b/src/dao/com/l2jserver/db/dao/jdbc/JDBCClanDAO.java index 6dac58fd4..e89772630 100644 --- a/src/dao/com/l2jserver/db/dao/jdbc/JDBCClanDAO.java +++ b/src/dao/com/l2jserver/db/dao/jdbc/JDBCClanDAO.java @@ -140,8 +140,7 @@ public abstract class JDBCClanDAO extends AbstractJDBCDAO implemen @Override protected void parametize(PreparedStatement st, Clan clan) throws SQLException { - int i = 1; - st.setInt(i++, clan.getID().getID()); + st.setInt(1, clan.getID().getID()); } }) > 0; } diff --git a/src/main/java/com/l2jserver/game/ai/desires/AbstractDesire.java b/src/main/java/com/l2jserver/game/ai/desires/AbstractDesire.java index 6b892f371..37db59d32 100644 --- a/src/main/java/com/l2jserver/game/ai/desires/AbstractDesire.java +++ b/src/main/java/com/l2jserver/game/ai/desires/AbstractDesire.java @@ -57,7 +57,7 @@ public abstract class AbstractDesire implements Desire { } @Override - public int getDesirePower() { + public synchronized int getDesirePower() { return desirePower; } diff --git a/src/main/java/com/l2jserver/game/net/packet/client/CM_ENTER_WORLD.java b/src/main/java/com/l2jserver/game/net/packet/client/CM_ENTER_WORLD.java index f462e5df4..86ad09730 100644 --- a/src/main/java/com/l2jserver/game/net/packet/client/CM_ENTER_WORLD.java +++ b/src/main/java/com/l2jserver/game/net/packet/client/CM_ENTER_WORLD.java @@ -81,8 +81,9 @@ public class CM_ENTER_WORLD extends AbstractClientPacket { try { characterService.enterWorld(id.getObject()); } catch (SpawnPointNotFoundServiceException e) { + conn.sendActionFailed(); } catch (AlreadySpawnedServiceException e) { - + //TODO send an error message here } } } diff --git a/src/main/java/com/l2jserver/game/net/packet/client/CM_REQUEST_CHAR_TEMPLATE.java b/src/main/java/com/l2jserver/game/net/packet/client/CM_REQUEST_CHAR_TEMPLATE.java index 7fe9b01b9..dfe7cb865 100644 --- a/src/main/java/com/l2jserver/game/net/packet/client/CM_REQUEST_CHAR_TEMPLATE.java +++ b/src/main/java/com/l2jserver/game/net/packet/client/CM_REQUEST_CHAR_TEMPLATE.java @@ -45,7 +45,7 @@ public class CM_REQUEST_CHAR_TEMPLATE extends AbstractClientPacket { /** * List of {@link CharacterClass} templates sent to the client */ - public static final CharacterClass[] TEMPLATE_CLASSES = { + protected static final CharacterClass[] TEMPLATE_CLASSES = { CharacterClass.HUMAN_FIGHTER, CharacterClass.HUMAN_MYSTIC, CharacterClass.ELVEN_FIGHTER, CharacterClass.ELVEN_MYSTIC, CharacterClass.DARK_FIGHTER, CharacterClass.DARK_MYSTIC, diff --git a/src/main/java/com/l2jserver/game/net/packet/server/SM_NPC_INFO.java b/src/main/java/com/l2jserver/game/net/packet/server/SM_NPC_INFO.java index 357149b67..aafb13fe8 100644 --- a/src/main/java/com/l2jserver/game/net/packet/server/SM_NPC_INFO.java +++ b/src/main/java/com/l2jserver/game/net/packet/server/SM_NPC_INFO.java @@ -48,11 +48,11 @@ public class SM_NPC_INFO extends AbstractServerPacket { buffer.writeInt(npc.getID().getID()); buffer.writeInt(template.getID().getID() + 1000000); // npctype id - if (npc instanceof NPC) { + //if (npc instanceof NPC) { buffer.writeInt((template.isAttackable() ? 0x01 : 0x00)); - } else { - buffer.writeInt(0x01); - } + //} else { + // buffer.writeInt(0x01); + //} buffer.writeInt(npc.getPoint().getX()); buffer.writeInt(npc.getPoint().getY()); buffer.writeInt(npc.getPoint().getZ()); diff --git a/src/main/java/com/l2jserver/model/world/character/CharacterShortcutContainer.java b/src/main/java/com/l2jserver/model/world/character/CharacterShortcutContainer.java index 5607d6053..505b2ec7a 100644 --- a/src/main/java/com/l2jserver/model/world/character/CharacterShortcutContainer.java +++ b/src/main/java/com/l2jserver/model/world/character/CharacterShortcutContainer.java @@ -16,6 +16,7 @@ */ package com.l2jserver.model.world.character; +import java.io.Serializable; import java.util.Collection; import java.util.Collections; import java.util.Comparator; @@ -136,7 +137,9 @@ public class CharacterShortcutContainer implements Iterable { return character; } - public static class ShortcutSlotComparator implements Comparator { + public static class ShortcutSlotComparator implements Comparator, Serializable { + private static final long serialVersionUID = 1L; + @Override public int compare(Shortcut o1, Shortcut o2) { return ((o1.getPage() * o1.getSlot()) - (o2.getPage() * o2 diff --git a/src/main/java/com/l2jserver/service/configuration/ProxyConfigurationService.java b/src/main/java/com/l2jserver/service/configuration/ProxyConfigurationService.java index feeb1f7bd..7541cbe99 100644 --- a/src/main/java/com/l2jserver/service/configuration/ProxyConfigurationService.java +++ b/src/main/java/com/l2jserver/service/configuration/ProxyConfigurationService.java @@ -255,6 +255,7 @@ public class ProxyConfigurationService extends AbstractService implements if(prop != null) return prop; } + return null; } prop = new Properties(); final File file = new File(directory, config.value() + ".properties"); diff --git a/src/main/java/com/l2jserver/service/game/chat/ChatChannel.java b/src/main/java/com/l2jserver/service/game/chat/ChatChannel.java index 24a59275b..16ee7e5f3 100644 --- a/src/main/java/com/l2jserver/service/game/chat/ChatChannel.java +++ b/src/main/java/com/l2jserver/service/game/chat/ChatChannel.java @@ -99,4 +99,10 @@ public interface ChatChannel { * @return the chat channel name */ String getChannelName(); + + /** + * Disposes this channel. Channels should only be disposed by its creator if + * there is no more interest in them. + */ + void dispose(); } diff --git a/src/main/java/com/l2jserver/service/game/chat/ChatChannelListener.java b/src/main/java/com/l2jserver/service/game/chat/ChatChannelListener.java index 3dec87785..b2a9e1735 100644 --- a/src/main/java/com/l2jserver/service/game/chat/ChatChannelListener.java +++ b/src/main/java/com/l2jserver/service/game/chat/ChatChannelListener.java @@ -31,7 +31,8 @@ public interface ChatChannelListener { * @param channel * the chat channel * @param message - * the message + * the message object that was created by + * {@link ChatLoggingService} */ void onMessage(ChatChannel channel, ChatMessage message); } diff --git a/src/main/java/com/l2jserver/service/game/chat/ChatLoggingService.java b/src/main/java/com/l2jserver/service/game/chat/ChatLoggingService.java index b0d155e08..5d877c97f 100644 --- a/src/main/java/com/l2jserver/service/game/chat/ChatLoggingService.java +++ b/src/main/java/com/l2jserver/service/game/chat/ChatLoggingService.java @@ -21,7 +21,7 @@ import com.l2jserver.model.server.ChatMessage; import com.l2jserver.service.Service; /** - * This service logs each message sent in the server. Implementarions may choose + * This service logs each message sent in the server. Implementations may choose * to store in a database, plain text, XML or any other form of logging. * * @author Rogiel diff --git a/src/main/java/com/l2jserver/service/game/chat/DatabaseChatLoggingService.java b/src/main/java/com/l2jserver/service/game/chat/DatabaseChatLoggingService.java index 391d451ce..398201b79 100644 --- a/src/main/java/com/l2jserver/service/game/chat/DatabaseChatLoggingService.java +++ b/src/main/java/com/l2jserver/service/game/chat/DatabaseChatLoggingService.java @@ -24,12 +24,15 @@ import com.l2jserver.model.id.object.CharacterID; import com.l2jserver.model.id.object.provider.CharacterIDProvider; import com.l2jserver.model.server.ChatMessage; import com.l2jserver.service.AbstractService; +import com.l2jserver.service.AbstractService.Depends; +import com.l2jserver.service.database.DatabaseService; /** * {@link ChatLoggingService} implementation that stores logs in the database * * @author Rogiel */ +@Depends(DatabaseService.class) public class DatabaseChatLoggingService extends AbstractService implements ChatLoggingService { /** diff --git a/src/main/java/com/l2jserver/service/game/chat/SimpleChatService.java b/src/main/java/com/l2jserver/service/game/chat/SimpleChatService.java index 25f0facc1..c0f192fb1 100644 --- a/src/main/java/com/l2jserver/service/game/chat/SimpleChatService.java +++ b/src/main/java/com/l2jserver/service/game/chat/SimpleChatService.java @@ -28,6 +28,7 @@ import com.l2jserver.model.server.ChatMessage; import com.l2jserver.model.world.Clan; import com.l2jserver.model.world.L2Character; import com.l2jserver.service.AbstractService; +import com.l2jserver.service.AbstractService.Depends; import com.l2jserver.service.ServiceStartException; import com.l2jserver.service.ServiceStopException; import com.l2jserver.service.game.region.Region; @@ -39,7 +40,7 @@ import com.l2jserver.util.factory.CollectionFactory; * * @author Rogiel */ -// @Depends(RegionService.class) +@Depends(ChatLoggingService.class) public class SimpleChatService extends AbstractService implements ChatService { private final ChatLoggingService chatLoggingService; @@ -308,6 +309,11 @@ public class SimpleChatService extends AbstractService implements ChatService { public ChatMessageType getMessageType() { return ChatMessageType.SHOUT; } + + @Override + public void dispose() { + privateChannels.remove(character); + } } /** @@ -321,6 +327,11 @@ public class SimpleChatService extends AbstractService implements ChatService { public ChatMessageType getMessageType() { return ChatMessageType.ALL; } + + @Override + public void dispose() { + throw new UnsupportedOperationException("Cannot dispose the Global Chat Channel"); + } } /** @@ -334,6 +345,11 @@ public class SimpleChatService extends AbstractService implements ChatService { public ChatMessageType getMessageType() { return ChatMessageType.TRADE; } + + @Override + public void dispose() { + throw new UnsupportedOperationException("Cannot dispose the Trade Chat Channel"); + } } /** @@ -347,6 +363,11 @@ public class SimpleChatService extends AbstractService implements ChatService { public ChatMessageType getMessageType() { return ChatMessageType.ANNOUNCEMENT; } + + @Override + public void dispose() { + throw new UnsupportedOperationException("Cannot dispose the Announcement Chat Channel"); + } } /** @@ -359,7 +380,6 @@ public class SimpleChatService extends AbstractService implements ChatService { /** * The clan ID */ - @SuppressWarnings("unused") private final ClanID clanID; /** @@ -376,6 +396,11 @@ public class SimpleChatService extends AbstractService implements ChatService { public ChatMessageType getMessageType() { return ChatMessageType.CLAN; } + + @Override + public void dispose() { + clanChannels.remove(clanID); + } } /** @@ -405,5 +430,10 @@ public class SimpleChatService extends AbstractService implements ChatService { public ChatMessageType getMessageType() { return ChatMessageType.ALL; } + + @Override + public void dispose() { + throw new UnsupportedOperationException(); + } } } diff --git a/src/main/java/com/l2jserver/service/game/scripting/impl/ScriptContextImpl.java b/src/main/java/com/l2jserver/service/game/scripting/impl/ScriptContextImpl.java index fe31afdfd..76f5e2565 100644 --- a/src/main/java/com/l2jserver/service/game/scripting/impl/ScriptContextImpl.java +++ b/src/main/java/com/l2jserver/service/game/scripting/impl/ScriptContextImpl.java @@ -268,7 +268,7 @@ public class ScriptContextImpl implements ScriptContext { } @Override - public ScriptClassLoader getClassLoader() { + public synchronized ScriptClassLoader getClassLoader() { return compilationResult.getClassLoader(); } diff --git a/src/main/java/com/l2jserver/service/game/scripting/impl/javacc/ClassFileManager.java b/src/main/java/com/l2jserver/service/game/scripting/impl/javacc/ClassFileManager.java index 571b31e01..3ee47b569 100644 --- a/src/main/java/com/l2jserver/service/game/scripting/impl/javacc/ClassFileManager.java +++ b/src/main/java/com/l2jserver/service/game/scripting/impl/javacc/ClassFileManager.java @@ -197,7 +197,7 @@ public class ClassFileManager extends * if something foes wrong */ @Override - public Iterable list(Location location, String packageName, + public synchronized Iterable list(Location location, String packageName, Set kinds, boolean recurse) throws IOException { Iterable objects = super.list(location, packageName, kinds, recurse); diff --git a/src/main/java/com/l2jserver/util/calculator/ComplexCalculator.java b/src/main/java/com/l2jserver/util/calculator/ComplexCalculator.java index f484e25ee..c0102f75c 100644 --- a/src/main/java/com/l2jserver/util/calculator/ComplexCalculator.java +++ b/src/main/java/com/l2jserver/util/calculator/ComplexCalculator.java @@ -16,6 +16,7 @@ */ package com.l2jserver.util.calculator; +import java.io.Serializable; import java.util.Collections; import java.util.Comparator; import java.util.EnumMap; @@ -264,7 +265,9 @@ public class ComplexCalculator> } public static class FunctionOrderComparator implements - Comparator> { + Comparator>, Serializable { + private static final long serialVersionUID = 1L; + public static final FunctionOrderComparator SHARED_INSTANCE = new FunctionOrderComparator(); @Override diff --git a/src/main/java/com/l2jserver/util/calculator/SimpleCalculator.java b/src/main/java/com/l2jserver/util/calculator/SimpleCalculator.java index b9507a1d8..58651c07e 100644 --- a/src/main/java/com/l2jserver/util/calculator/SimpleCalculator.java +++ b/src/main/java/com/l2jserver/util/calculator/SimpleCalculator.java @@ -16,6 +16,7 @@ */ package com.l2jserver.util.calculator; +import java.io.Serializable; import java.util.Arrays; import java.util.Comparator; @@ -66,7 +67,9 @@ public class SimpleCalculator> } public static class FunctionOrderComparator implements - Comparator> { + Comparator>, Serializable { + private static final long serialVersionUID = 1L; + public static final FunctionOrderComparator SHARED_INSTANCE = new FunctionOrderComparator(); @Override