230 likes | 348 Vues
Explore the TraversalJ project, implement using DemeterJ and AspectJ, debug strategies, and document the class graph. Learn to test traversal code efficiently for submission. Submission deadline: March 11, 2002.
E N D
TraversalJ 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 traversal.class AspectJ
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 Main CreateClassGraph traversal.trv ClassGraphEvent(args, cg) COM1205 Middle-ware AspectJTraversal traversal.java
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 Main CreateClassGraph traversal.trv ClassGraphEvent(args, cg) COM1205 Middle-ware AspectJTraversal traversal.java
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 CreateClassGraph ClassGraphListener ClassGraphListener getNew() MyListener ClassGraphFactory new MyListener()
ClassGraphListener/Factory CreateClassGraph ClassGraphEvent(args, cg) ClassGraphListener MyListener 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 COM1205 Middle-ware DemeterJ traversal.trv AspectJ TraversalJ traversal.java
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? • com1205-grader@ccs.neu.edu • Reaches both KLE and TAC. • http://www.ccs.neu.edu/home/lieber/com3362/w02/CCS_AspectJ_Usage.html