Index: gnu/testlet/java/io/ObjectInputStream/TestObjectInputValidation.java =================================================================== RCS file: /cvs/mauve/mauve/gnu/testlet/java/io/ObjectInputStream/TestObjectInputValidation.java,v retrieving revision 1.1 diff -u -r1.1 TestObjectInputValidation.java --- gnu/testlet/java/io/ObjectInputStream/TestObjectInputValidation.java 5 Jul 2005 12:22:39 -0000 1.1 +++ gnu/testlet/java/io/ObjectInputStream/TestObjectInputValidation.java 12 Oct 2005 17:44:08 -0000 @@ -33,32 +33,61 @@ import java.io.ObjectOutput; import java.io.ObjectOutputStream; import java.io.Serializable; +import java.util.ArrayList; class TestObjectInputValidation implements ObjectInputValidation, Serializable { - private boolean validated; + ArrayList validated; private String name; + private int priority; + TestObjectInputValidation object; + public TestObjectInputValidation(String name) { this.name = name; - this.validated = false; + this.priority = 10; + this.object = this; } - public boolean isValidated() + + // Registers with priority for given object. + public TestObjectInputValidation(int priority, + TestObjectInputValidation object) { - return this.validated; + this.priority = priority; + this.object = object; } + public void validateObject() { - this.validated = true; + if (object.validated == null) + object.validated = new ArrayList(); + object.validated.add(new Integer(priority)); } + private void writeObject(ObjectOutputStream stream) throws IOException { stream.defaultWriteObject(); } + private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { - stream.defaultReadObject(); stream.registerValidation(this, 10); + stream.registerValidation(new TestObjectInputValidation(-10, this), -10); + stream.defaultReadObject(); + stream.registerValidation(this, 12); // Again with other priority + stream.registerValidation(new TestObjectInputValidation(-12, this), -12); + stream.registerValidation(new TestObjectInputValidation(11, this), 11); } + // Ignores validated list and object. + public boolean equals(Object o) + { + if (o instanceof TestObjectInputValidation) + { + TestObjectInputValidation other = (TestObjectInputValidation) o; + return this.name.equals(other.name) + && this.priority == other.priority; + } + return false; + } } Index: gnu/testlet/java/io/ObjectInputStream/registerValidation.java =================================================================== RCS file: /cvs/mauve/mauve/gnu/testlet/java/io/ObjectInputStream/registerValidation.java,v retrieving revision 1.2 diff -u -r1.2 registerValidation.java --- gnu/testlet/java/io/ObjectInputStream/registerValidation.java 5 Jul 2005 12:22:39 -0000 1.2 +++ gnu/testlet/java/io/ObjectInputStream/registerValidation.java 12 Oct 2005 17:44:08 -0000 @@ -34,6 +34,7 @@ import java.io.ObjectOutput; import java.io.ObjectOutputStream; import java.io.Serializable; +import java.util.ArrayList; /** * Some checks for registerValidation() method of the {@link ObjectInputStream} class. @@ -62,11 +63,27 @@ ); t2 = (TestObjectInputValidation) in.readObject(); in.close(); + + harness.check(t2, t1); // name and priority the same + harness.check(t2.object, t2); // has self-reference + harness.check(t2.validated != null); + + Object[] ps = t2.validated.toArray(); + int[] priorities = new int[ps.length]; + for (int i = 0; i < ps.length; i++) + priorities[i] = ((Integer) ps[i]).intValue(); + harness.check(priorities != null); + harness.check(priorities.length, 5); + harness.check(priorities[0], -12); + harness.check(priorities[1], -10); + harness.check(priorities[2], 10); + harness.check(priorities[3], 11); + harness.check(priorities[4], 10); // The priority 12 "this" again. } catch (Exception e) { harness.debug(e); + harness.check(false, e.toString()); } - harness.check(t2.isValidated()); } }