Repository: incubator-juneau
Updated Branches:
  refs/heads/master 609f80226 -> 0d10af30f


Improve ordering of columns in bean tables in HtmlSerializer.

Currently, the ordering is messed up if the first row has null values.

Project: http://git-wip-us.apache.org/repos/asf/incubator-juneau/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-juneau/commit/0d10af30
Tree: http://git-wip-us.apache.org/repos/asf/incubator-juneau/tree/0d10af30
Diff: http://git-wip-us.apache.org/repos/asf/incubator-juneau/diff/0d10af30

Branch: refs/heads/master
Commit: 0d10af30f0b8ca36cfe718e00838d5944af37a45
Parents: 609f802
Author: JamesBognar <[email protected]>
Authored: Thu Jun 15 09:23:11 2017 -0400
Committer: JamesBognar <[email protected]>
Committed: Thu Jun 15 09:23:11 2017 -0400

----------------------------------------------------------------------
 .../java/org/apache/juneau/html/HtmlSerializer.java     | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0d10af30/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java 
b/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java
index 8d9d087..f227456 100644
--- a/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java
@@ -645,19 +645,25 @@ public class HtmlSerializer extends XmlSerializer {
                        }
                        th = set.toArray(new Object[set.size()]);
                } else {
-                       Set<Object> set = new LinkedHashSet<Object>();
+                       Map<String,Boolean> m = new 
LinkedHashMap<String,Boolean>();
                        for (Object o : c) {
                                if (! session.canIgnoreValue(cm, null, o)) {
                                        if (! cm.isInstance(o))
                                                return null;
                                        BeanMap<?> bm = (o instanceof BeanMap ? 
(BeanMap)o : session.toBeanMap(o));
                                        for (Map.Entry<String,Object> e : 
bm.entrySet()) {
+                                               String key = e.getKey();
                                                if (e.getValue() != null)
-                                                       set.add(e.getKey());
+                                                       m.put(key, true);
+                                               else if (! m.containsKey(key))
+                                                       m.put(key, false);
                                        }
                                }
                        }
-                       th = set.toArray(new Object[set.size()]);
+                       for (Iterator<Boolean> i = m.values().iterator(); 
i.hasNext();)
+                               if (! i.next())
+                                       i.remove();
+                       th = m.keySet().toArray(new Object[m.size()]);
                }
                prevC.add(cm);
                boolean isSortable = true;

Reply via email to