X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=swt%2Forg.argeo.cms.jcr.ui%2Fsrc%2Forg%2Fargeo%2Fcms%2Fui%2Fviewers%2FJcrVersionCmsEditable.java;h=91224490a7aa4d8c54fffd03f3986ab0183bca90;hb=87547963e298202bcae9cf81bc88c44feddac5f4;hp=298fbdea9b6d3dd2b58fc6e01d50a5cb954c58b8;hpb=777e96758c36e1cfdecedb8749e384f6fe124a06;p=gpl%2Fargeo-jcr.git diff --git a/swt/org.argeo.cms.jcr.ui/src/org/argeo/cms/ui/viewers/JcrVersionCmsEditable.java b/swt/org.argeo.cms.jcr.ui/src/org/argeo/cms/ui/viewers/JcrVersionCmsEditable.java index 298fbde..9122449 100644 --- a/swt/org.argeo.cms.jcr.ui/src/org/argeo/cms/ui/viewers/JcrVersionCmsEditable.java +++ b/swt/org.argeo.cms.jcr.ui/src/org/argeo/cms/ui/viewers/JcrVersionCmsEditable.java @@ -1,11 +1,13 @@ package org.argeo.cms.ui.viewers; +import javax.jcr.ItemNotFoundException; import javax.jcr.Node; import javax.jcr.RepositoryException; import javax.jcr.Session; import javax.jcr.nodetype.NodeType; import javax.jcr.version.VersionManager; +import org.argeo.api.cms.CmsLog; import org.argeo.api.cms.ux.CmsEditionEvent; import org.argeo.cms.ux.AbstractCmsEditable; import org.argeo.jcr.JcrException; @@ -17,6 +19,8 @@ import org.eclipse.swt.widgets.Listener; /** Provides the CmsEditable semantic based on JCR versioning. */ public class JcrVersionCmsEditable extends AbstractCmsEditable { + private final static CmsLog log = CmsLog.getLog(JcrVersionCmsEditable.class); + private final String nodePath;// cache private final VersionManager versionManager; private final Boolean canEdit; @@ -26,10 +30,10 @@ public class JcrVersionCmsEditable extends AbstractCmsEditable { if (node.getSession().hasPermission(node.getPath(), Session.ACTION_SET_PROPERTY)) { // was Session.ACTION_ADD_NODE canEdit = true; - if (!node.isNodeType(NodeType.MIX_VERSIONABLE)) { - node.addMixin(NodeType.MIX_VERSIONABLE); - node.getSession().save(); - } +// if (!node.isNodeType(NodeType.MIX_SIMPLE_VERSIONABLE)) { +// node.addMixin(NodeType.MIX_SIMPLE_VERSIONABLE); +// node.getSession().save(); +// } versionManager = node.getSession().getWorkspace().getVersionManager(); } else { canEdit = false; @@ -74,8 +78,8 @@ public class JcrVersionCmsEditable extends AbstractCmsEditable { try { versionManager.checkout(nodePath); // setChanged(); - } catch (RepositoryException e1) { - throw new JcrException("Cannot publish " + nodePath, e1); + } catch (RepositoryException e) { + throw new JcrException("Cannot publish " + nodePath, e); } notifyListeners(new CmsEditionEvent(nodePath, CmsEditionEvent.START_EDITING, this)); } @@ -85,8 +89,14 @@ public class JcrVersionCmsEditable extends AbstractCmsEditable { try { versionManager.checkin(nodePath); // setChanged(); - } catch (RepositoryException e1) { - throw new JcrException("Cannot publish " + nodePath, e1); + } catch (ItemNotFoundException e) { + // we ignore that the version was not found + // since it is most likely because the user doesn't have the rights + // on the whole workspace + if (log.isTraceEnabled()) + log.trace("Cannot retrieve version after check in", e); + } catch (RepositoryException e) { + throw new JcrException("Cannot publish " + nodePath, e); } notifyListeners(new CmsEditionEvent(nodePath, CmsEditionEvent.STOP_EDITING, this)); }