blob: 3d1d1914d7b20fe40396d381b989bc8a0bb17d1d [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @author Serguei S.Zapreyev
*/
package java.lang;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.lang.reflect.Method;
import java.net.URL;
import org.apache.harmony.test.TestResources;
import junit.framework.TestCase;
/*
* Created on 02.04.2006
*
* This ClassLoaderTest class is used to test the Core API
* java.lang.ClassLoader class
*
*/
@SuppressWarnings(value={"all"}) public class ClassLoaderTest extends TestCase {
static String vendor = System.getProperty("java.vm.vendor");
class TestClassLoader extends ClassLoader {
// Use only for top level classes
public Class<?> findClass(String name) {
String nm = name.substring(1, name.length());
byte[] b = loadClassData(nm);
return defineClass(nm, b, 0, b.length);
}
private byte[] loadClassData(String name) {
//return new byte[0];
//System.out.println("loadClassData: "+ name);
String nm = name.replace('.', '/');
java.io.InputStream is = this.getClass().getResourceAsStream(
"/" + nm + ".class");
//System.out.println("loadClassData: "+ nm);
try {
int len = is.available();
byte ab[] = new byte[len];
is.read(ab);
return ab;
} catch (java.io.IOException _) {
}
return null;
}
public TestClassLoader() {
super();
}
public TestClassLoader(ClassLoader cl) {
super(cl);
}
}
/**
*
*/
public void test_ClassLoader_V() {
assertTrue("Error1",
new TestClassLoader().getParent() == TestClassLoader
.getSystemClassLoader());
}
/**
*
*/
public void test_ClassLoader_Cla() {
TestClassLoader tcl = new TestClassLoader();
assertTrue("Error1",
new TestClassLoader((ClassLoader) tcl).getParent() == tcl);
}
/**
*
*/
public void test_clearAssertionStatus_V() {
TestClassLoader tcl = new TestClassLoader();
((ClassLoader) tcl).clearAssertionStatus();
ClassLoader cl = Class.class.getClassLoader();
if (cl == null)
cl = ClassLoader.getSystemClassLoader();
cl.clearAssertionStatus();
try {
Class c = cl.loadClass("javax.xml.transform.stream.StreamResult");
try {
c.newInstance(); // to be initialized
} catch (Exception _) {
//System.out.println("(test_clearAssertionStatus_V)Exception
// 1");
}
assertTrue("Error1:", c.desiredAssertionStatus() == c
.desiredAssertionStatus()); // "this method is not
// guaranteed to return the
// actual assertion status"
} catch (ClassNotFoundException _) {
System.out.println("ClassNotFoundException 1");
}
}
/**
*
*/
//Commented because of the drlvm issue
// public void te_st_defineClass_BArr_I_I() {
public void test_defineClass_BArr_I_I() {
class LCL extends ClassLoader {
// only for special case
public Class findClass(String name) {
String nm = name.substring(1, name.length());
byte[] b = loadClassData(nm);
if (nm.endsWith("SAXTransformerFactory")) {
return defineClass(b, 0, b.length); // ALL RIGHT
} else if (nm.endsWith("SAXSource")) {
return defineClass(b, 10, b.length - 20); // ClassFormatError
} else if (nm.endsWith("SAXResult")) {
return defineClass(b, 0, b.length + 20); // IndexOutOfBoundsException
}
return null;
}
private byte[] loadClassData(String name) {
//System.out.println("loadClassData: "+ name);
String nm = name.replace('.', '/');
java.io.InputStream is = this.getClass().getResourceAsStream(
"/" + nm + ".class");
//System.out.println("loadClassData: "+ nm);
try {
int len = is.available();
byte ab[] = new byte[len];
is.read(ab);
return ab;
} catch (java.io.IOException _) {
}
return null;
}
public LCL() {
super();
}
public LCL(ClassLoader cl) {
super(cl);
}
}
LCL tcl = new LCL();
// TEST CASE #1:
try {
Class c = tcl
.loadClass("#javax.xml.transform.sax.SAXTransformerFactory");
assertTrue("Error1", c != null);
} catch (ClassNotFoundException _) {
}
// TEST CASE #2:
try {
Class c = tcl.loadClass("#javax.xml.transform.sax.SAXSource");
fail("Error2: ");
} catch (ClassFormatError _) {
} catch (ClassNotFoundException e) {
fail("Error3: " + e.toString());
}
// TEST CASE #3:
try {
Class c = tcl.loadClass("#javax.xml.transform.sax.SAXResult");
fail("Error4: ");
} catch (IndexOutOfBoundsException _) {
} catch (ClassNotFoundException e) {
fail("Error5: " + e.toString());
}
}
/**
*
*/
public void test_defineClass_Str_BArr_I_I() {
class LCL extends ClassLoader {
// only for special case
public Class<?> findClass(String name) {
String nm = name.substring(1, name.length());
byte[] b = loadClassData(nm);
if (nm.endsWith("SAXTransformerFactory")) {
return defineClass(nm, b, 0, b.length); // ALL RIGHT
} else if (nm.endsWith("SAXSource")) {
return defineClass(nm, b, 10, b.length - 20); // ClassFormatError
} else if (nm.endsWith("SAXResult")) {
return defineClass(nm, b, 0, b.length + 20); // IndexOutOfBoundsException
} else if (nm.endsWith("DOMResult")) {
return defineClass(nm + "XXX", b, 0, b.length); // NoClassDefFoundError
} else if (nm.endsWith("Calendar")) {
return defineClass(nm, b, 0, b.length); // SecurityException
}
return null;
}
private byte[] loadClassData(String name) {
String nm = name.replace('.', '/');
java.io.InputStream is = this.getClass().getResourceAsStream(
"/" + nm + ".class");
try {
int len = is.available();
byte ab[] = new byte[len];
is.read(ab);
return ab;
} catch (java.io.IOException _) {
}
return null;
}
public LCL() {
super();
}
}
LCL tcl = new LCL();
// TEST CASE #1:
try {
Class c = tcl
.loadClass("#javax.xml.transform.sax.SAXTransformerFactory");
assertTrue("Error1", c != null);
} catch (ClassNotFoundException _) {
}
// TEST CASE #2:
try {
tcl.loadClass("#javax.xml.transform.sax.SAXSource");
fail("Error2: ");
} catch (ClassFormatError _) {
} catch (ClassNotFoundException e) {
fail("Error3: " + e.toString());
}
// TEST CASE #3:
try {
tcl.loadClass("#javax.xml.transform.sax.SAXResult");
fail("Error4: ");
} catch (IndexOutOfBoundsException _) {
} catch (ClassNotFoundException e) {
fail("Error5: " + e.toString());
}
// TEST CASE #4:
try {
tcl.loadClass("#javax.xml.transform.dom.DOMResult");
fail("Error6: ");
} catch (NoClassDefFoundError _) {
} catch (ClassNotFoundException e) {
fail("Error7: " + e.toString());
}
// TEST CASE #5:
try {
tcl.loadClass("#java.util.Calendar");
fail("Error8: ");
} catch (SecurityException _) {
} catch (ClassNotFoundException e) {
fail("Error9: " + e.toString());
}
}
/**
*
*/
public void test_defineClass_Str_BArr_I_I_Pro() {
class LCL extends ClassLoader {
// only for special case
public Class<?> findClass(String name) {
String nm = name.substring(1, name.length());
//java.security.ProtectionDomain pd = new
// java.security.ProtectionDomain(new CodeSource(new
// java.net.URL(""), new java.security.cert.Certificate[]{} ),
// new PermissionCollection());
java.security.ProtectionDomain pd = Void.class
.getProtectionDomain();
byte[] b = loadClassData(nm);
if (nm.endsWith("SAXTransformerFactory")) {
return defineClass(nm, b, 0, b.length, pd); // ALL RIGHT
} else if (nm.endsWith("SAXSource")) {
return defineClass(nm, b, 10, b.length - 20, pd); // ClassFormatError
} else if (nm.endsWith("SAXResult")) {
return defineClass(nm, b, 0, b.length + 20, pd); // IndexOutOfBoundsException
} else if (nm.endsWith("DOMResult")) {
return defineClass(nm + "XXX", b, 0, b.length, pd); // NoClassDefFoundError
} else if (nm.endsWith("Calendar")) {
return defineClass(nm, b, 0, b.length, pd); // SecurityException
} else if (nm.endsWith("TimeZone")) {
return defineClass(nm, b, 0, b.length,
(java.security.ProtectionDomain) null); // SecurityException
}
return null;
}
private byte[] loadClassData(String name) {
String nm = name.replace('.', '/');
java.io.InputStream is = this.getClass().getResourceAsStream(
"/" + nm + ".class");
try {
int len = is.available();
byte ab[] = new byte[len];
is.read(ab);
return ab;
} catch (java.io.IOException _) {
}
return null;
}
public LCL() {
super();
}
}
LCL tcl = new LCL();
// TEST CASE #1:
try {
Class c = tcl
.loadClass("#javax.xml.transform.sax.SAXTransformerFactory");
assertTrue("Error1", c.getProtectionDomain().equals(
Void.class.getProtectionDomain()));
} catch (ClassNotFoundException _) {
}
// TEST CASE #2:
try {
tcl.loadClass("#javax.xml.transform.sax.SAXSource");
fail("Error2: ");
} catch (ClassFormatError _) {
} catch (ClassNotFoundException e) {
fail("Error3: " + e.toString());
}
// TEST CASE #3:
try {
tcl.loadClass("#javax.xml.transform.sax.SAXResult");
fail("Error4: ");
} catch (IndexOutOfBoundsException _) {
} catch (ClassNotFoundException e) {
fail("Error5: " + e.toString());
}
// TEST CASE #4:
try {
tcl.loadClass("#javax.xml.transform.dom.DOMResult");
fail("Error6: ");
} catch (NoClassDefFoundError _) {
} catch (ClassNotFoundException e) {
fail("Error7: " + e.toString());
}
// TEST CASE #5:
try {
tcl.loadClass("#java.util.Calendar");
fail("Error8: ");
} catch (SecurityException _) {
} catch (ClassNotFoundException e) {
fail("Error9: " + e.toString());
}
// TEST CASE #5:
try {
tcl.loadClass("#java.util.TimeZona");
fail("Error10: ");
} catch (NullPointerException _) {
} catch (ClassNotFoundException e) {
fail("Error11: " + e.toString());
}
}
/**
*
*/
public void test_definePackage_Str_Str_Str_Str_Str_Str_Str_Str_URL() {
class LCL extends ClassLoader {
// only for special case
public Class<?> findClass(String name) {
String nm = name.substring(1, name.length());
byte[] b = loadClassData(nm);
if (nm.endsWith("AudioFileReader")
|| nm.endsWith("AudioFileWriter")) {
return defineClass(b, 0, b.length); // ALL RIGHT
}
return null;
}
private byte[] loadClassData(String name) {
String nm = name.replace('.', '/');
java.io.InputStream is = this.getClass().getResourceAsStream(
"/" + nm + ".class");
try {
int len = is.available();
byte ab[] = new byte[len];
is.read(ab);
return ab;
} catch (java.io.IOException _) {
}
return null;
}
public LCL() {
super();
}
}
LCL tcl = new LCL();
// TEST CASE #1:
try {
ClassLoader cl = Class.class.getClassLoader();
if (cl == null)
cl = ClassLoader.getSystemClassLoader();
cl.definePackage("javax.swing.filechooser", "ZSSspecTitle",
"ZSSspecVersion", "ZSSspecVendor", "ZSSimplTitle",
"ZSSimplVersion", "ZSSimplVendor", new java.net.URL(
"http://intel.com/"));
try {
Class c1 = cl.loadClass("javax.swing.filechooser.FileFilter");
Class c2 = cl.loadClass("javax.swing.filechooser.FileView");
try {
c1.newInstance(); // to be initialized
c2.newInstance(); // to be initialized
} catch (Exception _) {
}
//assertTrue("Error1", c1.getPackage().equals(c2.getPackage())
// );
assertTrue("Error1", cl.getPackage("javax.swing.filechooser")
.getName().equals("javax.swing.filechooser"));
assertTrue("Error2 "
+ cl.getPackage("javax.swing.filechooser")
.getSpecificationTitle(), cl.getPackage(
"javax.swing.filechooser").getSpecificationTitle()
.equals("ZSSspecTitle"));
assertTrue("Error3", cl.getPackage("javax.swing.filechooser")
.getSpecificationVersion().equals("ZSSspecVersion"));
assertTrue("Error4", cl.getPackage("javax.swing.filechooser")
.getSpecificationVendor().equals("ZSSspecVendor"));
assertTrue("Error5", cl.getPackage("javax.swing.filechooser")
.getImplementationTitle().equals("ZSSimplTitle"));
assertTrue("Error6", cl.getPackage("javax.swing.filechooser")
.getImplementationVersion().equals("ZSSimplVersion"));
assertTrue("Error7", cl.getPackage("javax.swing.filechooser")
.getImplementationVendor().equals("ZSSimplVendor"));
} catch (ClassNotFoundException _) {
System.out.println("ClassNotFoundException 1");
}
} catch (java.net.MalformedURLException _) {
}
// TEST CASE #2:
try {
tcl.definePackage("javax.swing.filechooser", "ZSSspecTitle",
"ZSSspecVersion", "ZSSspecVendor", "ZSSimplTitle",
"ZSSimplVersion", "ZSSimplVendor", new java.net.URL(
"http://intel.com/"));
fail("Error8");
} catch (java.lang.IllegalArgumentException _) {
// CORRECT !
} catch (java.net.MalformedURLException _) {
fail("Error9");
}
// TEST CASE #3:
try {
tcl.definePackage("javax.swing.plaf.basic", "ZSSspecTitle",
"ZSSspecVersion", "ZSSspecVendor", "ZSSimplTitle",
"ZSSimplVersion", "ZSSimplVendor", new java.net.URL(
"http://intel.com/"));
tcl.loadClass("#javax.swing.plaf.basic.BasicBorders");
tcl.loadClass("#javax.swing.plaf.basic.BasicArrowButton");
assertTrue("Error10", tcl.getPackage("javax.swing.plaf.basic")
.getName().equals("javax.swing.plaf.basic"));
} catch (ClassNotFoundException _) {
} catch (java.net.MalformedURLException _) {
}
}
/**
*
*/
public void test_findClass_Str() {
class LCL extends ClassLoader {
// only for special case
public Class<?> findClass(String name) throws ClassNotFoundException {
return super.findClass(name);
}
public LCL() {
super();
}
}
LCL tcl = new LCL();
// TEST CASE #1:
try {
tcl.loadClass("#javax.swing.plaf.basic.BasicBorders");
fail("Error1");
} catch (ClassNotFoundException _) {
} catch (Throwable _) {
fail("Error2");
}
// TEST CASE #2:
try {
tcl.loadClass(null);
fail("Error3");
} catch (NullPointerException _) {
} catch (Throwable _) {
fail("Error4");
}
// TEST CASE #3:
try {
tcl.loadClass("java.lang.Object");
} catch (ClassNotFoundException _) {
} catch (Throwable e) {
fail("Error6 " + e.toString());
}
}
/**
*
*/
public void test_findLibrary_Str() {
class LCL extends ClassLoader {
// only for special case
public Class<?> findClass(String name) throws ClassNotFoundException {
return super.findClass(name);
}
public LCL() {
super();
}
}
LCL tcl = new LCL();
// TEST CASE #1:
if (vendor.equals("Intel DRL")) {
tcl.findLibrary(System.mapLibraryName("java"));
}
// TEST CASE #2:
ClassLoader cl = Class.class.getClassLoader();
if (cl == null)
cl = ClassLoader.getSystemClassLoader();
if (vendor.equals("Intel DRL")) {
cl.findLibrary(System.mapLibraryName("lang"));
}
// TEST CASE #3:
tcl.findLibrary(null);
}
/**
*
*/
public void test_findLoadedClass_Str() {
class LCL extends ClassLoader {
// only for special case
public Class<?> findClass(String name) {
String nm = name.substring(1, name.length());
if (nm.endsWith("JPEGImageReadParamXXX")) {
byte[] b = loadClassData("j"
+ (nm.replaceAll("JPEGImageReadParamXXX",
"JPEGImageReadParam")));
return defineClass(b, 0, b.length); // ALL RIGHT
}
byte[] b = loadClassData(nm);
if (nm.endsWith("IIOImage")) {
return defineClass(b, 0, b.length); // ALL RIGHT
}
if (nm.endsWith("TemplateSet")) {
return defineClass(b, 0, b.length); // ALL RIGHT
}
return null;
}
private byte[] loadClassData(String name) {
String nm = name.replace('.', '/');
java.io.InputStream is = this.getClass().getResourceAsStream(
"/" + nm + ".class");
try {
int len = is.available();
byte ab[] = new byte[len];
is.read(ab);
return ab;
} catch (java.io.IOException _) {
}
return null;
}
public LCL() {
super();
}
}
LCL tcl = new LCL();
ClassLoader cl = Class.class.getClassLoader();
if (cl == null)
cl = ClassLoader.getSystemClassLoader();
// TEST CASE #1:
try {
tcl.loadClass("#org.apache.harmony.lang.generics.TemplateSet");
assertTrue("Error1", tcl.findLoadedClass("org.apache.harmony.lang.generics.TemplateSet")
.getName().equals("org.apache.harmony.lang.generics.TemplateSet"));
} catch (Throwable e) {
fail("Error2: " + e.toString());
}
// TEST CASE #2:
try {
assertTrue("Error3", cl.findLoadedClass(null) == null);
} catch (Throwable e) {
fail("Error4: " + e.toString());
}
try {
assertTrue("Error33", tcl.findLoadedClass(null) == null);
} catch (Throwable e) {
fail("Error44: " + e.toString());
}
// TEST CASE #3:
try {
if (cl.findLoadedClass("java.lang.Object") != null) // XXX: Here we
// differ of others. Is it
// absolutely
// acceptible
// and
// correct???
assertTrue("Error5", cl.findLoadedClass("java.lang.Object")
.getName().equals("java.lang.Object"));
} catch (Throwable e) {
fail("Error6: " + e.toString());
}
// TEST CASE #5:
try {
cl.findLoadedClass("void");
} catch (Throwable e) {
fail("Error10: " + e.toString());
}
// // TEST CASE #8:
// try {
// //Class c =
// Class.forName("[[[Ljavax.imageio.plugins.jpeg.JPEGImageReadParam;",
// true, tcl);
// Class c =
// Class.forName("javax.imageio.plugins.jpeg.JPEGImageReadParamXXX",
// true, tcl);
// ///Class c =
// tcl.loadClass("#javax.imageio.plugins.jpeg.JPEGImageReadParam");
// System.out.println(c);
// tcl.findLoadedClass("javax.imageio.plugins.jpeg.JPEGImageReadParam");
// assertTrue("Error7",
// tcl.findLoadedClass("javax.imageio.plugins.jpeg.JPEGImageReadParam").getName().equals("javax.imageio.plugins.jpeg.JPEGImageReadParam"));
// ///fail("Error11");
// } catch (Throwable e) {
// fail("Error12: " + e.toString());
// }
}
/**
* FIXME invalid test: only VM can initiate loading class
*/
public void te_st_findLoadedClass_Str_2() {
// TEST CASE #4:
try {
Class c = Class.forName("java.lang.ClassLoaderTest$7LCL", true,
ClassLoader.getSystemClassLoader());
assertTrue("Error7", ClassLoader.getSystemClassLoader()
.findLoadedClass("java.lang.ClassLoaderTest$7LCL")
.getName().equals("java.lang.ClassLoaderTest$7LCL"));
} catch (Throwable e) {
fail("Error8: " + e.toString());
}
// TEST CASE #6:
try {
Class c = Class.forName("[B", true, ClassLoader
.getSystemClassLoader());
assertTrue("Error7", ClassLoader.getSystemClassLoader()
.findLoadedClass("[B") == null); // if the element type is a primitive type, then the array class has no class loader
} catch (Throwable e) {
fail("Error12: " + e.toString());
}
// TEST CASE #6_1:
try {
ClassLoader ld = TestResources.getLoader();
Class c = Class.forName("[Lorg.apache.harmony.lang.generics.TemplateSet;", true, ld);
assertTrue("Error7_1", ld
.findLoadedClass("[Lorg.apache.harmony.test.TestResources;") == null); // according the delegate loading model
} catch (Throwable e) {
fail("Error12_1: " + e.toString());
}
// TEST CASE #6_2:
try {
try {
Class c = Class.forName("I", true, ClassLoader
.getSystemClassLoader()); // If name denotes a primitive type or void, an attempt will be made to
// locate a user-defined class in the unnamed package whose name is name.
// Therefore, this method cannot be used to obtain any of the Class
// objects representing primitive types or void.
assertTrue("Error7_2", ClassLoader.getSystemClassLoader()
.findLoadedClass("I") == null);
} catch (ClassNotFoundException e) {
//System.out.println("I1: "+e.toString());
}
try {
Class c = Class.forName("int", true, ClassLoader
.getSystemClassLoader()); // If name denotes a primitive type or void, an attempt will be made to
// locate a user-defined class in the unnamed package whose name is name.
// Therefore, this method cannot be used to obtain any of the Class
// objects representing primitive types or void.
assertTrue("Error7_2", ClassLoader.getSystemClassLoader()
.findLoadedClass("int") == null);
} catch (ClassNotFoundException e) {
//System.out.println("I2: "+e.toString());
}
try {
ClassLoader ld = TestResources.getLoader();
//ClassLoader ld = ClassLoader.getSystemClassLoader();
//System.out.println("I3: "+int.class.getName()+"|"+int.class.getClassLoader());
Class c = ld.loadClass("int");
assertTrue("Error7_2", ld.findLoadedClass("int") == null);
} catch (ClassNotFoundException e) {
//System.out.println("I4: "+e.toString());
}
} catch (Throwable e) {
fail("Error12_2: " + e.toString());
}
// TEST CASE #7:
try {
Class c = Class.forName("[[[Ljava.lang.Object;", false, ClassLoader
.getSystemClassLoader());
ClassLoader.getSystemClassLoader().findLoadedClass(
"[[[Ljava.lang.Object;");
assertTrue("Error7", ClassLoader.getSystemClassLoader()
.findLoadedClass("[[[Ljava.lang.Object;") == null);
} catch (Throwable e) {
fail("Error12: " + e.toString());
}
try{
// "public class bbb{} // (javac 1.5)":
byte[] clazz = {-54,-2,-70,-66,0,0,0,49,0,13,10,0,3,0,10,7,0,11,7,0,12,1,0,6,60,105,110,105,116,
62,1,0,3,40,41,86,1,0,4,67,111,100,101,1,0,15,76,105,110,101,78,117,109,98,101,
114,84,97,98,108,101,1,0,10,83,111,117,114,99,101,70,105,108,101,1,0,8,98,98,98,
46,106,97,118,97,12,0,4,0,5,1,0,3,98,98,98,1,0,16,106,97,118,97,47,108,97,110,103,
47,79,98,106,101,99,116,0,33,0,2,0,3,0,0,0,0,0,1,0,1,0,4,0,5,0,1,0,6,0,0,0,29,0,
1,0,1,0,0,0,5,42,-73,0,1,-79,0,0,0,1,0,7,0,0,0,6,0,1,0,0,0,1,0,1,0,8,0,0,0,2,0,9};
FileOutputStream fos;
fos = new FileOutputStream(new File(System.getProperty("java.ext.dirs")+File.separator+"classes"+File.separator+"bbb.class"));
for (int i = 0; i < clazz.length; i++) {
fos.write((byte)clazz[i]);
}
fos.flush();
fos.close();
} catch (IOException e) {
System.out.println("TEST test_findLoadedClass_Str, CASE #10, DIDN'T RUN"+e.toString());
}
// TEST CASE #9
try{
ClassLoader chain = ClassLoader.getSystemClassLoader();
while (chain.getParent()!=null) {
chain = chain.getParent();
}
Class c = Class.forName("bbb", false, chain); // loading via the Capital ClassLoader
assertTrue(chain.findLoadedClass("bbb").getName().equals("bbb"));
} catch (ClassNotFoundException e) {
System.out.println("TEST test_findLoadedClass_Str, CASE #10, DIDN'T RUN"+e.toString());
} catch (Exception e) {
fail("TEST test_findLoadedClass_Str, CASE #9, FAILED"+e.toString());
}
// TEST CASE #10
class LCL2 extends ClassLoader {
public Class findClass(String name) throws ClassNotFoundException {
return super.findClass(name);
}
public LCL2() {
super();
}
}
LCL2 tcl2 = new LCL2();
try{
Class c = Class.forName("bbb", false, tcl2);
ClassLoader chain = tcl2;
while (chain.getParent() != null) {
if (chain.findLoadedClass("bbb")!=null && chain.findLoadedClass("bbb").getName().equals("bbb")) {
//System.out.println("TEST PASSED");
return;
}
chain = chain.getParent();
}
assertTrue(chain.findLoadedClass("bbb")!=null && chain.findLoadedClass("bbb").getName().equals("bbb"));
} catch (ClassNotFoundException e) {
System.out.println("TEST test_findLoadedClass_Str, CASE #10, DIDN'T RUN");
} catch (Exception e) {
fail("TEST test_findLoadedClass_Str, CASE #10, FAILED(2)");
}
}
/**
*
*/
public void test_findLoadedClass_Str_3() {
class testCL extends ClassLoader {
public int res = 0;
public testCL() {
super();
res = 0;
}
public Class loadClass(String nm) throws ClassNotFoundException {
if ("java.lang.ClassLoaderTest$1a3".equals(nm)) {
res += 1;
}
return super.loadClass(nm);
}
public Class fndLoadedClass(String nm) {
return super.findLoadedClass(nm);
}
}
class a3 extends ClassLoader {
public a3() {
super();
}
public void main(String[] args) {
try {
new a3().test(args);
} catch (Throwable e) {
e.printStackTrace();
}
}
public int test(String[] args) throws Exception {
testCL cl = new testCL();
for (int i = 0; i < 10; i++) {
int t = (this.callClass(cl)).intValue();
if (t != 104) {
// System.out.println("Test failed step "+i+": method result = "+t);
return 105;
}
}
assertTrue(cl.fndLoadedClass("java.lang.ClassLoaderTest$1a3")
.getName().equals("java.lang.ClassLoaderTest$1a3"));
return 104;
}
private Integer callClass(testCL cLoader) throws Exception {
Class cls = Class.forName("java.lang.ClassLoaderTest$1a3",
true, cLoader);
Method mm = cls.getMethod("test", (Class[])null);
return (Integer) mm.invoke(this, new Object[0]);
}
public int test() {
return 104;
}
}
// FIXME invalid test: only VM can initiate loading class
//new a3().main(new String[] { "" });
}
/**
*
*/
public void test_findResource_Str() {
class LCL extends ClassLoader {
// only for special case
public Class<?> findClass(String name) {
return null;
}
public java.net.URL findResource(String name) {
String nm = name.replace('.', '/');
return this.getClass().getResource("/" + nm + ".class");
}
public LCL() {
super();
}
}
LCL tcl = new LCL();
// TEST CASE #2:
assertTrue("Error1", tcl.findResource("java.lang.Class") != null);
// TEST CASE #2:
try {
assertTrue("Error2", ClassLoader.getSystemClassLoader()
.findResources("java.lang.Class") != null);
} catch (java.io.IOException _) {
fail("Error3");
}
}
/**
*
*/
public void test_findResources_Str() {
class LCL extends ClassLoader {
// only for special case
public Class<?> findClass(String name) {
return null;
}
public java.util.Enumeration<URL> findResources(String name)
throws java.io.IOException {
return super.findResources(name);
}
public LCL() {
super();
}
}
LCL tcl = new LCL();
// TEST CASE #1:
try {
assertTrue("Error1", tcl.findResources("java.lang.Class") != null);
} catch (java.io.IOException _) {
fail("Error2");
}
// TEST CASE #2:
try {
ClassLoader.getSystemClassLoader().findResource("java.lang.Class");
} catch (Exception _) {
fail("Error3");
}
try {
tcl.findResources(null);
} catch (NullPointerException _) {
fail("Error5");
} catch (java.io.IOException _) {
}
}
/**
*
*/
public void test_findSystemClass_Str() {
class LCL extends ClassLoader {
// only for special case
public Class<?> findClass(String name) {
return null;
}
public LCL() {
super();
}
}
LCL tcl = new LCL();
// TEST CASE #1:
try {
assertTrue("Error1", tcl.findSystemClass("java.lang.Class") != null);
} catch (ClassNotFoundException _) {
fail("Error2");
}
// TEST CASE #2:
try {
ClassLoader.getSystemClassLoader().findSystemClass(
"java.lang.Class");
} catch (ClassNotFoundException _) {
fail("Error3");
}
// TEST CASE #3:
try {
ClassLoader.getSystemClassLoader().getSystemClassLoader()
.getSystemClassLoader().findSystemClass("java.lang.Class");
} catch (ClassNotFoundException _) {
fail("Error4");
}
// TEST CASE #4:
try {
ClassLoader.getSystemClassLoader().findSystemClass(null);
fail("Error5");
} catch (ClassNotFoundException _) {
fail("Error6");
} catch (NullPointerException _) {
}
}
/**
*
*/
public void test_getPackage_Str() {
ClassLoader cl = ClassLoader.getSystemClassLoader();
// TEST CASE #1:
try {
cl.getPackage(null);
fail("Error1");
} catch (NullPointerException _) {
}
// TEST CASE #2:
assertTrue("Error1", cl.getPackage("UNEXISTED.Unknown.Package") == null);
// TEST CASE #3:
try {
cl.definePackage("javax", "ZSSspecTitle1", "ZSSspecVersion1",
"ZSSspecVendor1", "ZSSimplTitle1", "ZSSimplVersion1",
"ZSSimplVendor1", new java.net.URL(
"http://intel.com/"));
cl.definePackage("javax.imageio", "ZSSspecTitle2",
"ZSSspecVersion2", "ZSSspecVendor2", "ZSSimplTitle2",
"ZSSimplVersion2", "ZSSimplVendor2", new java.net.URL(
"http://intel.com/"));
try {
Class c1 = cl.loadClass("javax.imageio.ImageIO");
try {
c1.newInstance(); // to be initialized
} catch (Exception _) {
}
assertTrue("Error1", cl.getPackage("javax.imageio").getName()
.equals("javax.imageio"));
assertTrue("Error2", cl.getPackage("javax.imageio")
.getSpecificationTitle().equals("ZSSspecTitle2"));
assertTrue("Error3", cl.getPackage("javax.imageio")
.getSpecificationVersion().equals("ZSSspecVersion2"));
assertTrue("Error4", cl.getPackage("javax.imageio")
.getSpecificationVendor().equals("ZSSspecVendor2"));
assertTrue("Error5", cl.getPackage("javax.imageio")
.getImplementationTitle().equals("ZSSimplTitle2"));
assertTrue("Error6", cl.getPackage("javax.imageio")
.getImplementationVersion().equals("ZSSimplVersion2"));
assertTrue("Error7", cl.getPackage("javax.imageio")
.getImplementationVendor().equals("ZSSimplVendor2"));
assertTrue("Error8", cl.getPackage("javax").getName().equals(
"javax"));
assertTrue("Error9", cl.getPackage("javax")
.getSpecificationTitle().equals("ZSSspecTitle1"));
assertTrue("Error10", cl.getPackage("javax")
.getSpecificationVersion().equals("ZSSspecVersion1"));
assertTrue("Error11", cl.getPackage("javax")
.getSpecificationVendor().equals("ZSSspecVendor1"));
assertTrue("Error12", cl.getPackage("javax")
.getImplementationTitle().equals("ZSSimplTitle1"));
assertTrue("Error13", cl.getPackage("javax")
.getImplementationVersion().equals("ZSSimplVersion1"));
assertTrue("Error14", cl.getPackage("javax")
.getImplementationVendor().equals("ZSSimplVendor1"));
} catch (ClassNotFoundException _) {
System.out.println("ClassNotFoundException 1");
}
} catch (java.net.MalformedURLException _) {
}
}
/**
*
*/
public void test_getPackages_V() {
class LCL extends ClassLoader {
// only for special case
public Class<?> findClass(String name) throws ClassNotFoundException {
return super.findClass(name);
}
public LCL() {
super();
}
public LCL(ClassLoader cl) {
super(cl);
}
}
ClassLoader cl = ClassLoader.getSystemClassLoader();
int loadersNumber = 11; //20;
int pkgsPerLoader = 21; //30;
ClassLoader acl[] = new ClassLoader[loadersNumber];
ClassLoader prevcl = new LCL(cl);
// TEST CASE #1:
for (int i = 0; i < loadersNumber; i++) {
acl[i] = new LCL(prevcl);
prevcl = acl[i];
}
for (int i = 0; i < loadersNumber; i++) {
for (int j = 0; j < pkgsPerLoader; j++) {
try {
String curLable = Integer.toString(i) + "_"
+ Integer.toString(j);
acl[i].definePackage(curLable, "ZSSspecTitle" + curLable,
"ZSSspecVersion" + curLable, "ZSSspecVendor"
+ curLable, "ZSSimplTitle" + curLable,
"ZSSimplVersion" + curLable, "ZSSimplVendor"
+ curLable, new java.net.URL(
"http://intel.com/"));
} catch (java.net.MalformedURLException _) {
}
}
}
int res = 0;
int prevLen = 0;
int tmp = 0;
for (int i = 0; i < loadersNumber; i++) {
assertTrue("Error1", (tmp = acl[i].getPackages().length) > prevLen);
prevLen = tmp;
for (int j = 0; j < acl[i].getPackages().length; j++) {
if (acl[i].getPackages()[j].getName().equals(
Integer.toString(i) + "_"
+ Integer.toString(pkgsPerLoader - 1))) {
res++;
assertTrue(
"Error2",
acl[i].getPackages()[j]
.getSpecificationTitle()
.equals(
"ZSSspecTitle"
+ Integer.toString(i)
+ "_"
+ Integer
.toString(pkgsPerLoader - 1)));
assertTrue(
"Error3",
acl[i].getPackages()[j]
.getSpecificationVersion()
.equals(
"ZSSspecVersion"
+ Integer.toString(i)
+ "_"
+ Integer
.toString(pkgsPerLoader - 1)));
assertTrue(
"Error4",
acl[i].getPackages()[j]
.getSpecificationVendor()
.equals(
"ZSSspecVendor"
+ Integer.toString(i)
+ "_"
+ Integer
.toString(pkgsPerLoader - 1)));
assertTrue(
"Error5",
acl[i].getPackages()[j]
.getImplementationTitle()
.equals(
"ZSSimplTitle"
+ Integer.toString(i)
+ "_"
+ Integer
.toString(pkgsPerLoader - 1)));
assertTrue(
"Error6",
acl[i].getPackages()[j]
.getImplementationVersion()
.equals(
"ZSSimplVersion"
+ Integer.toString(i)
+ "_"
+ Integer
.toString(pkgsPerLoader - 1)));
assertTrue(
"Error7",
acl[i].getPackages()[j]
.getImplementationVendor()
.equals(
"ZSSimplVendor"
+ Integer.toString(i)
+ "_"
+ Integer
.toString(pkgsPerLoader - 1)));
break;
}
}
}
assertTrue("Error8", res == loadersNumber);
}
/**
*
*/
public void test_getParent_V() {
class LCL extends ClassLoader {
// only for special case
public Class<?> findClass(String name) throws ClassNotFoundException {
return super.findClass(name);
}
public LCL() {
super();
}
public LCL(ClassLoader cl) {
super(cl);
}
}
ClassLoader cl = ClassLoader.getSystemClassLoader();
int loadersNumber = 1000;
ClassLoader acl[] = new ClassLoader[loadersNumber];
ClassLoader prevcl = cl;
// TEST CASE #1:
for (int i = 0; i < loadersNumber; i++) {
acl[i] = new LCL(prevcl);
prevcl = acl[i];
}
for (int i = loadersNumber - 1; i > -1; i--) {
if (i != 0) {
assertTrue("Error1", acl[i].getParent().equals(acl[i - 1]));
} else {
assertTrue("Error2", acl[i].getParent().equals(cl));
}
}
}
/**
*
*/
public void test_getResource_Str() {
ClassLoader cl = ClassLoader.getSystemClassLoader();
// TEST CASE #1:
try {
cl.getResource(null);
fail("Error1: NullPointerException is not thrown for null argument");
} catch (NullPointerException _) {
}
// TEST CASE #2:
assertTrue("Error1: unexpected:"
+ cl.getResource("java/lang/Class.class").toString(), cl
.getResource("java/lang/Class.class").toString().indexOf(
"java/lang/Class.class") != -1);
// TEST CASE #3:
if (vendor.equals("Intel DRL")) {
// -Xbootclasspath[/a /p]:<some non-empty path list> or
// -D{vm/sun}.boot.class.path=<some non-empty path list> arguments
// should be passed for ij.exe for real check
String as[] = System.getProperty(
(vendor.equals("Intel DRL") ? "vm" : "sun")
+ ".boot.class.path").split(
System.getProperty("path.separator"));
for (int i = 0; i < as.length; i++) {
File f = new File(as[i]);
if (f.exists() && f.isFile() && f.getName().endsWith(".jar")) {
try {
java.util.jar.JarFile jf = new java.util.jar.JarFile(f);
for (java.util.Enumeration e = jf.entries(); e
.hasMoreElements();) {
String s = e.nextElement().toString();
if (s.endsWith(".class")) {
assertTrue("Error1", cl.getResource(s)
.toString().indexOf(s) != -1);
return;
}
}
} catch (java.io.IOException _) {
}
} else if (f.exists() && f.isDirectory() && false) {
String afn[] = f.list();
File aff[] = f.listFiles();
for (int j = 0; j < aff.length; j++) {
if (aff[j].isFile()) {
assertTrue("Error1", cl.getResource(afn[j])
.toString().indexOf(afn[j]) != -1);
return;
}
}
}
}
}
}
/**
*
*/
public void test_getResourceAsStream_Str() {
ClassLoader cl = ClassLoader.getSystemClassLoader();
// TEST CASE #1:
try {
cl.getResourceAsStream(null);
fail("Error1: NullPointerException is not thrown for null argument");
} catch (NullPointerException _) {
}
// TEST CASE #2:
byte magic[] = new byte[4];
try {
cl.getResourceAsStream("java/lang/Class.class").read(magic);
assertTrue("Error1", new String(magic).equals(new String(
new byte[] { (byte) 0xCA, (byte) 0xFE, (byte) 0xBA,
(byte) 0xBE })));
} catch (java.io.IOException _) {
}
// TEST CASE #3:
if (vendor.equals("Intel DRL")) {
// -Xbootclasspath[/a /p]:<some non-empty path list> or
// -D{vm/sun}.boot.class.path=<some non-empty path list> arguments
// should be passed for ij.exe for real check
String as[] = System.getProperty(
(vendor.equals("Intel DRL") ? "vm" : "sun")
+ ".boot.class.path").split(
System.getProperty("path.separator"));
for (int i = 0; i < as.length; i++) {
File f = new File(as[i]);
if (f.exists() && f.isFile() && f.getName().endsWith(".jar")) {
try {
java.util.jar.JarFile jf = new java.util.jar.JarFile(f);
for (java.util.Enumeration e = jf.entries(); e
.hasMoreElements();) {
String s = e.nextElement().toString();
if (s.endsWith(".class")) {
magic = new byte[4];
try {
cl.getResourceAsStream(s).read(magic);
assertTrue(
"Error1",
new String(magic)
.equals(new String(
new byte[] {
(byte) 0xCA,
(byte) 0xFE,
(byte) 0xBA,
(byte) 0xBE })));
} catch (java.io.IOException _) {
}
return;
}
}
} catch (java.io.IOException _) {
}
} else if (f.exists() && f.isDirectory() && false) {
String afn[] = f.list();
File aff[] = f.listFiles();
for (int j = 0; j < aff.length; j++) {
if (aff[j].isFile()) {
try {
assertTrue("Error1", cl.getResourceAsStream(
afn[j]).available() >= 0);
} catch (java.io.IOException _) {
}
return;
}
}
}
}
}
}
/**
*
*/
public void test_getResources_Str() {
ClassLoader cl = ClassLoader.getSystemClassLoader();
// TEST CASE #1:
try {
cl.getResources(null);
assertTrue("Error1",
cl.getResources(null).hasMoreElements() == false);
} catch (NullPointerException _) {
} catch (java.io.IOException _) {
}
// TEST CASE #2:
try {
assertTrue("Error2: unexpected:"
+ cl.getResources("java/lang/ClassLoader.class")
.nextElement(), ((java.net.URL) cl.getResources(
"java/lang/ClassLoader.class").nextElement()).toString()
.indexOf("java/lang/ClassLoader.class") != -1);
//java.util.Enumeration e =
// cl.getResources("java/lang/ClassLoader.class");
//assertTrue("Error2: unexpected:"
// + cl.getResources("/meta-inf/Manifest.mf").nextElement(),
// ((java.net.URL)cl.getResources("/meta-inf/Manifest.mf").nextElement()).toString().indexOf(
// "/meta-inf/Manifest.mf") != -1);
//e = cl.getResources("/meta-inf/Manifest.mf");
//System.out.println(e.nextElement());
//System.out.println(e.nextElement());
//System.out.println(e.nextElement());
} catch (java.io.IOException _) {
}
// TEST CASE #3:
if (vendor.equals("Intel DRL")) {
// -Xbootclasspath[/a /p]:<some non-empty path list> or
// -D{vm/sun}.boot.class.path=<some non-empty path list> arguments
// should be passed for ij.exe for real check
String as[] = System.getProperty(
(vendor.equals("Intel DRL") ? "vm" : "sun")
+ ".boot.class.path").split(
System.getProperty("path.separator"));
for (int i = 0; i < as.length; i++) {
File f = new File(as[i]);
if (f.exists() && f.isFile() && f.getName().endsWith(".jar")) {
try {
java.util.jar.JarFile jf = new java.util.jar.JarFile(f);
for (java.util.Enumeration e = jf.entries(); e
.hasMoreElements();) {
String s = e.nextElement().toString();
if (s.endsWith(".class")) {
assertTrue("Error3", ((java.net.URL) cl
.getResources(s).nextElement())
.toString().indexOf(s) != -1);
return;
}
}
} catch (java.io.IOException _) {
}
} else if (f.exists() && f.isDirectory() && false) {
String afn[] = f.list();
File aff[] = f.listFiles();
for (int j = 0; j < aff.length; j++) {
if (aff[j].isFile()) {
try {
assertTrue("Error4", ((java.net.URL) cl
.getResources(afn[j]).nextElement())
.toString().indexOf(afn[j]) != -1);
return;
} catch (java.io.IOException _) {
}
}
}
}
}
}
}
/**
*
*/
public void test_getSystemClassLoader_V() {
// TEST CASE #1:
try {
String jscl = System.getProperty("java.system.class.loader");
if (jscl != null && jscl != "") {
assertTrue("Error1", ClassLoader.getSystemClassLoader()
.getClass().getName().equals(jscl));
}
java.util.Properties pl = System.getProperties();
pl.setProperty("java.system.class.loader",
"java.lang.ClassLoaderTest$TestClassLoader");
System.setProperties(pl);
jscl = System.getProperty("java.system.class.loader");
if (jscl != null && jscl != "") {
assertTrue("Error1 "
+ ClassLoader.getSystemClassLoader().getClass()
.getName(), !ClassLoader.getSystemClassLoader()
.getClass().getName().equals(jscl));
}
} catch (NullPointerException _) {
}
}
/**
*
*/
public void test_getSystemResource_Str() {
ClassLoader.getSystemClassLoader();
// TEST CASE #1:
try {
ClassLoader.getSystemResource(null);
fail("Error1: NullPointerException is not thrown for null argument");
} catch (NullPointerException _) {
}
// TEST CASE #2:
assertTrue("Error1: unexpected:"
+ ClassLoader.getSystemResource("java/lang/Void.class")
.toString(), ClassLoader.getSystemResource(
"java/lang/Void.class").toString().indexOf(
"java/lang/Void.class") != -1);
// TEST CASE #3:
if (vendor.equals("Intel DRL")) {
// -Xbootclasspath[/a /p]:<some non-empty path list> or
// -D{vm/sun}.boot.class.path=<some non-empty path list> arguments
// should be passed for ij.exe for real check
String as[] = System.getProperty(
(vendor.equals("Intel DRL") ? "vm" : "sun")
+ ".boot.class.path").split(
System.getProperty("path.separator"));
for (int i = 0; i < as.length; i++) {
File f = new File(as[i]);
if (f.exists() && f.isFile() && f.getName().endsWith(".jar")) {
try {
java.util.jar.JarFile jf = new java.util.jar.JarFile(f);
for (java.util.Enumeration e = jf.entries(); e
.hasMoreElements();) {
String s = e.nextElement().toString();
if (s.endsWith(".class")) {
assertTrue("Error1", ClassLoader
.getSystemResource(s).toString()
.indexOf(s) != -1);
return;
}
}
} catch (java.io.IOException _) {
}
} else if (f.exists() && f.isDirectory() && false) {
String afn[] = f.list();
File aff[] = f.listFiles();
for (int j = 0; j < aff.length; j++) {
if (aff[j].isFile()) {
assertTrue("Error1", ClassLoader.getSystemResource(
afn[j]).toString().indexOf(afn[j]) != -1);
return;
}
}
}
}
}
}
/**
*
*/
public void test_getSystemResourceAsStream_Str() {
ClassLoader.getSystemClassLoader();
// TEST CASE #1:
try {
ClassLoader.getSystemResourceAsStream(null);
fail("Error1: NullPointerException is not thrown for null argument");
} catch (NullPointerException _) {
}
// TEST CASE #2:
byte magic[] = new byte[4];
try {
ClassLoader.getSystemResourceAsStream(
"java/lang/reflect/Method.class").read(magic);
assertTrue("Error1", new String(magic).equals(new String(
new byte[] { (byte) 0xCA, (byte) 0xFE, (byte) 0xBA,
(byte) 0xBE })));
} catch (java.io.IOException _) {
}
// TEST CASE #3:
if (vendor.equals("Intel DRL")) {
// -Xbootclasspath[/a /p]:<some non-empty path list> or
// -D{vm/sun}.boot.class.path=<some non-empty path list> arguments
// should be passed for ij.exe for real check
String as[] = System.getProperty(
(vendor.equals("Intel DRL") ? "vm" : "sun")
+ ".boot.class.path").split(
System.getProperty("path.separator"));
for (int i = 0; i < as.length; i++) {
File f = new File(as[i]);
if (f.exists() && f.isFile() && f.getName().endsWith(".jar")) {
try {
java.util.jar.JarFile jf = new java.util.jar.JarFile(f);
for (java.util.Enumeration e = jf.entries(); e
.hasMoreElements();) {
String s = e.nextElement().toString();
if (s.endsWith(".class")) {
magic = new byte[4];
try {
ClassLoader.getSystemResourceAsStream(s)
.read(magic);
assertTrue(
"Error1",
new String(magic)
.equals(new String(
new byte[] {
(byte) 0xCA,
(byte) 0xFE,
(byte) 0xBA,
(byte) 0xBE })));
} catch (java.io.IOException _) {
}
return;
}
}
} catch (java.io.IOException _) {
}
} else if (f.exists() && f.isDirectory() && false) {
String afn[] = f.list();
File aff[] = f.listFiles();
for (int j = 0; j < aff.length; j++) {
if (aff[j].isFile()) {
try {
assertTrue("Error1", ClassLoader
.getSystemResourceAsStream(afn[j])
.available() >= 0);
} catch (java.io.IOException _) {
}
return;
}
}
}
}
}
}
/**
*
*/
public void test_getSystemResources_Str() {
ClassLoader cl = ClassLoader.getSystemClassLoader();
// TEST CASE #1:
try {
ClassLoader.getSystemResources(null);
assertTrue("Error1",
cl.getResources(null).hasMoreElements() == false);
} catch (NullPointerException _) {
} catch (java.io.IOException _) {
}
// TEST CASE #2:
try {
assertTrue(
"Error2: unexpected:"
+ ClassLoader.getSystemResources(
"java/lang/ClassLoader.class")
.nextElement(),
((java.net.URL) ClassLoader.getSystemResources(
"java/lang/ClassLoader.class").nextElement())
.toString().indexOf("java/lang/ClassLoader.class") != -1);
} catch (java.io.IOException _) {
}
// TEST CASE #3:
if (vendor.equals("Intel DRL")) {
// -Xbootclasspath[/a /p]:<some non-empty path list> or
// -D{vm/sun}.boot.class.path=<some non-empty path list> arguments
// should be passed for ij.exe for real check
String as[] = System.getProperty(
(vendor.equals("Intel DRL") ? "vm" : "sun")
+ ".boot.class.path").split(
System.getProperty("path.separator"));
for (int i = 0; i < as.length; i++) {
File f = new File(as[i]);
if (f.exists() && f.isFile() && f.getName().endsWith(".jar")) {
try {
java.util.jar.JarFile jf = new java.util.jar.JarFile(f);
for (java.util.Enumeration e = jf.entries(); e
.hasMoreElements();) {
String s = e.nextElement().toString();
if (s.endsWith(".class")) {
assertTrue("Error3",
((java.net.URL) ClassLoader
.getSystemResources(s)
.nextElement()).toString()
.indexOf(s) != -1);
return;
}
}
} catch (java.io.IOException _) {
}
} else if (f.exists() && f.isDirectory() && false) {
String afn[] = f.list();
File aff[] = f.listFiles();
for (int j = 0; j < aff.length; j++) {
if (aff[j].isFile()) {
try {
assertTrue("Error4",
((java.net.URL) ClassLoader
.getSystemResources(afn[j])
.nextElement()).toString()
.indexOf(afn[j]) != -1);
return;
} catch (java.io.IOException _) {
}
}
}
}
}
}
}
/**
*
*/
public void test_loadClass_Str() {
class LC1 {
class LC2 {
class LC3 {
class LC4 {
class LC5 {
class LC6 {
class LC7 {
class LC8 {
class LC9 {
class LC10 {
class LC11 {
class LC12 {
class LC13 {
class LC14 {
class LC15 {
class LC16 {
class LC17 {
class LC18 {
class LC19 {
class LC20
extends
LC19 {
class LC21 {
public LC21() {
System.out
.println("1 LC21");
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
//TestClassLoader tcl = new TestClassLoader();
ClassLoader tcl = ClassLoader.getSystemClassLoader();
try {
Class c = ((ClassLoader) tcl)
.loadClass("java.lang.ClassLoaderTest$1LC1$LC2$LC3$LC4$LC5$LC6$LC7$LC8$LC9$LC10$LC11$LC12$LC13$LC14$LC15$LC16$LC17$LC18$LC19$LC20$LC21");
c.newInstance();
fail("Error1 ");
} catch (ClassNotFoundException _) {
fail("Error2");
} catch (InstantiationException e) {
} catch (Exception e) {
fail("Error3");
}
}
/**
*
*/
public void test_loadClass_Str_Z() {
class LC1 {
class LC2 {
class LC3 {
class LC4 {
class LC5 {
class LC6 {
class LC7 {
class LC8 {
class LC9 {
class LC10 {
class LC11 {
class LC12 {
class LC13 {
class LC14 {
class LC15 {
class LC16 {
class LC17 {
class LC18 {
class LC19 {
class LC20
extends
LC19 {
class LC21 {
public LC21() {
System.out
.println("2 LC21");
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
public LC1() {
System.out.println("1");
}
}
String longName = "java.lang.ClassLoaderTest$2LC1$LC2$LC3$LC4$LC5$LC6$LC7$LC8$LC9$LC10$LC11$LC12$LC13$LC14$LC15$LC16$LC17$LC18$LC19$LC20$LC21";
TestClassLoader tcl = new TestClassLoader();
ClassLoader cl = ClassLoader.getSystemClassLoader();
String pices[] = longName.split("\\$");
String curClNm = pices[0] + "$" + pices[1];
Class c;
for (int i = 2; i < pices.length; i++) {
curClNm = curClNm + "$" + pices[i];
try {
if (i % 2 == 0) {
c = ((ClassLoader) tcl).loadClass(curClNm, true);
} else {
c = cl.loadClass(curClNm, true);
}
try {
c.newInstance();
} catch (Exception e) {
}
} catch (ClassNotFoundException _) {
fail("Error1: " + curClNm);
} catch (Exception e) {
fail("Error2 " + e.toString());
}
}
}
/**
*
*/
Class tmpCl;
int tmpI;
public void test_loadClass_Str_Z_1() {
class LC1 {
class LC2 {
class LC3 {
class LC4 {
class LC5 {
class LC6 {
class LC7 {
class LC8 {
class LC9 {
class LC10 {
class LC11 {
class LC12 {
class LC13 {
class LC14 {
class LC15 {
class LC16 {
class LC17 {
class LC18 {
class LC19 {
class LC20
extends
LC19 {
class LC21 {
public LC21() {
System.out
.println("3 LC21");
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
public LC2() {
System.out.println("1");
}
}
public LC1() {
System.out.println("1");
}
}
class ConcurentLoader extends Thread {
public String clN;
public ClassLoader l;
public void run() {
try {
if (clN.length() == tmpI) {
tmpCl = ((ClassLoader) l).loadClass(clN, false);
} else {
((ClassLoader) l).loadClass(clN, false);
}
} catch (ClassNotFoundException _) {
fail("Error1");
}
}
}
String longName = "java.lang.ClassLoaderTest$3LC1$LC2$LC3$LC4$LC5$LC6$LC7$LC8$LC9$LC10$LC11$LC12$LC13$LC14$LC15$LC16$LC17$LC18$LC19$LC20$LC21";
tmpI = longName.length();
TestClassLoader tcl = new TestClassLoader();
ClassLoader cl = ClassLoader.getSystemClassLoader();
String pices[] = longName.split("\\$");
String curClNm = pices[0] + "$" + pices[1];
ConcurentLoader[] thr = new ConcurentLoader[pices.length];
for (int i = 2; i < pices.length; i++) {
curClNm = curClNm + "$" + pices[i];
try {
thr[i] = new ConcurentLoader();
thr[i].clN = curClNm;
if (i % 2 == 0) {
thr[i].l = ((ClassLoader) tcl);
} else {
thr[i].l = ((ClassLoader) cl);
}
} catch (Exception e) {
fail("Error2 " + e.toString());
}
}
for (int i = 2; i < pices.length; i++) {
thr[i].start();
}
for (int i = 2; i < pices.length; i++) {
try {
thr[i].join();
} catch (InterruptedException e) {
fail("Error2 ");
}
}
try {
tmpCl.newInstance();
} catch (InstantiationException e) {
//System.out.println("Warning: "+e.toString());
//try {
// Class.forName(longName).newInstance();
//} catch (Exception ee) {
// System.out.println("Warning: "+ee.toString());
// try {
// Class.forName("java.lang.ClassLoaderTest$3$LC1").newInstance();
// } catch (Exception eee) {
// System.out.println("Warning: "+eee.toString());
// }
//}
} catch (Exception e) {
fail("Error3: " + e.toString());
}
}
/**
*
*/
public void test_resolveClass_Cla() {
// TEST CASE #1:
TestClassLoader tcl = new TestClassLoader();
((ClassLoader) tcl).resolveClass(int.class);
// TEST CASE #2:
try {
ClassLoader.getSystemClassLoader().resolveClass(null);
} catch (NullPointerException _) {
}
// TEST CASE #2:
try {
Number i[][][] = new Number[1][2][3];
ClassLoader.getSystemClassLoader().resolveClass(i.getClass());
} catch (NullPointerException _) {
}
}
/**
*
*/
public void test_setClassAssertionStatus_Str_Z() {
TestClassLoader tcl = new TestClassLoader();
((ClassLoader) tcl).setClassAssertionStatus(";^)", true);
ClassLoader cl = Class.class.getClassLoader();
if (cl == null)
cl = ClassLoader.getSystemClassLoader();
cl.setClassAssertionStatus("javax.xml.transform.sax.SAXSource", true);
try {
Class c = cl.loadClass("javax.xml.transform.sax.SAXSource");
try {
c.newInstance(); // to be initialized
} catch (Exception _) {
}
assertTrue("Error1:", c.desiredAssertionStatus() == c
.desiredAssertionStatus()); // "this method is not
// guaranteed to return the
// actual assertion status"
} catch (ClassNotFoundException _) {
System.out.println("ClassNotFoundException 1");
}
((ClassLoader) tcl).setClassAssertionStatus(
"javax.xml.transform.sax.SAXTransformerFactory", true);
try {
Class c = tcl
.loadClass("#javax.xml.transform.sax.SAXTransformerFactory");
assertTrue("Error2", c.desiredAssertionStatus() == c
.desiredAssertionStatus());
} catch (ClassNotFoundException _) {
}
((ClassLoader) tcl).setClassAssertionStatus(
"javax.xml.transform.sax.SAXTransformerFactory", false);
try {
Class c = tcl
.loadClass("javax.xml.transform.sax.SAXTransformerFactory");
assertTrue("Error3", c.desiredAssertionStatus() == c
.desiredAssertionStatus());
} catch (ClassNotFoundException _) {
System.out.println("ClassNotFoundException");
}
((ClassLoader) tcl).setClassAssertionStatus(
"javax.xml.transform.sax.SAXTransformerFactory", true);
((ClassLoader) tcl).setClassAssertionStatus(
"javax.xml.transform.sax.SAXTransformerFactory", false);
if (cl == null)
cl = ClassLoader.getSystemClassLoader();
cl.setClassAssertionStatus(
"[Ljavax.xml.transform.sax.SAXTransformerFactory;", true);
try {
//Class c =
// Class.forName("[Ljavax.xml.transform.sax.SAXTransformerFactory;",
// false, cl);
// //try {
// // Object o = c.newInstance(); // to be initialized
// //} catch(Exception e) {System.out.println("Exception 2:"+e);}
//assertTrue("Error4:", c.desiredAssertionStatus() ==
// c.desiredAssertionStatus() ); // "this method is not guaranteed
// to return the actual assertion status"
Class c = Class.forName(
"[Ljavax.xml.transform.sax.SAXTransformerFactory;", true,
cl);
assertTrue("Error5:", c.desiredAssertionStatus() == c
.desiredAssertionStatus()); // "this method is not
// guaranteed to return the
// actual assertion status"
} catch (ClassNotFoundException _) {
System.out.println("ClassNotFoundException 2");
}
}
/**
*
*/
public void test_setDefaultAssertionStatus_Z() {
TestClassLoader tcl = new TestClassLoader();
((ClassLoader) tcl).setDefaultAssertionStatus(true);
((ClassLoader) tcl).setDefaultAssertionStatus(false);
((ClassLoader) tcl).setDefaultAssertionStatus(true);
((ClassLoader) tcl).setDefaultAssertionStatus(false);
}
/**
*
*/
public void test_setPackageAssertionStatus_Str_Z() {
TestClassLoader tcl = new TestClassLoader();
((ClassLoader) tcl).setPackageAssertionStatus(":^(", true);
ClassLoader cl = Class.class.getClassLoader();
if (cl == null)
cl = ClassLoader.getSystemClassLoader();
cl.setPackageAssertionStatus("javax.xml.transform.stream", true);
try {
Class c = cl.loadClass("javax.xml.transform.stream.StreamSource");
try {
c.newInstance(); // to be initialized
} catch (Exception _) {
//System.out.println("(test_setPackageAssertionStatus_Str_Z)Exception
// 1");
}
assertTrue("Error1:", c.desiredAssertionStatus() == c
.desiredAssertionStatus()); // "this method is not
// guaranteed to return the
// actual assertion status"
} catch (ClassNotFoundException _) {
System.out.println("ClassNotFoundException 1");
}
((ClassLoader) tcl).setPackageAssertionStatus(
"javax.xml.transform.sax", true);
((ClassLoader) tcl).setPackageAssertionStatus(
"javax.xml.transform.sax", false);
((ClassLoader) tcl).setPackageAssertionStatus("", true);
((ClassLoader) tcl).setPackageAssertionStatus("", false);
}
/**
*
*/
public void test_setSigners_Cla_ObjArr() {
// TEST CASE #1:
TestClassLoader tcl = new TestClassLoader();
((ClassLoader) tcl).setSigners(int.class, (Object[]) null);
// TEST CASE #2:
((ClassLoader) tcl).setSigners(int.class, new Object[] { null });
// TEST CASE #3:
try {
((ClassLoader) tcl).setSigners(null, new Object[] { "" });
fail("Error1");
} catch (NullPointerException _) {
}
// TEST CASE #4:
ClassLoader.getSystemClassLoader().setSigners(int.class,
(Object[]) null);
// TEST CASE #5:
ClassLoader.getSystemClassLoader().setSigners(int.class,
new Object[] { null });
// TEST CASE #6:
try {
ClassLoader.getSystemClassLoader().setSigners(null,
new Object[] { "" });
fail("Error1");
} catch (NullPointerException _) {
}
// TEST CASE #7:
ClassLoader.getSystemClassLoader().setSigners(int.class,
(Object[]) null);
// TEST CASE #8:
Number i[][][] = new Number[1][2][3];
ClassLoader.getSystemClassLoader().setSigners(i.getClass(),
(Object[]) null);
}
/*
* Regression test for HARMONY-877
* [classlib][lang] compatibility: Harmony method
* ClassLoader.getResource(null) returns null while RI throws NPE
*
*/
public void test_HARMONY_877() {
boolean et = false;
try {
ClassLoader.getSystemClassLoader().getResource(null);
} catch (NullPointerException e) {
et = true;
}
assertTrue("NullPointerException expected (case 1)", et);
et = false;
try {
ClassLoader.getSystemClassLoader().getResourceAsStream(null);
} catch (NullPointerException e) {
et = true;
}
assertTrue("NullPointerException expected (case 2)", et);
}
/*
* Regression test for HARMONY-885
* [classlib][core][drlvm] unexpected LinkageError for ClassLoader.defineClass
*
*/
public void test_HARMONY_885() {
try {
byte[] array0 = new byte[] { 2, 2, 2, 2, 2, 2};
new CL().defineKlass(array0, 0, 3);
fail("exception expected");
} catch (ClassFormatError e) {
//expected
}
}
private class CL extends ClassLoader {
public Class defineKlass(byte[] a, int i1, int i2) throws ClassFormatError {
return super.defineClass(a, i1, i2);
}
}
}