Merge branch '7.0.x'

This commit is contained in:
Sam Brannen
2026-06-05 15:15:19 +02:00
2 changed files with 19 additions and 2 deletions
@@ -19,6 +19,7 @@ package org.springframework.scheduling.support;
import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Objects;
import java.util.TimeZone;
import org.jspecify.annotations.Nullable;
@@ -145,12 +146,13 @@ public class CronTrigger implements Trigger {
@Override
public boolean equals(@Nullable Object other) {
return (this == other || (other instanceof CronTrigger that &&
this.expression.equals(that.expression)));
this.expression.equals(that.expression) &&
Objects.equals(this.zoneId, that.zoneId)));
}
@Override
public int hashCode() {
return this.expression.hashCode();
return Objects.hash(this.expression, this.zoneId);
}
@Override
@@ -16,6 +16,7 @@
package org.springframework.scheduling.support;
import java.time.ZoneId;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
@@ -746,6 +747,20 @@ class CronTriggerTests {
assertThat(nextExecutionTime).isEqualTo(this.calendar.getTime());
}
@Test
void equalsAndHashCodeConsiderZoneId() {
String expression = "0 0 9 * * *";
CronTrigger amsterdam1 = new CronTrigger(expression, ZoneId.of("Europe/Amsterdam"));
CronTrigger amsterdam2 = new CronTrigger(expression, ZoneId.of("Europe/Amsterdam"));
CronTrigger newYork = new CronTrigger(expression, ZoneId.of("America/New_York"));
assertThat(amsterdam1)
.isEqualTo(amsterdam2)
.hasSameHashCodeAs(amsterdam2)
.isNotEqualTo(newYork)
.doesNotHaveSameHashCodeAs(newYork);
}
private static void roundup(Calendar calendar) {
calendar.add(Calendar.SECOND, 1);