-
Bug
-
Resolution: Fixed
-
P3
-
1.4.0
-
beta2
-
generic
-
generic
Name: vtR10009 Date: 03/28/2001
javax.print.attribute.AttributeSetUtilities.unmodifiableView() with
null parameter returns not null instances that don't correctly implement
javax.print.attribute.AttributeSetAttributeSet interface. That is cause
of undeclared (NullPointerException) exception for comparing such instances
with equals() invocation.
API spec (build 1.4.0-internal-b57) doesn't say anything about null parameter
for AttributeSetUtilities.unmodifiableView() and doesn't declare any run-time
exception for AttributeSetUtilities.unmodifiableView() and AttributeSet.equals()
methods.
This bug affects new JCK tests:
api/javax_print/event/PrintJobAttributeEvent/index.html#PrintJobAttributeEventTests
api/javax_print/event/PrintServiceAttributeEvent/index.html#PrintServiceAttributeEventTests
api/javax_print/attribute/AttributeSetUtilities/index.html#unmodifiableViewTests
To reproduce the bug run the following test:
------------------------------- test.java --------------------------------
import javax.print.event.PrintServiceAttributeEvent;
import javax.print.attribute.AttributeSet;
import javax.print.attribute.AttributeSetUtilities;
import javax.print.attribute.PrintServiceAttributeSet;
import javax.print.attribute.PrintJobAttributeSet;
public class test {
public static void main(String args[]) {
boolean failed = false;
AttributeSet aSet;
try {
aSet = AttributeSetUtilities.unmodifiableView((PrintServiceAttributeSet) null);
if (!aSet.equals(aSet)) {
System.out.println("Error: not equal PrintServiceAttributeSet instances!");
}
} catch (Throwable ex) {
failed = true;
ex.printStackTrace();
System.out.println("Undeclared:" + ex.toString());
}
try {
aSet = AttributeSetUtilities.unmodifiableView((PrintJobAttributeSet) null);
if (!aSet.equals(aSet)) {
System.out.println("Error: not equal PrintJobAttributeSet instances!");
}
} catch (Throwable ex) {
failed = true;
ex.printStackTrace();
System.out.println("Undeclared:" + ex.toString());
}
if (!failed) {
System.out.println("Ok.");
}
}
}
---------------------------Logs--------------------------------------
$ javac test.java
$ java test
java.lang.NullPointerException
at
javax.print.attribute.AttributeSetUtilities$UnmodifiableAttributeSet.equals(AttributeSetUtilities.java:
108)
at test.main(test.java:18)
Undeclared:java.lang.NullPointerException
java.lang.NullPointerException
at
javax.print.attribute.AttributeSetUtilities$UnmodifiableAttributeSet.equals(AttributeSetUtilities.java:
108)
at test.main(test.java:31)
Undeclared:java.lang.NullPointerException
$ java -version
java version "1.4.0-internal"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0-internal-b57)
Java HotSpot(TM) Client VM (build 1.4.0-beta-b57, mixed mode)
--------------------------------------------------------------------------
======================================================================