JavaMOP 1.0 Context Free Grammar (JavaCFG) Plugin

Jump to: navigation, search

This version of JavaMOP is old and not supported anymore! Go to the JavaMOP webpage for the latest version.

This is JavaMOP1.0, which is now deprecated. Go to JavaMOP for the current version.




















... ... ...
... ... ... ... ... ... ...
MOP Matrix: a clickable map of MOP pages.

JavaCFG is an instance of the generic MOP CFG plugin for JavaMOP1.0, the MOP instance for Java. JavaMOP extracts from a specification using the header "logic = CFG" the actual CFG and passes it to the JavaCFG plugin. The JavaCFG plugin encapsulates the CFG plugin as follows:

  • It sends the extracted CFG to the CFG plugin;
  • It collects the output of the CFG plugin and produces Java monitoring code snippets (declarations, monitor initialization, monitor step, etc.).

JavaMOP takes the monitoring code snippets generated by the JavaCFG plugin and weaves them, using AspectJ, within the original application.


The syntax of JavaMOP CFG specifications is as expected:

<Logic> ::= "CFG"
<Property> ::= <CFG>


Experiments from our 2008 ASE paper on JavaMOP CFG can be found Here.

Run the JavaCFG Plugin Online

We provide a web-based interface to try JavaMOP with the JavaCFG plugin online. Enter your specification in the form below, or chose (and possibly modify) one of the existing specifications. Run JavaMOP by clicking the Run button. The generated code will be displayed underneath the form. The generated code can be compiled using any AspectJ compiler.

  • Note: The name of the generated Aspect will be the name of the first specification in the text box + MonitorAspect. The name of the .aj file you intend to compile needs to be the same. For example, for LeakingSyncCFG, the generated aspect is LeakingSyncCFGMonitorAspect, and should be placed in a file named LeakingSncCFGMonitorAspect.aj.
  • Note: One may append within or !within clauses to the event definitions in JavaMOP to control the scope of instrumentation. For example, if it is certain that some class C will not trigger any event of interest, one may use !within(C) in the event definitions to ignore C during the instrumentation, improving the instrumentation efficiency. The syntax of the within clause can be found in the AspectJ documentation.
  • Note: Currently ImprovedLeakingSync has been removed from the website due to its being assigned as homework for a class.
Choose an example:
  • ClosedReader_CFG
  • HasNext_CFG
  • HashMap_CFG
  • HashSet_CFG
  • Hashtable_CFG
  • ImprovedLeakingSync_CFG
  • PartialHasNext_CFG
  • PartialHashMap_CFG
  • PartialImprovedLeakingSync_CFG
  • PartialSafeFileInputStream_CFG
  • PartialSafeFileWriter_CFG
  • PartialSafeIterator_CFG
  • SafeFileInputStream_CFG
  • SafeFileOutputStream_CFG
  • SafeIterator_CFG
  • SafeLock_CFG
  • p_CFG

Please press the Run button once and wait; it may take a few seconds to run JavaMOP1.0_CFG; the execution of JavaMOP1.0_CFG using this web interface is limited to 2 minutes of CPU time and 500 MB of RAM.

Personal tools