From 75ebf2248f1148eb147b5901bde5b8480a4b0dea Mon Sep 17 00:00:00 2001 From: Walter Oggioni Date: Fri, 17 Jan 2025 11:47:12 +0800 Subject: [PATCH] general refactoring --- build.gradle | 34 +------------ docker/Dockerfile | 2 +- docker/build.gradle | 2 +- gbcs-cli/build.gradle | 5 +- gbcs-cli/src/main/java/module-info.java | 6 +-- .../gbcs/cli/GradleBuildCacheServerCli.kt | 8 ++- .../cli/impl/commands/BenchmarkCommand.kt | 6 +-- .../gbcs/cli/impl/commands/GetCommand.kt | 51 +++++++++++++++++++ .../cli/impl/commands/PasswordHashCommand.kt | 2 +- .../gbcs/cli/impl/commands/PutCommand.kt | 48 +++++++++++++++++ .../gbcs/cli/impl/commands/ServerCommand.kt | 10 ++-- .../impl/converters/InputStreamConverter.kt | 13 +++++ gbcs-client/build.gradle | 2 +- gbcs-client/src/main/java/module-info.java | 2 +- .../kotlin/net/woggioni/gbcs/client/Client.kt | 7 ++- .../net/woggioni/gbcs/client/impl/Parser.kt | 4 +- {gbcs-base => gbcs-common}/build.gradle | 0 .../src/main/java/module-info.java | 4 +- .../kotlin/net/woggioni/gbcs/common}/GBCS.kt | 4 +- .../common}/GbcsUrlStreamHandlerFactory.kt | 2 +- .../net/woggioni/gbcs/common}/HostAndPort.kt | 2 +- .../net/woggioni/gbcs/common}/Logging.kt | 2 +- .../woggioni/gbcs/common}/PasswordSecurity.kt | 2 +- .../kotlin/net/woggioni/gbcs/common}/Xml.kt | 9 +--- gbcs-memcached/src/main/java/module-info.java | 14 ----- .../net.woggioni.gbcs.api.CacheProvider | 1 - .../build.gradle | 2 +- .../src/main/java/module-info.java | 14 +++++ .../gbcs/server}/memcached/MemcachedCache.kt | 4 +- .../memcached/MemcachedCacheConfiguration.kt | 6 +-- .../memcached/MemcachedCacheProvider.kt | 16 +++--- .../net.woggioni.gbcs.api.CacheProvider | 1 + .../memcached/schema/gbcs-memcached.xsd | 8 +-- gbcs-server/build.gradle | 35 +++++++++++++ .../src}/main/java/module-info.java | 12 ++--- .../gbcs/server}/GradleBuildCacheServer.kt | 26 +++++----- .../net/woggioni/gbcs/server}/Logging.kt | 2 +- .../gbcs/server}/auth/Authenticator.kt | 2 +- .../woggioni/gbcs/server}/auth/Authorizer.kt | 2 +- .../auth/ClientCertificateValidator.kt | 2 +- .../gbcs/server}/auth/UserAuthorizer.kt | 2 +- .../gbcs/server}/cache/FileSystemCache.kt | 2 +- .../cache/FileSystemCacheConfiguration.kt | 4 +- .../server}/cache/FileSystemCacheProvider.kt | 12 ++--- .../server}/configuration/CacheSerializers.kt | 2 +- .../gbcs/server}/configuration/Parser.kt | 6 +-- .../gbcs/server}/configuration/Serializer.kt | 6 +-- .../net.woggioni.gbcs.api.CacheProvider | 1 + .../src}/main/resources/logging.properties | 0 .../woggioni/gbcs/server}/gbcs-default.xml | 4 +- .../net/woggioni/gbcs/server}/schema/gbcs.xsd | 7 ++- .../server/test}/utils/CertificateUtils.java | 2 +- .../gbcs/server/test}/utils/NetworkUtils.java | 2 +- .../test/AbstractBasicAuthServerTest.kt | 10 ++-- .../gbcs/server}/test/AbstractServerTest.kt | 4 +- .../server}/test/AbstractTlsServerTest.kt | 14 ++--- .../gbcs/server}/test/BasicAuthServerTest.kt | 4 +- .../gbcs/server}/test/ConfigurationTest.kt | 18 +++---- .../NoAnonymousUserBasicAuthServerTest.kt | 4 +- .../test/NoAnonymousUserTlsServerTest.kt | 2 +- .../gbcs/server}/test/NoAuthServerTest.kt | 10 ++-- .../gbcs/server}/test/TlsServerTest.kt | 2 +- .../gbcs/server}/test/X500NameTest.kt | 2 +- .../src}/test/resources/logback.xml | 0 .../gbcs/server}/test/gbcs-default.xml | 4 +- .../gbcs/server}/test/gbcs-memcached.xml | 6 +-- .../woggioni/gbcs/server}/test/gbcs-tls.xml | 4 +- gradle.properties | 6 ++- settings.gradle | 6 +-- .../net.woggioni.gbcs.api.CacheProvider | 1 - 70 files changed, 318 insertions(+), 203 deletions(-) create mode 100644 gbcs-cli/src/main/kotlin/net/woggioni/gbcs/cli/impl/commands/GetCommand.kt create mode 100644 gbcs-cli/src/main/kotlin/net/woggioni/gbcs/cli/impl/commands/PutCommand.kt create mode 100644 gbcs-cli/src/main/kotlin/net/woggioni/gbcs/cli/impl/converters/InputStreamConverter.kt rename {gbcs-base => gbcs-common}/build.gradle (100%) rename {gbcs-base => gbcs-common}/src/main/java/module-info.java (65%) rename {gbcs-base/src/main/kotlin/net/woggioni/gbcs/base => gbcs-common/src/main/kotlin/net/woggioni/gbcs/common}/GBCS.kt (87%) rename {gbcs-base/src/main/kotlin/net/woggioni/gbcs/base => gbcs-common/src/main/kotlin/net/woggioni/gbcs/common}/GbcsUrlStreamHandlerFactory.kt (99%) rename {gbcs-base/src/main/kotlin/net/woggioni/gbcs/base => gbcs-common/src/main/kotlin/net/woggioni/gbcs/common}/HostAndPort.kt (80%) rename {gbcs-base/src/main/kotlin/net/woggioni/gbcs/base => gbcs-common/src/main/kotlin/net/woggioni/gbcs/common}/Logging.kt (98%) rename {gbcs-base/src/main/kotlin/net/woggioni/gbcs/base => gbcs-common/src/main/kotlin/net/woggioni/gbcs/common}/PasswordSecurity.kt (97%) rename {gbcs-base/src/main/kotlin/net/woggioni/gbcs/base => gbcs-common/src/main/kotlin/net/woggioni/gbcs/common}/Xml.kt (97%) delete mode 100644 gbcs-memcached/src/main/java/module-info.java delete mode 100644 gbcs-memcached/src/main/resources/META-INF/services/net.woggioni.gbcs.api.CacheProvider rename {gbcs-memcached => gbcs-server-memcached}/build.gradle (96%) create mode 100644 gbcs-server-memcached/src/main/java/module-info.java rename {gbcs-memcached/src/main/kotlin/net/woggioni/gbcs => gbcs-server-memcached/src/main/kotlin/net/woggioni/gbcs/server}/memcached/MemcachedCache.kt (95%) rename {gbcs-memcached/src/main/kotlin/net/woggioni/gbcs => gbcs-server-memcached/src/main/kotlin/net/woggioni/gbcs/server}/memcached/MemcachedCacheConfiguration.kt (79%) rename {gbcs-memcached/src/main/kotlin/net/woggioni/gbcs => gbcs-server-memcached/src/main/kotlin/net/woggioni/gbcs/server}/memcached/MemcachedCacheProvider.kt (85%) create mode 100644 gbcs-server-memcached/src/main/resources/META-INF/services/net.woggioni.gbcs.api.CacheProvider rename {gbcs-memcached/src/main/resources/net/woggioni/gbcs => gbcs-server-memcached/src/main/resources/net/woggioni/gbcs/server}/memcached/schema/gbcs-memcached.xsd (78%) create mode 100644 gbcs-server/build.gradle rename {src => gbcs-server/src}/main/java/module-info.java (67%) rename {src/main/kotlin/net/woggioni/gbcs => gbcs-server/src/main/kotlin/net/woggioni/gbcs/server}/GradleBuildCacheServer.kt (97%) rename {src/main/kotlin/net/woggioni/gbcs => gbcs-server/src/main/kotlin/net/woggioni/gbcs/server}/Logging.kt (97%) rename {src/main/kotlin/net/woggioni/gbcs => gbcs-server/src/main/kotlin/net/woggioni/gbcs/server}/auth/Authenticator.kt (98%) rename {src/main/kotlin/net/woggioni/gbcs => gbcs-server/src/main/kotlin/net/woggioni/gbcs/server}/auth/Authorizer.kt (82%) rename {src/main/kotlin/net/woggioni/gbcs => gbcs-server/src/main/kotlin/net/woggioni/gbcs/server}/auth/ClientCertificateValidator.kt (99%) rename {src/main/kotlin/net/woggioni/gbcs => gbcs-server/src/main/kotlin/net/woggioni/gbcs/server}/auth/UserAuthorizer.kt (94%) rename {src/main/kotlin/net/woggioni/gbcs => gbcs-server/src/main/kotlin/net/woggioni/gbcs/server}/cache/FileSystemCache.kt (99%) rename {src/main/kotlin/net/woggioni/gbcs => gbcs-server/src/main/kotlin/net/woggioni/gbcs/server}/cache/FileSystemCacheConfiguration.kt (90%) rename {src/main/kotlin/net/woggioni/gbcs => gbcs-server/src/main/kotlin/net/woggioni/gbcs/server}/cache/FileSystemCacheProvider.kt (88%) rename {src/main/kotlin/net/woggioni/gbcs => gbcs-server/src/main/kotlin/net/woggioni/gbcs/server}/configuration/CacheSerializers.kt (90%) rename {src/main/kotlin/net/woggioni/gbcs => gbcs-server/src/main/kotlin/net/woggioni/gbcs/server}/configuration/Parser.kt (98%) rename {src/main/kotlin/net/woggioni/gbcs => gbcs-server/src/main/kotlin/net/woggioni/gbcs/server}/configuration/Serializer.kt (98%) create mode 100644 gbcs-server/src/main/resources/META-INF/services/net.woggioni.gbcs.api.CacheProvider rename {src => gbcs-server/src}/main/resources/logging.properties (100%) rename {src/main/resources/net/woggioni/gbcs => gbcs-server/src/main/resources/net/woggioni/gbcs/server}/gbcs-default.xml (64%) rename {src/main/resources/net/woggioni/gbcs => gbcs-server/src/main/resources/net/woggioni/gbcs/server}/schema/gbcs.xsd (97%) rename {src/test/java/net/woggioni/gbcs => gbcs-server/src/test/java/net/woggioni/gbcs/server/test}/utils/CertificateUtils.java (99%) rename {src/test/java/net/woggioni/gbcs => gbcs-server/src/test/java/net/woggioni/gbcs/server/test}/utils/NetworkUtils.java (95%) rename {src/test/kotlin/net/woggioni/gbcs => gbcs-server/src/test/kotlin/net/woggioni/gbcs/server}/test/AbstractBasicAuthServerTest.kt (90%) rename {src/test/kotlin/net/woggioni/gbcs => gbcs-server/src/test/kotlin/net/woggioni/gbcs/server}/test/AbstractServerTest.kt (92%) rename {src/test/kotlin/net/woggioni/gbcs => gbcs-server/src/test/kotlin/net/woggioni/gbcs/server}/test/AbstractTlsServerTest.kt (94%) rename {src/test/kotlin/net/woggioni/gbcs => gbcs-server/src/test/kotlin/net/woggioni/gbcs/server}/test/BasicAuthServerTest.kt (98%) rename {src/test/kotlin/net/woggioni/gbcs => gbcs-server/src/test/kotlin/net/woggioni/gbcs/server}/test/ConfigurationTest.kt (64%) rename {src/test/kotlin/net/woggioni/gbcs => gbcs-server/src/test/kotlin/net/woggioni/gbcs/server}/test/NoAnonymousUserBasicAuthServerTest.kt (94%) rename {src/test/kotlin/net/woggioni/gbcs => gbcs-server/src/test/kotlin/net/woggioni/gbcs/server}/test/NoAnonymousUserTlsServerTest.kt (97%) rename {src/test/kotlin/net/woggioni/gbcs => gbcs-server/src/test/kotlin/net/woggioni/gbcs/server}/test/NoAuthServerTest.kt (94%) rename {src/test/kotlin/net/woggioni/gbcs => gbcs-server/src/test/kotlin/net/woggioni/gbcs/server}/test/TlsServerTest.kt (99%) rename {src/test/kotlin/net/woggioni/gbcs => gbcs-server/src/test/kotlin/net/woggioni/gbcs/server}/test/X500NameTest.kt (93%) rename {src => gbcs-server/src}/test/resources/logback.xml (100%) rename {src/test/resources/net/woggioni/gbcs => gbcs-server/src/test/resources/net/woggioni/gbcs/server}/test/gbcs-default.xml (64%) rename {src/test/resources/net/woggioni/gbcs => gbcs-server/src/test/resources/net/woggioni/gbcs/server}/test/gbcs-memcached.xml (51%) rename {src/test/resources/net/woggioni/gbcs => gbcs-server/src/test/resources/net/woggioni/gbcs/server}/test/gbcs-tls.xml (90%) delete mode 100644 src/main/resources/META-INF/services/net.woggioni.gbcs.api.CacheProvider diff --git a/build.gradle b/build.gradle index b86db82..dd8f4f6 100644 --- a/build.gradle +++ b/build.gradle @@ -1,9 +1,7 @@ plugins { - id 'java-library' - alias catalog.plugins.kotlin.jvm + alias catalog.plugins.kotlin.jvm apply false alias catalog.plugins.sambal - alias catalog.plugins.lombok - id 'maven-publish' + alias catalog.plugins.lombok apply false } @@ -102,34 +100,6 @@ allprojects { subproject -> } } -dependencies { - implementation catalog.jwo - implementation catalog.slf4j.api - implementation catalog.netty.codec.http - - api project('gbcs-base') - api project('gbcs-api') - -// runtimeOnly catalog.slf4j.jdk14 - testRuntimeOnly catalog.logback.classic - - testImplementation catalog.bcprov.jdk18on - testImplementation catalog.bcpkix.jdk18on - testImplementation catalog.junit.jupiter.api - testImplementation catalog.junit.jupiter.params - testRuntimeOnly catalog.junit.jupiter.engine - - testRuntimeOnly project("gbcs-memcached") -} - -publishing { - publications { - maven(MavenPublication) { - from(components["java"]) - } - } -} - tasks.register('version') { doLast { println("VERSION=$version") diff --git a/docker/Dockerfile b/docker/Dockerfile index 60de362..af7b965 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -13,7 +13,7 @@ FROM base-release AS release-memcached ADD --chown=luser:luser gbcs-cli-envelope-*.jar gbcs.jar RUN mkdir plugins WORKDIR /home/luser/plugins -RUN --mount=type=bind,source=.,target=/build/distributions tar -xf /build/distributions/gbcs-memcached*.tar +RUN --mount=type=bind,source=.,target=/build/distributions tar -xf /build/distributions/gbcs-server-memcached*.tar WORKDIR /home/luser ENTRYPOINT ["java", "-jar", "/home/luser/gbcs.jar", "server"] diff --git a/docker/build.gradle b/docker/build.gradle index 5b4eb0c..abc4ad2 100644 --- a/docker/build.gradle +++ b/docker/build.gradle @@ -19,7 +19,7 @@ configurations { dependencies { docker project(path: ':gbcs-cli', configuration: 'release') - docker project(path: ':gbcs-memcached', configuration: 'release') + docker project(path: ':gbcs-server-memcached', configuration: 'release') } Provider cleanTaskProvider = tasks.named(BasePlugin.CLEAN_TASK_NAME) {} diff --git a/gbcs-cli/build.gradle b/gbcs-cli/build.gradle index 38afb4c..a90bfb6 100644 --- a/gbcs-cli/build.gradle +++ b/gbcs-cli/build.gradle @@ -9,7 +9,6 @@ plugins { id 'maven-publish' } - import net.woggioni.gradle.envelope.EnvelopeJarTask import net.woggioni.gradle.graalvm.NativeImageConfigurationTask import net.woggioni.gradle.graalvm.NativeImagePlugin @@ -46,8 +45,8 @@ dependencies { implementation catalog.netty.codec.http implementation catalog.picocli - implementation project(":gbcs-client") - implementation rootProject + implementation project(':gbcs-client') + implementation project(':gbcs-server') // runtimeOnly catalog.slf4j.jdk14 runtimeOnly catalog.logback.classic diff --git a/gbcs-cli/src/main/java/module-info.java b/gbcs-cli/src/main/java/module-info.java index e97ded5..a38f913 100644 --- a/gbcs-cli/src/main/java/module-info.java +++ b/gbcs-cli/src/main/java/module-info.java @@ -1,8 +1,8 @@ module net.woggioni.gbcs.cli { requires org.slf4j; - requires net.woggioni.gbcs; + requires net.woggioni.gbcs.server; requires info.picocli; - requires net.woggioni.gbcs.base; + requires net.woggioni.gbcs.common; requires net.woggioni.gbcs.client; requires kotlin.stdlib; requires net.woggioni.jwo; @@ -11,7 +11,7 @@ module net.woggioni.gbcs.cli { exports net.woggioni.gbcs.cli.impl.converters to info.picocli; opens net.woggioni.gbcs.cli.impl.commands to info.picocli; opens net.woggioni.gbcs.cli.impl to info.picocli; - opens net.woggioni.gbcs.cli to info.picocli, net.woggioni.gbcs.base; + opens net.woggioni.gbcs.cli to info.picocli, net.woggioni.gbcs.common; exports net.woggioni.gbcs.cli; } \ No newline at end of file diff --git a/gbcs-cli/src/main/kotlin/net/woggioni/gbcs/cli/GradleBuildCacheServerCli.kt b/gbcs-cli/src/main/kotlin/net/woggioni/gbcs/cli/GradleBuildCacheServerCli.kt index 8e4080a..fa492e0 100644 --- a/gbcs-cli/src/main/kotlin/net/woggioni/gbcs/cli/GradleBuildCacheServerCli.kt +++ b/gbcs-cli/src/main/kotlin/net/woggioni/gbcs/cli/GradleBuildCacheServerCli.kt @@ -1,12 +1,14 @@ package net.woggioni.gbcs.cli -import net.woggioni.gbcs.base.GbcsUrlStreamHandlerFactory -import net.woggioni.gbcs.base.contextLogger +import net.woggioni.gbcs.common.GbcsUrlStreamHandlerFactory +import net.woggioni.gbcs.common.contextLogger import net.woggioni.gbcs.cli.impl.AbstractVersionProvider import net.woggioni.gbcs.cli.impl.GbcsCommand import net.woggioni.gbcs.cli.impl.commands.BenchmarkCommand import net.woggioni.gbcs.cli.impl.commands.ClientCommand +import net.woggioni.gbcs.cli.impl.commands.GetCommand import net.woggioni.gbcs.cli.impl.commands.PasswordHashCommand +import net.woggioni.gbcs.cli.impl.commands.PutCommand import net.woggioni.gbcs.cli.impl.commands.ServerCommand import net.woggioni.jwo.Application import picocli.CommandLine @@ -40,6 +42,8 @@ class GradleBuildCacheServerCli : GbcsCommand() { commandLine.addSubcommand( CommandLine(ClientCommand(app)).apply { addSubcommand(BenchmarkCommand()) + addSubcommand(PutCommand()) + addSubcommand(GetCommand()) }) System.exit(commandLine.execute(*args)) } diff --git a/gbcs-cli/src/main/kotlin/net/woggioni/gbcs/cli/impl/commands/BenchmarkCommand.kt b/gbcs-cli/src/main/kotlin/net/woggioni/gbcs/cli/impl/commands/BenchmarkCommand.kt index 9a61088..e8263ad 100644 --- a/gbcs-cli/src/main/kotlin/net/woggioni/gbcs/cli/impl/commands/BenchmarkCommand.kt +++ b/gbcs-cli/src/main/kotlin/net/woggioni/gbcs/cli/impl/commands/BenchmarkCommand.kt @@ -1,8 +1,8 @@ package net.woggioni.gbcs.cli.impl.commands -import net.woggioni.gbcs.base.contextLogger -import net.woggioni.gbcs.base.error -import net.woggioni.gbcs.base.info +import net.woggioni.gbcs.common.contextLogger +import net.woggioni.gbcs.common.error +import net.woggioni.gbcs.common.info import net.woggioni.gbcs.cli.impl.GbcsCommand import net.woggioni.gbcs.client.GbcsClient import picocli.CommandLine diff --git a/gbcs-cli/src/main/kotlin/net/woggioni/gbcs/cli/impl/commands/GetCommand.kt b/gbcs-cli/src/main/kotlin/net/woggioni/gbcs/cli/impl/commands/GetCommand.kt new file mode 100644 index 0000000..fc9d8f7 --- /dev/null +++ b/gbcs-cli/src/main/kotlin/net/woggioni/gbcs/cli/impl/commands/GetCommand.kt @@ -0,0 +1,51 @@ +package net.woggioni.gbcs.cli.impl.commands + +import net.woggioni.gbcs.common.contextLogger +import net.woggioni.gbcs.cli.impl.GbcsCommand +import net.woggioni.gbcs.client.GbcsClient +import picocli.CommandLine +import java.nio.file.Files +import java.nio.file.Path + +@CommandLine.Command( + name = "get", + description = ["Fetch a value from the cache with the specified key"], + showDefaultValues = true +) +class GetCommand : GbcsCommand() { + private val log = contextLogger() + + @CommandLine.Spec + private lateinit var spec: CommandLine.Model.CommandSpec + + @CommandLine.Option( + names = ["-k", "--key"], + description = ["The key for the new value"], + paramLabel = "KEY" + ) + private var key : String = "" + + @CommandLine.Option( + names = ["-v", "--value"], + description = ["Path to a file where the retrieved value will be written (defaults to stdout)"], + paramLabel = "VALUE_FILE", + ) + private var output : Path? = null + + override fun run() { + val clientCommand = spec.parent().userObject() as ClientCommand + val profile = clientCommand.profileName.let { profileName -> + clientCommand.configuration.profiles[profileName] + ?: throw IllegalArgumentException("Profile $profileName does not exist in configuration") + } + GbcsClient(profile).use { client -> + client.get(key).thenApply { value -> + value?.let { + (output?.let(Files::newOutputStream) ?: System.out).use { + it.write(value) + } + } ?: throw NoSuchElementException("No value found for key $key") + }.get() + } + } +} \ No newline at end of file diff --git a/gbcs-cli/src/main/kotlin/net/woggioni/gbcs/cli/impl/commands/PasswordHashCommand.kt b/gbcs-cli/src/main/kotlin/net/woggioni/gbcs/cli/impl/commands/PasswordHashCommand.kt index 46247a2..b6b29dc 100644 --- a/gbcs-cli/src/main/kotlin/net/woggioni/gbcs/cli/impl/commands/PasswordHashCommand.kt +++ b/gbcs-cli/src/main/kotlin/net/woggioni/gbcs/cli/impl/commands/PasswordHashCommand.kt @@ -1,6 +1,6 @@ package net.woggioni.gbcs.cli.impl.commands -import net.woggioni.gbcs.base.PasswordSecurity.hashPassword +import net.woggioni.gbcs.common.PasswordSecurity.hashPassword import net.woggioni.gbcs.cli.impl.GbcsCommand import net.woggioni.gbcs.cli.impl.converters.OutputStreamConverter import net.woggioni.jwo.UncloseableOutputStream diff --git a/gbcs-cli/src/main/kotlin/net/woggioni/gbcs/cli/impl/commands/PutCommand.kt b/gbcs-cli/src/main/kotlin/net/woggioni/gbcs/cli/impl/commands/PutCommand.kt new file mode 100644 index 0000000..993ff6f --- /dev/null +++ b/gbcs-cli/src/main/kotlin/net/woggioni/gbcs/cli/impl/commands/PutCommand.kt @@ -0,0 +1,48 @@ +package net.woggioni.gbcs.cli.impl.commands + +import net.woggioni.gbcs.common.contextLogger +import net.woggioni.gbcs.cli.impl.GbcsCommand +import net.woggioni.gbcs.cli.impl.converters.InputStreamConverter +import net.woggioni.gbcs.client.GbcsClient +import picocli.CommandLine +import java.io.InputStream + +@CommandLine.Command( + name = "put", + description = ["Add or replace a value to the cache with the specified key"], + showDefaultValues = true +) +class PutCommand : GbcsCommand() { + private val log = contextLogger() + + @CommandLine.Spec + private lateinit var spec: CommandLine.Model.CommandSpec + + @CommandLine.Option( + names = ["-k", "--key"], + description = ["The key for the new value"], + paramLabel = "KEY" + ) + private var key : String = "" + + @CommandLine.Option( + names = ["-v", "--value"], + description = ["Path to a file containing the value to be added (defaults to stdin)"], + paramLabel = "VALUE_FILE", + converter = [InputStreamConverter::class] + ) + private var value : InputStream = System.`in` + + override fun run() { + val clientCommand = spec.parent().userObject() as ClientCommand + val profile = clientCommand.profileName.let { profileName -> + clientCommand.configuration.profiles[profileName] + ?: throw IllegalArgumentException("Profile $profileName does not exist in configuration") + } + GbcsClient(profile).use { client -> + value.use { + client.put(key, it.readAllBytes()) + }.get() + } + } +} \ No newline at end of file diff --git a/gbcs-cli/src/main/kotlin/net/woggioni/gbcs/cli/impl/commands/ServerCommand.kt b/gbcs-cli/src/main/kotlin/net/woggioni/gbcs/cli/impl/commands/ServerCommand.kt index 5662960..6717620 100644 --- a/gbcs-cli/src/main/kotlin/net/woggioni/gbcs/cli/impl/commands/ServerCommand.kt +++ b/gbcs-cli/src/main/kotlin/net/woggioni/gbcs/cli/impl/commands/ServerCommand.kt @@ -1,11 +1,11 @@ package net.woggioni.gbcs.cli.impl.commands -import net.woggioni.gbcs.GradleBuildCacheServer -import net.woggioni.gbcs.GradleBuildCacheServer.Companion.DEFAULT_CONFIGURATION_URL +import net.woggioni.gbcs.server.GradleBuildCacheServer +import net.woggioni.gbcs.server.GradleBuildCacheServer.Companion.DEFAULT_CONFIGURATION_URL import net.woggioni.gbcs.api.Configuration -import net.woggioni.gbcs.base.contextLogger -import net.woggioni.gbcs.base.debug -import net.woggioni.gbcs.base.info +import net.woggioni.gbcs.common.contextLogger +import net.woggioni.gbcs.common.debug +import net.woggioni.gbcs.common.info import net.woggioni.gbcs.cli.impl.GbcsCommand import net.woggioni.jwo.Application import net.woggioni.jwo.JWO diff --git a/gbcs-cli/src/main/kotlin/net/woggioni/gbcs/cli/impl/converters/InputStreamConverter.kt b/gbcs-cli/src/main/kotlin/net/woggioni/gbcs/cli/impl/converters/InputStreamConverter.kt new file mode 100644 index 0000000..ef03c43 --- /dev/null +++ b/gbcs-cli/src/main/kotlin/net/woggioni/gbcs/cli/impl/converters/InputStreamConverter.kt @@ -0,0 +1,13 @@ +package net.woggioni.gbcs.cli.impl.converters + +import picocli.CommandLine +import java.io.InputStream +import java.nio.file.Files +import java.nio.file.Paths + + +class InputStreamConverter : CommandLine.ITypeConverter { + override fun convert(value: String): InputStream { + return Files.newInputStream(Paths.get(value)) + } +} \ No newline at end of file diff --git a/gbcs-client/build.gradle b/gbcs-client/build.gradle index baae865..957ee4d 100644 --- a/gbcs-client/build.gradle +++ b/gbcs-client/build.gradle @@ -5,7 +5,7 @@ plugins { dependencies { implementation project(':gbcs-api') - implementation project(':gbcs-base') + implementation project(':gbcs-common') implementation catalog.picocli implementation catalog.slf4j.api implementation catalog.netty.buffer diff --git a/gbcs-client/src/main/java/module-info.java b/gbcs-client/src/main/java/module-info.java index 1becc63..0ba216d 100644 --- a/gbcs-client/src/main/java/module-info.java +++ b/gbcs-client/src/main/java/module-info.java @@ -6,7 +6,7 @@ module net.woggioni.gbcs.client { requires io.netty.common; requires io.netty.buffer; requires java.xml; - requires net.woggioni.gbcs.base; + requires net.woggioni.gbcs.common; requires net.woggioni.gbcs.api; requires io.netty.codec; requires org.slf4j; diff --git a/gbcs-client/src/main/kotlin/net/woggioni/gbcs/client/Client.kt b/gbcs-client/src/main/kotlin/net/woggioni/gbcs/client/Client.kt index d0747a9..60fc387 100644 --- a/gbcs-client/src/main/kotlin/net/woggioni/gbcs/client/Client.kt +++ b/gbcs-client/src/main/kotlin/net/woggioni/gbcs/client/Client.kt @@ -30,10 +30,9 @@ import io.netty.handler.ssl.SslContextBuilder import io.netty.handler.stream.ChunkedWriteHandler import io.netty.util.concurrent.Future import io.netty.util.concurrent.GenericFutureListener -import net.woggioni.gbcs.base.Xml -import net.woggioni.gbcs.base.contextLogger -import net.woggioni.gbcs.base.debug -import net.woggioni.gbcs.base.info +import net.woggioni.gbcs.common.Xml +import net.woggioni.gbcs.common.contextLogger +import net.woggioni.gbcs.common.debug import net.woggioni.gbcs.client.impl.Parser import java.net.InetSocketAddress import java.net.URI diff --git a/gbcs-client/src/main/kotlin/net/woggioni/gbcs/client/impl/Parser.kt b/gbcs-client/src/main/kotlin/net/woggioni/gbcs/client/impl/Parser.kt index b6daca4..cc8a4a3 100644 --- a/gbcs-client/src/main/kotlin/net/woggioni/gbcs/client/impl/Parser.kt +++ b/gbcs-client/src/main/kotlin/net/woggioni/gbcs/client/impl/Parser.kt @@ -1,8 +1,8 @@ package net.woggioni.gbcs.client.impl import net.woggioni.gbcs.api.exception.ConfigurationException -import net.woggioni.gbcs.base.Xml.Companion.asIterable -import net.woggioni.gbcs.base.Xml.Companion.renderAttribute +import net.woggioni.gbcs.common.Xml.Companion.asIterable +import net.woggioni.gbcs.common.Xml.Companion.renderAttribute import net.woggioni.gbcs.client.GbcsClient import org.w3c.dom.Document import java.net.URI diff --git a/gbcs-base/build.gradle b/gbcs-common/build.gradle similarity index 100% rename from gbcs-base/build.gradle rename to gbcs-common/build.gradle diff --git a/gbcs-base/src/main/java/module-info.java b/gbcs-common/src/main/java/module-info.java similarity index 65% rename from gbcs-base/src/main/java/module-info.java rename to gbcs-common/src/main/java/module-info.java index 7ebf117..201ea3a 100644 --- a/gbcs-base/src/main/java/module-info.java +++ b/gbcs-common/src/main/java/module-info.java @@ -1,9 +1,9 @@ -module net.woggioni.gbcs.base { +module net.woggioni.gbcs.common { requires java.xml; requires java.logging; requires org.slf4j; requires kotlin.stdlib; requires net.woggioni.jwo; - exports net.woggioni.gbcs.base; + exports net.woggioni.gbcs.common; } \ No newline at end of file diff --git a/gbcs-base/src/main/kotlin/net/woggioni/gbcs/base/GBCS.kt b/gbcs-common/src/main/kotlin/net/woggioni/gbcs/common/GBCS.kt similarity index 87% rename from gbcs-base/src/main/kotlin/net/woggioni/gbcs/base/GBCS.kt rename to gbcs-common/src/main/kotlin/net/woggioni/gbcs/common/GBCS.kt index 8edd0e1..4919eae 100644 --- a/gbcs-base/src/main/kotlin/net/woggioni/gbcs/base/GBCS.kt +++ b/gbcs-common/src/main/kotlin/net/woggioni/gbcs/common/GBCS.kt @@ -1,4 +1,4 @@ -package net.woggioni.gbcs.base +package net.woggioni.gbcs.common import java.net.URI import java.net.URL @@ -6,7 +6,7 @@ import java.net.URL object GBCS { fun String.toUrl() : URL = URL.of(URI(this), null) - const val GBCS_NAMESPACE_URI: String = "urn:net.woggioni.gbcs" + const val GBCS_NAMESPACE_URI: String = "urn:net.woggioni.gbcs.server" const val GBCS_PREFIX: String = "gbcs" const val XML_SCHEMA_NAMESPACE_URI = "http://www.w3.org/2001/XMLSchema-instance" } \ No newline at end of file diff --git a/gbcs-base/src/main/kotlin/net/woggioni/gbcs/base/GbcsUrlStreamHandlerFactory.kt b/gbcs-common/src/main/kotlin/net/woggioni/gbcs/common/GbcsUrlStreamHandlerFactory.kt similarity index 99% rename from gbcs-base/src/main/kotlin/net/woggioni/gbcs/base/GbcsUrlStreamHandlerFactory.kt rename to gbcs-common/src/main/kotlin/net/woggioni/gbcs/common/GbcsUrlStreamHandlerFactory.kt index 8f95786..e74d169 100644 --- a/gbcs-base/src/main/kotlin/net/woggioni/gbcs/base/GbcsUrlStreamHandlerFactory.kt +++ b/gbcs-common/src/main/kotlin/net/woggioni/gbcs/common/GbcsUrlStreamHandlerFactory.kt @@ -1,4 +1,4 @@ -package net.woggioni.gbcs.base +package net.woggioni.gbcs.common import java.io.IOException import java.io.InputStream diff --git a/gbcs-base/src/main/kotlin/net/woggioni/gbcs/base/HostAndPort.kt b/gbcs-common/src/main/kotlin/net/woggioni/gbcs/common/HostAndPort.kt similarity index 80% rename from gbcs-base/src/main/kotlin/net/woggioni/gbcs/base/HostAndPort.kt rename to gbcs-common/src/main/kotlin/net/woggioni/gbcs/common/HostAndPort.kt index 8566065..2f97a04 100644 --- a/gbcs-base/src/main/kotlin/net/woggioni/gbcs/base/HostAndPort.kt +++ b/gbcs-common/src/main/kotlin/net/woggioni/gbcs/common/HostAndPort.kt @@ -1,4 +1,4 @@ -package net.woggioni.gbcs.base +package net.woggioni.gbcs.common data class HostAndPort(val host: String, val port: Int = 0) { diff --git a/gbcs-base/src/main/kotlin/net/woggioni/gbcs/base/Logging.kt b/gbcs-common/src/main/kotlin/net/woggioni/gbcs/common/Logging.kt similarity index 98% rename from gbcs-base/src/main/kotlin/net/woggioni/gbcs/base/Logging.kt rename to gbcs-common/src/main/kotlin/net/woggioni/gbcs/common/Logging.kt index 2fb382b..fdca60a 100644 --- a/gbcs-base/src/main/kotlin/net/woggioni/gbcs/base/Logging.kt +++ b/gbcs-common/src/main/kotlin/net/woggioni/gbcs/common/Logging.kt @@ -1,4 +1,4 @@ -package net.woggioni.gbcs.base +package net.woggioni.gbcs.common import org.slf4j.Logger import org.slf4j.LoggerFactory diff --git a/gbcs-base/src/main/kotlin/net/woggioni/gbcs/base/PasswordSecurity.kt b/gbcs-common/src/main/kotlin/net/woggioni/gbcs/common/PasswordSecurity.kt similarity index 97% rename from gbcs-base/src/main/kotlin/net/woggioni/gbcs/base/PasswordSecurity.kt rename to gbcs-common/src/main/kotlin/net/woggioni/gbcs/common/PasswordSecurity.kt index a40579b..32921f8 100644 --- a/gbcs-base/src/main/kotlin/net/woggioni/gbcs/base/PasswordSecurity.kt +++ b/gbcs-common/src/main/kotlin/net/woggioni/gbcs/common/PasswordSecurity.kt @@ -1,4 +1,4 @@ -package net.woggioni.gbcs.base +package net.woggioni.gbcs.common import java.security.SecureRandom import java.security.spec.KeySpec diff --git a/gbcs-base/src/main/kotlin/net/woggioni/gbcs/base/Xml.kt b/gbcs-common/src/main/kotlin/net/woggioni/gbcs/common/Xml.kt similarity index 97% rename from gbcs-base/src/main/kotlin/net/woggioni/gbcs/base/Xml.kt rename to gbcs-common/src/main/kotlin/net/woggioni/gbcs/common/Xml.kt index 1ad00f3..3546150 100644 --- a/gbcs-base/src/main/kotlin/net/woggioni/gbcs/base/Xml.kt +++ b/gbcs-common/src/main/kotlin/net/woggioni/gbcs/common/Xml.kt @@ -1,9 +1,6 @@ -package net.woggioni.gbcs.base +package net.woggioni.gbcs.common -import net.woggioni.jwo.CollectionUtils.mapValues -import net.woggioni.jwo.CollectionUtils.toUnmodifiableTreeMap import net.woggioni.jwo.JWO -import net.woggioni.jwo.MapBuilder import org.slf4j.LoggerFactory import org.slf4j.event.Level import org.w3c.dom.Document @@ -16,8 +13,6 @@ import org.xml.sax.SAXParseException import java.io.InputStream import java.io.OutputStream import java.net.URL -import java.util.Collections -import java.util.TreeMap import javax.xml.XMLConstants.ACCESS_EXTERNAL_DTD import javax.xml.XMLConstants.ACCESS_EXTERNAL_SCHEMA import javax.xml.XMLConstants.FEATURE_SECURE_PROCESSING @@ -107,7 +102,7 @@ class Xml(val doc: Document, val element: Element) { ).toMap() private fun renderConfigurationTemplate(template: String): String { - return JWO.renderTemplate(template, emptyMap(), dictMap) + return JWO.renderTemplate(template, emptyMap(), dictMap).replace("$$", "$") } fun Element.renderAttribute(name : String, namespaceURI: String? = null) = if(namespaceURI == null) { diff --git a/gbcs-memcached/src/main/java/module-info.java b/gbcs-memcached/src/main/java/module-info.java deleted file mode 100644 index 9413d31..0000000 --- a/gbcs-memcached/src/main/java/module-info.java +++ /dev/null @@ -1,14 +0,0 @@ -import net.woggioni.gbcs.api.CacheProvider; - -module net.woggioni.gbcs.memcached { - requires net.woggioni.gbcs.base; - requires net.woggioni.gbcs.api; - requires com.googlecode.xmemcached; - requires net.woggioni.jwo; - requires java.xml; - requires kotlin.stdlib; - - provides CacheProvider with net.woggioni.gbcs.memcached.MemcachedCacheProvider; - - opens net.woggioni.gbcs.memcached.schema; -} \ No newline at end of file diff --git a/gbcs-memcached/src/main/resources/META-INF/services/net.woggioni.gbcs.api.CacheProvider b/gbcs-memcached/src/main/resources/META-INF/services/net.woggioni.gbcs.api.CacheProvider deleted file mode 100644 index 8883758..0000000 --- a/gbcs-memcached/src/main/resources/META-INF/services/net.woggioni.gbcs.api.CacheProvider +++ /dev/null @@ -1 +0,0 @@ -net.woggioni.gbcs.memcached.MemcachedCacheProvider \ No newline at end of file diff --git a/gbcs-memcached/build.gradle b/gbcs-server-memcached/build.gradle similarity index 96% rename from gbcs-memcached/build.gradle rename to gbcs-server-memcached/build.gradle index 85505ec..4f60e00 100644 --- a/gbcs-memcached/build.gradle +++ b/gbcs-server-memcached/build.gradle @@ -29,7 +29,7 @@ configurations { } dependencies { - compileOnly project(':gbcs-base') + compileOnly project(':gbcs-common') compileOnly project(':gbcs-api') compileOnly catalog.jwo implementation catalog.xmemcached diff --git a/gbcs-server-memcached/src/main/java/module-info.java b/gbcs-server-memcached/src/main/java/module-info.java new file mode 100644 index 0000000..12ed994 --- /dev/null +++ b/gbcs-server-memcached/src/main/java/module-info.java @@ -0,0 +1,14 @@ +import net.woggioni.gbcs.api.CacheProvider; + +module net.woggioni.gbcs.server.memcached { + requires net.woggioni.gbcs.common; + requires net.woggioni.gbcs.api; + requires com.googlecode.xmemcached; + requires net.woggioni.jwo; + requires java.xml; + requires kotlin.stdlib; + + provides CacheProvider with net.woggioni.gbcs.server.memcached.MemcachedCacheProvider; + + opens net.woggioni.gbcs.server.memcached.schema; +} \ No newline at end of file diff --git a/gbcs-memcached/src/main/kotlin/net/woggioni/gbcs/memcached/MemcachedCache.kt b/gbcs-server-memcached/src/main/kotlin/net/woggioni/gbcs/server/memcached/MemcachedCache.kt similarity index 95% rename from gbcs-memcached/src/main/kotlin/net/woggioni/gbcs/memcached/MemcachedCache.kt rename to gbcs-server-memcached/src/main/kotlin/net/woggioni/gbcs/server/memcached/MemcachedCache.kt index 909be69..cec7a1a 100644 --- a/gbcs-memcached/src/main/kotlin/net/woggioni/gbcs/memcached/MemcachedCache.kt +++ b/gbcs-server-memcached/src/main/kotlin/net/woggioni/gbcs/server/memcached/MemcachedCache.kt @@ -1,4 +1,4 @@ -package net.woggioni.gbcs.memcached +package net.woggioni.gbcs.server.memcached import net.rubyeye.xmemcached.XMemcachedClientBuilder import net.rubyeye.xmemcached.command.BinaryCommandFactory @@ -6,7 +6,7 @@ import net.rubyeye.xmemcached.transcoders.CompressionMode import net.rubyeye.xmemcached.transcoders.SerializingTranscoder import net.woggioni.gbcs.api.Cache import net.woggioni.gbcs.api.exception.ContentTooLargeException -import net.woggioni.gbcs.base.HostAndPort +import net.woggioni.gbcs.common.HostAndPort import net.woggioni.jwo.JWO import java.io.ByteArrayInputStream import java.net.InetSocketAddress diff --git a/gbcs-memcached/src/main/kotlin/net/woggioni/gbcs/memcached/MemcachedCacheConfiguration.kt b/gbcs-server-memcached/src/main/kotlin/net/woggioni/gbcs/server/memcached/MemcachedCacheConfiguration.kt similarity index 79% rename from gbcs-memcached/src/main/kotlin/net/woggioni/gbcs/memcached/MemcachedCacheConfiguration.kt rename to gbcs-server-memcached/src/main/kotlin/net/woggioni/gbcs/server/memcached/MemcachedCacheConfiguration.kt index 2ef7921..b600dff 100644 --- a/gbcs-memcached/src/main/kotlin/net/woggioni/gbcs/memcached/MemcachedCacheConfiguration.kt +++ b/gbcs-server-memcached/src/main/kotlin/net/woggioni/gbcs/server/memcached/MemcachedCacheConfiguration.kt @@ -1,8 +1,8 @@ -package net.woggioni.gbcs.memcached +package net.woggioni.gbcs.server.memcached import net.rubyeye.xmemcached.transcoders.CompressionMode import net.woggioni.gbcs.api.Configuration -import net.woggioni.gbcs.base.HostAndPort +import net.woggioni.gbcs.common.HostAndPort import java.time.Duration data class MemcachedCacheConfiguration( @@ -20,7 +20,7 @@ data class MemcachedCacheConfiguration( compressionMode ) - override fun getNamespaceURI() = "urn:net.woggioni.gbcs-memcached" + override fun getNamespaceURI() = "urn:net.woggioni.gbcs.server.memcached" override fun getTypeName() = "memcachedCacheType" } diff --git a/gbcs-memcached/src/main/kotlin/net/woggioni/gbcs/memcached/MemcachedCacheProvider.kt b/gbcs-server-memcached/src/main/kotlin/net/woggioni/gbcs/server/memcached/MemcachedCacheProvider.kt similarity index 85% rename from gbcs-memcached/src/main/kotlin/net/woggioni/gbcs/memcached/MemcachedCacheProvider.kt rename to gbcs-server-memcached/src/main/kotlin/net/woggioni/gbcs/server/memcached/MemcachedCacheProvider.kt index ba99a25..46acdb4 100644 --- a/gbcs-memcached/src/main/kotlin/net/woggioni/gbcs/memcached/MemcachedCacheProvider.kt +++ b/gbcs-server-memcached/src/main/kotlin/net/woggioni/gbcs/server/memcached/MemcachedCacheProvider.kt @@ -1,23 +1,23 @@ -package net.woggioni.gbcs.memcached +package net.woggioni.gbcs.server.memcached import net.rubyeye.xmemcached.transcoders.CompressionMode import net.woggioni.gbcs.api.CacheProvider import net.woggioni.gbcs.api.exception.ConfigurationException -import net.woggioni.gbcs.base.GBCS -import net.woggioni.gbcs.base.HostAndPort -import net.woggioni.gbcs.base.Xml -import net.woggioni.gbcs.base.Xml.Companion.asIterable -import net.woggioni.gbcs.base.Xml.Companion.renderAttribute +import net.woggioni.gbcs.common.GBCS +import net.woggioni.gbcs.common.HostAndPort +import net.woggioni.gbcs.common.Xml +import net.woggioni.gbcs.common.Xml.Companion.asIterable +import net.woggioni.gbcs.common.Xml.Companion.renderAttribute import org.w3c.dom.Document import org.w3c.dom.Element import java.time.Duration class MemcachedCacheProvider : CacheProvider { - override fun getXmlSchemaLocation() = "classpath:net/woggioni/gbcs/memcached/schema/gbcs-memcached.xsd" + override fun getXmlSchemaLocation() = "jpms://net.woggioni.gbcs.server.memcached/net/woggioni/gbcs/server/memcached/schema/gbcs-memcached.xsd" override fun getXmlType() = "memcachedCacheType" - override fun getXmlNamespace() = "urn:net.woggioni.gbcs-memcached" + override fun getXmlNamespace() = "urn:net.woggioni.gbcs.server.memcached" val xmlNamespacePrefix : String get() = "gbcs-memcached" diff --git a/gbcs-server-memcached/src/main/resources/META-INF/services/net.woggioni.gbcs.api.CacheProvider b/gbcs-server-memcached/src/main/resources/META-INF/services/net.woggioni.gbcs.api.CacheProvider new file mode 100644 index 0000000..0d170bb --- /dev/null +++ b/gbcs-server-memcached/src/main/resources/META-INF/services/net.woggioni.gbcs.api.CacheProvider @@ -0,0 +1 @@ +net.woggioni.gbcs.server.memcached.MemcachedCacheProvider \ No newline at end of file diff --git a/gbcs-memcached/src/main/resources/net/woggioni/gbcs/memcached/schema/gbcs-memcached.xsd b/gbcs-server-memcached/src/main/resources/net/woggioni/gbcs/server/memcached/schema/gbcs-memcached.xsd similarity index 78% rename from gbcs-memcached/src/main/resources/net/woggioni/gbcs/memcached/schema/gbcs-memcached.xsd rename to gbcs-server-memcached/src/main/resources/net/woggioni/gbcs/server/memcached/schema/gbcs-memcached.xsd index eb3dc48..47cc0fa 100644 --- a/gbcs-memcached/src/main/resources/net/woggioni/gbcs/memcached/schema/gbcs-memcached.xsd +++ b/gbcs-server-memcached/src/main/resources/net/woggioni/gbcs/server/memcached/schema/gbcs-memcached.xsd @@ -1,10 +1,10 @@ - - + diff --git a/gbcs-server/build.gradle b/gbcs-server/build.gradle new file mode 100644 index 0000000..3ba4dcc --- /dev/null +++ b/gbcs-server/build.gradle @@ -0,0 +1,35 @@ +plugins { + id 'java-library' + alias catalog.plugins.kotlin.jvm + id 'maven-publish' +} + +dependencies { + implementation catalog.jwo + implementation catalog.slf4j.api + implementation catalog.netty.codec.http + + api project(':gbcs-common') + api project(':gbcs-api') + +// runtimeOnly catalog.slf4j.jdk14 + testRuntimeOnly catalog.logback.classic + + testImplementation catalog.bcprov.jdk18on + testImplementation catalog.bcpkix.jdk18on + testImplementation catalog.junit.jupiter.api + testImplementation catalog.junit.jupiter.params + testRuntimeOnly catalog.junit.jupiter.engine + + testRuntimeOnly project(":gbcs-server-memcached") +} + +publishing { + publications { + maven(MavenPublication) { + from(components["java"]) + } + } +} + + diff --git a/src/main/java/module-info.java b/gbcs-server/src/main/java/module-info.java similarity index 67% rename from src/main/java/module-info.java rename to gbcs-server/src/main/java/module-info.java index 5dca7ce..1044452 100644 --- a/src/main/java/module-info.java +++ b/gbcs-server/src/main/java/module-info.java @@ -1,7 +1,7 @@ import net.woggioni.gbcs.api.CacheProvider; -import net.woggioni.gbcs.cache.FileSystemCacheProvider; +import net.woggioni.gbcs.server.cache.FileSystemCacheProvider; -module net.woggioni.gbcs { +module net.woggioni.gbcs.server { requires java.sql; requires java.xml; requires java.logging; @@ -15,13 +15,13 @@ module net.woggioni.gbcs { requires io.netty.codec; requires org.slf4j; requires net.woggioni.jwo; - requires net.woggioni.gbcs.base; + requires net.woggioni.gbcs.common; requires net.woggioni.gbcs.api; - exports net.woggioni.gbcs; + exports net.woggioni.gbcs.server; - opens net.woggioni.gbcs; - opens net.woggioni.gbcs.schema; + opens net.woggioni.gbcs.server; + opens net.woggioni.gbcs.server.schema; uses CacheProvider; provides CacheProvider with FileSystemCacheProvider; diff --git a/src/main/kotlin/net/woggioni/gbcs/GradleBuildCacheServer.kt b/gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/GradleBuildCacheServer.kt similarity index 97% rename from src/main/kotlin/net/woggioni/gbcs/GradleBuildCacheServer.kt rename to gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/GradleBuildCacheServer.kt index 533d674..29defc1 100644 --- a/src/main/kotlin/net/woggioni/gbcs/GradleBuildCacheServer.kt +++ b/gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/GradleBuildCacheServer.kt @@ -1,4 +1,4 @@ -package net.woggioni.gbcs +package net.woggioni.gbcs.server import io.netty.bootstrap.ServerBootstrap import io.netty.buffer.ByteBuf @@ -45,18 +45,18 @@ import net.woggioni.gbcs.api.Cache import net.woggioni.gbcs.api.Configuration import net.woggioni.gbcs.api.Role import net.woggioni.gbcs.api.exception.ContentTooLargeException -import net.woggioni.gbcs.auth.AbstractNettyHttpAuthenticator -import net.woggioni.gbcs.auth.Authorizer -import net.woggioni.gbcs.auth.ClientCertificateValidator -import net.woggioni.gbcs.auth.RoleAuthorizer -import net.woggioni.gbcs.base.GBCS.toUrl -import net.woggioni.gbcs.base.PasswordSecurity.decodePasswordHash -import net.woggioni.gbcs.base.PasswordSecurity.hashPassword -import net.woggioni.gbcs.base.Xml -import net.woggioni.gbcs.base.contextLogger -import net.woggioni.gbcs.base.info -import net.woggioni.gbcs.configuration.Parser -import net.woggioni.gbcs.configuration.Serializer +import net.woggioni.gbcs.server.auth.AbstractNettyHttpAuthenticator +import net.woggioni.gbcs.server.auth.Authorizer +import net.woggioni.gbcs.server.auth.ClientCertificateValidator +import net.woggioni.gbcs.server.auth.RoleAuthorizer +import net.woggioni.gbcs.common.GBCS.toUrl +import net.woggioni.gbcs.common.PasswordSecurity.decodePasswordHash +import net.woggioni.gbcs.common.PasswordSecurity.hashPassword +import net.woggioni.gbcs.common.Xml +import net.woggioni.gbcs.common.contextLogger +import net.woggioni.gbcs.common.info +import net.woggioni.gbcs.server.configuration.Parser +import net.woggioni.gbcs.server.configuration.Serializer import net.woggioni.jwo.JWO import net.woggioni.jwo.Tuple2 import java.io.OutputStream diff --git a/src/main/kotlin/net/woggioni/gbcs/Logging.kt b/gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/Logging.kt similarity index 97% rename from src/main/kotlin/net/woggioni/gbcs/Logging.kt rename to gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/Logging.kt index 2973490..b7b8334 100644 --- a/src/main/kotlin/net/woggioni/gbcs/Logging.kt +++ b/gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/Logging.kt @@ -1,4 +1,4 @@ -package net.woggioni.gbcs +package net.woggioni.gbcs.server import io.netty.channel.ChannelHandlerContext import org.slf4j.Logger diff --git a/src/main/kotlin/net/woggioni/gbcs/auth/Authenticator.kt b/gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/auth/Authenticator.kt similarity index 98% rename from src/main/kotlin/net/woggioni/gbcs/auth/Authenticator.kt rename to gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/auth/Authenticator.kt index 62d5c98..5536df4 100644 --- a/src/main/kotlin/net/woggioni/gbcs/auth/Authenticator.kt +++ b/gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/auth/Authenticator.kt @@ -1,4 +1,4 @@ -package net.woggioni.gbcs.auth +package net.woggioni.gbcs.server.auth import io.netty.buffer.Unpooled import io.netty.channel.ChannelFutureListener diff --git a/src/main/kotlin/net/woggioni/gbcs/auth/Authorizer.kt b/gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/auth/Authorizer.kt similarity index 82% rename from src/main/kotlin/net/woggioni/gbcs/auth/Authorizer.kt rename to gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/auth/Authorizer.kt index 6eb5bab..28e64bc 100644 --- a/src/main/kotlin/net/woggioni/gbcs/auth/Authorizer.kt +++ b/gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/auth/Authorizer.kt @@ -1,4 +1,4 @@ -package net.woggioni.gbcs.auth +package net.woggioni.gbcs.server.auth import io.netty.handler.codec.http.HttpRequest import net.woggioni.gbcs.api.Role diff --git a/src/main/kotlin/net/woggioni/gbcs/auth/ClientCertificateValidator.kt b/gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/auth/ClientCertificateValidator.kt similarity index 99% rename from src/main/kotlin/net/woggioni/gbcs/auth/ClientCertificateValidator.kt rename to gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/auth/ClientCertificateValidator.kt index 28e8821..bb05165 100644 --- a/src/main/kotlin/net/woggioni/gbcs/auth/ClientCertificateValidator.kt +++ b/gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/auth/ClientCertificateValidator.kt @@ -1,4 +1,4 @@ -package net.woggioni.gbcs.auth +package net.woggioni.gbcs.server.auth import io.netty.channel.ChannelHandlerContext import io.netty.channel.ChannelInboundHandlerAdapter diff --git a/src/main/kotlin/net/woggioni/gbcs/auth/UserAuthorizer.kt b/gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/auth/UserAuthorizer.kt similarity index 94% rename from src/main/kotlin/net/woggioni/gbcs/auth/UserAuthorizer.kt rename to gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/auth/UserAuthorizer.kt index 9be8e8f..c7c20f9 100644 --- a/src/main/kotlin/net/woggioni/gbcs/auth/UserAuthorizer.kt +++ b/gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/auth/UserAuthorizer.kt @@ -1,4 +1,4 @@ -package net.woggioni.gbcs.auth +package net.woggioni.gbcs.server.auth import io.netty.handler.codec.http.HttpMethod import io.netty.handler.codec.http.HttpRequest diff --git a/src/main/kotlin/net/woggioni/gbcs/cache/FileSystemCache.kt b/gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/cache/FileSystemCache.kt similarity index 99% rename from src/main/kotlin/net/woggioni/gbcs/cache/FileSystemCache.kt rename to gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/cache/FileSystemCache.kt index 6b8c0bb..a61e1ae 100644 --- a/src/main/kotlin/net/woggioni/gbcs/cache/FileSystemCache.kt +++ b/gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/cache/FileSystemCache.kt @@ -1,4 +1,4 @@ -package net.woggioni.gbcs.cache +package net.woggioni.gbcs.server.cache import net.woggioni.gbcs.api.Cache import net.woggioni.jwo.JWO diff --git a/src/main/kotlin/net/woggioni/gbcs/cache/FileSystemCacheConfiguration.kt b/gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/cache/FileSystemCacheConfiguration.kt similarity index 90% rename from src/main/kotlin/net/woggioni/gbcs/cache/FileSystemCacheConfiguration.kt rename to gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/cache/FileSystemCacheConfiguration.kt index 5201716..8d32d80 100644 --- a/src/main/kotlin/net/woggioni/gbcs/cache/FileSystemCacheConfiguration.kt +++ b/gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/cache/FileSystemCacheConfiguration.kt @@ -1,7 +1,7 @@ -package net.woggioni.gbcs.cache +package net.woggioni.gbcs.server.cache import net.woggioni.gbcs.api.Configuration -import net.woggioni.gbcs.base.GBCS +import net.woggioni.gbcs.common.GBCS import net.woggioni.jwo.Application import java.nio.file.Path import java.time.Duration diff --git a/src/main/kotlin/net/woggioni/gbcs/cache/FileSystemCacheProvider.kt b/gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/cache/FileSystemCacheProvider.kt similarity index 88% rename from src/main/kotlin/net/woggioni/gbcs/cache/FileSystemCacheProvider.kt rename to gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/cache/FileSystemCacheProvider.kt index 04a6abe..55dc94c 100644 --- a/src/main/kotlin/net/woggioni/gbcs/cache/FileSystemCacheProvider.kt +++ b/gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/cache/FileSystemCacheProvider.kt @@ -1,9 +1,9 @@ -package net.woggioni.gbcs.cache +package net.woggioni.gbcs.server.cache import net.woggioni.gbcs.api.CacheProvider -import net.woggioni.gbcs.base.GBCS -import net.woggioni.gbcs.base.Xml -import net.woggioni.gbcs.base.Xml.Companion.renderAttribute +import net.woggioni.gbcs.common.GBCS +import net.woggioni.gbcs.common.Xml +import net.woggioni.gbcs.common.Xml.Companion.renderAttribute import org.w3c.dom.Document import org.w3c.dom.Element import java.nio.file.Path @@ -12,11 +12,11 @@ import java.util.zip.Deflater class FileSystemCacheProvider : CacheProvider { - override fun getXmlSchemaLocation() = "classpath:net/woggioni/gbcs/schema/gbcs.xsd" + override fun getXmlSchemaLocation() = "classpath:net/woggioni/gbcs/server/schema/gbcs.xsd" override fun getXmlType() = "fileSystemCacheType" - override fun getXmlNamespace() = "urn:net.woggioni.gbcs" + override fun getXmlNamespace() = "urn:net.woggioni.gbcs.server" override fun deserialize(el: Element): FileSystemCacheConfiguration { val path = el.renderAttribute("path") diff --git a/src/main/kotlin/net/woggioni/gbcs/configuration/CacheSerializers.kt b/gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/configuration/CacheSerializers.kt similarity index 90% rename from src/main/kotlin/net/woggioni/gbcs/configuration/CacheSerializers.kt rename to gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/configuration/CacheSerializers.kt index 00d0012..4f9bed4 100644 --- a/src/main/kotlin/net/woggioni/gbcs/configuration/CacheSerializers.kt +++ b/gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/configuration/CacheSerializers.kt @@ -1,4 +1,4 @@ -package net.woggioni.gbcs.configuration +package net.woggioni.gbcs.server.configuration import net.woggioni.gbcs.api.CacheProvider import net.woggioni.gbcs.api.Configuration diff --git a/src/main/kotlin/net/woggioni/gbcs/configuration/Parser.kt b/gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/configuration/Parser.kt similarity index 98% rename from src/main/kotlin/net/woggioni/gbcs/configuration/Parser.kt rename to gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/configuration/Parser.kt index 7acf760..b624217 100644 --- a/src/main/kotlin/net/woggioni/gbcs/configuration/Parser.kt +++ b/gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/configuration/Parser.kt @@ -1,4 +1,4 @@ -package net.woggioni.gbcs.configuration +package net.woggioni.gbcs.server.configuration import net.woggioni.gbcs.api.Configuration import net.woggioni.gbcs.api.Configuration.Authentication @@ -13,8 +13,8 @@ import net.woggioni.gbcs.api.Configuration.TrustStore import net.woggioni.gbcs.api.Configuration.User import net.woggioni.gbcs.api.Role import net.woggioni.gbcs.api.exception.ConfigurationException -import net.woggioni.gbcs.base.Xml.Companion.asIterable -import net.woggioni.gbcs.base.Xml.Companion.renderAttribute +import net.woggioni.gbcs.common.Xml.Companion.asIterable +import net.woggioni.gbcs.common.Xml.Companion.renderAttribute import org.w3c.dom.Document import org.w3c.dom.Element import org.w3c.dom.TypeInfo diff --git a/src/main/kotlin/net/woggioni/gbcs/configuration/Serializer.kt b/gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/configuration/Serializer.kt similarity index 98% rename from src/main/kotlin/net/woggioni/gbcs/configuration/Serializer.kt rename to gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/configuration/Serializer.kt index 28c46a3..33a701d 100644 --- a/src/main/kotlin/net/woggioni/gbcs/configuration/Serializer.kt +++ b/gbcs-server/src/main/kotlin/net/woggioni/gbcs/server/configuration/Serializer.kt @@ -1,9 +1,9 @@ -package net.woggioni.gbcs.configuration +package net.woggioni.gbcs.server.configuration import net.woggioni.gbcs.api.CacheProvider import net.woggioni.gbcs.api.Configuration -import net.woggioni.gbcs.base.GBCS -import net.woggioni.gbcs.base.Xml +import net.woggioni.gbcs.common.GBCS +import net.woggioni.gbcs.common.Xml import org.w3c.dom.Document object Serializer { diff --git a/gbcs-server/src/main/resources/META-INF/services/net.woggioni.gbcs.api.CacheProvider b/gbcs-server/src/main/resources/META-INF/services/net.woggioni.gbcs.api.CacheProvider new file mode 100644 index 0000000..e249e1e --- /dev/null +++ b/gbcs-server/src/main/resources/META-INF/services/net.woggioni.gbcs.api.CacheProvider @@ -0,0 +1 @@ +net.woggioni.gbcs.server.cache.FileSystemCacheProvider \ No newline at end of file diff --git a/src/main/resources/logging.properties b/gbcs-server/src/main/resources/logging.properties similarity index 100% rename from src/main/resources/logging.properties rename to gbcs-server/src/main/resources/logging.properties diff --git a/src/main/resources/net/woggioni/gbcs/gbcs-default.xml b/gbcs-server/src/main/resources/net/woggioni/gbcs/server/gbcs-default.xml similarity index 64% rename from src/main/resources/net/woggioni/gbcs/gbcs-default.xml rename to gbcs-server/src/main/resources/net/woggioni/gbcs/server/gbcs-default.xml index be24a62..0d10619 100644 --- a/src/main/resources/net/woggioni/gbcs/gbcs-default.xml +++ b/gbcs-server/src/main/resources/net/woggioni/gbcs/server/gbcs-default.xml @@ -1,7 +1,7 @@ + xmlns:gbcs="urn:net.woggioni.gbcs.server" + xs:schemaLocation="urn:net.woggioni.gbcs.server jpms://net.woggioni.gbcs.server/net/woggioni/gbcs/server/schema/gbcs.xsd"> diff --git a/src/main/resources/net/woggioni/gbcs/schema/gbcs.xsd b/gbcs-server/src/main/resources/net/woggioni/gbcs/server/schema/gbcs.xsd similarity index 97% rename from src/main/resources/net/woggioni/gbcs/schema/gbcs.xsd rename to gbcs-server/src/main/resources/net/woggioni/gbcs/server/schema/gbcs.xsd index 3991270..08fa780 100644 --- a/src/main/resources/net/woggioni/gbcs/schema/gbcs.xsd +++ b/gbcs-server/src/main/resources/net/woggioni/gbcs/server/schema/gbcs.xsd @@ -1,9 +1,8 @@ - + xmlns:gbcs="urn:net.woggioni.gbcs.server" + elementFormDefault="unqualified"> diff --git a/src/test/java/net/woggioni/gbcs/utils/CertificateUtils.java b/gbcs-server/src/test/java/net/woggioni/gbcs/server/test/utils/CertificateUtils.java similarity index 99% rename from src/test/java/net/woggioni/gbcs/utils/CertificateUtils.java rename to gbcs-server/src/test/java/net/woggioni/gbcs/server/test/utils/CertificateUtils.java index 5c27676..fb6486e 100644 --- a/src/test/java/net/woggioni/gbcs/utils/CertificateUtils.java +++ b/gbcs-server/src/test/java/net/woggioni/gbcs/server/test/utils/CertificateUtils.java @@ -1,4 +1,4 @@ -package net.woggioni.gbcs.utils; +package net.woggioni.gbcs.server.test.utils; import org.bouncycastle.asn1.DERSequence; import org.bouncycastle.asn1.x500.X500Name; diff --git a/src/test/java/net/woggioni/gbcs/utils/NetworkUtils.java b/gbcs-server/src/test/java/net/woggioni/gbcs/server/test/utils/NetworkUtils.java similarity index 95% rename from src/test/java/net/woggioni/gbcs/utils/NetworkUtils.java rename to gbcs-server/src/test/java/net/woggioni/gbcs/server/test/utils/NetworkUtils.java index 7f483c7..132aabd 100644 --- a/src/test/java/net/woggioni/gbcs/utils/NetworkUtils.java +++ b/gbcs-server/src/test/java/net/woggioni/gbcs/server/test/utils/NetworkUtils.java @@ -1,4 +1,4 @@ -package net.woggioni.gbcs.utils; +package net.woggioni.gbcs.server.test.utils; import net.woggioni.jwo.JWO; diff --git a/src/test/kotlin/net/woggioni/gbcs/test/AbstractBasicAuthServerTest.kt b/gbcs-server/src/test/kotlin/net/woggioni/gbcs/server/test/AbstractBasicAuthServerTest.kt similarity index 90% rename from src/test/kotlin/net/woggioni/gbcs/test/AbstractBasicAuthServerTest.kt rename to gbcs-server/src/test/kotlin/net/woggioni/gbcs/server/test/AbstractBasicAuthServerTest.kt index 16f9709..2dcc31f 100644 --- a/src/test/kotlin/net/woggioni/gbcs/test/AbstractBasicAuthServerTest.kt +++ b/gbcs-server/src/test/kotlin/net/woggioni/gbcs/server/test/AbstractBasicAuthServerTest.kt @@ -1,11 +1,11 @@ -package net.woggioni.gbcs.test +package net.woggioni.gbcs.server.test import net.woggioni.gbcs.api.Configuration import net.woggioni.gbcs.api.Role -import net.woggioni.gbcs.base.Xml -import net.woggioni.gbcs.cache.FileSystemCacheConfiguration -import net.woggioni.gbcs.configuration.Serializer -import net.woggioni.gbcs.utils.NetworkUtils +import net.woggioni.gbcs.common.Xml +import net.woggioni.gbcs.server.cache.FileSystemCacheConfiguration +import net.woggioni.gbcs.server.configuration.Serializer +import net.woggioni.gbcs.server.test.utils.NetworkUtils import java.net.URI import java.net.http.HttpRequest import java.nio.charset.StandardCharsets diff --git a/src/test/kotlin/net/woggioni/gbcs/test/AbstractServerTest.kt b/gbcs-server/src/test/kotlin/net/woggioni/gbcs/server/test/AbstractServerTest.kt similarity index 92% rename from src/test/kotlin/net/woggioni/gbcs/test/AbstractServerTest.kt rename to gbcs-server/src/test/kotlin/net/woggioni/gbcs/server/test/AbstractServerTest.kt index a2fa282..552010d 100644 --- a/src/test/kotlin/net/woggioni/gbcs/test/AbstractServerTest.kt +++ b/gbcs-server/src/test/kotlin/net/woggioni/gbcs/server/test/AbstractServerTest.kt @@ -1,6 +1,6 @@ -package net.woggioni.gbcs.test +package net.woggioni.gbcs.server.test -import net.woggioni.gbcs.GradleBuildCacheServer +import net.woggioni.gbcs.server.GradleBuildCacheServer import net.woggioni.gbcs.api.Configuration import org.junit.jupiter.api.AfterAll import org.junit.jupiter.api.BeforeAll diff --git a/src/test/kotlin/net/woggioni/gbcs/test/AbstractTlsServerTest.kt b/gbcs-server/src/test/kotlin/net/woggioni/gbcs/server/test/AbstractTlsServerTest.kt similarity index 94% rename from src/test/kotlin/net/woggioni/gbcs/test/AbstractTlsServerTest.kt rename to gbcs-server/src/test/kotlin/net/woggioni/gbcs/server/test/AbstractTlsServerTest.kt index ea9d68f..3bd8845 100644 --- a/src/test/kotlin/net/woggioni/gbcs/test/AbstractTlsServerTest.kt +++ b/gbcs-server/src/test/kotlin/net/woggioni/gbcs/server/test/AbstractTlsServerTest.kt @@ -1,13 +1,13 @@ -package net.woggioni.gbcs.test +package net.woggioni.gbcs.server.test import net.woggioni.gbcs.api.Configuration import net.woggioni.gbcs.api.Role -import net.woggioni.gbcs.base.Xml -import net.woggioni.gbcs.cache.FileSystemCacheConfiguration -import net.woggioni.gbcs.configuration.Serializer -import net.woggioni.gbcs.utils.CertificateUtils -import net.woggioni.gbcs.utils.CertificateUtils.X509Credentials -import net.woggioni.gbcs.utils.NetworkUtils +import net.woggioni.gbcs.common.Xml +import net.woggioni.gbcs.server.cache.FileSystemCacheConfiguration +import net.woggioni.gbcs.server.configuration.Serializer +import net.woggioni.gbcs.server.test.utils.CertificateUtils +import net.woggioni.gbcs.server.test.utils.CertificateUtils.X509Credentials +import net.woggioni.gbcs.server.test.utils.NetworkUtils import org.bouncycastle.asn1.x500.X500Name import java.net.URI import java.net.http.HttpClient diff --git a/src/test/kotlin/net/woggioni/gbcs/test/BasicAuthServerTest.kt b/gbcs-server/src/test/kotlin/net/woggioni/gbcs/server/test/BasicAuthServerTest.kt similarity index 98% rename from src/test/kotlin/net/woggioni/gbcs/test/BasicAuthServerTest.kt rename to gbcs-server/src/test/kotlin/net/woggioni/gbcs/server/test/BasicAuthServerTest.kt index 1fcb15e..cb18894 100644 --- a/src/test/kotlin/net/woggioni/gbcs/test/BasicAuthServerTest.kt +++ b/gbcs-server/src/test/kotlin/net/woggioni/gbcs/server/test/BasicAuthServerTest.kt @@ -1,9 +1,9 @@ -package net.woggioni.gbcs.test +package net.woggioni.gbcs.server.test import io.netty.handler.codec.http.HttpResponseStatus import net.woggioni.gbcs.api.Configuration import net.woggioni.gbcs.api.Role -import net.woggioni.gbcs.base.PasswordSecurity.hashPassword +import net.woggioni.gbcs.common.PasswordSecurity.hashPassword import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Order import org.junit.jupiter.api.Test diff --git a/src/test/kotlin/net/woggioni/gbcs/test/ConfigurationTest.kt b/gbcs-server/src/test/kotlin/net/woggioni/gbcs/server/test/ConfigurationTest.kt similarity index 64% rename from src/test/kotlin/net/woggioni/gbcs/test/ConfigurationTest.kt rename to gbcs-server/src/test/kotlin/net/woggioni/gbcs/server/test/ConfigurationTest.kt index 491b5d9..1675a05 100644 --- a/src/test/kotlin/net/woggioni/gbcs/test/ConfigurationTest.kt +++ b/gbcs-server/src/test/kotlin/net/woggioni/gbcs/server/test/ConfigurationTest.kt @@ -1,10 +1,10 @@ -package net.woggioni.gbcs.test +package net.woggioni.gbcs.server.test -import net.woggioni.gbcs.base.GBCS.toUrl -import net.woggioni.gbcs.base.GbcsUrlStreamHandlerFactory -import net.woggioni.gbcs.base.Xml -import net.woggioni.gbcs.configuration.Parser -import net.woggioni.gbcs.configuration.Serializer +import net.woggioni.gbcs.common.GBCS.toUrl +import net.woggioni.gbcs.common.GbcsUrlStreamHandlerFactory +import net.woggioni.gbcs.common.Xml +import net.woggioni.gbcs.server.configuration.Parser +import net.woggioni.gbcs.server.configuration.Serializer import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.io.TempDir import org.junit.jupiter.params.ParameterizedTest @@ -16,9 +16,9 @@ class ConfigurationTest { @ValueSource( strings = [ - "classpath:net/woggioni/gbcs/test/gbcs-default.xml", - "classpath:net/woggioni/gbcs/test/gbcs-memcached.xml", - "classpath:net/woggioni/gbcs/test/gbcs-tls.xml", + "classpath:net/woggioni/gbcs/server/test/gbcs-default.xml", + "classpath:net/woggioni/gbcs/server/test/gbcs-memcached.xml", + "classpath:net/woggioni/gbcs/server/test/gbcs-tls.xml", ] ) @ParameterizedTest diff --git a/src/test/kotlin/net/woggioni/gbcs/test/NoAnonymousUserBasicAuthServerTest.kt b/gbcs-server/src/test/kotlin/net/woggioni/gbcs/server/test/NoAnonymousUserBasicAuthServerTest.kt similarity index 94% rename from src/test/kotlin/net/woggioni/gbcs/test/NoAnonymousUserBasicAuthServerTest.kt rename to gbcs-server/src/test/kotlin/net/woggioni/gbcs/server/test/NoAnonymousUserBasicAuthServerTest.kt index c987f3d..f9d2fc6 100644 --- a/src/test/kotlin/net/woggioni/gbcs/test/NoAnonymousUserBasicAuthServerTest.kt +++ b/gbcs-server/src/test/kotlin/net/woggioni/gbcs/server/test/NoAnonymousUserBasicAuthServerTest.kt @@ -1,8 +1,8 @@ -package net.woggioni.gbcs.test +package net.woggioni.gbcs.server.test import io.netty.handler.codec.http.HttpResponseStatus import net.woggioni.gbcs.api.Configuration -import net.woggioni.gbcs.base.PasswordSecurity.hashPassword +import net.woggioni.gbcs.common.PasswordSecurity.hashPassword import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Order import org.junit.jupiter.api.Test diff --git a/src/test/kotlin/net/woggioni/gbcs/test/NoAnonymousUserTlsServerTest.kt b/gbcs-server/src/test/kotlin/net/woggioni/gbcs/server/test/NoAnonymousUserTlsServerTest.kt similarity index 97% rename from src/test/kotlin/net/woggioni/gbcs/test/NoAnonymousUserTlsServerTest.kt rename to gbcs-server/src/test/kotlin/net/woggioni/gbcs/server/test/NoAnonymousUserTlsServerTest.kt index 38ab836..d62fe46 100644 --- a/src/test/kotlin/net/woggioni/gbcs/test/NoAnonymousUserTlsServerTest.kt +++ b/gbcs-server/src/test/kotlin/net/woggioni/gbcs/server/test/NoAnonymousUserTlsServerTest.kt @@ -1,4 +1,4 @@ -package net.woggioni.gbcs.test +package net.woggioni.gbcs.server.test import io.netty.handler.codec.http.HttpResponseStatus import net.woggioni.gbcs.api.Configuration diff --git a/src/test/kotlin/net/woggioni/gbcs/test/NoAuthServerTest.kt b/gbcs-server/src/test/kotlin/net/woggioni/gbcs/server/test/NoAuthServerTest.kt similarity index 94% rename from src/test/kotlin/net/woggioni/gbcs/test/NoAuthServerTest.kt rename to gbcs-server/src/test/kotlin/net/woggioni/gbcs/server/test/NoAuthServerTest.kt index 7e4f72b..a38d65f 100644 --- a/src/test/kotlin/net/woggioni/gbcs/test/NoAuthServerTest.kt +++ b/gbcs-server/src/test/kotlin/net/woggioni/gbcs/server/test/NoAuthServerTest.kt @@ -1,11 +1,11 @@ -package net.woggioni.gbcs.test +package net.woggioni.gbcs.server.test import io.netty.handler.codec.http.HttpResponseStatus import net.woggioni.gbcs.api.Configuration -import net.woggioni.gbcs.base.Xml -import net.woggioni.gbcs.cache.FileSystemCacheConfiguration -import net.woggioni.gbcs.configuration.Serializer -import net.woggioni.gbcs.utils.NetworkUtils +import net.woggioni.gbcs.common.Xml +import net.woggioni.gbcs.server.cache.FileSystemCacheConfiguration +import net.woggioni.gbcs.server.configuration.Serializer +import net.woggioni.gbcs.server.test.utils.NetworkUtils import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Order import org.junit.jupiter.api.Test diff --git a/src/test/kotlin/net/woggioni/gbcs/test/TlsServerTest.kt b/gbcs-server/src/test/kotlin/net/woggioni/gbcs/server/test/TlsServerTest.kt similarity index 99% rename from src/test/kotlin/net/woggioni/gbcs/test/TlsServerTest.kt rename to gbcs-server/src/test/kotlin/net/woggioni/gbcs/server/test/TlsServerTest.kt index c56cdf1..ecef412 100644 --- a/src/test/kotlin/net/woggioni/gbcs/test/TlsServerTest.kt +++ b/gbcs-server/src/test/kotlin/net/woggioni/gbcs/server/test/TlsServerTest.kt @@ -1,4 +1,4 @@ -package net.woggioni.gbcs.test +package net.woggioni.gbcs.server.test import io.netty.handler.codec.http.HttpResponseStatus import net.woggioni.gbcs.api.Configuration diff --git a/src/test/kotlin/net/woggioni/gbcs/test/X500NameTest.kt b/gbcs-server/src/test/kotlin/net/woggioni/gbcs/server/test/X500NameTest.kt similarity index 93% rename from src/test/kotlin/net/woggioni/gbcs/test/X500NameTest.kt rename to gbcs-server/src/test/kotlin/net/woggioni/gbcs/server/test/X500NameTest.kt index fa847a7..1c89bec 100644 --- a/src/test/kotlin/net/woggioni/gbcs/test/X500NameTest.kt +++ b/gbcs-server/src/test/kotlin/net/woggioni/gbcs/server/test/X500NameTest.kt @@ -1,4 +1,4 @@ -package net.woggioni.gbcs.test +package net.woggioni.gbcs.server.test import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Test diff --git a/src/test/resources/logback.xml b/gbcs-server/src/test/resources/logback.xml similarity index 100% rename from src/test/resources/logback.xml rename to gbcs-server/src/test/resources/logback.xml diff --git a/src/test/resources/net/woggioni/gbcs/test/gbcs-default.xml b/gbcs-server/src/test/resources/net/woggioni/gbcs/server/test/gbcs-default.xml similarity index 64% rename from src/test/resources/net/woggioni/gbcs/test/gbcs-default.xml rename to gbcs-server/src/test/resources/net/woggioni/gbcs/server/test/gbcs-default.xml index 0a85a8f..1cba4b9 100644 --- a/src/test/resources/net/woggioni/gbcs/test/gbcs-default.xml +++ b/gbcs-server/src/test/resources/net/woggioni/gbcs/server/test/gbcs-default.xml @@ -1,7 +1,7 @@ + xmlns:gbcs="urn:net.woggioni.gbcs.server" + xs:schemaLocation="urn:net.woggioni.gbcs.server jpms://net.woggioni.gbcs.server/net/woggioni/gbcs/server/schema/gbcs.xsd"> diff --git a/src/test/resources/net/woggioni/gbcs/test/gbcs-memcached.xml b/gbcs-server/src/test/resources/net/woggioni/gbcs/server/test/gbcs-memcached.xml similarity index 51% rename from src/test/resources/net/woggioni/gbcs/test/gbcs-memcached.xml rename to gbcs-server/src/test/resources/net/woggioni/gbcs/server/test/gbcs-memcached.xml index bc04186..5318dfe 100644 --- a/src/test/resources/net/woggioni/gbcs/test/gbcs-memcached.xml +++ b/gbcs-server/src/test/resources/net/woggioni/gbcs/server/test/gbcs-memcached.xml @@ -1,8 +1,8 @@ + xmlns:gbcs="urn:net.woggioni.gbcs.server" + xmlns:gbcs-memcached="urn:net.woggioni.gbcs.server.memcached" + xs:schemaLocation="urn:net.woggioni.gbcs.server.memcached jpms://net.woggioni.gbcs.server.memcached/net/woggioni/gbcs/server/memcached/schema/gbcs-memcached.xsd urn:net.woggioni.gbcs.server jpms://net.woggioni.gbcs.server/net/woggioni/gbcs/server/schema/gbcs.xsd"> diff --git a/src/test/resources/net/woggioni/gbcs/test/gbcs-tls.xml b/gbcs-server/src/test/resources/net/woggioni/gbcs/server/test/gbcs-tls.xml similarity index 90% rename from src/test/resources/net/woggioni/gbcs/test/gbcs-tls.xml rename to gbcs-server/src/test/resources/net/woggioni/gbcs/server/test/gbcs-tls.xml index 32a7eb1..e43b71c 100644 --- a/src/test/resources/net/woggioni/gbcs/test/gbcs-tls.xml +++ b/gbcs-server/src/test/resources/net/woggioni/gbcs/server/test/gbcs-tls.xml @@ -1,7 +1,7 @@ + xmlns:gbcs="urn:net.woggioni.gbcs.server" + xs:schemaLocation="urn:net.woggioni.gbcs.server jpms://net.woggioni.gbcs.server/net/woggioni/gbcs/server/schema/gbcs.xsd"> diff --git a/gradle.properties b/gradle.properties index 83092ab..cf9f63b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,9 +2,11 @@ org.gradle.configuration-cache=false org.gradle.parallel=true org.gradle.caching=true -gbcs.version = 0.0.1 +gbcs.version = 0.0.8 -lys.version = 2025.01.10 +lys.version = 2025.01.17 gitea.maven.url = https://gitea.woggioni.net/api/packages/woggioni/maven docker.registry.url=gitea.woggioni.net + +jpms-check.configurationName = runtimeClasspath diff --git a/settings.gradle b/settings.gradle index d3c0b55..9bbee00 100644 --- a/settings.gradle +++ b/settings.gradle @@ -27,9 +27,9 @@ dependencyResolutionManagement { rootProject.name = 'gbcs' include 'gbcs-api' -include 'gbcs-base' -include 'gbcs-memcached' +include 'gbcs-common' +include 'gbcs-server-memcached' include 'gbcs-cli' include 'docker' include 'gbcs-client' - +include 'gbcs-server' diff --git a/src/main/resources/META-INF/services/net.woggioni.gbcs.api.CacheProvider b/src/main/resources/META-INF/services/net.woggioni.gbcs.api.CacheProvider deleted file mode 100644 index c396440..0000000 --- a/src/main/resources/META-INF/services/net.woggioni.gbcs.api.CacheProvider +++ /dev/null @@ -1 +0,0 @@ -net.woggioni.gbcs.cache.FileSystemCacheProvider \ No newline at end of file