diff --git a/app/pom.xml b/app/pom.xml
index eb93b3b..189ade6 100644
--- a/app/pom.xml
+++ b/app/pom.xml
@@ -42,6 +42,18 @@
javafx-controls
25
+
+
+ com.google.errorprone
+ error_prone_core
+ 2.42.0
+
+
+ com.google.errorprone
+ error_prone_annotations
+ 2.42.0
+
+
@@ -112,14 +124,55 @@
-
- org.apache.maven.plugins
- maven-compiler-plugin
-
- 25
- 25
-
-
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.14.1
+
+ true
+ true
+ ${java.home}/bin/javac
+ 25
+ 25
+ 25
+ UTF-8
+
+ -J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED
+ -J--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED
+ -J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED
+ -J--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED
+ -J--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED
+ -J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED
+ -J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED
+ -J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED
+
+ -Xplugin:ErrorProne \
+ -Xep:RestrictedApi:ERROR \
+ -XepOpt:RestrictedApi:annotation=org.toop.framework.annotations.TestsOnly \
+ -XepOpt:RestrictedApi:allowlistRegex=(?s).*/src/test/java/.*|.*test\.java \
+ -XepOpt:RestrictedApi:message=This API is marked @TestsOnly and shouldn't be normally used.
+
+ -XDcompilePolicy=simple
+ --should-stop=ifError=FLOW
+
+
+
+ com.google.errorprone
+ error_prone_core
+ 2.42.0
+
+
+
+
+
+ com.google.errorprone
+ error_prone_core
+ 2.42.0
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/org/toop/Main.java b/app/src/main/java/org/toop/Main.java
index ce1b23d..bb903b6 100644
--- a/app/src/main/java/org/toop/Main.java
+++ b/app/src/main/java/org/toop/Main.java
@@ -7,6 +7,9 @@ import org.toop.framework.networking.NetworkingInitializationException;
import org.toop.framework.resource.ResourceLoader;
import org.toop.framework.resource.ResourceManager;
import org.toop.framework.resource.resources.MusicAsset;
+import org.toop.framework.resource.resources.SoundEffectAsset;
+
+import java.util.Arrays;
public final class Main {
static void main(String[] args) {
diff --git a/framework/pom.xml b/framework/pom.xml
index 33b077a..b0e037c 100644
--- a/framework/pom.xml
+++ b/framework/pom.xml
@@ -123,6 +123,16 @@
compile
+
+ com.google.errorprone
+ error_prone_core
+ 2.42.0
+
+
+ com.google.errorprone
+ error_prone_annotations
+ 2.42.0
+
@@ -132,11 +142,49 @@
maven-compiler-plugin
3.14.1
- 25
+ true
+ true
+ ${java.home}/bin/javac
+ 25
25
- 25
+ 25
UTF-8
+
+ -J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED
+ -J--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED
+ -J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED
+ -J--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED
+ -J--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED
+ -J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED
+ -J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED
+ -J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED
+
+ -Xplugin:ErrorProne \
+ -Xep:RestrictedApi:ERROR \
+ -XepOpt:RestrictedApi:annotation=org.toop.framework.annotations.TestsOnly \
+ -XepOpt:RestrictedApi:allowlistRegex=(?s).*/src/test/java/.*|.*test\.java \
+ -XepOpt:RestrictedApi:message=This API is marked @TestsOnly and shouldn't be normally used.
+
+ -XDcompilePolicy=simple
+ --should-stop=ifError=FLOW
+
+
+
+ com.google.errorprone
+ error_prone_core
+ 2.42.0
+
+
+
+
+ com.google.errorprone
+ error_prone_core
+ 2.42.0
+
+
com.diffplug.spotless
diff --git a/framework/src/main/java/org/toop/framework/Logging.java b/framework/src/main/java/org/toop/framework/Logging.java
index ad28f0b..186f186 100644
--- a/framework/src/main/java/org/toop/framework/Logging.java
+++ b/framework/src/main/java/org/toop/framework/Logging.java
@@ -6,6 +6,8 @@ import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.config.LoggerConfig;
+import java.util.Locale;
+
/**
* Utility class for configuring logging levels dynamically at runtime using Log4j 2.
*
@@ -144,7 +146,7 @@ public final class Logging {
* @param levelToLog name of the logging level (e.g., "DEBUG", "INFO")
*/
public static void enableLogsForClass(String className, String levelToLog) {
- Level level = Level.valueOf(levelToLog.trim().toUpperCase());
+ Level level = Level.valueOf(levelToLog.trim().toUpperCase(Locale.ROOT));
if (level != null && verifyStringIsActualClass(className)) {
enableLogsForClassInternal(className, level);
}
diff --git a/framework/src/main/java/org/toop/framework/annotations/TestsOnly.java b/framework/src/main/java/org/toop/framework/annotations/TestsOnly.java
new file mode 100644
index 0000000..0f77ff5
--- /dev/null
+++ b/framework/src/main/java/org/toop/framework/annotations/TestsOnly.java
@@ -0,0 +1,7 @@
+package org.toop.framework.annotations;
+
+import java.lang.annotation.*;
+
+@Retention(RetentionPolicy.SOURCE)
+@Target({ElementType.METHOD, ElementType.CONSTRUCTOR, ElementType.TYPE})
+public @interface TestsOnly {}
\ No newline at end of file
diff --git a/framework/src/main/java/org/toop/framework/audio/MusicManager.java b/framework/src/main/java/org/toop/framework/audio/MusicManager.java
index 01ad94d..d6a40bb 100644
--- a/framework/src/main/java/org/toop/framework/audio/MusicManager.java
+++ b/framework/src/main/java/org/toop/framework/audio/MusicManager.java
@@ -2,6 +2,7 @@ package org.toop.framework.audio;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
+import org.toop.framework.annotations.TestsOnly;
import org.toop.framework.audio.interfaces.Dispatcher;
import org.toop.framework.resource.ResourceManager;
import org.toop.framework.resource.resources.BaseResource;
@@ -12,7 +13,7 @@ import java.util.*;
public class MusicManager implements org.toop.framework.audio.interfaces.MusicManager {
private static final Logger logger = LogManager.getLogger(MusicManager.class);
- private final List backgroundMusic = new LinkedList<>();
+ private final List backgroundMusic = new ArrayList<>();
private final Dispatcher dispatcher;
private final List resources;
private int playingIndex = 0;
@@ -27,8 +28,11 @@ public class MusicManager implements org.toop.framework
createShuffled();
}
- // Used in unit testing
- MusicManager(List resources, Dispatcher dispatcher) {
+ /**
+ * {@code @TestsOnly} DO NOT USE
+ */
+ @TestsOnly
+ public MusicManager(List resources, Dispatcher dispatcher) {
this.dispatcher = dispatcher;
this.resources = new ArrayList<>(resources);
backgroundMusic.addAll(resources);
@@ -49,6 +53,7 @@ public class MusicManager implements org.toop.framework
backgroundMusic.addAll(resources);
}
+ @Override
public void play() {
if (playing) {
logger.warn("MusicManager is already playing.");
@@ -114,6 +119,7 @@ public class MusicManager implements org.toop.framework
});
}
+ @Override
public void stop() {
if (!playing) return;
diff --git a/framework/src/main/java/org/toop/framework/audio/SoundEffectManager.java b/framework/src/main/java/org/toop/framework/audio/SoundEffectManager.java
index 969b20c..e74ac98 100644
--- a/framework/src/main/java/org/toop/framework/audio/SoundEffectManager.java
+++ b/framework/src/main/java/org/toop/framework/audio/SoundEffectManager.java
@@ -5,6 +5,7 @@ import org.apache.logging.log4j.Logger;
import org.toop.framework.resource.ResourceManager;
import org.toop.framework.resource.ResourceMeta;
import org.toop.framework.resource.resources.BaseResource;
+import org.toop.framework.resource.resources.MusicAsset;
import org.toop.framework.resource.resources.SoundEffectAsset;
import javax.sound.sampled.Clip;
@@ -12,10 +13,7 @@ import javax.sound.sampled.LineEvent;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
import java.util.stream.Collectors;
public class SoundEffectManager implements org.toop.framework.audio.interfaces.SoundEffectManager {
@@ -23,6 +21,8 @@ public class SoundEffectManager implements org.toop.framework.audio.interfaces.S
private final HashMap soundEffectResources;
public SoundEffectManager(){
+ MusicAsset[] abcd = {};
+ new MusicManager<>(Arrays.stream(abcd).toList(), new JavaFXDispatcher());
// If there are duplicates, takes discards the first
soundEffectResources = ResourceManager.getAllOfType(SoundEffectAsset.class).stream()
.collect(Collectors.toMap(ResourceMeta::getName, ResourceMeta::getResource, (a, b) -> b, HashMap::new));
diff --git a/framework/src/main/java/org/toop/framework/audio/VolumeControl.java b/framework/src/main/java/org/toop/framework/audio/VolumeControl.java
index 697ef76..31bbc57 100644
--- a/framework/src/main/java/org/toop/framework/audio/VolumeControl.java
+++ b/framework/src/main/java/org/toop/framework/audio/VolumeControl.java
@@ -52,8 +52,11 @@ public enum VolumeControl {
FX(),
MUSIC();
+ @SuppressWarnings("ImmutableEnumChecker")
private final List> managers = new CopyOnWriteArrayList<>();
+ @SuppressWarnings("ImmutableEnumChecker")
private double volume = 1.0;
+ @SuppressWarnings("ImmutableEnumChecker")
private double masterVolume = 1.0;
/**
diff --git a/framework/src/main/java/org/toop/framework/eventbus/events/EventsBase.java b/framework/src/main/java/org/toop/framework/eventbus/events/EventsBase.java
index 18b86d2..f0815b4 100644
--- a/framework/src/main/java/org/toop/framework/eventbus/events/EventsBase.java
+++ b/framework/src/main/java/org/toop/framework/eventbus/events/EventsBase.java
@@ -9,10 +9,10 @@ public class EventsBase {
/**
* WIP, DO NOT USE!
*
- * @param eventName
- * @param args
- * @return
- * @throws Exception
+ * @param eventName todo
+ * @param args todo
+ * @return todo
+ * @throws Exception todo
*/
public static Object get(String eventName, Object... args) throws Exception {
Class> clazz = Class.forName("org.toop.framework.eventbus.events.Events$ServerEvents$" + eventName);
@@ -24,11 +24,11 @@ public class EventsBase {
/**
* WIP, DO NOT USE!
*
- * @param eventCategory
- * @param eventName
- * @param args
- * @return
- * @throws Exception
+ * @param eventCategory todo
+ * @param eventName todo
+ * @param args todo
+ * @return todo
+ * @throws Exception todo
*/
public static Object get(String eventCategory, String eventName, Object... args)
throws Exception {
@@ -42,10 +42,10 @@ public class EventsBase {
/**
* WIP, DO NOT USE!
*
- * @param eventName
- * @param args
- * @return
- * @throws Exception
+ * @param eventName todo
+ * @param args todo
+ * @return todo
+ * @throws Exception todo
*/
public static Object get2(String eventName, Object... args) throws Exception {
// Fully qualified class name
diff --git a/framework/src/main/java/org/toop/framework/networking/NetworkingGameClientHandler.java b/framework/src/main/java/org/toop/framework/networking/NetworkingGameClientHandler.java
index 8c97f60..388e420 100644
--- a/framework/src/main/java/org/toop/framework/networking/NetworkingGameClientHandler.java
+++ b/framework/src/main/java/org/toop/framework/networking/NetworkingGameClientHandler.java
@@ -119,6 +119,7 @@ public class NetworkingGameClientHandler extends ChannelInboundHandlerAdapter {
}
private void gameWinConditionHandler(String rec) {
+ @SuppressWarnings("StreamToString")
String condition =
Pattern.compile("\\b(win|draw|lose)\\b", Pattern.CASE_INSENSITIVE)
.matcher(rec)
@@ -180,6 +181,7 @@ public class NetworkingGameClientHandler extends ChannelInboundHandlerAdapter {
}
private void gameYourTurnHandler(String rec) {
+ @SuppressWarnings("StreamToString")
String msg =
Pattern.compile("TURNMESSAGE:\\s*\"([^\"]*)\"")
.matcher(rec)
diff --git a/game/pom.xml b/game/pom.xml
index 9ab2b59..efd9aaf 100644
--- a/game/pom.xml
+++ b/game/pom.xml
@@ -83,39 +83,71 @@
slf4j-simple
2.0.17
+
+
+ com.google.errorprone
+ error_prone_core
+ 2.42.0
+
+
+ com.google.errorprone
+ error_prone_annotations
+ 2.42.0
+
+
-
- org.apache.maven.plugins
- maven-compiler-plugin
- 3.14.1
-
- 25
- 25
- 25
- UTF-8
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.14.1
+
+ true
+ true
+ ${java.home}/bin/javac
+ 25
+ 25
+ 25
+ UTF-8
+
+ -J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED
+ -J--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED
+ -J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED
+ -J--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED
+ -J--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED
+ -J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED
+ -J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED
+ -J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED
+
+ -Xplugin:ErrorProne \
+ -Xep:RestrictedApi:ERROR \
+ -XepOpt:RestrictedApi:annotation=org.toop.framework.annotations.TestsOnly \
+ -XepOpt:RestrictedApi:allowlistRegex=(?s).*/src/test/java/.*|.*test\.java \
+ -XepOpt:RestrictedApi:message=This API is marked @TestsOnly and shouldn't be normally used.
+
+ -XDcompilePolicy=simple
+ --should-stop=ifError=FLOW
+
+
+
+ com.google.errorprone
+ error_prone_core
+ 2.42.0
+
+
+
+
+
+ com.google.errorprone
+ error_prone_core
+ 2.42.0
+
+
+
com.diffplug.spotless
spotless-maven-plugin
diff --git a/pom.xml b/pom.xml
index a6c34cf..8742145 100644
--- a/pom.xml
+++ b/pom.xml
@@ -107,18 +107,55 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.14.1
+
+ true
+ true
+ ${java.home}/bin/javac
+ 25
+ 25
+ 25
+ UTF-8
+
+ -J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED
+ -J--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED
+ -J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED
+ -J--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED
+ -J--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED
+ -J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED
+ -J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED
+ -J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED
+
+ -Xplugin:ErrorProne \
+ -Xep:RestrictedApi:ERROR \
+ -XepOpt:RestrictedApi:annotation=org.toop.framework.annotations.TestsOnly \
+ -XepOpt:RestrictedApi:allowlistRegex=(?s).*/src/test/java/.*|.*test\.java \
+ -XepOpt:RestrictedApi:message=This API is marked @TestsOnly and shouldn't be normally used.
+
+ -XDcompilePolicy=simple
+ --should-stop=ifError=FLOW
+
+
+
+ com.google.errorprone
+ error_prone_core
+ 2.42.0
+
+
+
+
+
+ com.google.errorprone
+ error_prone_core
+ 2.42.0
+
+
+