in json/src/main/java/org/netbeans/html/json/impl/ModelProcessor.java [97:155]
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
boolean ok = true;
for (Element e : roundEnv.getElementsAnnotatedWith(Model.class)) {
Model m = e.getAnnotation(Model.class);
if (m == null) {
continue;
}
List<String> pkgList = packages.get(m.className());
if (pkgList == null) {
pkgList = new ArrayList<>();
packages.put(m.className(), pkgList);
}
pkgList.add(findPkgName(e));
}
for (Element e : roundEnv.getElementsAnnotatedWith(Model.class)) {
if (!processModel(e)) {
ok = false;
}
}
if (roundEnv.processingOver()) {
models.clear();
for (Map.Entry<Element, Prprt[]> entry : verify.entrySet()) {
TypeElement te = (TypeElement)entry.getKey();
String fqn = te.getQualifiedName().toString();
Element finalElem = processingEnv.getElementUtils().getTypeElement(fqn);
if (finalElem == null) {
continue;
}
Prprt[] props;
Model m = finalElem.getAnnotation(Model.class);
if (m == null) {
continue;
}
props = Prprt.wrap(processingEnv, finalElem, m.properties());
for (Prprt p : props) {
boolean[] isModel = { false };
boolean[] isEnum = { false };
boolean[] isPrimitive = { false };
String t = checkType(p, isModel, isEnum, isPrimitive);
if (isEnum[0]) {
continue;
}
if (isPrimitive[0]) {
continue;
}
if (isModel[0]) {
continue;
}
if ("java.lang.String".equals(t)) {
continue;
}
error("The type " + t + " should be defined by @Model annotation", entry.getKey());
}
}
verify.clear();
packages.clear();
}
return ok;
}