diff --git a/.drone.yml b/.drone.yml index c88694f..a282745 100644 --- a/.drone.yml +++ b/.drone.yml @@ -3,39 +3,39 @@ type: docker name: default steps: - name: build - image: maven:3.9-eclipse-temurin-25 + image: maven:3.9-eclipse-temurin-21 commands: - mvn clean install -DskipTests=true -Dmaven.javadoc.skip=true -B -V when: ref: include: - - refs/heads/main - - refs/heads/feature/** + - refs/head/master + - refs/head/feature/** - refs/tags/** - name: test - image: maven:3.9-eclipse-temurin-25 + image: maven:3.9-eclipse-temurin-21 commands: - mvn test -B when: branch: include: - - main + - master - feature/* -# - name: deploy -# image: maven:3.9-eclipse-temurin-25 -# environment: -# REPO_TOKEN: -# from_secret: repo-token -# REPO_TOKEN_OSSRH: -# from_secret: repo-token-ossrh -# commands: -# - mvn -s maven-settings.xml deploy -DskipTests=true -# when: -# branch: -# - main -# event: -# exclude: -# - pull_request + - name: deploy + image: maven:3.9-eclipse-temurin-21 + environment: + REPO_TOKEN: + from_secret: repo-token + REPO_TOKEN_OSSRH: + from_secret: repo-token-ossrh + commands: + - mvn -s maven-settings.xml deploy -DskipTests=true + when: + branch: + - master + event: + exclude: + - pull_request - name: build_docker_image image: plugins/docker settings: @@ -45,11 +45,11 @@ steps: from_secret: docker-token repo: gittr.ch/java/a-maze-r tags: - - latest-snapshot + - latest dockerfile: docker/Dockerfile when: branch: - - main + - master event: exclude: - pull_request diff --git a/docker/Dockerfile b/docker/Dockerfile index e8e3c6a..74a2661 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,6 +1,8 @@ -FROM eclipse-temurin:25-jre-alpine +FROM eclipse-temurin:21-jre -COPY target/maze-server-shaded.jar /app/app.jar +COPY target/maze-server-*.jar /app/ +RUN rm /app/*-sources.jar +RUN mv /app/*.jar /app/app.jar CMD java \ -Dfritteli.maze.server.host=0.0.0.0 \ diff --git a/pom.xml b/pom.xml index 9288f2b..00b72a6 100644 --- a/pom.xml +++ b/pom.xml @@ -5,14 +5,13 @@ ch.fritteli fritteli-build-parent - 6.1.0 + 5.1.0 ch.fritteli.a-maze-r maze-server - 0.3.1-SNAPSHOT + 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 @@ -56,9 +55,9 @@ - 0.5.0 - 4.0.0-M16 - 2.3.22.Final + 0.3.0 + 4.0.0-M8 + 2.3.18.Final @@ -76,8 +75,8 @@ lombok - org.jspecify - jspecify + org.jetbrains + annotations org.slf4j @@ -99,6 +98,7 @@ org.assertj assertj-core + test @@ -121,7 +121,6 @@ - maze-server-shaded diff --git a/src/main/java/ch/fritteli/maze/server/Algorithm.java b/src/main/java/ch/fritteli/maze/server/Algorithm.java index 1cd5d95..6d4f29f 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.jspecify.annotations.NonNull; -import org.jspecify.annotations.Nullable; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.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"); - @NonNull + @NotNull private final Function creator; @Getter - @NonNull + @NotNull private final List names; - Algorithm(@NonNull final Function creator, - @NonNull final String... names) { + Algorithm(@NotNull final Function creator, + @NotNull final String... names) { this.creator = creator; this.names = List.of(names); } - @NonNull + @NotNull 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))); } - @NonNull - public MazeGeneratorAlgorithm createAlgorithm(@NonNull final Maze maze) { + @NotNull + public MazeGeneratorAlgorithm createAlgorithm(@NotNull 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 d1d659a..1159634 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.jspecify.annotations.Nullable; +import org.jetbrains.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 dff5ff0..a103796 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.jspecify.annotations.NonNull; +import org.wildfly.common.annotation.NotNull; public class InvalidRequestParameterException extends RuntimeException { - public InvalidRequestParameterException(@NonNull final String s) { + public InvalidRequestParameterException(@NotNull 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 9781817..687fa4d 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 { - static void main() { + public static void main(String[] args) { 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 4a22f68..f864975 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.jspecify.annotations.NonNull; +import org.wildfly.common.annotation.NotNull; import java.net.InetSocketAddress; @Slf4j public class MazeServer { - @NonNull + @NotNull private final Undertow undertow; - private MazeServer(@NonNull final ServerConfig config) { + private MazeServer(@NotNull 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(); } - @NonNull + @NotNull public static Try createAndStartServer() { return Try.of(ServerConfig::init) .flatMapTry(MazeServer::createAndStartServer); } - @NonNull - public static Try createAndStartServer(@NonNull final ServerConfig config) { + @NotNull + public static Try createAndStartServer(@NotNull 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 3c637e9..ad8d25d 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.jspecify.annotations.NonNull; -import org.jspecify.annotations.Nullable; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.nio.charset.StandardCharsets; import java.util.function.Function; @@ -75,24 +75,24 @@ public enum OutputType { "3", "binaryv3"); @Getter - @NonNull + @NotNull private final String contentType; @Getter - @NonNull + @NotNull private final String fileExtension; - @NonNull - private final Function<@NonNull Maze, byte @NonNull []> render; + @NotNull + private final Function render; @Getter private final boolean attachment; @Getter - @NonNull + @NotNull private final List names; - OutputType(@NonNull final String contentType, - @NonNull final String fileExtension, - @NonNull final Function render, + OutputType(@NotNull final String contentType, + @NotNull final String fileExtension, + @NotNull final Function render, final boolean attachment, - @NonNull final String... names) { + @NotNull final String... names) { this.contentType = contentType; this.render = render; this.fileExtension = fileExtension; @@ -100,7 +100,7 @@ public enum OutputType { this.names = List.of(names); } - @NonNull + @NotNull public static Option ofString(@Nullable final String name) { return Option.of(name) .map(String::toLowerCase) @@ -109,14 +109,14 @@ public enum OutputType { } - @NonNull + @NotNull @Override public String toString() { return this.names.last(); } - @NonNull - public byte[] render(@NonNull final Maze maze) { + @NotNull + public byte[] render(@NotNull 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 645589b..401fd6d 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.jspecify.annotations.NonNull; -import org.jspecify.annotations.Nullable; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.net.InetAddress; @Slf4j -public record ServerConfig(@NonNull InetAddress address, +public record ServerConfig(@NotNull InetAddress address, int port, - @NonNull Option maxMazeHeight, - @NonNull Option maxMazeWidth) { + @NotNull Option maxMazeHeight, + @NotNull 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(@NonNull final InetAddress address, + public ServerConfig(@NotNull final InetAddress address, final int port, - @NonNull final Option maxMazeHeight, - @NonNull final Option maxMazeWidth) { + @NotNull final Option maxMazeHeight, + @NotNull final Option maxMazeWidth) { this.address = address; this.port = validatePort(port); this.maxMazeHeight = validateDimension(maxMazeHeight, "height"); @@ -31,13 +31,13 @@ public record ServerConfig(@NonNull InetAddress address, public ServerConfig(@Nullable final String address, final int port, - @NonNull final Option maxMazeHeight, - @NonNull final Option maxMazeWidth) + @NotNull final Option maxMazeHeight, + @NotNull final Option maxMazeWidth) throws ConfigurationException { this(validateAddress(address), port, maxMazeHeight, maxMazeWidth); } - @NonNull + @NotNull 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(@NonNull InetAddress address, return new ServerConfig(host, port, maxMazeHeight, maxMazeWidth); } - @NonNull + @NotNull 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(@NonNull InetAddress address, )); } - @NonNull - private static Option validateDimension(@NonNull final Option dimension, - @NonNull final String identifier) { + @NotNull + private static Option validateDimension(@NotNull final Option dimension, + @NotNull 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(@NonNull InetAddress address, } private static Option validateDimension(@Nullable final String dimensionString, - @NonNull final String identifier, - @NonNull final String syspropName) { + @NotNull final String identifier, + @NotNull 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 c96a668..f129b5f 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.jspecify.annotations.NonNull; +import org.jetbrains.annotations.NotNull; 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(@NonNull final HttpServerExchange exchange) { + public final void handleRequest(@NotNull final HttpServerExchange exchange) { final Instant start = Instant.now(); - try (final MDC.MDCCloseable _ = MDC.putCloseable("correlationId", UUID.randomUUID().toString())) { + try (final MDC.MDCCloseable closeable = 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(@NonNull final HttpServerExchange exchange) throws Exception; + protected abstract void handle(@NotNull 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 f082dbc..8eb8f0f 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.jspecify.annotations.NonNull; +import org.jetbrains.annotations.NotNull; 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}"; - @NonNull + @NotNull private final Option maxHeight; - @NonNull + @NotNull private final Option maxWidth; - public CreateHandler(@NonNull final Option maxHeight, @NonNull final Option maxWidth) { + public CreateHandler(@NotNull final Option maxHeight, @NotNull final Option maxWidth) { this.maxHeight = maxHeight; this.maxWidth = maxWidth; } @Override - protected void handle(@NonNull final HttpServerExchange exchange) { + protected void handle(@NotNull final HttpServerExchange exchange) { final Instant start = Instant.now(); log.debug("Handling create request"); this.createMazeFromRequestParameters(exchange.getQueryParameters()) @@ -65,7 +65,6 @@ 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())) @@ -85,7 +84,7 @@ public class CreateHandler extends AbstractHttpHandler { }); } - @NonNull + @NotNull 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 d844be1..93f9964 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.jspecify.annotations.NonNull; +import org.jetbrains.annotations.NotNull; import java.util.Deque; import java.util.Map; @@ -19,14 +19,14 @@ import java.util.Random; @RequiredArgsConstructor class ParametersToMazeExtractor { - @NonNull + @NotNull private final Map> queryParameters; - @NonNull + @NotNull private final Option maxHeight; - @NonNull + @NotNull private final Option maxWidth; - @NonNull + @NotNull Try createMaze() { final Option output = getParameterValue(RequestParameter.OUTPUT); final Option width = getParameterValue(RequestParameter.WIDTH); @@ -87,11 +87,11 @@ class ParametersToMazeExtractor { }); } - @NonNull - private Option getParameterValue(@NonNull final RequestParameter parameter) { + @NotNull + private Option getParameterValue(@NotNull final RequestParameter parameter) { return parameter.getParameterValue(this.queryParameters); } - public record GeneratedMaze(@NonNull Maze maze, @NonNull OutputType outputType) { + public record GeneratedMaze(@NotNull Maze maze, @NotNull 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 47aa5ca..82165df 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.jspecify.annotations.NonNull; +import org.jetbrains.annotations.NotNull; 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(@NonNull final HttpServerExchange exchange) { + public void handle(@NotNull final HttpServerExchange exchange) { log.debug("Handling render request"); if (exchange.isInIoThread()) { @@ -47,8 +47,8 @@ public class RenderV1Handler extends AbstractHttpHandler { }); } - @NonNull - private OutputType getOutputType(@NonNull final HttpServerExchange httpServerExchange) { + @NotNull + private OutputType getOutputType(@NotNull 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 9d97787..bd4a856 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.jspecify.annotations.NonNull; +import org.jetbrains.annotations.NotNull; 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(@NonNull final HttpServerExchange exchange) { + public void handle(@NotNull final HttpServerExchange exchange) { log.debug("Handling render request"); if (exchange.isInIoThread()) { @@ -47,8 +47,8 @@ public class RenderV2Handler extends AbstractHttpHandler { }); } - @NonNull - private OutputType getOutputType(@NonNull final HttpServerExchange httpServerExchange) { + @NotNull + private OutputType getOutputType(@NotNull 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 f83b0ae..0b8987e 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.jspecify.annotations.NonNull; +import org.jetbrains.annotations.NotNull; 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(@NonNull final HttpServerExchange exchange) { + public void handle(@NotNull final HttpServerExchange exchange) { log.debug("Handling render request"); if (exchange.isInIoThread()) { @@ -47,8 +47,8 @@ public class RenderV3Handler extends AbstractHttpHandler { }); } - @NonNull - private OutputType getOutputType(@NonNull final HttpServerExchange httpServerExchange) { + @NotNull + private OutputType getOutputType(@NotNull 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 8b09118..5db984f 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.jspecify.annotations.NonNull; +import org.jetbrains.annotations.NotNull; 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(@NonNull final HttpServerExchange exchange) { + public void handleRequest(@NotNull final HttpServerExchange exchange) { log.debug("Handling render request"); if (exchange.isInIoThread()) { @@ -55,8 +55,8 @@ public class RenderVxHandler implements HttpHandler { }); } - @NonNull - private Version getVersion(final byte @NonNull [] bytes) throws IllegalArgumentException { + @NotNull + private Version getVersion(@NotNull final byte[] bytes) throws IllegalArgumentException { if (bytes.length < 3) { throw new IllegalArgumentException("Invalid input: too short"); } @@ -73,8 +73,8 @@ public class RenderVxHandler implements HttpHandler { } } - @NonNull - private OutputType getOutputType(@NonNull final HttpServerExchange httpServerExchange) { + @NotNull + private OutputType getOutputType(@NotNull 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 b1d39c2..5cdd893 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.jspecify.annotations.NonNull; +import org.jetbrains.annotations.NotNull; 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.parseUnsignedLong(p, 16)) + ID(p -> Try.of(() -> Long.parseLong(p)) .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"); - @NonNull + @NotNull private final Function> extractor; @Getter - @NonNull + @NotNull private final Set names; - RequestParameter(@NonNull final Function> extractor, @NonNull final String... names) { + RequestParameter(@NotNull final Function> extractor, @NotNull final String... names) { this.extractor = extractor; this.names = HashSet.of(names); } - @NonNull - Option extractParameterValue(@NonNull final String parameter) { + @NotNull + Option extractParameterValue(@NotNull final String parameter) { return this.extractor.apply(parameter); } - @NonNull - public Option getParameterValue(@NonNull final Map> queryParameters) { + @NotNull + public Option getParameterValue(@NotNull final Map> queryParameters) { return (Option) HashMap.ofAll(queryParameters) .filterKeys(this.names::contains) .flatMap(Tuple2::_2)