- Session session = itemTemplate.getSession();
- QueryManager queryManager = session.getWorkspace()
- .getQueryManager();
- QueryObjectModelFactory factory = queryManager.getQOMFactory();
- String nodeType = getAliasTypeForNode(itemTemplate);
-
- Selector source = factory.selector(nodeType, nodeType);
- String basePath = getCurrentEnvBasePath(itemTemplate);
- Constraint defaultC = factory.descendantNode(
- source.getSelectorName(), basePath);
-
- // Order by default by JCR TITLE
- // TODO check if node definition has MIX_TITLE mixin
- // TODO Apparently case insensitive ordering is not implemented in
- // current used JCR implementation
- Ordering order = factory
- .ascending(factory.upperCase(factory.propertyValue(
- source.getSelectorName(), Property.JCR_TITLE)));
- QueryObjectModel query;
- query = factory.createQuery(source, defaultC,
- new Ordering[] { order }, null);
- QueryResult result = query.execute();
-
- NodeIterator ni = result.getNodes();
-
- return JcrUtils.nodeIteratorToList(ni);
- } catch (RepositoryException e) {
- throw new AkbException("Unable to list connector", e);
+ if (akbNode.getDepth() == 0)
+ // no base path for root node
+ return null;
+ Node parNode = akbNode.getParent();
+
+ while (parNode != null)
+ if (akbNode.isNodeType(AkbTypes.AKB_ENV_TEMPLATE))
+ return akbNode;
+ else if (parNode.getDepth() == 0)
+ // we found not fitting node
+ return null;
+ else {
+ akbNode = parNode;
+ parNode = parNode.getParent();
+ }
+ return null;
+ } catch (RepositoryException re) {
+ throw new AkbException("Unable to find template for node "
+ + akbNode, re);