summaryrefslogtreecommitdiff
path: root/sources/core/VSTask.java
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2008-06-01 22:45:59 +0000
committerPaul Buetow <paul@buetow.org>2008-06-01 22:45:59 +0000
commit293c73f50f87b3d73d3947a9f79430b23ec4ddba (patch)
tree129ece28dcda9d17bb6e0fc417d8b25bb82dac4c /sources/core/VSTask.java
parent8086082daaed71ee9105c156e3a1e8e63caf1990 (diff)
better serialization
Diffstat (limited to 'sources/core/VSTask.java')
-rw-r--r--sources/core/VSTask.java76
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();
}