Products page
|
| Revision history |
| User guide |
| Installation guide |
| Time-limiting notes |
| Directives file |
| Buildtool integration |
| License and download |
| Purchase |
| Faqs/Known issues |
| Email |
|
|
|
|
|
|
Time-limiting
|
|
|
Time-limiting for a java class is done by inserting time-checking code
into one or more methods of the class. When the code is executed it
will check the current date on the system and only allow execution to
continue if the date lies within the allowable date-range. If the
system date is outside of the allowable range, the current thread will
be stuck in a do-nothing loop. The date-range is given by the start and
end dates (both inclusive), that are specified via the GUI or the
directives file.
Time-checking code will only be inserted into non-abstract
methods of non-interface classes, and can be performed on class
initializers or on regular methods of a class. Class initializers are
methods that are executed when the class is first loaded and
initialized. This means that the time-checking will be done the very
first time that the class is used. When class initializers are being
time-limited, any class that does not already have an existing class
initializer method will have one created.
In the case of regular methods the time-checking will only
be done when the control flow of the program happens to execute that
particular method. This is useful if it is desirable for some portions
of the program to be able to run (such as printing a message to warn
the user of the time limit), before getting to the time-checking code.
Code merging Time-limiting is achieved
by inserting the time-checking code into existing methods. Where
possible the new code is "merged" in with existing code so that its
function is less obvious. This means that where possible, the new
bytecode instructions are spread out within the already existing code
instead of being added as one logical block.
Optional information Optional
information such as line number table attributes, and local variable
table attributes are always removed from the classes that are
processed. |
|
|
|
|
|
|