public static class MultiGraphQualifierHierarchy.MultiGraphFactory extends Object
GraphQualifierHierarchy
. A factory can be used
to create at most one GraphQualifierHierarchy
.
To create a hierarchy, a client may do so in three steps:
addQualifier(AnnotationMirror)
;
addSubtype(AnnotationMirror, AnnotationMirror)
build()
.
addSubtype(AnnotationMirror, AnnotationMirror)
adds the two qualifiers
to the hierarchy if they are not already in.
Also, once the client builds a hierarchy through build()
, no further
modifications are allowed nor can it making a new instance.
Clients build the hierarchy using addQualifier(AnnotationMirror)
and addSubtype(AnnotationMirror, AnnotationMirror)
, then get the instance with calling build()
Modifier and Type | Field and Description |
---|---|
protected AnnotatedTypeFactory |
atypeFactory |
protected Map<AnnotationMirror,AnnotationMirror> |
polyQualifiers
Map from qualifier hierarchy to the corresponding polymorphic qualifier.
|
protected Map<AnnotationMirror,Set<AnnotationMirror>> |
supertypes
Map from qualifiers to the direct supertypes of the qualifier.
|
Constructor and Description |
---|
MultiGraphFactory(AnnotatedTypeFactory atypeFactory) |
Modifier and Type | Method and Description |
---|---|
void |
addQualifier(AnnotationMirror qual)
Adds the passed qualifier to the hierarchy.
|
void |
addSubtype(AnnotationMirror sub,
AnnotationMirror sup)
Adds a subtype relationship between the two type qualifiers.
|
protected void |
assertNotBuilt()
Throw an exception if the factory was already built.
|
QualifierHierarchy |
build()
Returns an instance of
GraphQualifierHierarchy that represents the hierarchy
built so far. |
protected QualifierHierarchy |
createQualifierHierarchy() |
protected final Map<AnnotationMirror,Set<AnnotationMirror>> supertypes
protected final Map<AnnotationMirror,AnnotationMirror> polyQualifiers
protected final AnnotatedTypeFactory atypeFactory
public MultiGraphFactory(AnnotatedTypeFactory atypeFactory)
public void addQualifier(AnnotationMirror qual)
addSubtype(AnnotationMirror, AnnotationMirror)
.public void addSubtype(AnnotationMirror sub, AnnotationMirror sup)
sub
- the sub type qualifiersup
- the super type qualifierpublic QualifierHierarchy build()
GraphQualifierHierarchy
that represents the hierarchy
built so far.protected QualifierHierarchy createQualifierHierarchy()
protected void assertNotBuilt()