r1188 - in jaxx/trunk/jaxx-runtime-swing: . src/main/java/jaxx/runtime/swing/navigation
Author: tchemit Date: 2009-01-24 21:09:49 +0000 (Sat, 24 Jan 2009) New Revision: 1188 Modified: jaxx/trunk/jaxx-runtime-swing/changelog.txt jaxx/trunk/jaxx-runtime-swing/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeModel.java Log: - add a cache on context path to improve performance on NavigationTreeNode Modified: jaxx/trunk/jaxx-runtime-swing/changelog.txt =================================================================== --- jaxx/trunk/jaxx-runtime-swing/changelog.txt 2009-01-24 21:07:09 UTC (rev 1187) +++ jaxx/trunk/jaxx-runtime-swing/changelog.txt 2009-01-24 21:09:49 UTC (rev 1188) @@ -1,4 +1,5 @@ 1.1 chemit 200901?? + * 20090124 [chemit] - add a cache on context path to improve performance on NavigationTreeNode * 20090123 [chemit] - improve NavigationTreeNodeRenderer (now can customized node internalClass) * 20090121 [letellier] - add some usefull methods in JAXXList and JAXXComboBox Modified: jaxx/trunk/jaxx-runtime-swing/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeModel.java =================================================================== --- jaxx/trunk/jaxx-runtime-swing/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeModel.java 2009-01-24 21:07:09 UTC (rev 1187) +++ jaxx/trunk/jaxx-runtime-swing/src/main/java/jaxx/runtime/swing/navigation/NavigationTreeModel.java 2009-01-24 21:09:49 UTC (rev 1188) @@ -225,6 +225,12 @@ /** pour representer le context du noeud. */ protected String navigationPath; + /** + * the cached complete navigation path from root node + * used for performance issues. + */ + protected String cachedNavigationPath; + /** the JAXXObject class associated with this node (can be null) */ protected Class<? extends JAXXObject> jaxxClass; @@ -357,13 +363,16 @@ /** @return the fully context pathof the node from the root node to this. */ public String getContextPath() { - TreeNode[] path = getPath(); - StringBuilder sb = new StringBuilder(); - for (TreeNode treeNode : path) { - NavigationTreeNode myNode = (NavigationTreeNode) treeNode; - sb.append(navigationPathSeparator).append(myNode.getNavigationPath()); + if (cachedNavigationPath == null) { + TreeNode[] path = getPath(); + StringBuilder sb = new StringBuilder(); + for (TreeNode treeNode : path) { + NavigationTreeNode myNode = (NavigationTreeNode) treeNode; + sb.append(navigationPathSeparator).append(myNode.getNavigationPath()); + } + cachedNavigationPath = sb.substring(1); } - return sb.substring(1); + return cachedNavigationPath; } @Override @@ -550,6 +559,9 @@ // clear bean cache cachedBean = null; + // clear context navigation cache + cachedNavigationPath = null; + // clear render cache if (renderer != null) { renderer.setRendererCachedValue(null);
participants (1)
-
tchemit@users.labs.libre-entreprise.org