in src/main/java/org/apache/bsf/util/event/generator/EventAdapterGenerator.java [64:199]
static {
// logger = LogFactory.getLog((org.apache.bsf.util.event.generator.EventAdapterGenerator.class).getName());
logger = BSF_LogFactory.getLog((org.apache.bsf.util.event.generator.EventAdapterGenerator.class).getName());
final String USERCLASSPACKAGE = System.getProperty("DynamicEventClassPackage", "");
if (!USERCLASSPACKAGE.equals("")) {
CLASSPACKAGE = USERCLASSPACKAGE;
}
if (CLASSPACKAGE.length() > 0) {
CLASSPACKAGE = CLASSPACKAGE.replace('\\', '/');
if (!CLASSPACKAGE.endsWith("/")) {
CLASSPACKAGE = CLASSPACKAGE + "/";
}
}
WRITEDIRECTORY = System.getProperty("DynamicEventClassWriteDirectory", CLASSPACKAGE);
if (WRITEDIRECTORY.length() > 0) {
WRITEDIRECTORY = WRITEDIRECTORY.replace('\\', '/');
if (!WRITEDIRECTORY.endsWith("/")) {
WRITEDIRECTORY = WRITEDIRECTORY + "/";
}
}
try
// { EVENTLISTENER = Class.forName("java.util.EventListener"); }
{
// EVENTLISTENER = Thread.currentThread().getContextClassLoader().loadClass ("java.util.EventListener"); // rgf, 2006-01-05
// rgf, 20070917: first try context class loader, then BSFManager's defining class loader
EVENTLISTENER = null;
final ClassLoader tccl = Thread.currentThread().getContextClassLoader();
if (tccl != null) {
try {
EVENTLISTENER = tccl.loadClass("java.util.EventListener");
} catch (final ClassNotFoundException ex01) {
}
}
if (EVENTLISTENER == null) // did not work, try to load it via the definedClassLoader
{
EVENTLISTENER = BSFManager.getDefinedClassLoader().loadClass("java.util.EventListener");
}
} catch (final ClassNotFoundException ex) {
System.err.println(ex.getMessage());
ex.printStackTrace();
}
// start of the Java Class File
CLASSHEADER = ByteUtility.addBytes(CLASSHEADER, (byte) 0xCA); // magic
CLASSHEADER = ByteUtility.addBytes(CLASSHEADER, (byte) 0xFE); // magic
CLASSHEADER = ByteUtility.addBytes(CLASSHEADER, (byte) 0xBA); // magic
CLASSHEADER = ByteUtility.addBytes(CLASSHEADER, (byte) 0xBE); // magic
CLASSHEADER = ByteUtility.addBytes(CLASSHEADER, (short) 3); // minor version
CLASSHEADER = ByteUtility.addBytes(CLASSHEADER, (short) 45); // major version
// Start the constant pool for base items in all event adapter classes
BASECPCOUNT = 17; // number of cp items + 1 ( cp item # 0 reserved for JVM )
// cp item 01
BASECP = Bytecode.addUtf8(BASECP, "()V");
// cp item 02
BASECP = Bytecode.addUtf8(BASECP, "<init>");
// cp item 03
BASECP = Bytecode.addUtf8(BASECP, "Code");
// cp item 04
BASECP = Bytecode.addUtf8(BASECP, "eventProcessor");
// cp item 05
BASECP = Bytecode.addUtf8(BASECP, "java/lang/Object");
// cp item 06
BASECP = Bytecode.addUtf8(BASECP, "org/apache/bsf/util/event/EventAdapterImpl");
// cp item 07
BASECP = Bytecode.addUtf8(BASECP, "org/apache/bsf/util/event/EventProcessor");
// cp item 08
BASECP = Bytecode.addUtf8(BASECP, "(Ljava/lang/String;[Ljava/lang/Object;)V");
// cp item 09
BASECP = Bytecode.addUtf8(BASECP, "Lorg/apache/bsf/util/event/EventProcessor;");
// cp item 10
BASECP = Bytecode.addClass(BASECP, (short) 5); // Class "java/lang/Object"
// cp item 11
BASECP = Bytecode.addClass(BASECP, (short) 6); // Class "org/apache/bsf/util/event/EventAdapterImpl"
// cp item 12
BASECP = Bytecode.addClass(BASECP, (short) 7); // Class "org/apache/bsf/util/event/EventProcessor"
// cp item 13
BASECP = Bytecode.addNameAndType(BASECP, (short) 2, (short) 1); // "<init>" "()V"
// cp item 14
BASECP = Bytecode.addNameAndType(BASECP, (short) 4, (short) 9); // "eventProcessor" "Lorg/apache/bsf/util/event/EventProcessor;"
// cp item 15
BASECP = Bytecode.addFieldRef(BASECP, (short) 11, (short) 14);
// cp item 16
BASECP = Bytecode.addMethodRef(BASECP, (short) 11, (short) 13);
// fixed bytes in middle of class file
FIXEDCLASSBYTES = ByteUtility.addBytes(FIXEDCLASSBYTES, (short) 0x21); // access_flags (fixed)
FIXEDCLASSBYTES = ByteUtility.addBytes(FIXEDCLASSBYTES, (short) 20); // this_class (fixed)
FIXEDCLASSBYTES = ByteUtility.addBytes(FIXEDCLASSBYTES, (short) 11); // super_class (fixed)
FIXEDCLASSBYTES = ByteUtility.addBytes(FIXEDCLASSBYTES, (short) 1); // interface_count (fixed)
FIXEDCLASSBYTES = ByteUtility.addBytes(FIXEDCLASSBYTES, (short) 19); // interfaces (fixed)
FIXEDCLASSBYTES = ByteUtility.addBytes(FIXEDCLASSBYTES, (short) 0); // field_count (fixed)
// initialization method, constructor
INITMETHOD = ByteUtility.addBytes(INITMETHOD, (short) 1); // access_flags
INITMETHOD = ByteUtility.addBytes(INITMETHOD, (short) 2); // name_index "<init>"
INITMETHOD = ByteUtility.addBytes(INITMETHOD, (short) 1); // descriptor_index "()V"
INITMETHOD = ByteUtility.addBytes(INITMETHOD, (short) 1); // attribute_count
INITMETHOD = ByteUtility.addBytes(INITMETHOD, (short) 3); // attribute_name_index "Code"
INITMETHOD = ByteUtility.addBytes(INITMETHOD, (long) 17); // attribute_length
INITMETHOD = ByteUtility.addBytes(INITMETHOD, (short) 1); // max_stack
INITMETHOD = ByteUtility.addBytes(INITMETHOD, (short) 1); // max_locals
INITMETHOD = ByteUtility.addBytes(INITMETHOD, (long) 5); // code_length
// code
INITMETHOD = ByteUtility.addBytes(INITMETHOD, (byte) 0x2A); // aload_0
INITMETHOD = ByteUtility.addBytes(INITMETHOD, (byte) 0xB7); // invokespecial
INITMETHOD = ByteUtility.addBytes(INITMETHOD, (short) 16); // method_ref index
INITMETHOD = ByteUtility.addBytes(INITMETHOD, (byte) 0xB1); // return
// exception table
INITMETHOD = ByteUtility.addBytes(INITMETHOD, (short) 0); // exception_table_length
INITMETHOD = ByteUtility.addBytes(INITMETHOD, (short) 0); // attributes_count
}