From 2c01e1ee1a4a15ee30441e60fb3112201ceb040e Mon Sep 17 00:00:00 2001 From: Peter-Josef Meisch Date: Sat, 7 Mar 2026 18:25:44 +0100 Subject: [PATCH] Polishing --- .../elasticsearch/elasticsearch-new.adoc | 1 + .../elc/ElasticsearchObservationContext.java | 10 +++---- .../core/AbstractElasticsearchTemplate.java | 25 ++++++++-------- ...AbstractReactiveElasticsearchTemplate.java | 30 +++++++++---------- ...asticsearchObservationConventionTests.java | 8 ++--- ...icsearchObservationDocumentationTests.java | 16 +++++----- .../elc/ObservabilityIntegrationTests.java | 6 ++-- 7 files changed, 47 insertions(+), 49 deletions(-) diff --git a/src/main/antora/modules/ROOT/pages/elasticsearch/elasticsearch-new.adoc b/src/main/antora/modules/ROOT/pages/elasticsearch/elasticsearch-new.adoc index 147f59028..a6a407111 100644 --- a/src/main/antora/modules/ROOT/pages/elasticsearch/elasticsearch-new.adoc +++ b/src/main/antora/modules/ROOT/pages/elasticsearch/elasticsearch-new.adoc @@ -7,6 +7,7 @@ * Upgrade to Elasticsearch 9.3.1 * Add support to use `IndexCoordinates` as repository query parameter * Add support for includeNamedQueriesScore in Query +* Add support for Micrometer observation. [[new-features.6-0-0]] == New in Spring Data Elasticsearch 6.0 diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/ElasticsearchObservationContext.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/ElasticsearchObservationContext.java index 41222d90f..c1bb0fe2e 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/ElasticsearchObservationContext.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/ElasticsearchObservationContext.java @@ -15,11 +15,11 @@ */ package org.springframework.data.elasticsearch.client.elc; +import io.micrometer.observation.Observation; + import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; -import io.micrometer.observation.Observation; - /** * {@link Observation.Context} for Spring Data Elasticsearch operations. One instance is created per observed operation. * It carries contextual data that conventions use to produce observation names and key-values. @@ -30,10 +30,8 @@ import io.micrometer.observation.Observation; public class ElasticsearchObservationContext extends Observation.Context { private final ElasticsearchOperationName operationName; - @Nullable - private final IndexCoordinates indexCoordinates; - @Nullable - private Integer batchSize; + @Nullable private final IndexCoordinates indexCoordinates; + @Nullable private Integer batchSize; public ElasticsearchObservationContext(ElasticsearchOperationName operationName, @Nullable IndexCoordinates indexCoordinates) { diff --git a/src/main/java/org/springframework/data/elasticsearch/core/AbstractElasticsearchTemplate.java b/src/main/java/org/springframework/data/elasticsearch/core/AbstractElasticsearchTemplate.java index 6d1ffc13a..13962f7c2 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/AbstractElasticsearchTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/AbstractElasticsearchTemplate.java @@ -15,6 +15,17 @@ */ package org.springframework.data.elasticsearch.core; +import io.micrometer.observation.ObservationRegistry; + +import java.time.Duration; +import java.util.Arrays; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.Objects; +import java.util.concurrent.CompletableFuture; +import java.util.stream.Collectors; + import org.jspecify.annotations.Nullable; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; @@ -51,17 +62,6 @@ import org.springframework.data.util.Streamable; import org.springframework.util.Assert; import org.springframework.util.StringUtils; -import java.time.Duration; -import java.util.Arrays; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; -import java.util.Objects; -import java.util.concurrent.CompletableFuture; -import java.util.stream.Collectors; - -import io.micrometer.observation.ObservationRegistry; - /** * This class contains methods that are common to different implementations of the {@link ElasticsearchOperations} * interface that use different clients, like the different Java clients from Elasticsearch or some external @@ -194,8 +194,7 @@ public abstract class AbstractElasticsearchTemplate implements ElasticsearchOper * * @param copy the new template instance to customize */ - protected void customizeCopy(AbstractElasticsearchTemplate copy) { - } + protected void customizeCopy(AbstractElasticsearchTemplate copy) {} /** * logs the versions of the different Elasticsearch components. diff --git a/src/main/java/org/springframework/data/elasticsearch/core/AbstractReactiveElasticsearchTemplate.java b/src/main/java/org/springframework/data/elasticsearch/core/AbstractReactiveElasticsearchTemplate.java index a485ce10b..3a502acdc 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/AbstractReactiveElasticsearchTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/AbstractReactiveElasticsearchTemplate.java @@ -15,6 +15,18 @@ */ package org.springframework.data.elasticsearch.core; +import io.micrometer.observation.ObservationRegistry; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; +import reactor.core.publisher.Sinks; +import reactor.util.function.Tuple2; + +import java.time.Duration; +import java.util.Collection; +import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.stream.Collectors; + import org.jspecify.annotations.Nullable; import org.reactivestreams.Subscriber; import org.reactivestreams.Subscription; @@ -48,18 +60,6 @@ import org.springframework.data.elasticsearch.support.VersionInfo; import org.springframework.data.mapping.callback.ReactiveEntityCallbacks; import org.springframework.util.Assert; -import java.time.Duration; -import java.util.Collection; -import java.util.List; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.stream.Collectors; - -import io.micrometer.observation.ObservationRegistry; -import reactor.core.publisher.Flux; -import reactor.core.publisher.Mono; -import reactor.core.publisher.Sinks; -import reactor.util.function.Tuple2; - /** * Base class keeping common code for implementations of the {@link ReactiveElasticsearchOperations} interface * independent of the used client. @@ -185,8 +185,7 @@ abstract public class AbstractReactiveElasticsearchTemplate * * @param copy the new template instance to customize */ - protected void customizeCopy(AbstractReactiveElasticsearchTemplate copy) { - } + protected void customizeCopy(AbstractReactiveElasticsearchTemplate copy) {} /** * logs the versions of the different Elasticsearch components. @@ -285,8 +284,7 @@ abstract public class AbstractReactiveElasticsearchTemplate sink.tryEmitComplete(); } }) - .subscribe(v -> { - }, error -> { + .subscribe(v -> {}, error -> { if (subscription != null) { subscription.cancel(); } diff --git a/src/test/java/org/springframework/data/elasticsearch/client/elc/DefaultElasticsearchObservationConventionTests.java b/src/test/java/org/springframework/data/elasticsearch/client/elc/DefaultElasticsearchObservationConventionTests.java index 366fb876e..5218c691d 100644 --- a/src/test/java/org/springframework/data/elasticsearch/client/elc/DefaultElasticsearchObservationConventionTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/client/elc/DefaultElasticsearchObservationConventionTests.java @@ -17,14 +17,14 @@ package org.springframework.data.elasticsearch.client.elc; import static org.assertj.core.api.Assertions.*; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; - import io.micrometer.common.KeyValue; import io.micrometer.common.KeyValues; import io.micrometer.observation.Observation; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; + /** * Unit tests for {@link DefaultElasticsearchObservationConvention}. * diff --git a/src/test/java/org/springframework/data/elasticsearch/client/elc/ElasticsearchObservationDocumentationTests.java b/src/test/java/org/springframework/data/elasticsearch/client/elc/ElasticsearchObservationDocumentationTests.java index 0f100dcfe..11b8b388f 100644 --- a/src/test/java/org/springframework/data/elasticsearch/client/elc/ElasticsearchObservationDocumentationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/client/elc/ElasticsearchObservationDocumentationTests.java @@ -17,20 +17,20 @@ package org.springframework.data.elasticsearch.client.elc; import static org.assertj.core.api.Assertions.*; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; - -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - import io.micrometer.common.docs.KeyName; import io.micrometer.observation.Observation; import io.micrometer.observation.ObservationRegistry; import io.micrometer.observation.tck.TestObservationRegistry; import io.micrometer.observation.tck.TestObservationRegistryAssert; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; + /** * Tests for {@link ElasticsearchObservation} and the end-to-end observation lifecycle. * diff --git a/src/test/java/org/springframework/data/elasticsearch/client/elc/ObservabilityIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/client/elc/ObservabilityIntegrationTests.java index 4fcb36925..83ad31086 100644 --- a/src/test/java/org/springframework/data/elasticsearch/client/elc/ObservabilityIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/client/elc/ObservabilityIntegrationTests.java @@ -140,8 +140,10 @@ class ObservabilityIntegrationTests { @Document(indexName = "#{@indexNameProvider.indexName()}") static class SampleEntity { - @Nullable @Id private String id; - @Nullable @Field(type = FieldType.Text) private String message; + @Nullable + @Id private String id; + @Nullable + @Field(type = FieldType.Text) private String message; @Nullable public String getId() {