From ae7dfe7c3c1262249a062a81cd15af72390e4acd Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Fri, 23 Jan 2026 23:31:30 +0100 Subject: [PATCH] Updating tons of dependencies. --- pom.xml | 24 +++++------ .../java/ch/fritteli/maze/generator/Main.java | 8 ++-- .../AbstractMazeGeneratorAlgorithm.java | 8 ++-- .../generator/algorithm/RandomDepthFirst.java | 14 +++--- .../algorithm/wilson/MazeSolver.java | 14 +++--- .../maze/generator/algorithm/wilson/Path.java | 30 ++++++------- .../algorithm/wilson/PathsBuilder.java | 28 ++++++------ .../generator/algorithm/wilson/Wilson.java | 14 +++--- .../maze/generator/model/Direction.java | 4 +- .../fritteli/maze/generator/model/Maze.java | 43 +++++++++++-------- .../maze/generator/model/Position.java | 10 ++--- .../fritteli/maze/generator/model/Tile.java | 24 +++++------ .../fritteli/maze/generator/model/Walls.java | 16 +++---- .../maze/generator/renderer/Renderer.java | 6 +-- .../generator/renderer/html/Generator.java | 4 +- .../generator/renderer/html/HTMLRenderer.java | 14 +++--- .../renderer/htmlfile/HTMLFileRenderer.java | 18 ++++---- .../generator/renderer/json/Generator.java | 8 ++-- .../generator/renderer/json/JsonRenderer.java | 34 +++++++-------- .../renderer/jsonfile/JsonFileRenderer.java | 18 ++++---- .../generator/renderer/pdf/Generator.java | 27 +++++++----- .../generator/renderer/pdf/PDFRenderer.java | 8 ++-- .../renderer/pdffile/PDFFileRenderer.java | 18 ++++---- .../generator/renderer/text/Generator.java | 24 +++++------ .../generator/renderer/text/TextRenderer.java | 10 ++--- .../renderer/textfile/TextFileRenderer.java | 26 +++++------ .../AbstractMazeInputStream.java | 6 +-- .../AbstractMazeOutputStream.java | 4 +- .../serialization/CommonTileHandler.java | 12 +++--- .../serialization/v1/MazeInputStreamV1.java | 6 +-- .../serialization/v1/MazeOutputStreamV1.java | 4 +- .../v1/SerializerDeserializerV1.java | 16 +++---- .../serialization/v2/MazeInputStreamV2.java | 6 +-- .../serialization/v2/MazeOutputStreamV2.java | 4 +- .../v2/SerializerDeserializerV2.java | 16 +++---- .../serialization/v3/MazeInputStreamV3.java | 6 +-- .../serialization/v3/MazeOutputStreamV3.java | 10 ++--- .../v3/SerializerDeserializerV3.java | 22 +++++----- src/main/resources/maze.schema.json | 2 +- .../maze/generator/model/WallsTest.java | 1 - .../renderer/text/CharDefinitionTest.java | 1 - 41 files changed, 285 insertions(+), 283 deletions(-) diff --git a/pom.xml b/pom.xml index 980deec..45dc899 100644 --- a/pom.xml +++ b/pom.xml @@ -1,11 +1,12 @@ - + 4.0.0 ch.fritteli fritteli-build-parent - 5.1.0 + 6.1.0 ch.fritteli.a-maze-r @@ -55,10 +56,10 @@ - 2.17.1 - 1.2.1 - 4.0.0-M8 - 3.0.2 + 33.5.0-jre + 1.2.2 + 4.0.0-M16 + 3.0.6 @@ -67,8 +68,8 @@ lombok - org.jetbrains - annotations + org.jspecify + jspecify io.vavr @@ -77,7 +78,7 @@ com.google.guava guava - 33.2.1-jre + ${guava.version} org.apache.pdfbox @@ -87,12 +88,10 @@ com.fasterxml.jackson.core jackson-annotations - ${jackson.version} - com.fasterxml.jackson.core + tools.jackson.core jackson-databind - ${jackson.version} org.slf4j @@ -109,7 +108,6 @@ org.assertj assertj-core - test diff --git a/src/main/java/ch/fritteli/maze/generator/Main.java b/src/main/java/ch/fritteli/maze/generator/Main.java index f6d29c8..f4ef116 100644 --- a/src/main/java/ch/fritteli/maze/generator/Main.java +++ b/src/main/java/ch/fritteli/maze/generator/Main.java @@ -11,7 +11,7 @@ import ch.fritteli.maze.generator.renderer.text.TextRenderer; import ch.fritteli.maze.generator.renderer.textfile.TextFileRenderer; import lombok.experimental.UtilityClass; import lombok.extern.slf4j.Slf4j; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import java.nio.file.Path; import java.nio.file.Paths; @@ -20,7 +20,7 @@ import java.nio.file.Paths; @UtilityClass public class Main { - public static void main(@NotNull final String[] args) { + static void main(@NonNull final String[] args) { final int width = 20; final int height = 30; final Maze maze = new Maze(width, height/*, 0*/); @@ -59,7 +59,7 @@ public class Main { log.info("PDF rendering to file:\n{}", pdfFileRenderer.render(maze)); } - private static String getBaseFilename(@NotNull final Maze maze) { - return "maze-" + maze.getWidth() + "x" + maze.getHeight() + "-" + maze.getRandomSeed(); + private static String getBaseFilename(@NonNull final Maze maze) { + return "maze-" + maze.getWidth() + "x" + maze.getHeight() + "-" + maze.getRandomSeedStringRepresentation(); } } diff --git a/src/main/java/ch/fritteli/maze/generator/algorithm/AbstractMazeGeneratorAlgorithm.java b/src/main/java/ch/fritteli/maze/generator/algorithm/AbstractMazeGeneratorAlgorithm.java index 2037f76..932f6ec 100644 --- a/src/main/java/ch/fritteli/maze/generator/algorithm/AbstractMazeGeneratorAlgorithm.java +++ b/src/main/java/ch/fritteli/maze/generator/algorithm/AbstractMazeGeneratorAlgorithm.java @@ -1,18 +1,18 @@ package ch.fritteli.maze.generator.algorithm; import ch.fritteli.maze.generator.model.Maze; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import java.util.Random; public abstract class AbstractMazeGeneratorAlgorithm implements MazeGeneratorAlgorithm { - @NotNull + @NonNull protected final Maze maze; - @NotNull + @NonNull protected final Random random; - protected AbstractMazeGeneratorAlgorithm(@NotNull final Maze maze, @NotNull final String algorithmName) { + protected AbstractMazeGeneratorAlgorithm(@NonNull final Maze maze, @NonNull final String algorithmName) { this.maze = maze; this.random = new Random(maze.getRandomSeed()); this.maze.setAlgorithm(algorithmName); diff --git a/src/main/java/ch/fritteli/maze/generator/algorithm/RandomDepthFirst.java b/src/main/java/ch/fritteli/maze/generator/algorithm/RandomDepthFirst.java index eab53a9..e06b45e 100644 --- a/src/main/java/ch/fritteli/maze/generator/algorithm/RandomDepthFirst.java +++ b/src/main/java/ch/fritteli/maze/generator/algorithm/RandomDepthFirst.java @@ -5,17 +5,17 @@ import ch.fritteli.maze.generator.model.Maze; import ch.fritteli.maze.generator.model.Position; import ch.fritteli.maze.generator.model.Tile; import io.vavr.control.Option; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.Deque; import java.util.LinkedList; public class RandomDepthFirst extends AbstractMazeGeneratorAlgorithm { - @NotNull + @NonNull private final Deque positions = new LinkedList<>(); - public RandomDepthFirst(@NotNull final Maze maze) { + public RandomDepthFirst(@NonNull final Maze maze) { super(maze, "Random Depth First"); } @@ -79,7 +79,7 @@ public class RandomDepthFirst extends AbstractMazeGeneratorAlgorithm { } @Nullable - private Direction determineDirectionForDigging(@NotNull final Position position) { + private Direction determineDirectionForDigging(@NonNull final Position position) { if (position.y() == 0) { return Direction.TOP; } @@ -95,12 +95,12 @@ public class RandomDepthFirst extends AbstractMazeGeneratorAlgorithm { return null; } - private void digFrom(@NotNull final Tile tile, @NotNull final Direction direction) { + private void digFrom(@NonNull final Tile tile, @NonNull final Direction direction) { tile.enableDiggingToOrFrom(direction); tile.digFrom(direction); } - private void digTo(@NotNull final Tile tile, @NotNull final Direction direction) { + private void digTo(@NonNull final Tile tile, @NonNull final Direction direction) { tile.enableDiggingToOrFrom(direction); tile.digTo(direction); } diff --git a/src/main/java/ch/fritteli/maze/generator/algorithm/wilson/MazeSolver.java b/src/main/java/ch/fritteli/maze/generator/algorithm/wilson/MazeSolver.java index f84a20c..d9a2db4 100644 --- a/src/main/java/ch/fritteli/maze/generator/algorithm/wilson/MazeSolver.java +++ b/src/main/java/ch/fritteli/maze/generator/algorithm/wilson/MazeSolver.java @@ -3,7 +3,7 @@ package ch.fritteli.maze.generator.algorithm.wilson; import ch.fritteli.maze.generator.model.Direction; import ch.fritteli.maze.generator.model.Maze; import ch.fritteli.maze.generator.model.Position; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import java.util.EnumSet; import java.util.Iterator; @@ -12,10 +12,10 @@ import java.util.Stack; import java.util.stream.Collectors; public class MazeSolver { - @NotNull + @NonNull private final Maze maze; - MazeSolver(@NotNull final Maze maze) { + MazeSolver(@NonNull final Maze maze) { this.maze = maze; } @@ -32,10 +32,10 @@ public class MazeSolver { } } - private List getSolution(@NotNull Position position, - @NotNull Direction forbidden) { - record PathElement(@NotNull Position position, - @NotNull EnumSet possibleDirections) { + private List getSolution(@NonNull Position position, + @NonNull Direction forbidden) { + record PathElement(@NonNull Position position, + @NonNull EnumSet possibleDirections) { } final Stack solution = new Stack<>(); final EnumSet directions = this.maze.getTileAt(position).get().getOpenDirections(); diff --git a/src/main/java/ch/fritteli/maze/generator/algorithm/wilson/Path.java b/src/main/java/ch/fritteli/maze/generator/algorithm/wilson/Path.java index ab18ec2..97c9a14 100644 --- a/src/main/java/ch/fritteli/maze/generator/algorithm/wilson/Path.java +++ b/src/main/java/ch/fritteli/maze/generator/algorithm/wilson/Path.java @@ -6,24 +6,24 @@ import io.vavr.collection.List; import io.vavr.collection.Stream; import io.vavr.collection.Traversable; import io.vavr.control.Option; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import java.util.Random; class Path { private final int width; private final int height; - @NotNull + @NonNull private List positions; - Path(@NotNull final Position start, int width, int height) { + Path(@NonNull final Position start, int width, int height) { this.positions = List.of(start); this.width = width; this.height = height; } - @NotNull - Position growRandom(@NotNull final Random random) { + @NonNull + Position growRandom(@NonNull final Random random) { final Position position = this.nextRandomPosition(random); if (this.contains(position)) { this.removeLoopUpTo(position); @@ -33,17 +33,17 @@ class Path { return position; } - @NotNull + @NonNull List getPositions() { return this.positions; } - @NotNull + @NonNull Position getStart() { return this.positions.last(); } - @NotNull + @NonNull Traversable getMovesFromStart() { return this.positions.reverse().sliding(2) .flatMap(positions1 -> Option.when( @@ -54,8 +54,8 @@ class Path { )); } - @NotNull - private Position nextRandomPosition(@NotNull final Random random) { + @NonNull + private Position nextRandomPosition(@NonNull final Random random) { final Direction randomDirection = this.getRandomDirection(random); final Position nextPosition = this.positions.head().move(randomDirection); if (this.isWithinBounds(nextPosition) && !nextPosition.equals(this.positions.head())) { @@ -64,20 +64,20 @@ class Path { return this.nextRandomPosition(random); } - private boolean isWithinBounds(@NotNull final Position position) { + private boolean isWithinBounds(@NonNull final Position position) { return position.x() >= 0 && position.x() < this.width && position.y() >= 0 && position.y() < this.height; } - private boolean contains(@NotNull final Position position) { + private boolean contains(@NonNull final Position position) { return this.positions.contains(position); } - private void removeLoopUpTo(@NotNull final Position position) { + private void removeLoopUpTo(@NonNull final Position position) { this.positions = this.positions.dropUntil(position::equals); } - @NotNull - private Direction getRandomDirection(@NotNull final Random random) { + @NonNull + private Direction getRandomDirection(@NonNull final Random random) { final Direction[] array = Direction.values(); return array[random.nextInt(array.length)]; } diff --git a/src/main/java/ch/fritteli/maze/generator/algorithm/wilson/PathsBuilder.java b/src/main/java/ch/fritteli/maze/generator/algorithm/wilson/PathsBuilder.java index 098ed81..105cc6b 100644 --- a/src/main/java/ch/fritteli/maze/generator/algorithm/wilson/PathsBuilder.java +++ b/src/main/java/ch/fritteli/maze/generator/algorithm/wilson/PathsBuilder.java @@ -8,7 +8,7 @@ import io.vavr.Tuple; import io.vavr.collection.Stream; import io.vavr.collection.Traversable; import io.vavr.control.Option; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import java.util.Random; @@ -18,13 +18,13 @@ import java.util.Random; class PathsBuilder { private final int width; private final int height; - @NotNull + @NonNull private final Random random; - @NotNull + @NonNull private final Multimap availablePositions; - PathsBuilder(@NotNull final Maze maze, - @NotNull final Random random) { + PathsBuilder(@NonNull final Maze maze, + @NonNull final Random random) { this.width = maze.getWidth(); this.height = maze.getHeight(); this.random = random; @@ -44,7 +44,7 @@ class PathsBuilder { * * @return A {@link Traversable} of generated {@link Path Paths}. */ - @NotNull + @NonNull Traversable buildPaths() { this.initializeWithRandomStartingPosition(); @@ -68,13 +68,13 @@ class PathsBuilder { * * @return An {@link Option} of a new {@link Path} instance. */ - @NotNull + @NonNull private Option buildPath() { return this.initializeNewPath() .map(this::growPath); } - @NotNull + @NonNull private Option initializeNewPath() { return this.popRandomPosition() .map(position -> new Path(position, this.width, this.height)); @@ -87,8 +87,8 @@ class PathsBuilder { * @param path The {@link Path} to grow. * @return The final {@link Path} that reaches the maze. */ - @NotNull - private Path growPath(@NotNull final Path path) { + @NonNull + private Path growPath(@NonNull final Path path) { Position lastPosition; do { lastPosition = path.growRandom(this.random); @@ -96,15 +96,15 @@ class PathsBuilder { return path; } - private boolean isNotPartOfMaze(@NotNull final Position position) { + private boolean isNotPartOfMaze(@NonNull final Position position) { return this.availablePositions.containsEntry(position.x(), position.y()); } - private void setPartOfMaze(@NotNull final Position position) { + private void setPartOfMaze(@NonNull final Position position) { this.availablePositions.remove(position.x(), position.y()); } - private void setPartOfMaze(@NotNull final Path path) { + private void setPartOfMaze(@NonNull final Path path) { path.getPositions().forEach(this::setPartOfMaze); } @@ -114,7 +114,7 @@ class PathsBuilder { * * @return An available position or {@link io.vavr.control.Option.None}. */ - @NotNull + @NonNull private Option popRandomPosition() { if (this.availablePositions.isEmpty()) { return Option.none(); diff --git a/src/main/java/ch/fritteli/maze/generator/algorithm/wilson/Wilson.java b/src/main/java/ch/fritteli/maze/generator/algorithm/wilson/Wilson.java index 1587e6e..6bb17f8 100644 --- a/src/main/java/ch/fritteli/maze/generator/algorithm/wilson/Wilson.java +++ b/src/main/java/ch/fritteli/maze/generator/algorithm/wilson/Wilson.java @@ -6,8 +6,8 @@ import ch.fritteli.maze.generator.model.Maze; import ch.fritteli.maze.generator.model.Position; import ch.fritteli.maze.generator.model.Tile; import io.vavr.collection.Traversable; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; /** * An implementation of Wilson's Algorithm. @@ -29,12 +29,12 @@ import org.jetbrains.annotations.Nullable; */ public class Wilson extends AbstractMazeGeneratorAlgorithm { - public Wilson(@NotNull final Maze maze) { + public Wilson(@NonNull final Maze maze) { super(maze, "Wilson"); } @Nullable - static Direction getDirectionToOuterWall(@NotNull final Position position, + static Direction getDirectionToOuterWall(@NonNull final Position position, final int width, final int height) { if (position.y() == 0) { @@ -60,7 +60,7 @@ public class Wilson extends AbstractMazeGeneratorAlgorithm { this.applyPathsToMaze(paths); } - private void applyPathsToMaze(@NotNull final Traversable paths) { + private void applyPathsToMaze(@NonNull final Traversable paths) { this.openStartAndEndWalls(); paths.forEach(path -> path.getMovesFromStart() .foldLeft( @@ -83,14 +83,14 @@ public class Wilson extends AbstractMazeGeneratorAlgorithm { this.openWall(this.maze.getEnd(), this.maze.getEndTile()); } - private void openWall(@NotNull final Position position, @NotNull final Tile tile) { + private void openWall(@NonNull final Position position, @NonNull final Tile tile) { final Direction direction = this.getDirectionToOuterWall(position); tile.enableDiggingToOrFrom(direction); tile.digTo(direction); } @Nullable - private Direction getDirectionToOuterWall(@NotNull final Position position) { + private Direction getDirectionToOuterWall(@NonNull final Position position) { return getDirectionToOuterWall(position, this.maze.getWidth(), this.maze.getHeight()); } } diff --git a/src/main/java/ch/fritteli/maze/generator/model/Direction.java b/src/main/java/ch/fritteli/maze/generator/model/Direction.java index 75ee1c4..ad4dc5d 100644 --- a/src/main/java/ch/fritteli/maze/generator/model/Direction.java +++ b/src/main/java/ch/fritteli/maze/generator/model/Direction.java @@ -1,6 +1,6 @@ package ch.fritteli.maze.generator.model; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; public enum Direction { TOP, @@ -8,7 +8,7 @@ public enum Direction { BOTTOM, LEFT; - @NotNull + @NonNull public Direction invert() { return switch (this) { case TOP -> BOTTOM; diff --git a/src/main/java/ch/fritteli/maze/generator/model/Maze.java b/src/main/java/ch/fritteli/maze/generator/model/Maze.java index 633e1b3..f7522b8 100644 --- a/src/main/java/ch/fritteli/maze/generator/model/Maze.java +++ b/src/main/java/ch/fritteli/maze/generator/model/Maze.java @@ -5,7 +5,7 @@ import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; import lombok.ToString; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; @EqualsAndHashCode @ToString @@ -30,7 +30,7 @@ public class Maze { this(width, height, System.nanoTime()); } - public Maze(final int width, final int height, @NotNull final Position start, @NotNull final Position end) { + public Maze(final int width, final int height, @NonNull final Position start, @NonNull final Position end) { this(width, height, System.nanoTime(), start, end); } @@ -41,8 +41,8 @@ public class Maze { public Maze(final int width, final int height, final long randomSeed, - @NotNull final Position start, - @NotNull final Position end) { + @NonNull final Position start, + @NonNull final Position end) { if (width <= 1 || height <= 1) { throw new IllegalArgumentException("width and height must be >1"); } @@ -67,7 +67,7 @@ public class Maze { /** * INTERNAL API. Exists only for deserialization. Not to be called from user code. */ - private Maze(@NotNull final Tile[][] field, final int width, final int height, final long randomSeed) { + private Maze(@NonNull final Tile[][] field, final int width, final int height, final long randomSeed) { this.field = field; this.width = width; this.height = height; @@ -79,11 +79,11 @@ public class Maze { /** * INTERNAL API. Exists only for deserialization. Not to be called from user code. */ - private Maze(@NotNull final Tile[][] field, + private Maze(@NonNull final Tile[][] field, final int width, final int height, - @NotNull final Position start, - @NotNull final Position end, + @NonNull final Position start, + @NonNull final Position end, final long randomSeed) { this.field = field; this.width = width; @@ -96,13 +96,13 @@ public class Maze { /** * INTERNAL API. Exists only for deserialization. Not to be called from user code. */ - private Maze(@NotNull final Tile[][] field, + private Maze(@NonNull final Tile[][] field, final int width, final int height, - @NotNull final Position start, - @NotNull final Position end, + @NonNull final Position start, + @NonNull final Position end, final long randomSeed, - @NotNull final String algorithm) { + @NonNull final String algorithm) { this.field = field; this.width = width; this.height = height; @@ -112,29 +112,34 @@ public class Maze { this.end = end; } - @NotNull - public Option getTileAt(@NotNull final Position position) { + @NonNull + public Option getTileAt(@NonNull final Position position) { return this.getTileAt(position.x(), position.y()); } - @NotNull + @NonNull public Option getTileAt(final int x, final int y) { if (x < 0 || y < 0 || x >= this.width || y >= this.height) { return Option.none(); } - return Option.of(this.field[x][y]); + return Option.some(this.field[x][y]); } - @NotNull + @NonNull public Tile getStartTile() { return this.getTileAt(this.start).get(); } - @NotNull + @NonNull public Tile getEndTile() { return this.getTileAt(this.end).get(); } + @NonNull + public String getRandomSeedStringRepresentation() { + return Long.toHexString(this.randomSeed); + } + private void initField() { for (int x = 0; x < this.width; x++) { this.field[x] = new Tile[this.height]; @@ -146,7 +151,7 @@ public class Maze { } } - private void hardenWalls(@NotNull final Tile tile, final int x, final int y) { + private void hardenWalls(@NonNull final Tile tile, final int x, final int y) { if (x == 0) { tile.preventDiggingToOrFrom(Direction.LEFT); } diff --git a/src/main/java/ch/fritteli/maze/generator/model/Position.java b/src/main/java/ch/fritteli/maze/generator/model/Position.java index a6fa788..32aeecf 100644 --- a/src/main/java/ch/fritteli/maze/generator/model/Position.java +++ b/src/main/java/ch/fritteli/maze/generator/model/Position.java @@ -2,12 +2,12 @@ package ch.fritteli.maze.generator.model; import io.vavr.control.Option; import lombok.With; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; @With public record Position(int x, int y) { - @NotNull - public Position move(@NotNull final Direction direction) { + @NonNull + public Position move(@NonNull final Direction direction) { return switch (direction) { case BOTTOM -> this.withY(this.y + 1); case LEFT -> this.withX(this.x - 1); @@ -16,8 +16,8 @@ public record Position(int x, int y) { }; } - @NotNull - public Option getDirectionTo(@NotNull final Position position) { + @NonNull + public Option getDirectionTo(@NonNull final Position position) { final int xDiff = position.x - this.x; final int yDiff = position.y - this.y; return switch (xDiff) { diff --git a/src/main/java/ch/fritteli/maze/generator/model/Tile.java b/src/main/java/ch/fritteli/maze/generator/model/Tile.java index b4428f1..5d585f7 100644 --- a/src/main/java/ch/fritteli/maze/generator/model/Tile.java +++ b/src/main/java/ch/fritteli/maze/generator/model/Tile.java @@ -7,7 +7,7 @@ import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.ToString; import lombok.experimental.FieldDefaults; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import java.util.EnumSet; import java.util.Random; @@ -33,7 +33,7 @@ public class Tile { * @param walls * @param solution */ - private Tile(@NotNull final EnumSet walls, final boolean solution) { + private Tile(@NonNull final EnumSet walls, final boolean solution) { for (final Direction direction : walls) { this.walls.set(direction); this.walls.seal(direction); @@ -42,15 +42,15 @@ public class Tile { this.solution = solution; } - public void preventDiggingToOrFrom(@NotNull final Direction direction) { + public void preventDiggingToOrFrom(@NonNull final Direction direction) { this.walls.seal(direction); } - public void enableDiggingToOrFrom(@NotNull final Direction direction) { + public void enableDiggingToOrFrom(@NonNull final Direction direction) { this.walls.unseal(direction); } - public boolean digFrom(@NotNull final Direction direction) { + public boolean digFrom(@NonNull final Direction direction) { if (this.visited) { return false; } @@ -58,21 +58,21 @@ public class Tile { return this.walls.clear(direction); } - public boolean digTo(@NotNull final Direction direction) { + public boolean digTo(@NonNull final Direction direction) { return this.walls.clear(direction); } - public void undigTo(@NotNull final Direction direction) { + public void undigTo(@NonNull final Direction direction) { this.walls.set(direction); } - @NotNull + @NonNull public EnumSet getOpenDirections() { return this.walls.getOpen(); } - @NotNull - public Option getRandomAvailableDirection(@NotNull final Random random) { + @NonNull + public Option getRandomAvailableDirection(@NonNull final Random random) { final EnumSet availableDirections = this.walls.getUnsealedSet(); if (availableDirections.isEmpty()) { return Option.none(); @@ -82,10 +82,10 @@ public class Tile { } final Vector directions = Vector.ofAll(availableDirections); final int index = random.nextInt(directions.size()); - return Option.of(directions.get(index)); + return Option.some(directions.get(index)); } - public boolean hasWallAt(@NotNull final Direction direction) { + public boolean hasWallAt(@NonNull final Direction direction) { return this.walls.isSet(direction); } diff --git a/src/main/java/ch/fritteli/maze/generator/model/Walls.java b/src/main/java/ch/fritteli/maze/generator/model/Walls.java index 4a899c7..8ff6676 100644 --- a/src/main/java/ch/fritteli/maze/generator/model/Walls.java +++ b/src/main/java/ch/fritteli/maze/generator/model/Walls.java @@ -2,7 +2,7 @@ package ch.fritteli.maze.generator.model; import lombok.EqualsAndHashCode; import lombok.ToString; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import java.util.EnumSet; @@ -13,7 +13,7 @@ public class Walls { @EqualsAndHashCode.Exclude private final EnumSet sealed = EnumSet.noneOf(Direction.class); - public void set(@NotNull final Direction direction) { + public void set(@NonNull final Direction direction) { this.directions.add(direction); } @@ -21,36 +21,36 @@ public class Walls { this.directions.addAll(EnumSet.allOf(Direction.class)); } - public boolean clear(@NotNull final Direction direction) { + public boolean clear(@NonNull final Direction direction) { if (this.sealed.contains(direction)) { return false; } return this.directions.remove(direction); } - public boolean isSet(@NotNull final Direction direction) { + public boolean isSet(@NonNull final Direction direction) { return this.directions.contains(direction); } - @NotNull + @NonNull public EnumSet getUnsealedSet() { final EnumSet result = EnumSet.copyOf(this.directions); result.removeAll(this.sealed); return result; } - public void seal(@NotNull final Direction direction) { + public void seal(@NonNull final Direction direction) { if (!this.directions.contains(direction)) { throw new IllegalStateException("Trying to seal cleared Direction: " + direction); } this.sealed.add(direction); } - public void unseal(@NotNull final Direction direction) { + public void unseal(@NonNull final Direction direction) { this.sealed.remove(direction); } - @NotNull + @NonNull public EnumSet getOpen() { return EnumSet.complementOf(this.directions); } diff --git a/src/main/java/ch/fritteli/maze/generator/renderer/Renderer.java b/src/main/java/ch/fritteli/maze/generator/renderer/Renderer.java index 1c6c9db..0c93ff0 100644 --- a/src/main/java/ch/fritteli/maze/generator/renderer/Renderer.java +++ b/src/main/java/ch/fritteli/maze/generator/renderer/Renderer.java @@ -1,9 +1,9 @@ package ch.fritteli.maze.generator.renderer; import ch.fritteli.maze.generator.model.Maze; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; public interface Renderer { - @NotNull - T render(@NotNull final Maze maze); + @NonNull + T render(@NonNull final Maze maze); } diff --git a/src/main/java/ch/fritteli/maze/generator/renderer/html/Generator.java b/src/main/java/ch/fritteli/maze/generator/renderer/html/Generator.java index 8b5184e..8bbf346 100644 --- a/src/main/java/ch/fritteli/maze/generator/renderer/html/Generator.java +++ b/src/main/java/ch/fritteli/maze/generator/renderer/html/Generator.java @@ -7,7 +7,7 @@ import io.vavr.collection.HashSet; import io.vavr.collection.Set; import lombok.AccessLevel; import lombok.RequiredArgsConstructor; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; @RequiredArgsConstructor(access = AccessLevel.PACKAGE) class Generator { @@ -31,7 +31,7 @@ class Generator { return sb.toString(); } - private Set getClasses(@NotNull final Tile tile) { + private Set getClasses(@NonNull final Tile tile) { Set result = HashSet.empty(); if (tile.hasWallAt(Direction.TOP)) { result = result.add("top"); diff --git a/src/main/java/ch/fritteli/maze/generator/renderer/html/HTMLRenderer.java b/src/main/java/ch/fritteli/maze/generator/renderer/html/HTMLRenderer.java index a2de552..2551101 100644 --- a/src/main/java/ch/fritteli/maze/generator/renderer/html/HTMLRenderer.java +++ b/src/main/java/ch/fritteli/maze/generator/renderer/html/HTMLRenderer.java @@ -2,7 +2,7 @@ package ch.fritteli.maze.generator.renderer.html; import ch.fritteli.maze.generator.model.Maze; import ch.fritteli.maze.generator.renderer.Renderer; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; public class HTMLRenderer implements Renderer { @@ -113,14 +113,14 @@ public class HTMLRenderer implements Renderer { private HTMLRenderer() { } - @NotNull + @NonNull public static HTMLRenderer newInstance() { return new HTMLRenderer(); } - @NotNull + @NonNull @Override - public String render(@NotNull final Maze maze) { + public String render(@NonNull final Maze maze) { if (maze.getWidth() == 0 || maze.getHeight() == 0) { return this.getPreamble(maze) + POSTAMBLE; } @@ -135,12 +135,12 @@ public class HTMLRenderer implements Renderer { return sb.toString(); } - private String getPreamble(@NotNull final Maze maze) { + private String getPreamble(@NonNull final Maze maze) { return """ - Maze %dx%d, ID %d, Algorithm %s + Maze %dx%d, ID %s, Algorithm %s