Skip to content

Commit c12d93c

Browse files
divconsbrannen
authored andcommitted
Polish ServletWebRequest and DefaultServerWebExchange
- The return values of ServletWebRequest.validateIfUnmodifiedSince and DefaultServerWebExchange.validateIfUnmodifiedSince are not used. So I think that it is better to remove the return statements. - Add missing @nullable declarations to eTag method parameters. - Simplify if statements Closes gh-29460
1 parent ca6acfe commit c12d93c

File tree

2 files changed

+15
-22
lines changed

2 files changed

+15
-22
lines changed

spring-web/src/main/java/org/springframework/web/context/request/ServletWebRequest.java

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -232,10 +232,7 @@ else if (validateIfUnmodifiedSince(lastModifiedTimestamp)) {
232232

233233
private boolean validateIfMatch(@Nullable String eTag) {
234234
Enumeration<String> ifMatchHeaders = getRequest().getHeaders(HttpHeaders.IF_MATCH);
235-
if (SAFE_METHODS.contains(getRequest().getMethod())) {
236-
return false;
237-
}
238-
if (!ifMatchHeaders.hasMoreElements()) {
235+
if (SAFE_METHODS.contains(getRequest().getMethod()) || !ifMatchHeaders.hasMoreElements()) {
239236
return false;
240237
}
241238
this.notModified = matchRequestedETags(ifMatchHeaders, eTag, false);
@@ -308,7 +305,7 @@ private boolean eTagWeakMatch(@Nullable String first, @Nullable String second) {
308305
return first.equals(second);
309306
}
310307

311-
private void updateResponseStateChanging(String eTag, long lastModifiedTimestamp) {
308+
private void updateResponseStateChanging(@Nullable String eTag, long lastModifiedTimestamp) {
312309
if (this.notModified && getResponse() != null) {
313310
getResponse().setStatus(HttpStatus.PRECONDITION_FAILED.value());
314311
}
@@ -329,20 +326,18 @@ private boolean validateIfUnmodifiedSince(long lastModifiedTimestamp) {
329326
return true;
330327
}
331328

332-
private boolean validateIfModifiedSince(long lastModifiedTimestamp) {
329+
private void validateIfModifiedSince(long lastModifiedTimestamp) {
333330
if (lastModifiedTimestamp < 0) {
334-
return false;
331+
return;
335332
}
336333
long ifModifiedSince = parseDateHeader(HttpHeaders.IF_MODIFIED_SINCE);
337-
if (ifModifiedSince == -1) {
338-
return false;
334+
if (ifModifiedSince != -1) {
335+
// We will perform this validation...
336+
this.notModified = ifModifiedSince >= (lastModifiedTimestamp / 1000 * 1000);
339337
}
340-
// We will perform this validation...
341-
this.notModified = ifModifiedSince >= (lastModifiedTimestamp / 1000 * 1000);
342-
return true;
343338
}
344339

345-
private void updateResponseIdempotent(String eTag, long lastModifiedTimestamp) {
340+
private void updateResponseIdempotent(@Nullable String eTag, long lastModifiedTimestamp) {
346341
if (getResponse() != null) {
347342
boolean isHttpGetOrHead = SAFE_METHODS.contains(getRequest().getMethod());
348343
if (this.notModified) {
@@ -353,7 +348,7 @@ private void updateResponseIdempotent(String eTag, long lastModifiedTimestamp) {
353348
}
354349
}
355350

356-
private void addCachingResponseHeaders(String eTag, long lastModifiedTimestamp) {
351+
private void addCachingResponseHeaders(@Nullable String eTag, long lastModifiedTimestamp) {
357352
if (SAFE_METHODS.contains(getRequest().getMethod())) {
358353
if (lastModifiedTimestamp > 0 && parseDateValue(getResponse().getHeader(HttpHeaders.LAST_MODIFIED)) == -1) {
359354
getResponse().setDateHeader(HttpHeaders.LAST_MODIFIED, lastModifiedTimestamp);

spring-web/src/main/java/org/springframework/web/server/adapter/DefaultServerWebExchange.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,7 @@ private boolean eTagWeakMatch(@Nullable String first, @Nullable String second) {
346346
return first.equals(second);
347347
}
348348

349-
private void updateResponseStateChanging(String eTag, Instant lastModified) {
349+
private void updateResponseStateChanging(@Nullable String eTag, Instant lastModified) {
350350
if (this.notModified) {
351351
getResponse().setStatusCode(HttpStatus.PRECONDITION_FAILED);
352352
}
@@ -401,17 +401,15 @@ private boolean validateIfUnmodifiedSince(Instant lastModified) {
401401
return true;
402402
}
403403

404-
private boolean validateIfModifiedSince(Instant lastModified) {
404+
private void validateIfModifiedSince(Instant lastModified) {
405405
if (lastModified.isBefore(Instant.EPOCH)) {
406-
return false;
406+
return;
407407
}
408408
long ifModifiedSince = getRequestHeaders().getIfModifiedSince();
409-
if (ifModifiedSince == -1) {
410-
return false;
409+
if (ifModifiedSince != -1) {
410+
// We will perform this validation...
411+
this.notModified = ChronoUnit.SECONDS.between(lastModified, Instant.ofEpochMilli(ifModifiedSince)) >= 0;
411412
}
412-
// We will perform this validation...
413-
this.notModified = ChronoUnit.SECONDS.between(lastModified, Instant.ofEpochMilli(ifModifiedSince)) >= 0;
414-
return true;
415413
}
416414

417415
@Override

0 commit comments

Comments
 (0)