import javax.jcr.RepositoryException;
import javax.jcr.Session;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.argeo.ArgeoException;
import org.argeo.eclipse.ui.AbstractTreeContentProvider;
/** Canonic implementation of tree content provider manipulating JCR nodes. */
public abstract class AbstractNodeContentProvider extends
AbstractTreeContentProvider {
+ private final static Log log = LogFactory
+ .getLog(AbstractNodeContentProvider.class);
+
private Session session;
public AbstractNodeContentProvider(Session session) {
return children;
}
+ /**
+ * To be overridden in order to filter out some nodes. Does nothing by
+ * default. The provided list is a temporary one and can thus be modified
+ * directly . (e.g. via an iterator)
+ */
+ protected List<Node> filterChildren(List<Node> children)
+ throws RepositoryException {
+ return children;
+ }
+
protected Object[] getChildren(Node node) throws RepositoryException {
List<Node> nodes = new ArrayList<Node>();
for (NodeIterator nit = node.getNodes(); nit.hasNext();)
nodes.add(nit.nextNode());
+ nodes = filterChildren(nodes);
return nodes.toArray();
}
else
return node.getParent();
} catch (RepositoryException e) {
- throw new ArgeoException("Cannot get parent of " + element, e);
+ log.warn("Cannot get parent of " + element + ": " + e);
+ return null;
}
} else if (element instanceof WrappedNode) {
WrappedNode wrappedNode = (WrappedNode) element;