private String checkType()

in json/src/main/java/org/netbeans/html/json/impl/ModelProcessor.java [1875:1937]


    private String checkType(Prprt p, boolean[] isModel, boolean[] isEnum, boolean[] isPrimitive) {
        TypeMirror tm;
        try {
            String ret = p.typeName(processingEnv);
            TypeElement e = processingEnv.getElementUtils().getTypeElement(ret);
            if (e == null) {
                isModel[0] = true;
                isEnum[0] = false;
                isPrimitive[0] = false;
                return ret;
            }
            tm = e.asType();
        } catch (MirroredTypeException ex) {
            tm = ex.getTypeMirror();
        }
        tm = processingEnv.getTypeUtils().erasure(tm);
        if (isPrimitive[0] = tm.getKind().isPrimitive()) {
            isEnum[0] = false;
            isModel[0] = false;
            return tm.toString();
        }
        final Element e = processingEnv.getTypeUtils().asElement(tm);
        if (isError(e, tm)) {
            isModel[0] = true;
            isEnum[0] = false;
            final String simpleName = e != null ? e.getSimpleName().toString() : tm.toString();
            List<String> knownPackages = packages.get(simpleName);
            if (knownPackages != null && !knownPackages.isEmpty()) {
                String referencingPkg = findPkgName(p.e);
                String foundPkg = null;
                for (String pkg : knownPackages) {
                    foundPkg = pkg;
                    if (pkg.equals(referencingPkg)) {
                        return simpleName;
                    }
                }
                return foundPkg + '.' + simpleName;
            }
            return simpleName;
        }

        TypeMirror enm = processingEnv.getElementUtils().getTypeElement("java.lang.Enum").asType();
        enm = processingEnv.getTypeUtils().erasure(enm);
        isEnum[0] = processingEnv.getTypeUtils().isSubtype(tm, enm);

        String ret;
        if (!isEnum[0]) {
            final Model m = e == null ? null : e.getAnnotation(Model.class);
            if (m != null) {
                ret = findPkgName(e) + '.' + m.className();
                isModel[0] = true;
                models.put(e, m.className());
            } else if (findModelForMthd(e)) {
                ret = ((TypeElement)e).getQualifiedName().toString();
                isModel[0] = true;
            } else {
                ret = tm.toString();
            }
        } else {
            ret = tm.toString();
        }
        return ret;
    }