X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=eclipse%2Fruntime%2Forg.argeo.eclipse.ui.jcr%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Feclipse%2Fui%2Fjcr%2FAbstractNodeContentProvider.java;h=10930a9ae312d3cf017bf8f042c432d7db1700d3;hb=fa07ed47b3933a9b78b43530eae725b7a3effe2d;hp=72a14baf850c8251b6ed04e64db89d04d736803a;hpb=d5d0ea08027ce18a842c1727a1539e42a1e17857;p=lgpl%2Fargeo-commons.git diff --git a/eclipse/runtime/org.argeo.eclipse.ui.jcr/src/main/java/org/argeo/eclipse/ui/jcr/AbstractNodeContentProvider.java b/eclipse/runtime/org.argeo.eclipse.ui.jcr/src/main/java/org/argeo/eclipse/ui/jcr/AbstractNodeContentProvider.java index 72a14baf8..10930a9ae 100644 --- a/eclipse/runtime/org.argeo.eclipse.ui.jcr/src/main/java/org/argeo/eclipse/ui/jcr/AbstractNodeContentProvider.java +++ b/eclipse/runtime/org.argeo.eclipse.ui.jcr/src/main/java/org/argeo/eclipse/ui/jcr/AbstractNodeContentProvider.java @@ -8,12 +8,17 @@ import javax.jcr.NodeIterator; 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) { @@ -63,10 +68,21 @@ public abstract class AbstractNodeContentProvider extends 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 filterChildren(List children) + throws RepositoryException { + return children; + } + protected Object[] getChildren(Node node) throws RepositoryException { List nodes = new ArrayList(); for (NodeIterator nit = node.getNodes(); nit.hasNext();) nodes.add(nit.nextNode()); + nodes = filterChildren(nodes); return nodes.toArray(); } @@ -81,7 +97,8 @@ public abstract class AbstractNodeContentProvider extends 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;