diff options
| author | Paul Buetow <paul@buetow.org> | 2008-06-01 22:45:59 +0000 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2008-06-01 22:45:59 +0000 |
| commit | 293c73f50f87b3d73d3947a9f79430b23ec4ddba (patch) | |
| tree | 129ece28dcda9d17bb6e0fc417d8b25bb82dac4c /sources/core/VSTask.java | |
| parent | 8086082daaed71ee9105c156e3a1e8e63caf1990 (diff) | |
better serialization
Diffstat (limited to 'sources/core/VSTask.java')
| -rw-r--r-- | sources/core/VSTask.java | 76 |
1 files changed, 48 insertions, 28 deletions
diff --git a/sources/core/VSTask.java b/sources/core/VSTask.java index d27a9a4..a903868 100644 --- a/sources/core/VSTask.java +++ b/sources/core/VSTask.java @@ -30,6 +30,7 @@ import events.implementations.*; import events.internal.*; import prefs.VSPrefs; import protocols.VSAbstractProtocol; +import serialize.*; import utils.*; /** @@ -41,7 +42,7 @@ import utils.*; * * @author Paul C. Buetow */ -public class VSTask implements Comparable, Serializable { +public class VSTask implements Comparable, VSSerializable { /** The serial version uid */ private static final long serialVersionUID = 1L; @@ -95,6 +96,17 @@ public class VSTask implements Comparable, Serializable { } /** + * Instantiates a new task during a deserialization. + * + * @param serialize the serialize object + * @param process the object input stream + */ + public VSTask(VSSerialize serialize, ObjectInputStream objectInputStream) + throws IOException, ClassNotFoundException { + deserialize(serialize, objectInputStream); + } + + /** * Inits the task * * @param taskTime the task time @@ -338,51 +350,59 @@ public class VSTask implements Comparable, Serializable { return 0; } - /** - * Write object. - * - * @param objectOutputStream the object output stream - * - * @throws IOException Signals that an I/O exception has occurred. + /* (non-Javadoc) + * @see serialize.VSSerializable#serialize(serialize.VSSerialize, + * java.io.ObjectOutputStream) */ - public synchronized void writeObject(ObjectOutputStream objectOutputStream) + public synchronized void serialize(VSSerialize serialize, + ObjectOutputStream objectOutputStream) throws IOException { - objectOutputStream.writeObject(event); objectOutputStream.writeObject(new Integer(process.getProcessNum())); + objectOutputStream.writeObject(event.getClassname()); + objectOutputStream.writeObject(new Integer(event.getID())); + event.serialize(serialize, objectOutputStream); objectOutputStream.writeObject(new Integer(taskNum)); objectOutputStream.writeObject(new Long(taskTime)); objectOutputStream.writeObject(new Boolean(isGlobalTimed)); objectOutputStream.writeObject(new Boolean(isProgrammed)); } - /** - * Read object. - * - * @param objectInputStream the object input stream - * - * @throws IOException Signals that an I/O exception has occurred. - * @throws ClassNotFoundException the class not found exception + /* (non-Javadoc) + * @see serialize.VSSerializable#deserialize(serialize.VSSerialize, + * java.io.ObjectInputStream) */ @SuppressWarnings("unchecked") - public synchronized void readObject(ObjectInputStream objectInputStream) + public synchronized void deserialize(VSSerialize serialize, + ObjectInputStream objectInputStream) throws IOException, ClassNotFoundException { - if (VSDeserializationHelper.DEBUG) + if (VSSerialize.DEBUG) System.out.println("Deserializing: VSTask"); - this.event = (VSAbstractEvent) objectInputStream.readObject(); - Integer processNum = (Integer) objectInputStream.readObject(); - Integer taskNum = (Integer) objectInputStream.readObject(); - Long taskTime = (Long) objectInputStream.readObject(); + int processNum = ((Integer) objectInputStream.readObject()).intValue(); + VSProcess process = (VSProcess) + serialize.getObject(processNum, "process"); + + String eventClassname = (String) objectInputStream.readObject(); + int eventID = ((Integer) objectInputStream.readObject()).intValue(); + + VSAbstractEvent event = (VSAbstractEvent) + serialize.getObject(eventID, "event"); + + if (event == null) { + event = VSRegisteredEvents. + createEventInstanceByClassname(eventClassname, process); + + serialize.setObject(eventID, "event", event); + } + + int taskNum = ((Integer) objectInputStream.readObject()).intValue(); + long taskTime = ((Long) objectInputStream.readObject()).longValue(); Boolean isGlobalTimed = (Boolean) objectInputStream.readObject(); Boolean isProgrammed = (Boolean) objectInputStream.readObject(); - VSDeserializationHelper.setObject(taskNum.intValue(), "task", this); - - VSProcess process = (VSProcess) VSDeserializationHelper.getObject( - processNum.intValue(), "process"); + serialize.setObject(taskNum, "task", this); - init(taskTime.longValue(), process, event, - !isGlobalTimed.booleanValue()); + init(taskTime, process, event, !isGlobalTimed.booleanValue()); this.isProgrammed = isProgrammed.booleanValue(); } |
