From be900776582ad32c2f1491541ce6e9051b0004c5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 23 Aug 2024 08:03:10 +0200 Subject: [PATCH] Bump com.github.zafarkhaja:java-semver from 0.9.0 to 0.10.2 (#17925) * Bump com.github.zafarkhaja:java-semver from 0.9.0 to 0.10.2 Bumps [com.github.zafarkhaja:java-semver](https://github.com/zafarkhaja/jsemver) from 0.9.0 to 0.10.2. - [Release notes](https://github.com/zafarkhaja/jsemver/releases) - [Changelog](https://github.com/zafarkhaja/jsemver/blob/master/CHANGELOG.md) - [Commits](https://github.com/zafarkhaja/jsemver/compare/v0.9.0...v0.10.2) --- updated-dependencies: - dependency-name: com.github.zafarkhaja:java-semver dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * refactor all usages of deprecated java semver methods, remove unused code * add changelog * address review comments --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Kay Roepke Co-authored-by: Bernd Ahlers --- .../elasticsearch7/Elasticsearch7Plugin.java | 6 +- .../elasticsearch7/NodeAdapterES7Test.java | 4 +- .../opensearch2/OpenSearch2Plugin.java | 9 +- .../opensearch2/NodeAdapterOS2Test.java | 4 +- .../views/EnterpriseMetadataSummary.java | 11 ++- .../search/views/PluginMetadataSummary.java | 2 +- .../database/MongoDBVersionCheck.java | 6 +- .../graylog2/indexer/cluster/NodeAdapter.java | 2 +- .../graylog2/jackson/VersionDeserializer.java | 5 +- .../periodical/ESVersionCheckPeriodical.java | 8 +- .../periodical/VersionCheckThread.java | 8 +- .../java/org/graylog2/plugin/Version.java | 91 ++++++------------- .../system/GettingStartedResource.java | 18 ++-- .../org/graylog2/storage/SearchVersion.java | 14 ++- .../storage/versionprobe/VersionProbe.java | 3 +- .../ContainerMatrixTestEngine.java | 2 +- .../testing/containermatrix/SearchServer.java | 3 +- .../converters/MajorVersionConverterTest.java | 4 +- .../DetectedSearchVersionValidatorTest.java | 14 +-- .../contentpacks/model/ContentPackTest.java | 2 +- .../jackson/VersionDeserializerTest.java | 6 +- .../jackson/VersionSerializerTest.java | 4 +- .../ESVersionCheckPeriodicalTest.java | 8 +- .../java/org/graylog2/plugin/VersionTest.java | 34 ------- .../graylog2/storage/SearchVersionTest.java | 2 +- .../SupportedSearchVersionFilterTest.java | 15 ++- pom.xml | 2 +- 27 files changed, 109 insertions(+), 178 deletions(-) diff --git a/graylog-storage-elasticsearch7/src/main/java/org/graylog/storage/elasticsearch7/Elasticsearch7Plugin.java b/graylog-storage-elasticsearch7/src/main/java/org/graylog/storage/elasticsearch7/Elasticsearch7Plugin.java index dd0ba7874748..4f295d194e89 100644 --- a/graylog-storage-elasticsearch7/src/main/java/org/graylog/storage/elasticsearch7/Elasticsearch7Plugin.java +++ b/graylog-storage-elasticsearch7/src/main/java/org/graylog/storage/elasticsearch7/Elasticsearch7Plugin.java @@ -16,22 +16,22 @@ */ package org.graylog.storage.elasticsearch7; +import com.github.zafarkhaja.semver.Version; import com.google.common.collect.ImmutableSet; +import jakarta.inject.Inject; import org.graylog2.featureflag.FeatureFlags; import org.graylog2.plugin.Plugin; import org.graylog2.plugin.PluginMetaData; import org.graylog2.plugin.PluginModule; import org.graylog2.storage.SearchVersion; -import jakarta.inject.Inject; - import java.util.Collection; import static org.graylog2.indexer.Constants.COMPOSABLE_INDEX_TEMPLATES_FEATURE; public class Elasticsearch7Plugin implements Plugin { public static final SearchVersion SUPPORTED_ES_VERSION = SearchVersion.elasticsearch(7, 0, 0); - public static final SearchVersion SUPPORTED_OPENSEARCH_VERSION = SearchVersion.create(SearchVersion.Distribution.OPENSEARCH, com.github.zafarkhaja.semver.Version.forIntegers(1, 0, 0)); + public static final SearchVersion SUPPORTED_OPENSEARCH_VERSION = SearchVersion.create(SearchVersion.Distribution.OPENSEARCH, Version.of(1, 0, 0)); @Inject private FeatureFlags featureFlags; diff --git a/graylog-storage-elasticsearch7/src/test/java/org/graylog/storage/elasticsearch7/NodeAdapterES7Test.java b/graylog-storage-elasticsearch7/src/test/java/org/graylog/storage/elasticsearch7/NodeAdapterES7Test.java index 75486b37aed6..f9f6e4c888ed 100644 --- a/graylog-storage-elasticsearch7/src/test/java/org/graylog/storage/elasticsearch7/NodeAdapterES7Test.java +++ b/graylog-storage-elasticsearch7/src/test/java/org/graylog/storage/elasticsearch7/NodeAdapterES7Test.java @@ -56,7 +56,7 @@ void testElasticsearchVersionFetching() throws IOException { assertThat(toTest.version()) .isNotEmpty() - .contains(SearchVersion.create(SearchVersion.Distribution.ELASTICSEARCH, Version.valueOf("7.10.2"))); + .contains(SearchVersion.create(SearchVersion.Distribution.ELASTICSEARCH, Version.parse("7.10.2"))); } @@ -71,7 +71,7 @@ void testOpensearchVersionFetching() throws IOException { assertThat(toTest.version()) .isNotEmpty() - .contains(SearchVersion.create(SearchVersion.Distribution.OPENSEARCH, Version.valueOf("1.3.1"))); + .contains(SearchVersion.create(SearchVersion.Distribution.OPENSEARCH, Version.parse("1.3.1"))); } diff --git a/graylog-storage-opensearch2/src/main/java/org/graylog/storage/opensearch2/OpenSearch2Plugin.java b/graylog-storage-opensearch2/src/main/java/org/graylog/storage/opensearch2/OpenSearch2Plugin.java index 39b9b9053ae2..da65fd99e616 100644 --- a/graylog-storage-opensearch2/src/main/java/org/graylog/storage/opensearch2/OpenSearch2Plugin.java +++ b/graylog-storage-opensearch2/src/main/java/org/graylog/storage/opensearch2/OpenSearch2Plugin.java @@ -16,27 +16,26 @@ */ package org.graylog.storage.opensearch2; +import com.github.zafarkhaja.semver.Version; import com.google.common.collect.ImmutableSet; +import jakarta.inject.Inject; import org.graylog2.featureflag.FeatureFlags; import org.graylog2.plugin.Plugin; import org.graylog2.plugin.PluginMetaData; import org.graylog2.plugin.PluginModule; import org.graylog2.storage.SearchVersion; -import jakarta.inject.Inject; - import java.util.Collection; import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; -import static com.github.zafarkhaja.semver.Version.forIntegers; import static org.graylog2.indexer.Constants.COMPOSABLE_INDEX_TEMPLATES_FEATURE; public class OpenSearch2Plugin implements Plugin { public static final Set SUPPORTED_OS_VERSIONS = ImmutableSet.of( - SearchVersion.create(SearchVersion.Distribution.OPENSEARCH, forIntegers(2, 0, 0)), - SearchVersion.create(SearchVersion.Distribution.DATANODE, forIntegers(5, 0, 0)) + SearchVersion.create(SearchVersion.Distribution.OPENSEARCH, Version.of(2, 0, 0)), + SearchVersion.create(SearchVersion.Distribution.DATANODE, Version.of(5, 0, 0)) ); @Inject diff --git a/graylog-storage-opensearch2/src/test/java/org/graylog/storage/opensearch2/NodeAdapterOS2Test.java b/graylog-storage-opensearch2/src/test/java/org/graylog/storage/opensearch2/NodeAdapterOS2Test.java index c80245dabea1..0d657b776a01 100644 --- a/graylog-storage-opensearch2/src/test/java/org/graylog/storage/opensearch2/NodeAdapterOS2Test.java +++ b/graylog-storage-opensearch2/src/test/java/org/graylog/storage/opensearch2/NodeAdapterOS2Test.java @@ -56,7 +56,7 @@ void testElasticsearchVersionFetching() throws IOException { assertThat(toTest.version()) .isNotEmpty() - .contains(SearchVersion.create(SearchVersion.Distribution.ELASTICSEARCH, Version.valueOf("7.10.2"))); + .contains(SearchVersion.create(SearchVersion.Distribution.ELASTICSEARCH, Version.parse("7.10.2"))); } @@ -71,7 +71,7 @@ void testOpensearchVersionFetching() throws IOException { assertThat(toTest.version()) .isNotEmpty() - .contains(SearchVersion.create(SearchVersion.Distribution.OPENSEARCH, Version.valueOf("1.3.1"))); + .contains(SearchVersion.create(SearchVersion.Distribution.OPENSEARCH, Version.parse("1.3.1"))); } diff --git a/graylog2-server/src/main/java/org/graylog/plugins/views/search/views/EnterpriseMetadataSummary.java b/graylog2-server/src/main/java/org/graylog/plugins/views/search/views/EnterpriseMetadataSummary.java index dc73d577dba3..f95444d03452 100644 --- a/graylog2-server/src/main/java/org/graylog/plugins/views/search/views/EnterpriseMetadataSummary.java +++ b/graylog2-server/src/main/java/org/graylog/plugins/views/search/views/EnterpriseMetadataSummary.java @@ -17,7 +17,6 @@ package org.graylog.plugins.views.search.views; import com.github.zafarkhaja.semver.Version; - import jakarta.inject.Singleton; import java.net.URI; @@ -47,7 +46,7 @@ public URI url() { @Override public Version version() { - return Version.valueOf("3.1.0"); + return Version.parse("3.1.0"); } @Override @@ -57,9 +56,13 @@ public String description() { @Override public boolean equals(Object obj) { - if (this == obj) return true; + if (this == obj) { + return true; + } - if (obj == null || getClass() != obj.getClass()) return false; + if (obj == null || getClass() != obj.getClass()) { + return false; + } final EnterpriseMetadataSummary that = (EnterpriseMetadataSummary) obj; diff --git a/graylog2-server/src/main/java/org/graylog/plugins/views/search/views/PluginMetadataSummary.java b/graylog2-server/src/main/java/org/graylog/plugins/views/search/views/PluginMetadataSummary.java index 7131e63880cb..68f228442fe7 100644 --- a/graylog2-server/src/main/java/org/graylog/plugins/views/search/views/PluginMetadataSummary.java +++ b/graylog2-server/src/main/java/org/graylog/plugins/views/search/views/PluginMetadataSummary.java @@ -68,6 +68,6 @@ public static PluginMetadataSummary create( @JsonProperty("version") String version, @JsonProperty("description") String description ) { - return new AutoValue_PluginMetadataSummary(uniqueId, name, author, url, Version.valueOf(version), description); + return new AutoValue_PluginMetadataSummary(uniqueId, name, author, url, Version.parse(version), description); } } diff --git a/graylog2-server/src/main/java/org/graylog2/database/MongoDBVersionCheck.java b/graylog2-server/src/main/java/org/graylog2/database/MongoDBVersionCheck.java index 4b7b3aa5ba3b..0738fb236269 100644 --- a/graylog2-server/src/main/java/org/graylog2/database/MongoDBVersionCheck.java +++ b/graylog2-server/src/main/java/org/graylog2/database/MongoDBVersionCheck.java @@ -32,7 +32,7 @@ public class MongoDBVersionCheck { private static final Logger LOG = LoggerFactory.getLogger(MongoDBVersionCheck.class); - private static final Version MINIMUM_MONGODB_VERSION = Version.forIntegers(5, 0); + private static final Version MINIMUM_MONGODB_VERSION = Version.of(5, 0); public static Version getVersion(MongoClient mongoClient) { final MongoDatabase adminDb = mongoClient.getDatabase("admin"); @@ -56,7 +56,7 @@ public static Version getVersion(MongoClient mongoClient) { final int majorVersion = (int) versionArray.get(0); final int minorVersion = (int) versionArray.get(1); final int patchVersion = (int) versionArray.get(2); - return Version.forIntegers(majorVersion, minorVersion, patchVersion); + return Version.of(majorVersion, minorVersion, patchVersion); } else { LOG.warn("Couldn't retrieve MongoDB buildInfo"); return null; @@ -68,7 +68,7 @@ public static Version getVersion(MongoClient mongoClient) { } public static void assertCompatibleVersion(Version mongoVersion) { - if (mongoVersion != null && mongoVersion.lessThan(MINIMUM_MONGODB_VERSION)) { + if (mongoVersion != null && mongoVersion.isLowerThan(MINIMUM_MONGODB_VERSION)) { throw new PreflightCheckException( StringUtils.f("You're running MongoDB %s but Graylog requires at least MongoDB %s. Please upgrade.", mongoVersion, MINIMUM_MONGODB_VERSION)); diff --git a/graylog2-server/src/main/java/org/graylog2/indexer/cluster/NodeAdapter.java b/graylog2-server/src/main/java/org/graylog2/indexer/cluster/NodeAdapter.java index 5feff61cdc75..378102ba2dfe 100644 --- a/graylog2-server/src/main/java/org/graylog2/indexer/cluster/NodeAdapter.java +++ b/graylog2-server/src/main/java/org/graylog2/indexer/cluster/NodeAdapter.java @@ -27,7 +27,7 @@ public interface NodeAdapter { default Version parseVersion(String version) { try { - return Version.valueOf(version); + return Version.parse(version); } catch (Exception e) { throw new ElasticsearchException("Unable to parse Elasticsearch version: " + version, e); } diff --git a/graylog2-server/src/main/java/org/graylog2/jackson/VersionDeserializer.java b/graylog2-server/src/main/java/org/graylog2/jackson/VersionDeserializer.java index d4c85e7372ce..d6896fa86ec9 100644 --- a/graylog2-server/src/main/java/org/graylog2/jackson/VersionDeserializer.java +++ b/graylog2-server/src/main/java/org/graylog2/jackson/VersionDeserializer.java @@ -34,10 +34,9 @@ public VersionDeserializer() { public Version deserialize(final JsonParser p, final DeserializationContext ctxt) throws IOException { switch (p.currentTokenId()) { case JsonTokenId.ID_STRING: - final String str = p.getText().trim(); - return Version.valueOf(str); + return Version.parse(p.getText().trim()); case JsonTokenId.ID_NUMBER_INT: - return Version.forIntegers(p.getIntValue()); + return Version.of(p.getIntValue()); } throw ctxt.wrongTokenException(p, handledType(), JsonToken.VALUE_STRING, "expected String or Number"); } diff --git a/graylog2-server/src/main/java/org/graylog2/periodical/ESVersionCheckPeriodical.java b/graylog2-server/src/main/java/org/graylog2/periodical/ESVersionCheckPeriodical.java index c73aa3212d69..d4b99b85be1e 100644 --- a/graylog2-server/src/main/java/org/graylog2/periodical/ESVersionCheckPeriodical.java +++ b/graylog2-server/src/main/java/org/graylog2/periodical/ESVersionCheckPeriodical.java @@ -16,6 +16,8 @@ */ package org.graylog2.periodical; +import jakarta.inject.Inject; +import jakarta.inject.Named; import org.graylog2.configuration.IndexerHosts; import org.graylog2.notifications.Notification; import org.graylog2.notifications.NotificationService; @@ -27,10 +29,6 @@ import org.slf4j.LoggerFactory; import javax.annotation.Nullable; - -import jakarta.inject.Inject; -import jakarta.inject.Named; - import java.net.URI; import java.util.List; import java.util.Optional; @@ -122,6 +120,6 @@ public void doRun() { } private boolean compatible(SearchVersion initialElasticsearchMajorVersion, SearchVersion version) { - return initialElasticsearchMajorVersion.version().getMajorVersion() == version.version().getMajorVersion(); + return initialElasticsearchMajorVersion.version().majorVersion() == version.version().majorVersion(); } } diff --git a/graylog2-server/src/main/java/org/graylog2/periodical/VersionCheckThread.java b/graylog2-server/src/main/java/org/graylog2/periodical/VersionCheckThread.java index 2407c3d500ec..752975bd5cd4 100644 --- a/graylog2-server/src/main/java/org/graylog2/periodical/VersionCheckThread.java +++ b/graylog2-server/src/main/java/org/graylog2/periodical/VersionCheckThread.java @@ -17,8 +17,10 @@ package org.graylog2.periodical; import com.fasterxml.jackson.databind.ObjectMapper; +import com.github.zafarkhaja.semver.Version; import com.google.common.annotations.VisibleForTesting; import com.google.common.net.HttpHeaders; +import jakarta.inject.Inject; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; @@ -34,8 +36,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import jakarta.inject.Inject; - import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; @@ -114,10 +114,10 @@ public void doRun() { final VersionCheckResponse versionCheckResponse = objectMapper.readValue(response.body().byteStream(), VersionCheckResponse.class); final VersionResponse version = versionCheckResponse.version; - final com.github.zafarkhaja.semver.Version reportedVersion = com.github.zafarkhaja.semver.Version.forIntegers(version.major, version.minor, version.patch); + final Version reportedVersion = Version.of(version.major, version.minor, version.patch); LOG.debug("Version check reports current version: " + versionCheckResponse); - if (reportedVersion.greaterThan(ServerVersion.VERSION.getVersion())) { + if (reportedVersion.isHigherThan(ServerVersion.VERSION.getVersion())) { LOG.debug("Reported version is higher than ours ({}). Writing notification.", ServerVersion.VERSION); Notification notification = notificationService.buildNow() diff --git a/graylog2-server/src/main/java/org/graylog2/plugin/Version.java b/graylog2-server/src/main/java/org/graylog2/plugin/Version.java index cb27c90fe5d2..c2e0d1aa3fb7 100644 --- a/graylog2-server/src/main/java/org/graylog2/plugin/Version.java +++ b/graylog2-server/src/main/java/org/graylog2/plugin/Version.java @@ -32,32 +32,6 @@ public class Version implements Comparable { private static final Logger LOG = LoggerFactory.getLogger(Version.class); - /** - * @deprecated Use {@link #getVersion()} - */ - @Deprecated - public final int major; - /** - * @deprecated Use {@link #getVersion()} - */ - @Deprecated - public final int minor; - /** - * @deprecated Use {@link #getVersion()} - */ - @Deprecated - public final int patch; - /** - * @deprecated Use {@link #getVersion()} - */ - @Deprecated - public final String additional; - /** - * @deprecated Use {@link #getVersion()} - */ - @Deprecated - public final String abbrevCommitSha; - private final com.github.zafarkhaja.semver.Version version; /** @@ -91,14 +65,6 @@ public Version(int major, int minor, int patch, String additional, String abbrev public Version(com.github.zafarkhaja.semver.Version version) { this.version = requireNonNull(version); - - // Deprecated - this.major = version.getMajorVersion(); - this.minor = version.getMinorVersion(); - this.patch = version.getPatchVersion(); - this.additional = version.getPreReleaseVersion(); - this.abbrevCommitSha = version.getBuildMetadata(); - } /** @@ -110,7 +76,7 @@ public Version(com.github.zafarkhaja.semver.Version version) { * @return The {@link Version} instance built from the given parameters. */ public static Version from(int major, int minor, int patch) { - return new Version(com.github.zafarkhaja.semver.Version.forIntegers(major, minor, patch)); + return new Version(com.github.zafarkhaja.semver.Version.of(major, minor, patch)); } /** @@ -133,22 +99,23 @@ public static Version from(int major, int minor, int patch, String preRelease) { * @param minor The minor version component. * @param patch The patch version component. * @param preRelease The pre-release version component. - * @param buildMetadata Additional build metadata (e. g. the Git commit SHA). + * @param buildMetadata Additional build metadata (e.g. the Git commit SHA). * @return The {@link Version} instance built from the given parameters. */ - public static Version from(int major, int minor, int patch, String preRelease, String buildMetadata) { + public static Version from(long major, long minor, long patch, String preRelease, String buildMetadata) { return new Version(buildSemVer(major, minor, patch, preRelease, buildMetadata)); } - private static com.github.zafarkhaja.semver.Version buildSemVer(int major, int minor, int patch, String preRelease, String buildMetadata) { - com.github.zafarkhaja.semver.Version version = com.github.zafarkhaja.semver.Version.forIntegers(major, minor, patch); + private static com.github.zafarkhaja.semver.Version buildSemVer(long major, long minor, long patch, String preRelease, String buildMetadata) { + final com.github.zafarkhaja.semver.Version.Builder builder = new com.github.zafarkhaja.semver.Version.Builder() + .setVersionCore(major, minor, patch); if (!isNullOrEmpty(preRelease)) { - version = version.setPreReleaseVersion(preRelease); + builder.setPreReleaseVersion(preRelease); } if (!isNullOrEmpty(buildMetadata)) { - version = version.setBuildMetadata(buildMetadata); + builder.setBuildMetadata(buildMetadata); } - return version; + return builder.build(); } /** @@ -231,12 +198,12 @@ public static Version fromClasspathProperties(@Nonnull Class clazz, String pa final Properties versionProperties = new Properties(); versionProperties.load(resource.openStream()); - final com.github.zafarkhaja.semver.Version version = com.github.zafarkhaja.semver.Version.valueOf(versionProperties.getProperty(propertyName)); - final int major = version.getMajorVersion(); - final int minor = version.getMinorVersion(); - final int patch = version.getPatchVersion(); - final String qualifier = version.getPreReleaseVersion(); - final String buildMetadata = version.getBuildMetadata(); + final com.github.zafarkhaja.semver.Version version = com.github.zafarkhaja.semver.Version.parse(versionProperties.getProperty(propertyName)); + final long major = version.majorVersion(); + final long minor = version.minorVersion(); + final long patch = version.patchVersion(); + final String qualifier = version.preReleaseVersion().orElse(""); + final String buildMetadata = version.buildMetadata().orElse(""); // If the version property already contains build metadata we want to use that instead of replacing it // with the Git commit ID @@ -287,26 +254,18 @@ public String toString() { } /** - * Check if this version is higher than the passed other version. Only taking major and minor version number in account. - * - * @param other {@link Version} to compare - */ - @Deprecated - public boolean greaterMinor(Version other) { - return other.major < this.major || other.major == this.major && other.minor < this.minor; - } - - /** - * @see com.github.zafarkhaja.semver.Version#greaterThanOrEqualTo(com.github.zafarkhaja.semver.Version) + * @see com.github.zafarkhaja.semver.Version#isHigherThanOrEquivalentTo(com.github.zafarkhaja.semver.Version) */ public boolean sameOrHigher(Version other) { - if (isNullOrEmpty(version.getPreReleaseVersion())) { - return version.greaterThanOrEqualTo(other.getVersion()); + if (isNullOrEmpty(version.preReleaseVersion().orElse(""))) { + return version.isHigherThanOrEquivalentTo(other.getVersion()); } else { // If this is a pre-release version, use the major.minor.patch version for comparison with the other. // This allows plugins to require a server version of 2.1.0 and it still gets loaded on a 2.1.0-beta.2 server. // See: https://github.com/Graylog2/graylog2-server/issues/2462 - return com.github.zafarkhaja.semver.Version.valueOf(version.getNormalVersion()).greaterThanOrEqualTo(other.getVersion()); + String version1 = version.toStableVersion().toString(); + com.github.zafarkhaja.semver.Version version2 = com.github.zafarkhaja.semver.Version.parse(version1); + return version2.isHigherThanOrEquivalentTo(other.getVersion()); } } @@ -315,8 +274,12 @@ public boolean sameOrHigher(Version other) { */ @Override public boolean equals(final Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } final Version that = (Version) o; return version.equals(that.getVersion()); diff --git a/graylog2-server/src/main/java/org/graylog2/rest/resources/system/GettingStartedResource.java b/graylog2-server/src/main/java/org/graylog2/rest/resources/system/GettingStartedResource.java index 7c8ef4a905fe..58ff5297b034 100644 --- a/graylog2-server/src/main/java/org/graylog2/rest/resources/system/GettingStartedResource.java +++ b/graylog2-server/src/main/java/org/graylog2/rest/resources/system/GettingStartedResource.java @@ -19,6 +19,12 @@ import com.google.common.collect.Sets; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import jakarta.inject.Inject; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; import org.apache.shiro.authz.annotation.RequiresAuthentication; import org.graylog2.audit.AuditEventTypes; import org.graylog2.audit.jersey.AuditEvent; @@ -28,14 +34,6 @@ import org.graylog2.rest.models.system.DisplayGettingStarted; import org.graylog2.shared.rest.resources.RestResource; -import jakarta.inject.Inject; - -import jakarta.ws.rs.GET; -import jakarta.ws.rs.POST; -import jakarta.ws.rs.Path; -import jakarta.ws.rs.Produces; -import jakarta.ws.rs.core.MediaType; - import java.util.Locale; @RequiresAuthentication @@ -76,7 +74,7 @@ public void dismissGettingStarted() { private static String currentMinorVersionString() { return String.format(Locale.ENGLISH, "%d.%d", - Version.CURRENT_CLASSPATH.getVersion().getMajorVersion(), - Version.CURRENT_CLASSPATH.getVersion().getMinorVersion()); + Version.CURRENT_CLASSPATH.getVersion().majorVersion(), + Version.CURRENT_CLASSPATH.getVersion().minorVersion()); } } diff --git a/graylog2-server/src/main/java/org/graylog2/storage/SearchVersion.java b/graylog2-server/src/main/java/org/graylog2/storage/SearchVersion.java index 925a15c3f89c..6c7c7b6357b8 100644 --- a/graylog2-server/src/main/java/org/graylog2/storage/SearchVersion.java +++ b/graylog2-server/src/main/java/org/graylog2/storage/SearchVersion.java @@ -50,7 +50,11 @@ public String toString() { public abstract Version version(); public SearchVersion major() { - return create(distribution(), Version.forIntegers(version().getMajorVersion(), 0, 0)); + return create(distribution(), version().toBuilder() + .setVersionCore(version().majorVersion()) + .unsetPreReleaseVersion() + .unsetBuildMetadata() + .build()); } public boolean satisfies(final Distribution distribution, final String expression) { @@ -79,7 +83,7 @@ public static SearchVersion elasticsearch(final Version version) { } public static SearchVersion elasticsearch(final int major, final int minor, final int patch) { - return create(Distribution.ELASTICSEARCH, Version.forIntegers(major, minor, patch)); + return create(Distribution.ELASTICSEARCH, Version.of(major, minor, patch)); } public static SearchVersion opensearch(final String version) { @@ -91,7 +95,7 @@ public static SearchVersion opensearch(final Version version) { } public static SearchVersion opensearch(final int major, final int minor, final int patch) { - return create(Distribution.OPENSEARCH, Version.forIntegers(major, minor, patch)); + return create(Distribution.OPENSEARCH, Version.of(major, minor, patch)); } public static SearchVersion datanode(final int major, final int minor, final int patch) { @@ -105,7 +109,7 @@ public String encode() { public static SearchVersion decode(final String searchServerIdentifier) { final String[] parts = searchServerIdentifier.split(":"); if (parts.length == 2) { - return SearchVersion.create(Distribution.valueOf(parts[0].toUpperCase(Locale.ROOT)), Version.valueOf((parts[1]))); + return SearchVersion.create(Distribution.valueOf(parts[0].toUpperCase(Locale.ROOT)), Version.parse((parts[1]))); } else { return SearchVersion.elasticsearch(searchServerIdentifier); } @@ -129,7 +133,7 @@ public static SearchVersion create(final Distribution distribution, final Versio protected static com.github.zafarkhaja.semver.Version parseVersion(final String version) { try { - return Version.valueOf(version); + return Version.parse(version); } catch (Exception e) { throw new ElasticsearchException("Unable to parse Elasticsearch version: " + version, e); } diff --git a/graylog2-server/src/main/java/org/graylog2/storage/versionprobe/VersionProbe.java b/graylog2-server/src/main/java/org/graylog2/storage/versionprobe/VersionProbe.java index c46e8514320b..4492b666be31 100644 --- a/graylog2-server/src/main/java/org/graylog2/storage/versionprobe/VersionProbe.java +++ b/graylog2-server/src/main/java/org/graylog2/storage/versionprobe/VersionProbe.java @@ -24,6 +24,7 @@ import com.github.rholder.retry.RetryerBuilder; import com.github.rholder.retry.StopStrategies; import com.github.rholder.retry.WaitStrategies; +import com.github.zafarkhaja.semver.Version; import com.google.common.base.Strings; import jakarta.annotation.Nullable; import jakarta.inject.Inject; @@ -190,7 +191,7 @@ private OkHttpClient addAuthenticationIfPresent(URI host, OkHttpClient okHttpCli private Optional parseVersion(VersionResponse versionResponse, VersionProbeListener probeListener) { try { - final com.github.zafarkhaja.semver.Version version = com.github.zafarkhaja.semver.Version.valueOf(versionResponse.number()); + final com.github.zafarkhaja.semver.Version version = Version.parse(versionResponse.number()); return Optional.of(SearchVersion.create(versionResponse.distribution(), version)); } catch (Exception e) { probeListener.onError(String.format(Locale.ROOT, "Unable to parse version retrieved from indexer node: <%s>", versionResponse.number()), e); diff --git a/graylog2-server/src/test/java/org/graylog/testing/containermatrix/ContainerMatrixTestEngine.java b/graylog2-server/src/test/java/org/graylog/testing/containermatrix/ContainerMatrixTestEngine.java index b643774fb7f1..6cb046b66945 100644 --- a/graylog2-server/src/test/java/org/graylog/testing/containermatrix/ContainerMatrixTestEngine.java +++ b/graylog2-server/src/test/java/org/graylog/testing/containermatrix/ContainerMatrixTestEngine.java @@ -114,7 +114,7 @@ public static Optional getSearchVersionOverride() { * @return */ public static boolean isCompatible(SearchVersion override, SearchServer version) { - return version.getSearchVersion().satisfies(override.distribution(), "^" + override.version().getMajorVersion()); + return version.getSearchVersion().satisfies(override.distribution(), "^" + override.version().majorVersion()); } private Stream filterForCompatibleVersionOrDrop(SearchServer[] versions) { diff --git a/graylog2-server/src/test/java/org/graylog/testing/containermatrix/SearchServer.java b/graylog2-server/src/test/java/org/graylog/testing/containermatrix/SearchServer.java index 6f126ab32e12..121e641f0966 100644 --- a/graylog2-server/src/test/java/org/graylog/testing/containermatrix/SearchServer.java +++ b/graylog2-server/src/test/java/org/graylog/testing/containermatrix/SearchServer.java @@ -16,6 +16,7 @@ */ package org.graylog.testing.containermatrix; +import com.github.zafarkhaja.semver.Version; import org.graylog2.storage.SearchVersion; import static org.graylog2.storage.SearchVersion.Distribution.DATANODE; @@ -37,7 +38,7 @@ public enum SearchServer { private final SearchVersion searchVersion; SearchServer(final SearchVersion.Distribution distribution, final String version) { - this.searchVersion = SearchVersion.create(distribution, com.github.zafarkhaja.semver.Version.valueOf(version)); + this.searchVersion = SearchVersion.create(distribution, Version.parse(version)); } public SearchVersion getSearchVersion() { diff --git a/graylog2-server/src/test/java/org/graylog2/configuration/converters/MajorVersionConverterTest.java b/graylog2-server/src/test/java/org/graylog2/configuration/converters/MajorVersionConverterTest.java index 50eaed1fa04c..d4da8d3130d1 100644 --- a/graylog2-server/src/test/java/org/graylog2/configuration/converters/MajorVersionConverterTest.java +++ b/graylog2-server/src/test/java/org/graylog2/configuration/converters/MajorVersionConverterTest.java @@ -36,12 +36,12 @@ void convertSimpleNumber() { @Test void convertEncodedValue() { final SearchVersion version = converter.convertFrom("OPENSEARCH:1.2.0"); - assertThat(version).isEqualTo(SearchVersion.create(SearchVersion.Distribution.OPENSEARCH, Version.valueOf("1.2.0"))); + assertThat(version).isEqualTo(SearchVersion.create(SearchVersion.Distribution.OPENSEARCH, Version.parse("1.2.0"))); } @Test void testConvertToString() { - final String converted = converter.convertTo(SearchVersion.create(SearchVersion.Distribution.OPENSEARCH, Version.valueOf("1.2.0"))); + final String converted = converter.convertTo(SearchVersion.create(SearchVersion.Distribution.OPENSEARCH, Version.parse("1.2.0"))); assertThat(converted).isEqualTo("OPENSEARCH:1.2.0"); } } diff --git a/graylog2-server/src/test/java/org/graylog2/configuration/validators/DetectedSearchVersionValidatorTest.java b/graylog2-server/src/test/java/org/graylog2/configuration/validators/DetectedSearchVersionValidatorTest.java index 9d150efc4916..d3d83caff8ad 100644 --- a/graylog2-server/src/test/java/org/graylog2/configuration/validators/DetectedSearchVersionValidatorTest.java +++ b/graylog2-server/src/test/java/org/graylog2/configuration/validators/DetectedSearchVersionValidatorTest.java @@ -18,10 +18,10 @@ import com.github.joschi.jadconfig.ValidationException; import com.github.joschi.jadconfig.Validator; +import com.github.zafarkhaja.semver.Version; import org.graylog2.storage.SearchVersion; import org.junit.jupiter.api.Test; -import static com.github.zafarkhaja.semver.Version.forIntegers; import static org.graylog2.storage.SearchVersion.Distribution.DATANODE; import static org.graylog2.storage.SearchVersion.Distribution.ELASTICSEARCH; import static org.graylog2.storage.SearchVersion.Distribution.OPENSEARCH; @@ -34,19 +34,19 @@ class DetectedSearchVersionValidatorTest { @Test void validateMajorVersion() { - assertDoesNotThrow(() -> validator.validate("OS1", SearchVersion.create(OPENSEARCH, forIntegers(1, 0, 0)))); - assertDoesNotThrow(() -> validator.validate("ES7", SearchVersion.create(ELASTICSEARCH, forIntegers(7, 0, 0)))); - assertDoesNotThrow(() -> validator.validate("ES7", SearchVersion.create(DATANODE, forIntegers(5, 2, 0)))); + assertDoesNotThrow(() -> validator.validate("OS1", SearchVersion.create(OPENSEARCH, Version.of(1, 0, 0)))); + assertDoesNotThrow(() -> validator.validate("ES7", SearchVersion.create(ELASTICSEARCH, Version.of(7, 0, 0)))); + assertDoesNotThrow(() -> validator.validate("ES7", SearchVersion.create(DATANODE, Version.of(5, 2, 0)))); } @Test void testPatchVersion() { - assertDoesNotThrow(() -> validator.validate("ES7", SearchVersion.create(ELASTICSEARCH, forIntegers(7, 10, 2)))); + assertDoesNotThrow(() -> validator.validate("ES7", SearchVersion.create(ELASTICSEARCH, Version.of(7, 10, 2)))); } @Test void testInvalidCombination() { - assertThrows(ValidationException.class, () -> validator.validate("ES6", SearchVersion.create(ELASTICSEARCH, forIntegers(6, 0, 0)))); - assertThrows(ValidationException.class, () -> validator.validate("ES5", SearchVersion.create(ELASTICSEARCH, forIntegers(5, 0, 0)))); + assertThrows(ValidationException.class, () -> validator.validate("ES6", SearchVersion.create(ELASTICSEARCH, Version.of(6, 0, 0)))); + assertThrows(ValidationException.class, () -> validator.validate("ES5", SearchVersion.create(ELASTICSEARCH, Version.of(5, 0, 0)))); } } diff --git a/graylog2-server/src/test/java/org/graylog2/contentpacks/model/ContentPackTest.java b/graylog2-server/src/test/java/org/graylog2/contentpacks/model/ContentPackTest.java index d6af554be992..4e3a8209f5e5 100644 --- a/graylog2-server/src/test/java/org/graylog2/contentpacks/model/ContentPackTest.java +++ b/graylog2-server/src/test/java/org/graylog2/contentpacks/model/ContentPackTest.java @@ -90,7 +90,7 @@ private ContentPack createTestContentPack() { .vendor("Graylog, Inc.") .url(URI.create("https://www.graylog.org")) .createdAt(DateTime.parse("2018-12-17T16:18:12.000Z")) - .serverVersion(Version.valueOf("3.0.0-alpha.6-SNAPSHOT")) + .serverVersion(Version.parse("3.0.0-alpha.6-SNAPSHOT")) .parameters(ImmutableSet.of( BooleanParameter.builder().name("MY_BOOLEAN").title("My Boolean").description("Some description").build(), DoubleParameter.builder().name("MY_DOUBLE").title("My Double").description("Some description").defaultValue(Optional.of(12.34D)).build(), diff --git a/graylog2-server/src/test/java/org/graylog2/jackson/VersionDeserializerTest.java b/graylog2-server/src/test/java/org/graylog2/jackson/VersionDeserializerTest.java index 14b5175adebd..67a7ea483a38 100644 --- a/graylog2-server/src/test/java/org/graylog2/jackson/VersionDeserializerTest.java +++ b/graylog2-server/src/test/java/org/graylog2/jackson/VersionDeserializerTest.java @@ -40,13 +40,13 @@ public void setUp() throws Exception { @Test public void successfullyDeserializesString() throws IOException { final Version version = objectMapper.readValue("\"1.3.7-rc.2+build.2.b8f12d7\"", Version.class); - assertThat(version).isEqualTo(Version.valueOf("1.3.7-rc.2+build.2.b8f12d7")); + assertThat(version).isEqualTo(Version.parse("1.3.7-rc.2+build.2.b8f12d7")); } @Test public void successfullyDeserializesInteger() throws IOException { final Version version = objectMapper.readValue("5", Version.class); - assertThat(version).isEqualTo(Version.forIntegers(5)); + assertThat(version).isEqualTo(Version.of(5)); } @Test @@ -64,4 +64,4 @@ public void failsForInvalidType() throws IOException { assertThat(e).hasMessageStartingWith("Unexpected token (START_ARRAY), expected VALUE_STRING: expected String or Number"); } } -} \ No newline at end of file +} diff --git a/graylog2-server/src/test/java/org/graylog2/jackson/VersionSerializerTest.java b/graylog2-server/src/test/java/org/graylog2/jackson/VersionSerializerTest.java index aed1deb88e0a..775e47a60329 100644 --- a/graylog2-server/src/test/java/org/graylog2/jackson/VersionSerializerTest.java +++ b/graylog2-server/src/test/java/org/graylog2/jackson/VersionSerializerTest.java @@ -36,8 +36,8 @@ public void setUp() throws Exception { @Test public void successfullySerializesVersion() throws JsonProcessingException { - final Version version = Version.valueOf("1.3.7-rc.2+build.2.b8f12d7"); + final Version version = Version.parse("1.3.7-rc.2+build.2.b8f12d7"); final String s = objectMapper.writeValueAsString(version); assertThat(s).isEqualTo("\"1.3.7-rc.2+build.2.b8f12d7\""); } -} \ No newline at end of file +} diff --git a/graylog2-server/src/test/java/org/graylog2/periodical/ESVersionCheckPeriodicalTest.java b/graylog2-server/src/test/java/org/graylog2/periodical/ESVersionCheckPeriodicalTest.java index efd4f64b8b5a..965e1c7597c2 100644 --- a/graylog2-server/src/test/java/org/graylog2/periodical/ESVersionCheckPeriodicalTest.java +++ b/graylog2-server/src/test/java/org/graylog2/periodical/ESVersionCheckPeriodicalTest.java @@ -16,10 +16,10 @@ */ package org.graylog2.periodical; +import com.github.zafarkhaja.semver.Version; import org.graylog2.notifications.Notification; import org.graylog2.notifications.NotificationService; import org.graylog2.notifications.NotificationServiceImpl; -import org.graylog2.plugin.Version; import org.graylog2.plugin.periodical.Periodical; import org.graylog2.storage.SearchVersion; import org.graylog2.storage.versionprobe.VersionProbe; @@ -67,7 +67,7 @@ void doesNotDoAnythingIfVersionWasNotProbed() { @Test void createsNotificationIfCurrentVersionIsIncompatibleWithInitialOne() { - returnProbedVersion(com.github.zafarkhaja.semver.Version.forIntegers(9, 2, 3)); + returnProbedVersion(Version.of(9, 2, 3)); createPeriodical(SearchVersion.elasticsearch(8, 1, 2)).doRun(); @@ -76,7 +76,7 @@ void createsNotificationIfCurrentVersionIsIncompatibleWithInitialOne() { @Test void createsNotificationIfCurrentVersionIncompatiblyOlderThanInitialOne() { - returnProbedVersion(com.github.zafarkhaja.semver.Version.forIntegers(6, 8, 1)); + returnProbedVersion(Version.of(6, 8, 1)); createPeriodical(SearchVersion.elasticsearch(8, 1, 2)).doRun(); @@ -85,7 +85,7 @@ void createsNotificationIfCurrentVersionIncompatiblyOlderThanInitialOne() { @Test void fixesNotificationIfCurrentVersionIsIncompatibleWithInitialOne() { - returnProbedVersion(com.github.zafarkhaja.semver.Version.forIntegers(8, 2, 3)); + returnProbedVersion(Version.of(8, 2, 3)); createPeriodical(SearchVersion.elasticsearch(8, 1, 2)).doRun(); diff --git a/graylog2-server/src/test/java/org/graylog2/plugin/VersionTest.java b/graylog2-server/src/test/java/org/graylog2/plugin/VersionTest.java index 5962bc685516..4e7a26638670 100644 --- a/graylog2-server/src/test/java/org/graylog2/plugin/VersionTest.java +++ b/graylog2-server/src/test/java/org/graylog2/plugin/VersionTest.java @@ -47,40 +47,6 @@ public void testEquals() throws Exception { assertFalse(Version.from(0, 20, 0).equals(null)); } - @Test - @SuppressWarnings("deprecation") - public void testGreaterMinor() throws Exception { - Version v = Version.from(0, 20, 0); - - assertTrue(v.greaterMinor(Version.from(0, 19, 0))); - assertTrue(v.greaterMinor(Version.from(0, 18, 2))); - assertTrue(v.greaterMinor(Version.from(0, 19, 9001))); - - assertFalse(v.greaterMinor(Version.from(0, 20, 0))); - assertFalse(v.greaterMinor(Version.from(1, 0, 0))); - assertFalse(v.greaterMinor(Version.from(1, 0, 9001))); - assertFalse(v.greaterMinor(Version.from(1, 20, 0))); - assertFalse(v.greaterMinor(Version.from(1, 1, 0))); - assertFalse(v.greaterMinor(Version.from(3, 2, 1))); - - assertTrue(v.greaterMinor(Version.from(0, 19, 0, "rc.1"))); - - v = Version.from(1, 5, 0); - - assertTrue(v.greaterMinor(Version.from(0, 19, 0))); - assertTrue(v.greaterMinor(Version.from(1, 0, 0))); - assertTrue(v.greaterMinor(Version.from(0, 19, 9001))); - - assertFalse(v.greaterMinor(Version.from(1, 6, 0))); - assertFalse(v.greaterMinor(Version.from(3, 0, 0))); - assertFalse(v.greaterMinor(Version.from(1, 5, 9001))); - assertFalse(v.greaterMinor(Version.from(1, 20, 0))); - assertFalse(v.greaterMinor(Version.from(1, 20, 5))); - assertFalse(v.greaterMinor(Version.from(3, 2, 1))); - - assertTrue(v.greaterMinor(Version.from(0, 19, 0, "rc.1"))); - } - @Test public void testSameOrHigher() throws Exception { Version v = Version.from(0, 20, 2); diff --git a/graylog2-server/src/test/java/org/graylog2/storage/SearchVersionTest.java b/graylog2-server/src/test/java/org/graylog2/storage/SearchVersionTest.java index e5db75840dfc..c80bd6a91f31 100644 --- a/graylog2-server/src/test/java/org/graylog2/storage/SearchVersionTest.java +++ b/graylog2-server/src/test/java/org/graylog2/storage/SearchVersionTest.java @@ -54,6 +54,6 @@ void testEncodeDecode() { } private Version ver(final String version) { - return com.github.zafarkhaja.semver.Version.valueOf(version); + return Version.parse(version); } } diff --git a/graylog2-server/src/test/java/org/graylog2/storage/SupportedSearchVersionFilterTest.java b/graylog2-server/src/test/java/org/graylog2/storage/SupportedSearchVersionFilterTest.java index 033bfca6b0f5..a871063fe869 100644 --- a/graylog2-server/src/test/java/org/graylog2/storage/SupportedSearchVersionFilterTest.java +++ b/graylog2-server/src/test/java/org/graylog2/storage/SupportedSearchVersionFilterTest.java @@ -17,6 +17,10 @@ package org.graylog2.storage; import com.github.zafarkhaja.semver.Version; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.InternalServerErrorException; +import jakarta.ws.rs.container.ContainerRequestContext; +import jakarta.ws.rs.container.ResourceInfo; import org.graylog2.storage.providers.ElasticsearchVersionProvider; import org.junit.Before; import org.junit.Rule; @@ -25,11 +29,6 @@ import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; -import jakarta.ws.rs.GET; -import jakarta.ws.rs.InternalServerErrorException; -import jakarta.ws.rs.container.ContainerRequestContext; -import jakarta.ws.rs.container.ResourceInfo; - import java.lang.reflect.Method; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -50,9 +49,9 @@ public class SupportedSearchVersionFilterTest { @Mock private ContainerRequestContext requestContext; - private final SearchVersion openSearchV1 = SearchVersion.create(SearchVersion.Distribution.OPENSEARCH, Version.forIntegers(1, 0)); - private final SearchVersion elasticSearchV6 = SearchVersion.create(SearchVersion.Distribution.ELASTICSEARCH, Version.forIntegers(6, 0)); - private final SearchVersion elasticSearchV7 = SearchVersion.create(SearchVersion.Distribution.ELASTICSEARCH, Version.forIntegers(7, 0)); + private final SearchVersion openSearchV1 = SearchVersion.create(SearchVersion.Distribution.OPENSEARCH, Version.of(1, 0)); + private final SearchVersion elasticSearchV6 = SearchVersion.create(SearchVersion.Distribution.ELASTICSEARCH, Version.of(6, 0)); + private final SearchVersion elasticSearchV7 = SearchVersion.create(SearchVersion.Distribution.ELASTICSEARCH, Version.of(7, 0)); private SupportedSearchVersionFilter filter; @Before diff --git a/pom.xml b/pom.xml index a5f997d61a0e..5e5bbb06d151 100644 --- a/pom.xml +++ b/pom.xml @@ -131,7 +131,7 @@ 3.1.1 2.17.2 0.15.0 - 0.9.0 + 0.10.2 1.3.2 3.0.0 2.0.1