--- a/jdk/src/share/classes/java/time/chrono/HijrahChronology.java Fri Sep 06 14:18:06 2013 -0700
+++ b/jdk/src/share/classes/java/time/chrono/HijrahChronology.java Wed Sep 11 10:16:21 2013 -0400
@@ -63,6 +63,8 @@
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.io.InvalidObjectException;
+import java.io.ObjectStreamException;
import java.io.Serializable;
import java.security.AccessController;
import java.security.PrivilegedActionException;
@@ -217,11 +219,11 @@
/**
* The Hijrah Calendar id.
*/
- private final String typeId;
+ private final transient String typeId;
/**
* The Hijrah calendarType.
*/
- private transient final String calendarType;
+ private final transient String calendarType;
/**
* Serialization version.
*/
@@ -236,7 +238,7 @@
* Flag to indicate the initialization of configuration data is complete.
* @see #checkCalendarInit()
*/
- private volatile boolean initComplete;
+ private transient volatile boolean initComplete;
/**
* Array of epoch days indexed by Hijrah Epoch month.
* Computed by {@link #loadCalendarData}.
@@ -281,7 +283,7 @@
* A reference to the properties stored in
* ${java.home}/lib/calendars.properties
*/
- private transient final static Properties calendarProperties;
+ private final transient static Properties calendarProperties;
/**
* Prefix of property names for Hijrah calendar variants.
@@ -1073,4 +1075,30 @@
throw new IllegalArgumentException("date must be yyyy-MM-dd", ex);
}
}
+
+ //-----------------------------------------------------------------------
+ /**
+ * Writes the Chronology using a
+ * <a href="../../../serialized-form.html#java.time.chrono.Ser">dedicated serialized form</a>.
+ * @serialData
+ * <pre>
+ * out.writeByte(1); // identifies a Chronology
+ * out.writeUTF(getId());
+ * </pre>
+ *
+ * @return the instance of {@code Ser}, not null
+ */
+ @Override
+ Object writeReplace() {
+ return super.writeReplace();
+ }
+
+ /**
+ * Defend against malicious streams.
+ * @return never
+ * @throws InvalidObjectException always
+ */
+ private Object readResolve() throws InvalidObjectException {
+ throw new InvalidObjectException("Deserialization via serialization delegate");
+ }
}