Dear Magnolia staff
I've just spent too much time tracking down a problem with
TemplatingFunctions.search(). I keep getting the results in reversed order.
Take this query for instance and run it in "Tools" > "JCR Queries":
select * from mgnl:contentNode where jcr:path like
'/demo-project/about/subsection-articles/large-article/content/%' AND subtitle
IS NOT NULL
You should end up with this:
/demo-project/about/subsection-articles/large-article/content/0
/demo-project/about/subsection-articles/large-article/content/00
/demo-project/about/subsection-articles/large-article/content/02
Compare it to the JCR tree and you will see that the order matches. Now modify
the template /templating-kit/pages/content/contentNavigation.ftl like this:
[#if model.contentNavigation?exists]
<div id="nav-content">
[#if
content.title?has_content]<h3><em>${i18n['contentNavigation.index.title']}
</em>${content.title}</h3>[/#if]
[#list model.contentNavigation as item]
<ul>
<li><a href="${item.href}">${item.title}</a></li>
</ul>
[/#list]
</div><!-- end nav-content -->
[/#if]
Test:
[#assign queryString = "select * from mgnl:contentNode where jcr:path like
'"+state.mainContent.@handle+"/content/%' AND subtitle IS NOT NULL" /]
[#assign subTitleParagraphs = cmsfn.search("website", queryString, "sql",
"mgnl:contentNode") /]
[#if subTitleParagraphs?has_content]
<div class="verticalNavi">
<ul>
[#list subTitleParagraphs as paragraph]
<li>
${paragraph}
</li>
[/#list]
</ul>
</div>
[/#if]
Now, on my Mac, Magnolia 4.5.6 CE, Java 1.6.0_37, I'm getting the paragraphs in
reversed order. When I try the same on demoauthor.magnolia-cms.com everything
is fine!!!
I tracked this down to NodeUtil.getCollectionFromNodeIterator(NodeIterator
iterator) which runs through the iterator and stuffs everything an a HashSet
using the "add" method. When I change this method to use an ArrayList instead
of a HashSet, everything is fine! So this leads me to the conclusion, that
there must be a bug in my JDK.
Now the questions at hand would be:
- Can I ignore the problem because I won't be deploying on the Mac anyways?
- Or does anyone see the same misbehavior on an other platform?
- Is there a specific reason why you used HashSet instead of ArrayList?
Thanks!
-will
----------------------------------------------------------------
For list details, see http://www.magnolia-cms.com/community/mailing-lists.html
Alternatively, use our forums: http://forum.magnolia-cms.com/
To unsubscribe, E-mail to: <[email protected]>
----------------------------------------------------------------