/** * Reads the form definition object from the supplied stream. * * <p>Requires that the instance has been set to a prototype of the instance that should be used * for deserialization. * * @param dis - the stream to read from. * @throws IOException * @throws InstantiationException * @throws IllegalAccessException */ public void readExternal(DataInputStream dis, PrototypeFactory pf) throws IOException, DeserializationException { setID(ExtUtil.readInt(dis)); setName(ExtUtil.nullIfEmpty(ExtUtil.readString(dis))); setTitle((String) ExtUtil.read(dis, new ExtWrapNullable(String.class), pf)); setChildren((Vector) ExtUtil.read(dis, new ExtWrapListPoly(), pf)); setInstance((FormInstance) ExtUtil.read(dis, FormInstance.class, pf)); setLocalizer((Localizer) ExtUtil.read(dis, new ExtWrapNullable(Localizer.class), pf)); Vector vcond = (Vector) ExtUtil.read(dis, new ExtWrapList(Condition.class), pf); for (Enumeration e = vcond.elements(); e.hasMoreElements(); ) addTriggerable((Condition) e.nextElement()); Vector vcalc = (Vector) ExtUtil.read(dis, new ExtWrapList(Recalculate.class), pf); for (Enumeration e = vcalc.elements(); e.hasMoreElements(); ) addTriggerable((Recalculate) e.nextElement()); finalizeTriggerables(); outputFragments = (Vector) ExtUtil.read(dis, new ExtWrapListPoly(), pf); submissionProfiles = (Hashtable<String, SubmissionProfile>) ExtUtil.read(dis, new ExtWrapMap(String.class, SubmissionProfile.class)); }