Experimentation with TreeCache shows that the only thing getKeys returns is the object/objects at that level in the tree.
So if I have objects at
/foo/[objectA]
/foo/[objectB]
/foo/bar/[objectC]
and ask for path /foo I will get two objects. If I ask for "/" or "" I get no objects at all. Is there no way to get the keys for everything in the cache so that I can iterate over all of it?
public static void main( String[] args ) { BasicConfigurator.configure(); try { TreeCache cache = new TreeCache(); cache.createService(); cache.startService(); cache.put("/foo", "foo", new Rectangle() ); cache.put("/foo", "bar", "Something Else" ); cache.put("/foo/bar", "barchild", "Child of bar"); Set children = cache.getChildrenNames("/"); Set keys = cache.getKeys("/"); logger.debug("Cache contains ["+ cache.getNumberOfNodes() + "] nodes"); logger.debug("Children of / are " + children.size() + "[" + children + "]" ); logger.debug("Cache members are " + cache.getMembers().size() ); logger.debug("" + keys.size() ); } catch( Exception e ) { logger.error("Something bad happened", e); } }
Yes, you have to walk the tree yourself