]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/providers/TemplatesTreeContentProvider.java
Edit connector wizard
[gpl/argeo-slc.git] / plugins / org.argeo.slc.akb.ui / src / main / java / org / argeo / slc / akb / ui / providers / TemplatesTreeContentProvider.java
index e35302864bb041c85f8dabbfe184b314bb8d5a3e..9fe2df1ccccddcf63da447090fa14c5bf7e0afcd 100644 (file)
@@ -22,18 +22,20 @@ import javax.jcr.Node;
 import javax.jcr.NodeIterator;
 import javax.jcr.RepositoryException;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.argeo.slc.akb.AkbException;
 import org.argeo.slc.akb.AkbTypes;
 import org.eclipse.jface.viewers.ITreeContentProvider;
 import org.eclipse.jface.viewers.Viewer;
 
-/** Basic content provider for a tree of AKB environment templates */
+/** Basic content provider for a tree of active AKB environments */
 public class TemplatesTreeContentProvider implements ITreeContentProvider {
+       private final static Log log = LogFactory
+                       .getLog(TemplatesTreeContentProvider.class);
 
        /**
         * @param parent
-        *            Pass current user home as parameter
-        * 
         */
        public Object[] getElements(Object parent) {
                if (parent instanceof Object[])
@@ -45,10 +47,22 @@ public class TemplatesTreeContentProvider implements ITreeContentProvider {
        public Object getParent(Object child) {
                try {
                        Node node = (Node) child;
+
+                       // Manual sanity check to avoid exception when trying to refresh an
+                       // element that displays a node which has been removed
+                       try {
+                               String id = node.getIdentifier();
+                               node.getSession().getNodeByIdentifier(id);
+                       } catch (Exception e) {
+                               log.warn("Trying to refresh an unexisting node");
+                               return null;
+                       }
+
                        if (node.getDepth() == 0)
                                return null;
                        else
                                return node.getParent();
+
                } catch (RepositoryException e) {
                        throw new AkbException("Error while getting parent node", e);
                }
@@ -86,4 +100,7 @@ public class TemplatesTreeContentProvider implements ITreeContentProvider {
 
        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        }
+       
+       
+       
 }
\ No newline at end of file