In several Bluray implementastions some classes from java.util.zip (ZipEntry etc) implemement java.util.zip.ZipConstants interface which is not public.
However SigTestLite complains about such implementation that they incorrectly implement
java.util.zip.ZipConstants. Such complains seem incorrect because such interface is not visible outside java.util.zip package.
The problem is in the LiteClassDescrLoader.java:
-------------------
private void setupInterfaces(ClassDescription cd, Class classObject) {
Class interfaces[] = classObject.getInterfaces();
cd.createInterfaces(interfaces.length);
for (int i = 0; i < interfaces.length; i++) {
SuperInterface intf = new SuperInterface();
cd.setInterface(i, intf);
cd.add(intf);
intf.setupClassName(interfaces[i].getName());
}
}
-------------------
It does not distinguish between public and non-public interfaces.
This problem is reproduced in the Bluray CTS in following way:
Special test case is added into Blusig.test.xml (attached):
------------
<TestCase ID="java_ZipEntry">
<CodeSet>
<ExecuteArgs>bdj_java -Package java.util.zip.ZipEntry</ExecuteArgs>
</CodeSet>
</TestCase>
-------------
Following printout is added into BlusigTest.java (attached) - to make sure that ZipConstants is not public and compare its modifiers with modifiers of public interface Cloneable:
-------------
try {
Class zipConstants = Class.forName("java.util.zip.ZipConstants");
log.println("ZipConstants: " + zipConstants);
log.println("ZipConstants modifiers: " + Integer.toHexString(zipConstants.getModifiers()));
} catch (ClassNotFoundException e) {
log.println("Could not find ZipConstants");
}
try {
Class cloneable = Class.forName("java.lang.Cloneable");
log.println("cloneable: " + cloneable);
log.println("Cloneable modifiers: " + Integer.toHexString(cloneable.getModifiers()));
} catch (ClassNotFoundException e) {
log.println("Could not find ZipConstants");
}
-------------
As result of test run SigTest incorrectly complains that ZipConstants (which is non-public) "is added".
It looks like it happens because non-public interfaces implemented by class are not filtered out.
However SigTestLite complains about such implementation that they incorrectly implement
java.util.zip.ZipConstants. Such complains seem incorrect because such interface is not visible outside java.util.zip package.
The problem is in the LiteClassDescrLoader.java:
-------------------
private void setupInterfaces(ClassDescription cd, Class classObject) {
Class interfaces[] = classObject.getInterfaces();
cd.createInterfaces(interfaces.length);
for (int i = 0; i < interfaces.length; i++) {
SuperInterface intf = new SuperInterface();
cd.setInterface(i, intf);
cd.add(intf);
intf.setupClassName(interfaces[i].getName());
}
}
-------------------
It does not distinguish between public and non-public interfaces.
This problem is reproduced in the Bluray CTS in following way:
Special test case is added into Blusig.test.xml (attached):
------------
<TestCase ID="java_ZipEntry">
<CodeSet>
<ExecuteArgs>bdj_java -Package java.util.zip.ZipEntry</ExecuteArgs>
</CodeSet>
</TestCase>
-------------
Following printout is added into BlusigTest.java (attached) - to make sure that ZipConstants is not public and compare its modifiers with modifiers of public interface Cloneable:
-------------
try {
Class zipConstants = Class.forName("java.util.zip.ZipConstants");
log.println("ZipConstants: " + zipConstants);
log.println("ZipConstants modifiers: " + Integer.toHexString(zipConstants.getModifiers()));
} catch (ClassNotFoundException e) {
log.println("Could not find ZipConstants");
}
try {
Class cloneable = Class.forName("java.lang.Cloneable");
log.println("cloneable: " + cloneable);
log.println("Cloneable modifiers: " + Integer.toHexString(cloneable.getModifiers()));
} catch (ClassNotFoundException e) {
log.println("Could not find ZipConstants");
}
-------------
As result of test run SigTest incorrectly complains that ZipConstants (which is non-public) "is added".
It looks like it happens because non-public interfaces implemented by class are not filtered out.