You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by jt...@apache.org on 2019/11/21 07:13:51 UTC

[netbeans-html4j] branch master updated: Enumerate @Model annotations first to be able to guess their package

This is an automated email from the ASF dual-hosted git repository.

jtulach pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans-html4j.git


The following commit(s) were added to refs/heads/master by this push:
     new bafea61  Enumerate @Model annotations first to be able to guess their package
bafea61 is described below

commit bafea61ae1607afb6be73127f1c812aa25786a54
Author: Duke Script <se...@dukescript.com>
AuthorDate: Thu Nov 21 08:13:45 2019 +0100

    Enumerate @Model annotations first to be able to guess their package
---
 .../netbeans/html/json/impl/ModelProcessor.java    | 29 +++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/json/src/main/java/org/netbeans/html/json/impl/ModelProcessor.java b/json/src/main/java/org/netbeans/html/json/impl/ModelProcessor.java
index 25c0a0a..7e342d3 100644
--- a/json/src/main/java/org/netbeans/html/json/impl/ModelProcessor.java
+++ b/json/src/main/java/org/netbeans/html/json/impl/ModelProcessor.java
@@ -94,11 +94,24 @@ import org.openide.util.lookup.ServiceProvider;
 public final class ModelProcessor extends AbstractProcessor {
     private static final Logger LOG = Logger.getLogger(ModelProcessor.class.getName());
     private final Map<Element,String> models = new WeakHashMap<Element,String>();
+    private final Map<String,List<String>> packages = new HashMap<String,List<String>>();
     private final Map<Element,Prprt[]> verify = new WeakHashMap<Element,Prprt[]>();
     @Override
     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<String>();
+                packages.put(m.className(), pkgList);
+            }
+            pkgList.add(findPkgName(e));
+        }
+        for (Element e : roundEnv.getElementsAnnotatedWith(Model.class)) {
             if (!processModel(e)) {
                 ok = false;
             }
@@ -139,6 +152,7 @@ public final class ModelProcessor extends AbstractProcessor {
                 }
             }
             verify.clear();
+            packages.clear();
         }
         return ok;
     }
@@ -1869,7 +1883,20 @@ public final class ModelProcessor extends AbstractProcessor {
         if (e.getKind() == ElementKind.CLASS && tm.getKind() == TypeKind.ERROR) {
             isModel[0] = true;
             isEnum[0] = false;
-            return e.getSimpleName().toString();
+            final String simpleName = e.getSimpleName().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();


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists