Skip to content

Commit 0bdf269

Browse files
committed
Polish ETag implementation.
GH-2552
1 parent 0d7b66a commit 0bdf269

File tree

2 files changed

+6
-8
lines changed
  • spring-data-rest-webmvc/src
    • main/java/org/springframework/data/rest/webmvc/support
    • test/java/org/springframework/data/rest/webmvc/support

2 files changed

+6
-8
lines changed

spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/support/ETag.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import java.util.Optional;
2222

2323
import org.jspecify.annotations.Nullable;
24-
2524
import org.springframework.data.mapping.PersistentEntity;
2625
import org.springframework.data.mapping.PersistentProperty;
2726
import org.springframework.data.mapping.PersistentPropertyAccessor;
@@ -58,7 +57,7 @@ private ETag(@Nullable String value) {
5857
* @return
5958
*/
6059
public static ETag from(String value) {
61-
return new ETag(value);
60+
return value == null ? ETag.NO_ETAG : new ETag(value);
6261
}
6362

6463
public static ETag from(Optional<String> value) {
@@ -136,19 +135,18 @@ public boolean matches(PersistentEntity<?, ?> entity, @Nullable Object target) {
136135
public HttpHeaders addTo(HttpHeaders headers) {
137136

138137
Assert.notNull(headers, "HttpHeaders must not be null");
139-
String stringValue = toString();
140138

141-
if (stringValue == null) {
139+
if (this == NO_ETAG) {
142140
return headers;
143141
}
144142

145-
headers.setETag(stringValue);
143+
headers.setETag(toString());
146144
return headers;
147145
}
148146

149147
@Override
150148
public @Nullable String toString() {
151-
return value == null ? null : "\"".concat(value).concat("\"");
149+
return value == null ? "NO_ETAG" : "\"".concat(value).concat("\"");
152150
}
153151

154152
/**

spring-data-rest-webmvc/src/test/java/org/springframework/data/rest/webmvc/support/ETagUnitTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ void hasValueObjectEqualsSemantics() {
8383

8484
ETag one = ETag.from("1");
8585
ETag two = ETag.from("2");
86-
ETag nullETag = ETag.from((String) null);
86+
ETag nullETag = ETag.NO_ETAG;
8787

8888
assertThat(one.equals(one)).isTrue();
8989
assertThat(one.equals(two)).isFalse();
@@ -103,7 +103,7 @@ void returnsNoEtagForEntityWithoutVersionProperty() {
103103

104104
@Test // DATAREST-160
105105
void noETagReturnsNullForToString() {
106-
assertThat(ETag.NO_ETAG.toString()).isNull();
106+
assertThat(ETag.NO_ETAG.toString()).isEqualTo("NO_ETAG");
107107
}
108108

109109
@Test // DATAREST-160

0 commit comments

Comments
 (0)