O
- the type of object that will be built.R
- the object which should be used for recognitionC
- a pass-through object that can be used by recognizers to help
them identify <R>
.public abstract class OBFramework<R,O,C>
extends java.lang.Object
OBStager
that orchestrates the build of one or many
objects. It can also be used to test the framework to see what sub-type of
the desired type can be built.
The framework works in two steps:
In step 1, all registered OBRecognizer
s are queried to see which ones
are interested in supplying builders for the given element. Recognizers also provide
the type of class their builders will build. The framework client can stop
at this stage, or it can go to step 2 to actually build the objects by calling
the build()
or buildAll()
methods.
Modifier and Type | Class and Description |
---|---|
static class |
OBFramework.UnrecognizedTargetException |
Constructor and Description |
---|
OBFramework() |
Modifier and Type | Method and Description |
---|---|
void |
addBuildListener(java.lang.Class classOrIntf,
OBListener listener) |
void |
addBuildListener(java.lang.Class classOrIntf,
OBListener listener,
boolean subType) |
OBStager<R,O,C> |
createBuilder(R recognize,
C context) |
OBStager<R,O,C> |
createBuilder(R recognize,
C context,
java.lang.Class classOrIntf) |
java.util.List<OBListener> |
getBuildListeners(java.lang.Class clazz) |
abstract java.util.List<OBRecognizer<R,O,C>> |
getRecognizers(java.lang.Class forType) |
protected abstract OBStager<R,O,C> |
newOBStager(OBFramework<R,O,C> recognizer,
R recognize,
C context,
java.lang.Class classOrIntf) |
java.lang.Class[] |
recognize(R recognize,
C context) |
java.lang.Class[] |
recognize(R recognize,
C context,
java.lang.Class classOrIntf) |
boolean |
removeBuildListener(java.lang.Class classOrIntf,
OBListener listener) |
public OBStager<R,O,C> createBuilder(R recognize, C context, java.lang.Class classOrIntf)
protected abstract OBStager<R,O,C> newOBStager(OBFramework<R,O,C> recognizer, R recognize, C context, java.lang.Class classOrIntf)
public void addBuildListener(java.lang.Class classOrIntf, OBListener listener)
public void addBuildListener(java.lang.Class classOrIntf, OBListener listener, boolean subType)
public boolean removeBuildListener(java.lang.Class classOrIntf, OBListener listener)
public java.util.List<OBListener> getBuildListeners(java.lang.Class clazz)
public abstract java.util.List<OBRecognizer<R,O,C>> getRecognizers(java.lang.Class forType)