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=85f487bb2d0d2c9e7c6d817e084813cd409e7298;hb=1d5afdce3e91054f07ddd3c98309c363b4cf1d46;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..85f487bb2 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 @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2007-2012 Mathieu Baudier + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.argeo.eclipse.ui.jcr; import java.util.ArrayList; @@ -8,12 +23,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 +83,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 +112,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;