Dev: migrated to single logger lib (replaced slf4j usage by log4j), clean up and documented pom files, updated some libs;

This commit is contained in:
Oleg Agafonov 2021-10-02 11:09:09 +04:00
parent 16d20e73d2
commit 08407eef25
10 changed files with 125 additions and 110 deletions

View file

@ -14,7 +14,6 @@
<name>Mage Client</name> <name>Mage Client</name>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.mage</groupId> <groupId>org.mage</groupId>
<artifactId>mage</artifactId> <artifactId>mage</artifactId>
@ -31,89 +30,105 @@
<version>${project.version}</version> <version>${project.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.googlecode.jspf</groupId> <groupId>${project.groupId}</groupId>
<artifactId>jspf-core</artifactId> <artifactId>mage-counter-plugin</artifactId>
<version>0.9.1</version> <version>0.1</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>log4j</groupId> <groupId>log4j</groupId>
<artifactId>log4j</artifactId> <artifactId>log4j</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
<dependency> <dependency>
<groupId>net.java.truevfs</groupId> <groupId>net.java.truevfs</groupId>
<artifactId>truevfs-profile-base</artifactId> <artifactId>truevfs-profile-base</artifactId>
</dependency> </dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>org.unbescape</groupId>
<artifactId>unbescape</artifactId>
</dependency>
<dependency> <dependency>
<!-- needs for server connection by jboss --> <!-- inner lib for jboss network implementation -->
<groupId>net.sf.trove4j</groupId> <groupId>net.sf.trove4j</groupId>
<artifactId>trove4j</artifactId> <artifactId>trove4j</artifactId>
<version>3.0.3</version> <version>3.0.3</version>
</dependency> </dependency>
<dependency> <dependency>
<!-- wtf lib, related to plugins system TODO: unused and can be deleted? -->
<groupId>com.googlecode.jspf</groupId>
<artifactId>jspf-core</artifactId>
<version>0.9.1</version>
</dependency>
<dependency>
<!-- image scaling for card images -->
<!-- TODO: library is dead, must be replaced -->
<groupId>com.mortennobel</groupId> <groupId>com.mortennobel</groupId>
<artifactId>java-image-scaling</artifactId> <artifactId>java-image-scaling</artifactId>
<version>0.8.6</version> <version>0.8.6</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.google.guava</groupId> <!-- graphic lib to draw GUI with effects -->
<artifactId>guava</artifactId> <!-- TODO: library is dead, must be replaced -->
</dependency>
<dependency>
<groupId>org.swinglabs</groupId> <groupId>org.swinglabs</groupId>
<artifactId>swingx</artifactId> <artifactId>swingx</artifactId>
<version>1.6.1</version> <version>1.6.1</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.jetlang</groupId> <!-- GUI lib, part of SwingX -->
<artifactId>jetlang</artifactId>
<version>0.2.23</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
<version>1.11.827</version>
</dependency>
<dependency>
<groupId>com.jgoodies</groupId>
<artifactId>forms</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>com.intellij</groupId>
<artifactId>forms_rt</artifactId>
<version>7.0.3</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>mage-counter-plugin</artifactId>
<version>0.1</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.jdesktop</groupId>
<artifactId>beansbinding</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>org.swinglabs</groupId> <groupId>org.swinglabs</groupId>
<artifactId>swing-layout</artifactId> <artifactId>swing-layout</artifactId>
<version>1.0.3</version> <version>1.0.3</version>
</dependency> </dependency>
<dependency> <dependency>
<!-- multi-threading lib for symbols/images download -->
<groupId>org.jetlang</groupId>
<artifactId>jetlang</artifactId>
<version>0.2.23</version>
</dependency>
<dependency>
<!-- amazon s3 cloud lib to upload game logs from experimental client -->
<!-- TODO: feature must be removed as unused or implemented for all -->
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
<version>1.12.78</version>
</dependency>
<dependency>
<!-- GUI lib TODO: unused and can be deleted? -->
<groupId>com.jgoodies</groupId>
<artifactId>forms</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<!-- GUI lib TODO: unused and can be deleted? -->
<groupId>com.intellij</groupId>
<artifactId>forms_rt</artifactId>
<version>7.0.3</version>
</dependency>
<dependency>
<!-- GUI lib -->
<groupId>org.jdesktop</groupId>
<artifactId>beansbinding</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<!-- scraping lib to download and parse symbols/images/svg -->
<groupId>org.jsoup</groupId> <groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId> <artifactId>jsoup</artifactId>
<version>1.14.2</version> <version>1.14.3</version>
</dependency> </dependency>
<!-- music player START --> <!-- music player START -->
@ -135,6 +150,7 @@
<!-- music player END --> <!-- music player END -->
<dependency> <dependency>
<!-- GUI lib for balloon popup TODO: unused and can be deleted? -->
<groupId>net.java.balloontip</groupId> <groupId>net.java.balloontip</groupId>
<artifactId>balloontip</artifactId> <artifactId>balloontip</artifactId>
<version>1.2.4.1</version> <version>1.2.4.1</version>
@ -153,15 +169,11 @@
<!-- svg support END --> <!-- svg support END -->
<dependency> <dependency>
<!-- time lib for GUI time info -->
<groupId>org.ocpsoft.prettytime</groupId> <groupId>org.ocpsoft.prettytime</groupId>
<artifactId>prettytime</artifactId> <artifactId>prettytime</artifactId>
<version>4.0.6.Final</version> <version>4.0.6.Final</version>
</dependency> </dependency>
<dependency>
<groupId>org.unbescape</groupId>
<artifactId>unbescape</artifactId>
<version>1.1.6.RELEASE</version>
</dependency>
</dependencies> </dependencies>
<!-- to get the reference to local repository with com\googlecode\jspf\jspf-core\0.9.1\ --> <!-- to get the reference to local repository with com\googlecode\jspf\jspf-core\0.9.1\ -->

View file

@ -16,14 +16,13 @@ import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.Mixer; import javax.sound.sampled.Mixer;
import javax.sound.sampled.SourceDataLine; import javax.sound.sampled.SourceDataLine;
import org.slf4j.Logger; import org.apache.log4j.Logger;
import org.slf4j.LoggerFactory;
import mage.utils.ThreadUtils; import mage.utils.ThreadUtils;
public class LinePool { public class LinePool {
private final Logger log = LoggerFactory.getLogger(getClass()); private final org.apache.log4j.Logger logger = Logger.getLogger(LinePool.class);
private static final int LINE_CLEANUP_INTERVAL = 30000; private static final int LINE_CLEANUP_INTERVAL = 30000;
private final Queue<SourceDataLine> freeLines = new ArrayDeque<>(); private final Queue<SourceDataLine> freeLines = new ArrayDeque<>();
@ -55,7 +54,7 @@ public class LinePool {
SourceDataLine line = (SourceDataLine) mixer.getLine(lineInfo); SourceDataLine line = (SourceDataLine) mixer.getLine(lineInfo);
freeLines.add(line); freeLines.add(line);
} catch (LineUnavailableException e) { } catch (LineUnavailableException e) {
log.warn("Failed to get line from mixer", e); logger.warn("Failed to get line from mixer", e);
} }
} }
new Timer("Line cleanup", true).scheduleAtFixedRate(new TimerTask() { new Timer("Line cleanup", true).scheduleAtFixedRate(new TimerTask() {
@ -65,7 +64,7 @@ public class LinePool {
for (SourceDataLine sourceDataLine : freeLines) { for (SourceDataLine sourceDataLine : freeLines) {
if (sourceDataLine.isOpen()) { if (sourceDataLine.isOpen()) {
sourceDataLine.close(); sourceDataLine.close();
log.debug("Closed line {}", sourceDataLine); logger.debug("Closed line " + sourceDataLine);
} }
} }
} }
@ -96,13 +95,13 @@ public class LinePool {
public void playSound(final MageClip mageClip) { public void playSound(final MageClip mageClip) {
final SourceDataLine line; final SourceDataLine line;
synchronized (LinePool.this) { synchronized (LinePool.this) {
log.debug("Playing {}", mageClip.getFilename()); logger.debug("Playing: " + mageClip.getFilename());
logLineStats(); logLineStats();
line = borrowLine(); line = borrowLine();
if (line == null) { if (line == null) {
// no lines available, queue sound to play it when a line is available // no lines available, queue sound to play it when a line is available
queue.add(mageClip); queue.add(mageClip);
log.debug("Sound {} queued.", mageClip.getFilename()); logger.debug("Sound queued: " + mageClip.getFilename());
return; return;
} }
logLineStats(); logLineStats();
@ -113,19 +112,19 @@ public class LinePool {
if (!line.isOpen()) { if (!line.isOpen()) {
line.open(); line.open();
line.addLineListener(event -> { line.addLineListener(event -> {
log.debug("Event: {}", event); logger.debug("Event: " + event);
if (event.getType() != Type.STOP) { if (event.getType() != Type.STOP) {
return; return;
} }
synchronized (LinePool.this) { synchronized (LinePool.this) {
log.debug("Before stop on line {}", line); logger.debug("Before stop on line " + line);
logLineStats(); logLineStats();
returnLine(line); returnLine(line);
log.debug("After stop on line {}", line); logger.debug("After stop on line " + line);
logLineStats(); logLineStats();
MageClip queuedSound = queue.poll(); MageClip queuedSound = queue.poll();
if (queuedSound != null) { if (queuedSound != null) {
log.debug("Playing queued sound {}", queuedSound); logger.debug("Playing queued sound " + queuedSound);
playSound(queuedSound); playSound(queuedSound);
} }
} }
@ -133,19 +132,21 @@ public class LinePool {
} }
line.start(); line.start();
} catch (LineUnavailableException e) { } catch (LineUnavailableException e) {
log.warn("Failed to open line", e); logger.warn("Failed to open line", e);
} }
} }
byte[] buffer = mageClip.getBuffer(); byte[] buffer = mageClip.getBuffer();
log.debug("Before write to line {}", line); logger.debug("Before write to line " + line);
line.write(buffer, 0, buffer.length); line.write(buffer, 0, buffer.length);
line.drain(); line.drain();
line.stop(); line.stop();
log.debug("Line completed: {}", line); logger.debug("Line completed: " + line);
}); });
} }
private void logLineStats() { private void logLineStats() {
log.debug("Free lines: {} Active: {} Busy: {}", freeLines.size(), activeLines.size(), busyLines.size()); logger.debug(String.format("Free lines: %d; Active: %d; Busy: %d",
freeLines.size(), activeLines.size(), busyLines.size()
));
} }
} }

View file

@ -63,12 +63,10 @@
<dependency> <dependency>
<groupId>org.junit.jupiter</groupId> <groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId> <artifactId>junit-jupiter</artifactId>
<scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.assertj</groupId> <groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId> <artifactId>assertj-core</artifactId>
<scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.apache.commons</groupId> <groupId>org.apache.commons</groupId>

View file

@ -27,7 +27,6 @@
<dependency> <dependency>
<groupId>junit</groupId> <groupId>junit</groupId>
<artifactId>junit</artifactId> <artifactId>junit</artifactId>
<scope>test</scope>
</dependency> </dependency>
</dependencies> </dependencies>

View file

@ -37,7 +37,6 @@
<dependency> <dependency>
<groupId>junit</groupId> <groupId>junit</groupId>
<artifactId>junit</artifactId> <artifactId>junit</artifactId>
<scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.sun.xml.bind</groupId> <groupId>com.sun.xml.bind</groupId>
@ -54,10 +53,6 @@
<groupId>log4j</groupId> <groupId>log4j</groupId>
<artifactId>log4j</artifactId> <artifactId>log4j</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
<dependency> <dependency>
<groupId>${project.groupId}</groupId> <groupId>${project.groupId}</groupId>
<artifactId>mage-player-ai</artifactId> <artifactId>mage-player-ai</artifactId>
@ -284,12 +279,14 @@
<dependency> <dependency>
<groupId>org.junit.jupiter</groupId> <groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId> <artifactId>junit-jupiter</artifactId>
<scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.assertj</groupId> <groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId> <artifactId>assertj-core</artifactId>
<scope>test</scope> </dependency>
<dependency>
<groupId>org.unbescape</groupId>
<artifactId>unbescape</artifactId>
</dependency> </dependency>
</dependencies> </dependencies>

View file

@ -34,8 +34,8 @@ import mage.server.util.SystemUtil;
import mage.utils.*; import mage.utils.*;
import mage.view.*; import mage.view.*;
import mage.view.ChatMessage.MessageColor; import mage.view.ChatMessage.MessageColor;
import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.unbescape.html.HtmlEscape;
import javax.management.timer.Timer; import javax.management.timer.Timer;
import java.security.SecureRandom; import java.security.SecureRandom;
@ -489,7 +489,7 @@ public class MageServerImpl implements MageServer {
public void sendChatMessage(final UUID chatId, final String userName, final String message) throws MageException { public void sendChatMessage(final UUID chatId, final String userName, final String message) throws MageException {
try { try {
callExecutor.execute( callExecutor.execute(
() -> managerFactory.chatManager().broadcast(chatId, userName, StringEscapeUtils.escapeHtml4(message), MessageColor.BLUE, true, null, ChatMessage.MessageType.TALK, null) () -> managerFactory.chatManager().broadcast(chatId, userName, HtmlEscape.escapeHtml4(message), MessageColor.BLUE, true, null, ChatMessage.MessageType.TALK, null)
); );
} catch (Exception ex) { } catch (Exception ex) {
handleException(ex); handleException(ex);

View file

@ -29,7 +29,6 @@
<dependency> <dependency>
<groupId>junit</groupId> <groupId>junit</groupId>
<artifactId>junit</artifactId> <artifactId>junit</artifactId>
<scope>test</scope>
</dependency> </dependency>
</dependencies> </dependencies>

View file

@ -50,7 +50,6 @@
<dependency> <dependency>
<groupId>junit</groupId> <groupId>junit</groupId>
<artifactId>junit</artifactId> <artifactId>junit</artifactId>
<scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>log4j</groupId> <groupId>log4j</groupId>

View file

@ -37,7 +37,6 @@
<dependency> <dependency>
<groupId>junit</groupId> <groupId>junit</groupId>
<artifactId>junit</artifactId> <artifactId>junit</artifactId>
<scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.fasterxml.jackson.core</groupId> <groupId>com.fasterxml.jackson.core</groupId>

61
pom.xml
View file

@ -15,7 +15,7 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId> <artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version> <version>3.8.1</version>
<configuration> <configuration>
<source>1.8</source> <source>1.8</source>
<target>1.8</target> <target>1.8</target>
@ -157,23 +157,14 @@
<dependencyManagement> <dependencyManagement>
<!-- write libs from all childs here to control a versions --> <!-- write libs from all childs here to control a versions -->
<!-- if you want to use it in the child module then copy groupId and artifactId only (without scope and version) -->
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>junit</groupId> <!-- logs support -->
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId> <groupId>log4j</groupId>
<artifactId>log4j</artifactId> <artifactId>log4j</artifactId>
<version>1.2.17</version> <version>1.2.17</version>
</dependency> </dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.8.0-beta2</version>
</dependency>
<dependency> <dependency>
<!-- json support --> <!-- json support -->
<groupId>com.google.code.gson</groupId> <groupId>com.google.code.gson</groupId>
@ -181,24 +172,16 @@
<version>2.8.8</version> <version>2.8.8</version>
</dependency> </dependency>
<dependency> <dependency>
<!-- extended lib from google (collections, io, etc) -->
<groupId>com.google.guava</groupId> <groupId>com.google.guava</groupId>
<artifactId>guava</artifactId> <artifactId>guava</artifactId>
<version>30.1.1-jre</version> <version>30.1.1-jre</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.junit.jupiter</groupId> <!-- escape/unescape html in texts -->
<artifactId>junit-jupiter</artifactId> <groupId>org.unbescape</groupId>
<version>5.8.1</version> <artifactId>unbescape</artifactId>
</dependency> <version>1.1.6.RELEASE</version>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.18.0</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.11</version>
</dependency> </dependency>
<dependency> <dependency>
<!-- zip files support --> <!-- zip files support -->
@ -206,6 +189,34 @@
<artifactId>truevfs-profile-base</artifactId> <artifactId>truevfs-profile-base</artifactId>
<version>0.14.0</version> <version>0.14.0</version>
</dependency> </dependency>
<dependency>
<!-- lib with useful code and utils -->
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
<dependency>
<!-- junit 4 tests -->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
<dependency>
<!-- junit 5 tests -->
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<!-- write asserts in unit tests like a real language -->
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.19.0</version>
<scope>test</scope>
</dependency>
</dependencies> </dependencies>
</dependencyManagement> </dependencyManagement>
</project> </project>