package com.google.code.joto.ast.accesspath; import com.google.code.joto.ast.accesspath.AccessPathAST.AggregateFieldCollectionAccess; import com.google.code.joto.ast.accesspath.AccessPathAST.AggregateFieldFieldAccess; import com.google.code.joto.ast.accesspath.AccessPathAST.AggregateFieldMapAccess; import com.google.code.joto.ast.accesspath.AccessPathAST.ArrayIndexAccess; import com.google.code.joto.ast.accesspath.AccessPathAST.ClassFieldAccess; import com.google.code.joto.ast.accesspath.AccessPathAST.CollectionAccess; import com.google.code.joto.ast.accesspath.AccessPathAST.CompoundPathAccess; import com.google.code.joto.ast.accesspath.AccessPathAST.MapAccess; import com.google.code.joto.ast.accesspath.AccessPathAST.ObjectFieldAccess; /** * Visitor for AcessPathEltAST class hierarchy */ public interface AccessPathVisitor { void caseObjectField(ObjectFieldAccess p); void caseArrayIndex(ArrayIndexAccess p); void caseClassStaticField(ClassFieldAccess p); // non built-in Collection/Map type access void caseCollectionAccess(CollectionAccess p); void caseMapAccess(MapAccess mapAccess); // Compound / Chained design pattern: path = pathElt1/pathElt2/...pathEltN // output of path_i = input of path_i+1 void caseCompoundPath(CompoundPathAccess p); // aggregate for partial SCC object... // same as Coumpound, but for level=2 ... and giving compile-time access restriction to methods void caseAggrFieldField(AggregateFieldFieldAccess p); void caseAggrFieldCollection(AggregateFieldCollectionAccess p); void caseAggrFieldMap(AggregateFieldMapAccess p); }