javaclass

Annotated runclass.py

118:714a1d918aa9
2005-01-13 Paul Boddie Commented out various trace statements for improved high-level testing. Added the runclass utility which supports running of Java classes through their public, static main methods.
paul@118 1
#!/usr/bin/env python
paul@118 2
paul@118 3
"Run class files."
paul@118 4
paul@118 5
import classhook
paul@118 6
paul@118 7
def load_class(class_name):
paul@118 8
paul@118 9
    "Load the class with the given 'class_name'."
paul@118 10
paul@118 11
    class_name_parts = class_name.split(".")
paul@118 12
    if len(class_name_parts) == 1:
paul@118 13
        module = __import__("__this__", globals(), locals(), [class_name])
paul@118 14
        obj = getattr(module, class_name)
paul@118 15
    else:
paul@118 16
        obj = __import__(class_name, globals(), locals())
paul@118 17
        for part in class_name_parts[1:]:
paul@118 18
            obj = getattr(obj, part)
paul@118 19
paul@118 20
    return obj
paul@118 21
paul@118 22
def run_class(cls, args):
paul@118 23
    cls.main(args)
paul@118 24
paul@118 25
if __name__ == "__main__":
paul@118 26
    import sys
paul@118 27
    cls = load_class(sys.argv[1])
paul@118 28
    run_class(cls, sys.argv[2:])
paul@118 29
paul@118 30
# vim: tabstop=4 expandtab shiftwidth=4