Package edu.ucsb.ccs.jcontractor

This is the main package of the jContractor system.

See:
          Description

Interface Summary
InstrumentationFilter Interface for instrumentation filters, which control the level to which classes are instrumented.
 

Class Summary
CompositeInstrumentationFilter An instrumentation filter that combines other instrumentation filters.
InstrumentationFilter_CONTRACT Contract class for InstrumentationFilter.
jContractor Main entry point into the jContractor system.
jContractorClassLoader A class loader than uses jInstrument to instrument classes are they are loaded.
jContractorRuntime This class is used internally by jContractor, and should never be used by others.
jInstrument Utility to read in class files and instrument class methods to enforce jContractor contracts.
PackageLevelInstrumentationFilter An instrumentation filter that assigns instrumentation level by package (or class, if desired).
SimpleInstrumentationFilter An instrumentation filter that assign the same instrumentation level to all classes.
 

Exception Summary
InstrumentationException An exception that is thrown by jInstrument if it is unable to instrument a class.
 

Error Summary
InvariantViolationError An error that will be thrown when a class invariant is violated.
PostconditionViolationError An error that will be thrown when a postcondition is violated.
PreconditionViolationError An error that will be thrown when a precondition is violated.
 

Package edu.ucsb.ccs.jcontractor Description

This is the main package of the jContractor system. Among other things, this package contains the two classes of most interest to users of jContractor: jContractor and jInstrument. jContractor can be invoked to run another Java program with contract checking enabled. jContractor replaces the system class loader with its own, and performs the necessary bytecode instrumentation on-the-fly. jInstrument takes a Java class file as input, and outputs the class with contract code added. The class can then be run by a normal JVM, and contracts will be checked. jInstrument is useful if jContractor will not be available when you want to run the code, or if you want to disassemble the instrumented class files to see how contracts are checked.

Besides jContractor and jInstrument, this class defines the types of errors that are thrown when contracts are violated (PreconditionViolationError, PostconditionViolationError, and InvariantViolationError). The other classes are key parts of jContractor, but are not tied closely to the checking of any particular type of contract.