John J. Sung TA Consulting. Motivation for TraversalJ KL Enterprises identified AOP Enter into the...
-
Upload
briana-johnston -
Category
Documents
-
view
218 -
download
0
Transcript of John J. Sung TA Consulting. Motivation for TraversalJ KL Enterprises identified AOP Enter into the...
John J. Sung
TA Consulting
Motivation for TraversalJ
• KL Enterprises identified AOP
• Enter into the AOP market early
• Add value by adding traversals to Java
• Contract COM 1205 Inc.
• TA Consulting Recommendations
High-Level System Overview
traversal.trv TraversalJ
traversal.java
AspectJtraversal.class
System Components
• traversal.trv – TraversalJ file with class graph and traversal declarations
• TraversalJ – DemeterJ program by COM1205
• traversal.java – Traversal code in AspectJ• AspectJ – Aspect Oriented Programming
Tool
TraversalJ Overview
• Implement using DemterJ– class dictionary– traversals
• Obtain Class Graph using AspectJ & DJ– CreateClassGraph.java
• Output traversal java code– AspectJTraversal.java
TraversalJ System
traversal.trv
COM1205Middle-ware
CreateClassGraph
AspectJTraversal traversal.java
Main
ClassGraphEvent(args, cg)
AspectJTraversal
• Java code to translate class graph + strategy into AspectJ code
• Processes DJ classes to do most of the work
TraversalJ Syntax
• ClassGraph Specification– ClassGraph cgvar;– ClassGraph cgvar = new ClassGraph(cg,
“strategy”);
• Traversal Specification– declare traversal tvar : “strategy”;– declare traversal tvar(cgvar) : “strategy”;
TraversalJ Syntax
• Traversal Aspect Specification– aspect aspectName { – class graph declaration;– traversal declaration;– }
TraversalJ Syntax Example
aspect MyTraversal {
ClassGraph defaultCG;
ClassGraph cg1 = new ClassGraph(defaultCG, “from * bypassing {java.lang.String} to
*”);
declare traversal t1: “from CompoundFile to SimpleFile”;
declare traversal t2(cg1): “from CompoundFile to *”;}
Graphs and Traversals?
• Need to obtain Default Class Graph
• Keep track of declared Class Graphs
• Process traversal with specific Class Graph
TraversalJ System
traversal.trv
COM1205Middle-ware
CreateClassGraph
AspectJTraversal traversal.java
Main
ClassGraphEvent(args, cg)
ClassGraphListener/Factory
• ClassGraphListenerFactory– Need a way to obtain an instance of
Middle-ware code– ClassGraphListener getNew();
• ClassGraphListener– need a way to pass ClassGraph and
arguments– abstract void ClassGraphEvent(String []
args, ClassGraph cg);
ClassGraphListener/Factory
ClassGraphFactory
ClassGraphListener
MyListener
getNew()
new MyListener()
ClassGraphListener
CreateClassGraph
ClassGraphListener/Factory
ClassGraphListener
MyListener
CreateClassGraph
ClassGraphEvent(args, cg)
Some Other Code
.prj File
• Copy CreateClassGraph.java and AspectJTravearsal.java into a directory
• Add the directory for the JAVADIR option in .prj file
• COMPILER = ajc• TEST_ARGS = -d trav some.trv• TEST_INPUT = some.trv
Testing TraversalJ
• Create some traversal file that implements a traversal that’s used in TraversalJ.
• Generate the .java file into a directory• Add the directory for JAVADIRS• Add code to call the traversal method
in .beh files.• Compile with traversal code and test
Fun with Recursion
traversal.trv
COM1205Middle-ware
DemeterJ
traversal.java
AspectJ
TraversalJ
Debugging Strategy
• Traversals– You can use DJ to output traversal graphs– Look for error messages from demeterj
• General Debugging– have some variable debug to turn on debug
output
• AspectJTraversal– debug : outputs processing information– addPrintingAdvice : Outputs code for printing
traversal method calls
TraversalJ Project Phases
• Phase1 – Generate Class Dictionary for the traversal language
• Phase 2 – Implement –d directory option, basic traversal with default Class Graph
• Phase 3 – Implement Class Graph declaration and definition
• Phase 4 – Test code by generating a traversal used in TraversalJ
Project Submission
• Use ~jser/submit-proj
• README – How to compile your program– How to generate traversal code– How to test traversal code
• Due Date: March 8, 2002
Project Write Up
• Class Graph UML Diagram
• Document Traversals
• Document Testing of Traversal Code
• Evaluate software design and usefulness of TraversalJ
• Drop it off in class or mail box of TA
• Due Date: March 11, 2002
Questions?
• Reaches both KLE and TAC.• http://www.ccs.neu.edu/home/lieber/com3362/w02/
CCS_AspectJ_Usage.html