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 extends Template>> 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 extends Template>> 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