Index: src/test/java/org/quartz/CronExpressionTest.java =================================================================== --- src/test/java/org/quartz/CronExpressionTest.java (revision 690) +++ src/test/java/org/quartz/CronExpressionTest.java (working copy) @@ -15,8 +15,10 @@ */ package org.quartz; +import java.io.*; import java.text.ParseException; import java.util.Calendar; +import java.util.Date; import java.util.TimeZone; public class CronExpressionTest extends SerializationTestSupport { @@ -78,4 +80,24 @@ cal.set(2005, Calendar.JUNE, 1, 10, 14, 0); assertFalse(cronExpression.isSatisfiedBy(cal.getTime())); } + + /* + * QUARTZ-571: Showing that expressions with months correctly serialize. + */ + public void testQuartz571() throws Exception { + CronExpression cronExpression = new CronExpression("19 15 10 4 Apr ? "); + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + ObjectOutputStream oos = new ObjectOutputStream(baos); + oos.writeObject(cronExpression); + ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); + ObjectInputStream ois = new ObjectInputStream(bais); + CronExpression newExpression = (CronExpression) ois.readObject(); + + assertEquals(newExpression.getCronExpression(), cronExpression.getCronExpression()); + + // if broken, this will throw an exception + newExpression.getNextValidTimeAfter(new Date()); + } + } Index: src/java/org/quartz/CronExpression.java =================================================================== --- src/java/org/quartz/CronExpression.java (revision 690) +++ src/java/org/quartz/CronExpression.java (working copy) @@ -241,9 +241,9 @@ throw new IllegalArgumentException("cronExpression cannot be null"); } - this.cronExpression = cronExpression; + this.cronExpression = cronExpression.toUpperCase(Locale.US); - buildExpression(cronExpression.toUpperCase(Locale.US)); + buildExpression(this.cronExpression); } /** @@ -1518,4 +1518,4 @@ public int value; public int pos; -} \ No newline at end of file +}