Я использую магнолию для одного из своих проектов, и в этом я создал конечную точку REST. Остальная конечная точка будет считывать узлы из моей пользовательской рабочей области и возвращать результат клиенту. Это очень просто.
Если я запускаю приведенный ниже запрос в приложении запросов Magnolia JCR Utils, он работает нормально и возвращает правильные результаты.
SELECT * FROM [mgnl:contentIndex]
Ниже скриншот
http://s1.postimg.org/gl59arw2n/correct_result.png
Если я запускаю приведенный ниже код в своем обработчике REST ENDPOINT, он возвращает пустой набор результатов.
// Get JCR session for "dinnacoDriven" workspace
try {
Session session = MgnlContext.getJCRSession("dinnacoDriven");
StringBuilder queryBuilder = new StringBuilder("SELECT * FROM [mgnl:contentIndex]");
System.out.println(queryBuilder.toString());
Query query = session.getWorkspace().getQueryManager().createQuery(queryBuilder.toString(), Query.JCR_SQL2);
List<String> suggestions = new ArrayList<String>();
NodeIterator iterator = query.execute().getNodes();
while(iterator.hasNext()) {
System.out.println("next node");
Node node = iterator.nextNode();
suggestions.add(node.getProperty("title").getString());
}
return suggestions;
} catch(RepositoryException ex) {
throw new ServiceException("Internal Server Error", ex);
}
Я вижу в журналах, что System.out.println(queryString.toString());
напечатает точно такой же запрос, который я запускаю выше, но next node
никогда не будет напечатан. Он возвращает пустые результаты.
Прошло 12 часов с тех пор, как я пытаюсь понять, что не так с этим кодом, но ничего не могу найти.
В чем проблема с моим кодом? Почему он возвращает пустой набор результатов?
РЕДАКТИРОВАТЬ: Добавление дополнительной информации. Когда я получаю доступ из кода, я не вхожу в систему. Я получаю доступ анонимно.
Узлы contentIndex хранятся в рабочей области dinnacoDriven под корневым узлом contentIndex.
Еще немного информации, я экспортировал рабочую область dinnacoDriven в xml, это файл xml