org.javagen.agile.core.visitor
Class TypeLookupVisitor
java.lang.Object
org.javagen.agile.core.visitor.DefaultVisitor
org.javagen.agile.core.visitor.TypeLookupVisitor
- All Implemented Interfaces:
- Generator, Visit, Visitor
- Direct Known Subclasses:
- IdAssignerVisitor
public class TypeLookupVisitor
- extends DefaultVisitor
Defines a generic, extensible visitor pattern based on registering a
Visit instance for each Model type.
The biggest problem with the traditional visitor pattern is that it binds you to a
fixed set of node types witch is not good in an open-ended framework
like JavaGen-Agile. This visitor pattern avoids that by allowing any number
of Visit methods to be registered by Model type.
Arbitrary model hierarchies can be combined as this example illustrates:
Visitor visitor = new TypeLookupVisitor( new OOLookupVisitor(), new DBLookupVisitor() );
visitor.visit( combinedModelTree );
- Author:
- Richard Easterling
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
visitInstances
protected Map<Class,Visit> visitInstances
defualtVisit
protected Visit defualtVisit
TypeLookupVisitor
public TypeLookupVisitor()
TypeLookupVisitor
public TypeLookupVisitor(TypeLookupVisitor[] lookupVisitorDelegates)
visit
public void visit(Model model)
- Lookup Visit instance for this model type and invoke
visit method.
If no Visit instance is registered for a given type, the defaultVisit
method will be invoked if one has been specified.
Note: this method is only called if there is either no itinerary or the itinerary includes
this modelType.
- Specified by:
visit in interface Visit- Specified by:
visit in interface Visitor- Overrides:
visit in class DefaultVisitor
- Parameters:
model - instance to visit.
addVisitInstances
public void addVisitInstances(Map<Class,Visit> visitInstances)
put
public void put(Class clazz,
Visit visit)
get
public Visit get(Class clazz)
getVisitInstances
public Map<Class,Visit> getVisitInstances()
setVisitInstances
public void setVisitInstances(Map<Class,Visit> visitInstances)
getDefualtVisit
public Visit getDefualtVisit()
setDefualtVisit
public void setDefualtVisit(Visit defualtVisit)
Copyright 2006-2006-2007 Outsource Cafe Inc.. All Rights Reserved.