001: /*
002: * TestInterpThreadClassLoader.java --
003: *
004: * This file tests changing an argument object's internal
005: * rep to TclList.
006: *
007: * Copyright (c) 2002 by Mo DeJong
008: *
009: * See the file "license.terms" for information on usage and redistribution
010: * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
011: *
012: * RCS: @(#) $Id: TestInterpThreadClassLoader.java,v 1.1 2006/02/08 23:53:47 mdejong Exp $
013: */
014:
015: package tests;
016:
017: import tcl.lang.*;
018:
019: public class TestInterpThreadClassLoader extends ClassLoader {
020:
021: public TestInterpThreadClassLoader(ClassLoader parent) {
022: super (parent);
023: }
024:
025: // bytes of class data from: TestInterpThreadUnknown.java
026: // public class TestInterpThreadUnknown {}
027:
028: byte[] hexbytes = { (byte) 202, (byte) 254, (byte) 186, (byte) 190,
029: (byte) 0, (byte) 0, (byte) 0, (byte) 46, (byte) 0,
030: (byte) 13, (byte) 10, (byte) 0, (byte) 3, (byte) 0,
031: (byte) 10, (byte) 7, (byte) 0, (byte) 11, (byte) 7,
032: (byte) 0, (byte) 12, (byte) 1, (byte) 0, (byte) 6,
033: (byte) 60, (byte) 105, (byte) 110, (byte) 105, (byte) 116,
034: (byte) 62, (byte) 1, (byte) 0, (byte) 3, (byte) 40,
035: (byte) 41, (byte) 86, (byte) 1, (byte) 0, (byte) 4,
036: (byte) 67, (byte) 111, (byte) 100, (byte) 101, (byte) 1,
037: (byte) 0, (byte) 15, (byte) 76, (byte) 105, (byte) 110,
038: (byte) 101, (byte) 78, (byte) 117, (byte) 109, (byte) 98,
039: (byte) 101, (byte) 114, (byte) 84, (byte) 97, (byte) 98,
040: (byte) 108, (byte) 101, (byte) 1, (byte) 0, (byte) 10,
041: (byte) 83, (byte) 111, (byte) 117, (byte) 114, (byte) 99,
042: (byte) 101, (byte) 70, (byte) 105, (byte) 108, (byte) 101,
043: (byte) 1, (byte) 0, (byte) 28, (byte) 84, (byte) 101,
044: (byte) 115, (byte) 116, (byte) 73, (byte) 110, (byte) 116,
045: (byte) 101, (byte) 114, (byte) 112, (byte) 84, (byte) 104,
046: (byte) 114, (byte) 101, (byte) 97, (byte) 100, (byte) 85,
047: (byte) 110, (byte) 107, (byte) 110, (byte) 111, (byte) 119,
048: (byte) 110, (byte) 46, (byte) 106, (byte) 97, (byte) 118,
049: (byte) 97, (byte) 12, (byte) 0, (byte) 4, (byte) 0,
050: (byte) 5, (byte) 1, (byte) 0, (byte) 23, (byte) 84,
051: (byte) 101, (byte) 115, (byte) 116, (byte) 73, (byte) 110,
052: (byte) 116, (byte) 101, (byte) 114, (byte) 112, (byte) 84,
053: (byte) 104, (byte) 114, (byte) 101, (byte) 97, (byte) 100,
054: (byte) 85, (byte) 110, (byte) 107, (byte) 110, (byte) 111,
055: (byte) 119, (byte) 110, (byte) 1, (byte) 0, (byte) 16,
056: (byte) 106, (byte) 97, (byte) 118, (byte) 97, (byte) 47,
057: (byte) 108, (byte) 97, (byte) 110, (byte) 103, (byte) 47,
058: (byte) 79, (byte) 98, (byte) 106, (byte) 101, (byte) 99,
059: (byte) 116, (byte) 0, (byte) 33, (byte) 0, (byte) 2,
060: (byte) 0, (byte) 3, (byte) 0, (byte) 0, (byte) 0, (byte) 0,
061: (byte) 0, (byte) 1, (byte) 0, (byte) 1, (byte) 0, (byte) 4,
062: (byte) 0, (byte) 5, (byte) 0, (byte) 1, (byte) 0, (byte) 6,
063: (byte) 0, (byte) 0, (byte) 0, (byte) 29, (byte) 0,
064: (byte) 1, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0,
065: (byte) 5, (byte) 42, (byte) 183, (byte) 0, (byte) 1,
066: (byte) 177, (byte) 0, (byte) 0, (byte) 0, (byte) 1,
067: (byte) 0, (byte) 7, (byte) 0, (byte) 0, (byte) 0, (byte) 6,
068: (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 1,
069: (byte) 0, (byte) 1, (byte) 0, (byte) 8, (byte) 0, (byte) 0,
070: (byte) 0, (byte) 2, (byte) 0, (byte) 9 };
071:
072: // Implement overloader class loader, this will load a class
073: // named "TestInterpThreadUnknown".
074:
075: protected Class loadClass(String className, // The name of the desired Class.
076: boolean resolveIt) // If true, then resolve all referenced classes.
077: throws ClassNotFoundException, // The class could not be found.
078: SecurityException {
079: Class result = null;
080:
081: try {
082: result = Class.forName(className, resolveIt, getParent());
083: } catch (ClassNotFoundException ex) {
084: } catch (IllegalArgumentException ex) {
085: ex.printStackTrace(System.err);
086: } catch (NoClassDefFoundError ex) {
087: } catch (IncompatibleClassChangeError ex) {
088: ex.printStackTrace(System.err);
089: }
090:
091: if ((result == null)
092: && className.equals("TestInterpThreadUnknown")) {
093: try {
094: result = defineClass(className, hexbytes, 0,
095: hexbytes.length);
096: } catch (NoClassDefFoundError ex) {
097: ex.printStackTrace(System.err);
098: } catch (ClassFormatError ex) {
099: ex.printStackTrace(System.err);
100: }
101: }
102:
103: if (result != null) {
104: if (resolveIt) {
105: resolveClass(result);
106: }
107: return result;
108: }
109:
110: throw new ClassNotFoundException(className);
111: }
112:
113: }
|