X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.jcr%2Fsrc%2Forg%2Fargeo%2Fcms%2Fjcr%2Facr%2FJcrSessionAdapter.java;h=0fc46b8c9cc734f344ecc2233922a006734d20a5;hb=4f05c5f3c96808ffc2d7600c7be109f933a1271e;hp=e1ded7d1f8aab9141e05ef9e21cf409ad2a533a0;hpb=311d6e47ad278fd00d1ad15fe9d59be47e23e385;p=gpl%2Fargeo-jcr.git diff --git a/org.argeo.cms.jcr/src/org/argeo/cms/jcr/acr/JcrSessionAdapter.java b/org.argeo.cms.jcr/src/org/argeo/cms/jcr/acr/JcrSessionAdapter.java index e1ded7d..0fc46b8 100644 --- a/org.argeo.cms.jcr/src/org/argeo/cms/jcr/acr/JcrSessionAdapter.java +++ b/org.argeo.cms.jcr/src/org/argeo/cms/jcr/acr/JcrSessionAdapter.java @@ -123,6 +123,24 @@ class JcrSessionAdapter { return node; } + public synchronized Node freeze(String workspace, String jcrPath) throws RepositoryException { + Session session = getWriteSession(workspace); + Node node = session.getNode(jcrPath); + if (node.isNodeType(NodeType.MIX_SIMPLE_VERSIONABLE)) { + VersionManager versionManager = session.getWorkspace().getVersionManager(); + if (versionManager.isCheckedOut(jcrPath)) { + versionManager.checkin(jcrPath); + } + } + return node; + } + + public synchronized boolean isOpenForEdit(String workspace, String jcrPath) throws RepositoryException { + Session session = getWriteSession(workspace); + VersionManager versionManager = session.getWorkspace().getVersionManager(); + return versionManager.isCheckedOut(jcrPath); + } + public synchronized void persist() throws RepositoryException { for (String workspace : writeSessions.keySet()) { Session session = writeSessions.get(workspace);