You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2008/09/23 18:00:27 UTC
svn commit: r698210 - in /jackrabbit/branches/1.4/jackrabbit-core: ./
JCR-1743-alternative.patch JCR-1743.patch
src/main/java/org/apache/jackrabbit/core/util/DOMWalker.java
src/test/java/org/apache/jackrabbit/core/util/DOMWalkerTest.java
Author: jukka
Date: Tue Sep 23 09:00:27 2008
New Revision: 698210
URL: http://svn.apache.org/viewvc?rev=698210&view=rev
Log:
1.4: Merged revision 698209 (JCR-1755)
Added:
jackrabbit/branches/1.4/jackrabbit-core/JCR-1743-alternative.patch (with props)
jackrabbit/branches/1.4/jackrabbit-core/JCR-1743.patch (with props)
jackrabbit/branches/1.4/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/util/DOMWalkerTest.java
- copied unchanged from r698209, jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/util/DOMWalkerTest.java
Modified:
jackrabbit/branches/1.4/jackrabbit-core/ (props changed)
jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/DOMWalker.java
Propchange: jackrabbit/branches/1.4/jackrabbit-core/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Sep 23 09:00:27 2008
@@ -1 +1 @@
-/jackrabbit/trunk/jackrabbit-core:653417,654078,654514,655917,656240,656655,656664,658583,668147,672125,678788,679389,680135,681031,681287,682409,686688,691181,691550,694164,698200
+/jackrabbit/trunk/jackrabbit-core:653417,654078,654514,655917,656240,656655,656664,658583,668147,672125,678788,679389,680135,681031,681287,682409,686688,691181,691550,694164,698200,698209
Added: jackrabbit/branches/1.4/jackrabbit-core/JCR-1743-alternative.patch
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.4/jackrabbit-core/JCR-1743-alternative.patch?rev=698210&view=auto
==============================================================================
--- jackrabbit/branches/1.4/jackrabbit-core/JCR-1743-alternative.patch (added)
+++ jackrabbit/branches/1.4/jackrabbit-core/JCR-1743-alternative.patch Tue Sep 23 09:00:27 2008
@@ -0,0 +1,46 @@
+Index: src/main/java/org/apache/jackrabbit/core/SessionImpl.java
+===================================================================
+--- src/main/java/org/apache/jackrabbit/core/SessionImpl.java (revision 698201)
++++ src/main/java/org/apache/jackrabbit/core/SessionImpl.java (working copy)
+@@ -752,7 +752,8 @@
+ try {
+ if (targetId == null) {
+ targetId = hierMgr.resolvePath(targetPath);
+- if (targetId == null) {
++
++ if (targetId == null || targetId.denotesNode()) {
+ // property does not exist yet,
+ // check WRITE permission on parent
+ if (parentPath == null) {
+@@ -760,12 +761,29 @@
+ }
+ if (parentId == null) {
+ parentId = hierMgr.resolveNodePath(parentPath);
+- if (parentId == null) {
++ if (parentId == null || !parentId.denotesNode()) {
+ // parent does not exist, throw exception
+ throw new AccessControlException(SET_PROPERTY_ACTION);
+ }
+ }
+- accessMgr.checkPermission(parentId, AccessManager.WRITE);
++
++ // JCR-1743: Session.checkPermission: add_node and
++ // set_property evaluation are not handled differently
++ //
++ // Generate a virtual property id (that does not map
++ // to an existing item) and use that to check WRITE
++ // permission.
++ Name name = targetPath.getNameElement().getName();
++ targetId = new PropertyId((NodeId) parentId, name);
++ try {
++ accessMgr.checkPermission(targetId, AccessManager.WRITE);
++ } catch (ItemNotFoundException e) {
++ // The AccessManager implementation expects the
++ // target item to exist. Fall back to previous
++ // behaviour and ask for WRITE permission on the
++ // parent node
++ accessMgr.checkPermission(parentId, AccessManager.WRITE);
++ }
+ } else {
+ // property does already exist,
+ // check WRITE permission on target
Propchange: jackrabbit/branches/1.4/jackrabbit-core/JCR-1743-alternative.patch
------------------------------------------------------------------------------
svn:eol-style = native
Added: jackrabbit/branches/1.4/jackrabbit-core/JCR-1743.patch
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.4/jackrabbit-core/JCR-1743.patch?rev=698210&view=auto
==============================================================================
--- jackrabbit/branches/1.4/jackrabbit-core/JCR-1743.patch (added)
+++ jackrabbit/branches/1.4/jackrabbit-core/JCR-1743.patch Tue Sep 23 09:00:27 2008
@@ -0,0 +1,44 @@
+Index: src/main/java/org/apache/jackrabbit/core/SessionImpl.java
+===================================================================
+--- src/main/java/org/apache/jackrabbit/core/SessionImpl.java (revision 698201)
++++ src/main/java/org/apache/jackrabbit/core/SessionImpl.java (working copy)
+@@ -752,7 +752,8 @@
+ try {
+ if (targetId == null) {
+ targetId = hierMgr.resolvePath(targetPath);
+- if (targetId == null) {
++
++ if (targetId == null || targetId.denotesNode()) {
+ // property does not exist yet,
+ // check WRITE permission on parent
+ if (parentPath == null) {
+@@ -760,17 +761,23 @@
+ }
+ if (parentId == null) {
+ parentId = hierMgr.resolveNodePath(parentPath);
+- if (parentId == null) {
++ if (parentId == null || !parentId.denotesNode()) {
+ // parent does not exist, throw exception
+ throw new AccessControlException(SET_PROPERTY_ACTION);
+ }
+ }
+- accessMgr.checkPermission(parentId, AccessManager.WRITE);
+- } else {
+- // property does already exist,
+- // check WRITE permission on target
+- accessMgr.checkPermission(targetId, AccessManager.WRITE);
++
++ // JCR-1743: Session.checkPermission: add_node and
++ // set_property evaluation are not handled differently
++ //
++ // Generate a virtual property id (that does not map
++ // to an existing item) and use that to check WRITE
++ // permission.
++ Name name = targetPath.getNameElement().getName();
++ targetId = new PropertyId((NodeId) parentId, name);
+ }
++
++ accessMgr.checkPermission(targetId, AccessManager.WRITE);
+ }
+ } catch (AccessDeniedException re) {
+ // otherwise the RepositoryException catch clause will
Propchange: jackrabbit/branches/1.4/jackrabbit-core/JCR-1743.patch
------------------------------------------------------------------------------
svn:eol-style = native
Modified: jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/DOMWalker.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/DOMWalker.java?rev=698210&r1=698209&r2=698210&view=diff
==============================================================================
--- jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/DOMWalker.java (original)
+++ jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/DOMWalker.java Tue Sep 23 09:00:27 2008
@@ -212,7 +212,10 @@
}
if (name.equals(current.getNodeName())) {
- current = (Element) current.getParentNode();
+ Node parent = current.getParentNode();
+ if (parent instanceof Element) {
+ current = (Element) parent;
+ }
}
return false;
}