Skip to content

Commit e23971e

Browse files
committed
Merge branch '7.0.x'
2 parents 2469aae + 6ca66af commit e23971e

2 files changed

Lines changed: 19 additions & 2 deletions

File tree

spring-context/src/main/java/org/springframework/scheduling/support/CronTrigger.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.time.Instant;
2020
import java.time.ZoneId;
2121
import java.time.ZonedDateTime;
22+
import java.util.Objects;
2223
import java.util.TimeZone;
2324

2425
import org.jspecify.annotations.Nullable;
@@ -145,12 +146,13 @@ Instant determineInitialTimestamp(TriggerContext triggerContext) {
145146
@Override
146147
public boolean equals(@Nullable Object other) {
147148
return (this == other || (other instanceof CronTrigger that &&
148-
this.expression.equals(that.expression)));
149+
this.expression.equals(that.expression) &&
150+
Objects.equals(this.zoneId, that.zoneId)));
149151
}
150152

151153
@Override
152154
public int hashCode() {
153-
return this.expression.hashCode();
155+
return Objects.hash(this.expression, this.zoneId);
154156
}
155157

156158
@Override

spring-context/src/test/java/org/springframework/scheduling/support/CronTriggerTests.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package org.springframework.scheduling.support;
1818

19+
import java.time.ZoneId;
1920
import java.util.Calendar;
2021
import java.util.Date;
2122
import java.util.GregorianCalendar;
@@ -746,6 +747,20 @@ void daylightSavingMissingHour() {
746747
assertThat(nextExecutionTime).isEqualTo(this.calendar.getTime());
747748
}
748749

750+
@Test
751+
void equalsAndHashCodeConsiderZoneId() {
752+
String expression = "0 0 9 * * *";
753+
CronTrigger amsterdam1 = new CronTrigger(expression, ZoneId.of("Europe/Amsterdam"));
754+
CronTrigger amsterdam2 = new CronTrigger(expression, ZoneId.of("Europe/Amsterdam"));
755+
CronTrigger newYork = new CronTrigger(expression, ZoneId.of("America/New_York"));
756+
757+
assertThat(amsterdam1)
758+
.isEqualTo(amsterdam2)
759+
.hasSameHashCodeAs(amsterdam2)
760+
.isNotEqualTo(newYork)
761+
.doesNotHaveSameHashCodeAs(newYork);
762+
}
763+
749764

750765
private static void roundup(Calendar calendar) {
751766
calendar.add(Calendar.SECOND, 1);

0 commit comments

Comments
 (0)