static

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

    }