You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by ju...@apache.org on 2013/08/12 08:48:13 UTC
svn commit: r1513050 - in
/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr:
ItemImpl.java NodeImpl.java PropertyImpl.java SessionContext.java
SessionImpl.java query/QueryImpl.java version/VersionImpl.java
Author: jukka
Date: Mon Aug 12 06:48:13 2013
New Revision: 1513050
URL: http://svn.apache.org/r1513050
Log:
OAK-953: Allow sub-classing of SessionImpl
Move createNode() from SessionContext to NodeImpl to avoid overloading SessionContext
Modified:
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemImpl.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyImpl.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionContext.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryImpl.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionImpl.java
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemImpl.java?rev=1513050&r1=1513049&r2=1513050&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemImpl.java Mon Aug 12 06:48:13 2013
@@ -189,7 +189,7 @@ abstract class ItemImpl<T extends ItemDe
if (ancestor == dlg) {
return this;
} else if (ancestor instanceof NodeDelegate) {
- return sessionContext.createNodeOrNull((NodeDelegate) ancestor);
+ return NodeImpl.createNode((NodeDelegate) ancestor, sessionContext);
} else {
throw new AccessDeniedException(
getPath() + ": Access denied to ancestor at depth " + depth);
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java?rev=1513050&r1=1513049&r2=1513050&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java Mon Aug 12 06:48:13 2013
@@ -55,6 +55,8 @@ import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import com.google.common.collect.Iterators;
import com.google.common.collect.Lists;
+
+import org.apache.jackrabbit.JcrConstants;
import org.apache.jackrabbit.api.JackrabbitNode;
import org.apache.jackrabbit.commons.ItemNameMatcher;
import org.apache.jackrabbit.commons.iterator.NodeIteratorAdapter;
@@ -70,8 +72,11 @@ import org.apache.jackrabbit.oak.commons
import org.apache.jackrabbit.oak.core.IdentifierManager;
import org.apache.jackrabbit.oak.jcr.delegate.NodeDelegate;
import org.apache.jackrabbit.oak.jcr.delegate.PropertyDelegate;
+import org.apache.jackrabbit.oak.jcr.delegate.VersionManagerDelegate;
import org.apache.jackrabbit.oak.jcr.lock.LockImpl;
import org.apache.jackrabbit.oak.jcr.operation.NodeOperation;
+import org.apache.jackrabbit.oak.jcr.version.VersionHistoryImpl;
+import org.apache.jackrabbit.oak.jcr.version.VersionImpl;
import org.apache.jackrabbit.oak.plugins.memory.PropertyStates;
import org.apache.jackrabbit.oak.plugins.nodetype.EffectiveNodeType;
import org.apache.jackrabbit.oak.spi.security.authorization.permission.Permissions;
@@ -107,6 +112,34 @@ public class NodeImpl<T extends NodeDele
*/
private static final Logger log = LoggerFactory.getLogger(NodeImpl.class);
+ public static NodeImpl<? extends NodeDelegate> createNodeOrNull(
+ NodeDelegate delegate, SessionContext context)
+ throws RepositoryException {
+ if (delegate != null) {
+ return createNode(delegate, context);
+ } else {
+ return null;
+ }
+ }
+
+ public static NodeImpl<? extends NodeDelegate> createNode(
+ NodeDelegate delegate, SessionContext context)
+ throws RepositoryException {
+ PropertyDelegate pd = delegate.getPropertyOrNull(JCR_PRIMARYTYPE);
+ String type = pd != null ? pd.getString() : null;
+ if (JcrConstants.NT_VERSION.equals(type)) {
+ VersionManagerDelegate vmd =
+ VersionManagerDelegate.create(context.getSessionDelegate());
+ return new VersionImpl(vmd.createVersion(delegate), context);
+ } else if (JcrConstants.NT_VERSIONHISTORY.equals(type)) {
+ VersionManagerDelegate vmd =
+ VersionManagerDelegate.create(context.getSessionDelegate());
+ return new VersionHistoryImpl(vmd.createVersionHistory(delegate), context);
+ } else {
+ return new NodeImpl<NodeDelegate>(delegate, context);
+ }
+ }
+
public NodeImpl(T dlg, SessionContext sessionContext) {
super(dlg, sessionContext);
}
@@ -137,7 +170,7 @@ public class NodeImpl<T extends NodeDele
if (parent == null) {
throw new AccessDeniedException();
}
- return sessionContext.createNodeOrNull(parent);
+ return NodeImpl.createNode(parent, sessionContext);
}
}
});
@@ -252,7 +285,7 @@ public class NodeImpl<T extends NodeDele
if (added == null) {
throw new ItemExistsException();
}
- return sessionContext.createNodeOrNull(added);
+ return NodeImpl.createNode(added, sessionContext);
}
});
}
@@ -489,7 +522,7 @@ public class NodeImpl<T extends NodeDele
if (nd == null) {
throw new PathNotFoundException(oakPath);
} else {
- return sessionContext.createNodeOrNull(nd);
+ return NodeImpl.createNode(nd, sessionContext);
}
}
});
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyImpl.java?rev=1513050&r1=1513049&r2=1513050&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyImpl.java Mon Aug 12 06:48:13 2013
@@ -74,7 +74,7 @@ public class PropertyImpl extends ItemIm
if (parent == null) {
throw new AccessDeniedException();
} else {
- return sessionContext.createNodeOrNull(parent);
+ return NodeImpl.createNode(parent, sessionContext);
}
}
});
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionContext.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionContext.java?rev=1513050&r1=1513049&r2=1513050&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionContext.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionContext.java Mon Aug 12 06:48:13 2013
@@ -39,7 +39,6 @@ import javax.jcr.observation.Observation
import javax.jcr.security.AccessControlManager;
import javax.jcr.version.VersionManager;
-import org.apache.jackrabbit.JcrConstants;
import org.apache.jackrabbit.api.security.authorization.PrivilegeManager;
import org.apache.jackrabbit.api.security.principal.PrincipalManager;
import org.apache.jackrabbit.api.security.user.Authorizable;
@@ -49,15 +48,10 @@ import org.apache.jackrabbit.api.securit
import org.apache.jackrabbit.api.security.user.User;
import org.apache.jackrabbit.api.security.user.UserManager;
import org.apache.jackrabbit.oak.api.ContentSession;
-import org.apache.jackrabbit.oak.jcr.delegate.NodeDelegate;
-import org.apache.jackrabbit.oak.jcr.delegate.PropertyDelegate;
import org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate;
-import org.apache.jackrabbit.oak.jcr.delegate.VersionManagerDelegate;
import org.apache.jackrabbit.oak.jcr.observation.ObservationManagerImpl;
import org.apache.jackrabbit.oak.jcr.operation.SessionOperation;
import org.apache.jackrabbit.oak.jcr.security.AccessManager;
-import org.apache.jackrabbit.oak.jcr.version.VersionHistoryImpl;
-import org.apache.jackrabbit.oak.jcr.version.VersionImpl;
import org.apache.jackrabbit.oak.namepath.LocalNameMapper;
import org.apache.jackrabbit.oak.namepath.NamePathMapper;
import org.apache.jackrabbit.oak.namepath.NamePathMapperImpl;
@@ -84,6 +78,7 @@ import org.apache.jackrabbit.oak.spi.xml
* {@code ValueFactory}, etc.).
*/
public class SessionContext implements NamePathMapper {
+
private final RepositoryImpl repository;
private final Whiteboard whiteboard;
private final SessionDelegate delegate;
@@ -169,23 +164,6 @@ public class SessionContext implements N
return namespaces;
}
- public NodeImpl createNodeOrNull(NodeDelegate nd) throws RepositoryException {
- if (nd == null) {
- return null;
- }
- PropertyDelegate pd = nd.getPropertyOrNull(JcrConstants.JCR_PRIMARYTYPE);
- String type = pd != null ? pd.getString() : null;
- if (JcrConstants.NT_VERSION.equals(type)) {
- VersionManagerDelegate delegate = VersionManagerDelegate.create(getSessionDelegate());
- return new VersionImpl(delegate.createVersion(nd), this);
- } else if (JcrConstants.NT_VERSIONHISTORY.equals(type)) {
- VersionManagerDelegate delegate = VersionManagerDelegate.create(getSessionDelegate());
- return new VersionHistoryImpl(delegate.createVersionHistory(nd), this);
- } else {
- return new NodeImpl<NodeDelegate>(nd, this);
- }
- }
-
public ValueFactory getValueFactory() {
return valueFactory;
}
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java?rev=1513050&r1=1513049&r2=1513050&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java Mon Aug 12 06:48:13 2013
@@ -140,7 +140,7 @@ public class SessionImpl implements Jack
throws RepositoryException {
ItemDelegate item = sd.getItem(oakPath);
if (item instanceof NodeDelegate) {
- return sessionContext.createNodeOrNull((NodeDelegate) item);
+ return NodeImpl.createNodeOrNull((NodeDelegate) item, sessionContext);
} else if (item instanceof PropertyDelegate) {
return new PropertyImpl((PropertyDelegate) item, sessionContext);
} else {
@@ -161,7 +161,7 @@ public class SessionImpl implements Jack
return perform(new ReadOperation<Node>() {
@Override
public Node perform() throws RepositoryException {
- return sessionContext.createNodeOrNull(sd.getNode(getOakPathOrThrow(absPath)));
+ return NodeImpl.createNodeOrNull(sd.getNode(getOakPathOrThrow(absPath)), sessionContext);
}
});
}
@@ -271,7 +271,7 @@ public class SessionImpl implements Jack
if (nd == null) {
throw new AccessDeniedException("Root node is not accessible.");
}
- return sessionContext.createNodeOrNull(nd);
+ return NodeImpl.createNodeOrNull(nd, sessionContext);
}
});
}
@@ -299,7 +299,7 @@ public class SessionImpl implements Jack
if (nd == null) {
throw new ItemNotFoundException("Node with id " + id + " does not exist.");
}
- return sessionContext.createNodeOrNull(nd);
+ return NodeImpl.createNodeOrNull(nd, sessionContext);
}
});
}
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryImpl.java?rev=1513050&r1=1513049&r2=1513050&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/query/QueryImpl.java Mon Aug 12 06:48:13 2013
@@ -34,6 +34,7 @@ import javax.jcr.version.VersionExceptio
import org.apache.jackrabbit.JcrConstants;
import org.apache.jackrabbit.oak.commons.PathUtils;
+import org.apache.jackrabbit.oak.jcr.NodeImpl;
import org.apache.jackrabbit.oak.jcr.SessionContext;
import org.apache.jackrabbit.oak.jcr.delegate.NodeDelegate;
@@ -139,7 +140,7 @@ public class QueryImpl implements Query
if (parentDelegate == null) {
throw new PathNotFoundException("The specified path does not exist: " + parent);
}
- Node parentNode = sessionContext.createNodeOrNull(parentDelegate);
+ Node parentNode = NodeImpl.createNodeOrNull(parentDelegate, sessionContext);
if (!parentNode.isCheckedOut()) {
throw new VersionException("Cannot store query. Node at " +
absPath + " is checked in.");
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionImpl.java?rev=1513050&r1=1513049&r2=1513050&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionImpl.java Mon Aug 12 06:48:13 2013
@@ -124,8 +124,9 @@ public class VersionImpl extends NodeImp
return perform(new SessionOperation<Node>() {
@Override
public Node perform() throws RepositoryException {
- return sessionContext.createNodeOrNull(
- dlg.getChild(VersionConstants.JCR_FROZENNODE));
+ return NodeImpl.createNodeOrNull(
+ dlg.getChild(VersionConstants.JCR_FROZENNODE),
+ sessionContext);
}
});
}