diff --git a/pom.xml b/pom.xml
index 00b72a6..a0f87c3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,13 +5,14 @@
ch.fritteli
fritteli-build-parent
- 5.1.0
+ 6.1.0
ch.fritteli.a-maze-r
maze-server
0.2.1-SNAPSHOT
+ A-Maze-R Server
The A-Maze-R server, offering a REST endpoint to access the Maze Generator.
https://manuel.friedli.info/maze.html
2022
@@ -55,9 +56,9 @@
- 0.3.0
- 4.0.0-M8
- 2.3.18.Final
+ 0.4.0
+ 4.0.0-M16
+ 2.3.22.Final
@@ -75,8 +76,8 @@
lombok
- org.jetbrains
- annotations
+ org.jspecify
+ jspecify
org.slf4j
@@ -98,7 +99,6 @@
org.assertj
assertj-core
- test
diff --git a/src/main/java/ch/fritteli/maze/server/Algorithm.java b/src/main/java/ch/fritteli/maze/server/Algorithm.java
index 6d4f29f..1cd5d95 100644
--- a/src/main/java/ch/fritteli/maze/server/Algorithm.java
+++ b/src/main/java/ch/fritteli/maze/server/Algorithm.java
@@ -8,8 +8,8 @@ import io.vavr.collection.List;
import io.vavr.collection.Stream;
import io.vavr.control.Option;
import lombok.Getter;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
+import org.jspecify.annotations.NonNull;
+import org.jspecify.annotations.Nullable;
import java.util.function.Function;
@@ -17,20 +17,20 @@ public enum Algorithm {
RANDOM_DEPTH_FIRST(RandomDepthFirst::new, "random", "random-depth-first"),
WILSON(Wilson::new, "wilson");
- @NotNull
+ @NonNull
private final Function creator;
@Getter
- @NotNull
+ @NonNull
private final List names;
- Algorithm(@NotNull final Function creator,
- @NotNull final String... names) {
+ Algorithm(@NonNull final Function creator,
+ @NonNull final String... names) {
this.creator = creator;
this.names = List.of(names);
}
- @NotNull
+ @NonNull
public static Option ofString(@Nullable final String name) {
return Option.of(name)
.map(String::toLowerCase)
@@ -38,8 +38,8 @@ public enum Algorithm {
.find(algorithm -> algorithm.getNames().contains(nameLC)));
}
- @NotNull
- public MazeGeneratorAlgorithm createAlgorithm(@NotNull final Maze maze) {
+ @NonNull
+ public MazeGeneratorAlgorithm createAlgorithm(@NonNull final Maze maze) {
return this.creator.apply(maze);
}
}
diff --git a/src/main/java/ch/fritteli/maze/server/ConfigurationException.java b/src/main/java/ch/fritteli/maze/server/ConfigurationException.java
index 1159634..d1d659a 100644
--- a/src/main/java/ch/fritteli/maze/server/ConfigurationException.java
+++ b/src/main/java/ch/fritteli/maze/server/ConfigurationException.java
@@ -1,6 +1,6 @@
package ch.fritteli.maze.server;
-import org.jetbrains.annotations.Nullable;
+import org.jspecify.annotations.Nullable;
public class ConfigurationException extends RuntimeException {
public ConfigurationException(@Nullable final String message) {
diff --git a/src/main/java/ch/fritteli/maze/server/InvalidRequestParameterException.java b/src/main/java/ch/fritteli/maze/server/InvalidRequestParameterException.java
index a103796..dff5ff0 100644
--- a/src/main/java/ch/fritteli/maze/server/InvalidRequestParameterException.java
+++ b/src/main/java/ch/fritteli/maze/server/InvalidRequestParameterException.java
@@ -1,9 +1,9 @@
package ch.fritteli.maze.server;
-import org.wildfly.common.annotation.NotNull;
+import org.jspecify.annotations.NonNull;
public class InvalidRequestParameterException extends RuntimeException {
- public InvalidRequestParameterException(@NotNull final String s) {
+ public InvalidRequestParameterException(@NonNull final String s) {
super(s);
}
}
diff --git a/src/main/java/ch/fritteli/maze/server/Main.java b/src/main/java/ch/fritteli/maze/server/Main.java
index 687fa4d..9781817 100644
--- a/src/main/java/ch/fritteli/maze/server/Main.java
+++ b/src/main/java/ch/fritteli/maze/server/Main.java
@@ -7,7 +7,7 @@ import lombok.extern.slf4j.Slf4j;
@UtilityClass
public class Main {
- public static void main(String[] args) {
+ static void main() {
MazeServer.createAndStartServer()
.onFailure(e -> log.error("Failed to create server. Stopping.", e));
}
diff --git a/src/main/java/ch/fritteli/maze/server/MazeServer.java b/src/main/java/ch/fritteli/maze/server/MazeServer.java
index f864975..4a22f68 100644
--- a/src/main/java/ch/fritteli/maze/server/MazeServer.java
+++ b/src/main/java/ch/fritteli/maze/server/MazeServer.java
@@ -9,17 +9,17 @@ import io.undertow.Undertow;
import io.undertow.server.RoutingHandler;
import io.vavr.control.Try;
import lombok.extern.slf4j.Slf4j;
-import org.wildfly.common.annotation.NotNull;
+import org.jspecify.annotations.NonNull;
import java.net.InetSocketAddress;
@Slf4j
public class MazeServer {
- @NotNull
+ @NonNull
private final Undertow undertow;
- private MazeServer(@NotNull final ServerConfig config) {
+ private MazeServer(@NonNull final ServerConfig config) {
final String hostAddress = config.address().getHostAddress();
final int port = config.port();
log.info("Starting Server at http://{}:{}/", hostAddress, port);
@@ -36,14 +36,14 @@ public class MazeServer {
.build();
}
- @NotNull
+ @NonNull
public static Try createAndStartServer() {
return Try.of(ServerConfig::init)
.flatMapTry(MazeServer::createAndStartServer);
}
- @NotNull
- public static Try createAndStartServer(@NotNull final ServerConfig config) {
+ @NonNull
+ public static Try createAndStartServer(@NonNull final ServerConfig config) {
return Try.of(() -> new MazeServer(config))
.peek(MazeServer::start);
}
diff --git a/src/main/java/ch/fritteli/maze/server/OutputType.java b/src/main/java/ch/fritteli/maze/server/OutputType.java
index ad8d25d..3c637e9 100644
--- a/src/main/java/ch/fritteli/maze/server/OutputType.java
+++ b/src/main/java/ch/fritteli/maze/server/OutputType.java
@@ -12,8 +12,8 @@ import io.vavr.collection.List;
import io.vavr.collection.Stream;
import io.vavr.control.Option;
import lombok.Getter;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
+import org.jspecify.annotations.NonNull;
+import org.jspecify.annotations.Nullable;
import java.nio.charset.StandardCharsets;
import java.util.function.Function;
@@ -75,24 +75,24 @@ public enum OutputType {
"3",
"binaryv3");
@Getter
- @NotNull
+ @NonNull
private final String contentType;
@Getter
- @NotNull
+ @NonNull
private final String fileExtension;
- @NotNull
- private final Function render;
+ @NonNull
+ private final Function<@NonNull Maze, byte @NonNull []> render;
@Getter
private final boolean attachment;
@Getter
- @NotNull
+ @NonNull
private final List names;
- OutputType(@NotNull final String contentType,
- @NotNull final String fileExtension,
- @NotNull final Function render,
+ OutputType(@NonNull final String contentType,
+ @NonNull final String fileExtension,
+ @NonNull final Function render,
final boolean attachment,
- @NotNull final String... names) {
+ @NonNull final String... names) {
this.contentType = contentType;
this.render = render;
this.fileExtension = fileExtension;
@@ -100,7 +100,7 @@ public enum OutputType {
this.names = List.of(names);
}
- @NotNull
+ @NonNull
public static Option ofString(@Nullable final String name) {
return Option.of(name)
.map(String::toLowerCase)
@@ -109,14 +109,14 @@ public enum OutputType {
}
- @NotNull
+ @NonNull
@Override
public String toString() {
return this.names.last();
}
- @NotNull
- public byte[] render(@NotNull final Maze maze) {
+ @NonNull
+ public byte[] render(@NonNull final Maze maze) {
return this.render.apply(maze);
}
}
diff --git a/src/main/java/ch/fritteli/maze/server/ServerConfig.java b/src/main/java/ch/fritteli/maze/server/ServerConfig.java
index 401fd6d..645589b 100644
--- a/src/main/java/ch/fritteli/maze/server/ServerConfig.java
+++ b/src/main/java/ch/fritteli/maze/server/ServerConfig.java
@@ -3,25 +3,25 @@ package ch.fritteli.maze.server;
import io.vavr.control.Option;
import io.vavr.control.Try;
import lombok.extern.slf4j.Slf4j;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
+import org.jspecify.annotations.NonNull;
+import org.jspecify.annotations.Nullable;
import java.net.InetAddress;
@Slf4j
-public record ServerConfig(@NotNull InetAddress address,
+public record ServerConfig(@NonNull InetAddress address,
int port,
- @NotNull Option maxMazeHeight,
- @NotNull Option maxMazeWidth) {
+ @NonNull Option maxMazeHeight,
+ @NonNull Option maxMazeWidth) {
public static final String SYSPROP_HOST = "fritteli.maze.server.host";
public static final String SYSPROP_PORT = "fritteli.maze.server.port";
public static final String SYSPROP_MAX_MAZE_HEIGHT = "fritteli.maze.maxheight";
public static final String SYSPROP_MAX_MAZE_WIDTH = "fritteli.maze.maxwidth";
- public ServerConfig(@NotNull final InetAddress address,
+ public ServerConfig(@NonNull final InetAddress address,
final int port,
- @NotNull final Option maxMazeHeight,
- @NotNull final Option maxMazeWidth) {
+ @NonNull final Option maxMazeHeight,
+ @NonNull final Option maxMazeWidth) {
this.address = address;
this.port = validatePort(port);
this.maxMazeHeight = validateDimension(maxMazeHeight, "height");
@@ -31,13 +31,13 @@ public record ServerConfig(@NotNull InetAddress address,
public ServerConfig(@Nullable final String address,
final int port,
- @NotNull final Option maxMazeHeight,
- @NotNull final Option maxMazeWidth)
+ @NonNull final Option maxMazeHeight,
+ @NonNull final Option maxMazeWidth)
throws ConfigurationException {
this(validateAddress(address), port, maxMazeHeight, maxMazeWidth);
}
- @NotNull
+ @NonNull
public static ServerConfig init() throws ConfigurationException {
final String host = System.getProperty(SYSPROP_HOST);
final String portString = System.getProperty(SYSPROP_PORT);
@@ -49,7 +49,7 @@ public record ServerConfig(@NotNull InetAddress address,
return new ServerConfig(host, port, maxMazeHeight, maxMazeWidth);
}
- @NotNull
+ @NonNull
private static InetAddress validateAddress(@Nullable final String address) throws ConfigurationException {
return Try.of(() -> InetAddress.getByName(address))
.getOrElseThrow(cause -> new ConfigurationException(
@@ -77,9 +77,9 @@ public record ServerConfig(@NotNull InetAddress address,
));
}
- @NotNull
- private static Option validateDimension(@NotNull final Option dimension,
- @NotNull final String identifier) {
+ @NonNull
+ private static Option validateDimension(@NonNull final Option dimension,
+ @NonNull final String identifier) {
if (dimension.exists(d -> d <= 1)) {
throw new ConfigurationException("Maximum %s must be greater than 1: %s"
.formatted(identifier, dimension.get()));
@@ -88,8 +88,8 @@ public record ServerConfig(@NotNull InetAddress address,
}
private static Option validateDimension(@Nullable final String dimensionString,
- @NotNull final String identifier,
- @NotNull final String syspropName) {
+ @NonNull final String identifier,
+ @NonNull final String syspropName) {
if (dimensionString == null) {
log.info("No maximum {} configured; using default (unlimited).", identifier);
return Option.none();
diff --git a/src/main/java/ch/fritteli/maze/server/handler/AbstractHttpHandler.java b/src/main/java/ch/fritteli/maze/server/handler/AbstractHttpHandler.java
index f129b5f..c96a668 100644
--- a/src/main/java/ch/fritteli/maze/server/handler/AbstractHttpHandler.java
+++ b/src/main/java/ch/fritteli/maze/server/handler/AbstractHttpHandler.java
@@ -4,7 +4,7 @@ import io.undertow.server.HttpHandler;
import io.undertow.server.HttpServerExchange;
import io.undertow.util.StatusCodes;
import lombok.extern.slf4j.Slf4j;
-import org.jetbrains.annotations.NotNull;
+import org.jspecify.annotations.NonNull;
import org.slf4j.MDC;
import java.time.Instant;
@@ -14,9 +14,9 @@ import java.util.UUID;
@Slf4j
public abstract class AbstractHttpHandler implements HttpHandler {
@Override
- public final void handleRequest(@NotNull final HttpServerExchange exchange) {
+ public final void handleRequest(@NonNull final HttpServerExchange exchange) {
final Instant start = Instant.now();
- try (final MDC.MDCCloseable closeable = MDC.putCloseable("correlationId", UUID.randomUUID().toString())) {
+ try (final MDC.MDCCloseable _ = MDC.putCloseable("correlationId", UUID.randomUUID().toString())) {
if (exchange.isInIoThread()) {
log.debug("Dispatching request");
@@ -35,5 +35,5 @@ public abstract class AbstractHttpHandler implements HttpHandler {
}
}
- protected abstract void handle(@NotNull final HttpServerExchange exchange) throws Exception;
+ protected abstract void handle(@NonNull final HttpServerExchange exchange) throws Exception;
}
diff --git a/src/main/java/ch/fritteli/maze/server/handler/CreateHandler.java b/src/main/java/ch/fritteli/maze/server/handler/CreateHandler.java
index 8eb8f0f..f082dbc 100644
--- a/src/main/java/ch/fritteli/maze/server/handler/CreateHandler.java
+++ b/src/main/java/ch/fritteli/maze/server/handler/CreateHandler.java
@@ -10,7 +10,7 @@ import io.undertow.util.StatusCodes;
import io.vavr.control.Option;
import io.vavr.control.Try;
import lombok.extern.slf4j.Slf4j;
-import org.jetbrains.annotations.NotNull;
+import org.jspecify.annotations.NonNull;
import org.slf4j.MDC;
import java.nio.ByteBuffer;
@@ -23,18 +23,18 @@ import java.util.Map;
public class CreateHandler extends AbstractHttpHandler {
public static final String PATH_TEMPLATE = "/create/{output}";
- @NotNull
+ @NonNull
private final Option maxHeight;
- @NotNull
+ @NonNull
private final Option maxWidth;
- public CreateHandler(@NotNull final Option maxHeight, @NotNull final Option maxWidth) {
+ public CreateHandler(@NonNull final Option maxHeight, @NonNull final Option maxWidth) {
this.maxHeight = maxHeight;
this.maxWidth = maxWidth;
}
@Override
- protected void handle(@NotNull final HttpServerExchange exchange) {
+ protected void handle(@NonNull final HttpServerExchange exchange) {
final Instant start = Instant.now();
log.debug("Handling create request");
this.createMazeFromRequestParameters(exchange.getQueryParameters())
@@ -65,6 +65,7 @@ public class CreateHandler extends AbstractHttpHandler {
final long durationMillis = start.until(Instant.now(), ChronoUnit.MILLIS);
exchange.getResponseHeaders()
.put(Headers.CONTENT_TYPE, outputType.getContentType())
+ .put(HttpString.tryFromString("Access-Control-Allow-Origin"), "*")
.put(HttpString.tryFromString("X-Maze-ID"), String.valueOf(maze.getRandomSeed()))
.put(HttpString.tryFromString("X-Maze-Width"), String.valueOf(maze.getWidth()))
.put(HttpString.tryFromString("X-Maze-Height"), String.valueOf(maze.getHeight()))
@@ -84,7 +85,7 @@ public class CreateHandler extends AbstractHttpHandler {
});
}
- @NotNull
+ @NonNull
private Try createMazeFromRequestParameters(final Map> queryParameters) {
return new ParametersToMazeExtractor(queryParameters, this.maxHeight, this.maxWidth).createMaze();
}
diff --git a/src/main/java/ch/fritteli/maze/server/handler/ParametersToMazeExtractor.java b/src/main/java/ch/fritteli/maze/server/handler/ParametersToMazeExtractor.java
index 93f9964..d844be1 100644
--- a/src/main/java/ch/fritteli/maze/server/handler/ParametersToMazeExtractor.java
+++ b/src/main/java/ch/fritteli/maze/server/handler/ParametersToMazeExtractor.java
@@ -10,7 +10,7 @@ import io.vavr.collection.Stream;
import io.vavr.control.Option;
import io.vavr.control.Try;
import lombok.RequiredArgsConstructor;
-import org.jetbrains.annotations.NotNull;
+import org.jspecify.annotations.NonNull;
import java.util.Deque;
import java.util.Map;
@@ -19,14 +19,14 @@ import java.util.Random;
@RequiredArgsConstructor
class ParametersToMazeExtractor {
- @NotNull
+ @NonNull
private final Map> queryParameters;
- @NotNull
+ @NonNull
private final Option maxHeight;
- @NotNull
+ @NonNull
private final Option maxWidth;
- @NotNull
+ @NonNull
Try createMaze() {
final Option output = getParameterValue(RequestParameter.OUTPUT);
final Option width = getParameterValue(RequestParameter.WIDTH);
@@ -87,11 +87,11 @@ class ParametersToMazeExtractor {
});
}
- @NotNull
- private Option getParameterValue(@NotNull final RequestParameter parameter) {
+ @NonNull
+ private Option getParameterValue(@NonNull final RequestParameter parameter) {
return parameter.getParameterValue(this.queryParameters);
}
- public record GeneratedMaze(@NotNull Maze maze, @NotNull OutputType outputType) {
+ public record GeneratedMaze(@NonNull Maze maze, @NonNull OutputType outputType) {
}
}
diff --git a/src/main/java/ch/fritteli/maze/server/handler/RenderV1Handler.java b/src/main/java/ch/fritteli/maze/server/handler/RenderV1Handler.java
index 82165df..47aa5ca 100644
--- a/src/main/java/ch/fritteli/maze/server/handler/RenderV1Handler.java
+++ b/src/main/java/ch/fritteli/maze/server/handler/RenderV1Handler.java
@@ -8,7 +8,7 @@ import io.undertow.util.HeaderValues;
import io.undertow.util.Headers;
import io.undertow.util.StatusCodes;
import lombok.extern.slf4j.Slf4j;
-import org.jetbrains.annotations.NotNull;
+import org.jspecify.annotations.NonNull;
import java.nio.ByteBuffer;
@@ -18,7 +18,7 @@ public class RenderV1Handler extends AbstractHttpHandler {
public static final String PATH_TEMPLATE = "/render/v1/{output}";
@Override
- public void handle(@NotNull final HttpServerExchange exchange) {
+ public void handle(@NonNull final HttpServerExchange exchange) {
log.debug("Handling render request");
if (exchange.isInIoThread()) {
@@ -47,8 +47,8 @@ public class RenderV1Handler extends AbstractHttpHandler {
});
}
- @NotNull
- private OutputType getOutputType(@NotNull final HttpServerExchange httpServerExchange) {
+ @NonNull
+ private OutputType getOutputType(@NonNull final HttpServerExchange httpServerExchange) {
return RequestParameter.OUTPUT.getParameterValue(httpServerExchange.getQueryParameters())
.getOrElse(() -> {
final HeaderValues accept = httpServerExchange.getRequestHeaders().get(Headers.ACCEPT);
diff --git a/src/main/java/ch/fritteli/maze/server/handler/RenderV2Handler.java b/src/main/java/ch/fritteli/maze/server/handler/RenderV2Handler.java
index bd4a856..9d97787 100644
--- a/src/main/java/ch/fritteli/maze/server/handler/RenderV2Handler.java
+++ b/src/main/java/ch/fritteli/maze/server/handler/RenderV2Handler.java
@@ -8,7 +8,7 @@ import io.undertow.util.HeaderValues;
import io.undertow.util.Headers;
import io.undertow.util.StatusCodes;
import lombok.extern.slf4j.Slf4j;
-import org.jetbrains.annotations.NotNull;
+import org.jspecify.annotations.NonNull;
import java.nio.ByteBuffer;
@@ -18,7 +18,7 @@ public class RenderV2Handler extends AbstractHttpHandler {
public static final String PATH_TEMPLATE = "/render/v2/{output}";
@Override
- public void handle(@NotNull final HttpServerExchange exchange) {
+ public void handle(@NonNull final HttpServerExchange exchange) {
log.debug("Handling render request");
if (exchange.isInIoThread()) {
@@ -47,8 +47,8 @@ public class RenderV2Handler extends AbstractHttpHandler {
});
}
- @NotNull
- private OutputType getOutputType(@NotNull final HttpServerExchange httpServerExchange) {
+ @NonNull
+ private OutputType getOutputType(@NonNull final HttpServerExchange httpServerExchange) {
return RequestParameter.OUTPUT.getParameterValue(httpServerExchange.getQueryParameters())
.getOrElse(() -> {
final HeaderValues accept = httpServerExchange.getRequestHeaders().get(Headers.ACCEPT);
diff --git a/src/main/java/ch/fritteli/maze/server/handler/RenderV3Handler.java b/src/main/java/ch/fritteli/maze/server/handler/RenderV3Handler.java
index 0b8987e..f83b0ae 100644
--- a/src/main/java/ch/fritteli/maze/server/handler/RenderV3Handler.java
+++ b/src/main/java/ch/fritteli/maze/server/handler/RenderV3Handler.java
@@ -8,7 +8,7 @@ import io.undertow.util.HeaderValues;
import io.undertow.util.Headers;
import io.undertow.util.StatusCodes;
import lombok.extern.slf4j.Slf4j;
-import org.jetbrains.annotations.NotNull;
+import org.jspecify.annotations.NonNull;
import java.nio.ByteBuffer;
@@ -18,7 +18,7 @@ public class RenderV3Handler extends AbstractHttpHandler {
public static final String PATH_TEMPLATE = "/render/v3/{output}";
@Override
- public void handle(@NotNull final HttpServerExchange exchange) {
+ public void handle(@NonNull final HttpServerExchange exchange) {
log.debug("Handling render request");
if (exchange.isInIoThread()) {
@@ -47,8 +47,8 @@ public class RenderV3Handler extends AbstractHttpHandler {
});
}
- @NotNull
- private OutputType getOutputType(@NotNull final HttpServerExchange httpServerExchange) {
+ @NonNull
+ private OutputType getOutputType(@NonNull final HttpServerExchange httpServerExchange) {
return RequestParameter.OUTPUT.getParameterValue(httpServerExchange.getQueryParameters())
.getOrElse(() -> {
final HeaderValues accept = httpServerExchange.getRequestHeaders().get(Headers.ACCEPT);
diff --git a/src/main/java/ch/fritteli/maze/server/handler/RenderVxHandler.java b/src/main/java/ch/fritteli/maze/server/handler/RenderVxHandler.java
index 5db984f..8b09118 100644
--- a/src/main/java/ch/fritteli/maze/server/handler/RenderVxHandler.java
+++ b/src/main/java/ch/fritteli/maze/server/handler/RenderVxHandler.java
@@ -12,7 +12,7 @@ import io.undertow.util.HeaderValues;
import io.undertow.util.Headers;
import io.undertow.util.StatusCodes;
import lombok.extern.slf4j.Slf4j;
-import org.jetbrains.annotations.NotNull;
+import org.jspecify.annotations.NonNull;
import java.nio.ByteBuffer;
@@ -21,7 +21,7 @@ public class RenderVxHandler implements HttpHandler {
public static final String PATH_TEMPLATE = "/render/dyn/{output}";
@Override
- public void handleRequest(@NotNull final HttpServerExchange exchange) {
+ public void handleRequest(@NonNull final HttpServerExchange exchange) {
log.debug("Handling render request");
if (exchange.isInIoThread()) {
@@ -55,8 +55,8 @@ public class RenderVxHandler implements HttpHandler {
});
}
- @NotNull
- private Version getVersion(@NotNull final byte[] bytes) throws IllegalArgumentException {
+ @NonNull
+ private Version getVersion(final byte @NonNull [] bytes) throws IllegalArgumentException {
if (bytes.length < 3) {
throw new IllegalArgumentException("Invalid input: too short");
}
@@ -73,8 +73,8 @@ public class RenderVxHandler implements HttpHandler {
}
}
- @NotNull
- private OutputType getOutputType(@NotNull final HttpServerExchange httpServerExchange) {
+ @NonNull
+ private OutputType getOutputType(@NonNull final HttpServerExchange httpServerExchange) {
return RequestParameter.OUTPUT.getParameterValue(httpServerExchange.getQueryParameters())
.getOrElse(() -> {
final HeaderValues accept = httpServerExchange.getRequestHeaders().get(Headers.ACCEPT);
@@ -86,6 +86,6 @@ public class RenderVxHandler implements HttpHandler {
}
private enum Version {
- V1, V2, V3;
+ V1, V2, V3
}
}
diff --git a/src/main/java/ch/fritteli/maze/server/handler/RequestParameter.java b/src/main/java/ch/fritteli/maze/server/handler/RequestParameter.java
index 5cdd893..b1d39c2 100644
--- a/src/main/java/ch/fritteli/maze/server/handler/RequestParameter.java
+++ b/src/main/java/ch/fritteli/maze/server/handler/RequestParameter.java
@@ -11,7 +11,7 @@ import io.vavr.control.Option;
import io.vavr.control.Try;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
-import org.jetbrains.annotations.NotNull;
+import org.jspecify.annotations.NonNull;
import java.util.Deque;
import java.util.Map;
@@ -25,7 +25,7 @@ enum RequestParameter {
HEIGHT(p -> Try.of(() -> Integer.parseInt(p))
.toOption()
.onEmpty(() -> log.debug("Unparseable value for parameter 'height': '{}'", p)), "h", "height"),
- ID(p -> Try.of(() -> Long.parseLong(p))
+ ID(p -> Try.of(() -> Long.parseUnsignedLong(p, 16))
.toOption()
.onEmpty(() -> log.debug("Unparseable value for parameter 'id': '{}'", p)), "i", "id"),
OUTPUT(p -> OutputType.ofString(p)
@@ -48,24 +48,24 @@ enum RequestParameter {
.onEmpty(() -> log.debug("Unparseable value for parameter 'end': '{}'", p)), "e", "end"),
ALGORITHM(p -> Algorithm.ofString(p)
.onEmpty(() -> log.debug("Unparseable value for parameter 'algorithm': '{}'", p)), "a", "algorithm");
- @NotNull
+ @NonNull
private final Function> extractor;
@Getter
- @NotNull
+ @NonNull
private final Set names;
- RequestParameter(@NotNull final Function> extractor, @NotNull final String... names) {
+ RequestParameter(@NonNull final Function> extractor, @NonNull final String... names) {
this.extractor = extractor;
this.names = HashSet.of(names);
}
- @NotNull
- Option> extractParameterValue(@NotNull final String parameter) {
+ @NonNull
+ Option> extractParameterValue(@NonNull final String parameter) {
return this.extractor.apply(parameter);
}
- @NotNull
- public Option getParameterValue(@NotNull final Map> queryParameters) {
+ @NonNull
+ public Option getParameterValue(@NonNull final Map> queryParameters) {
return (Option) HashMap.ofAll(queryParameters)
.filterKeys(this.names::contains)
.flatMap(Tuple2::_2)