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 2010/08/13 17:39:09 UTC
svn commit: r985249 - in
/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core:
BatchedItemOperations.java ItemValidator.java SessionImpl.java
session/SessionContext.java
Author: jukka
Date: Fri Aug 13 15:39:09 2010
New Revision: 985249
URL: http://svn.apache.org/viewvc?rev=985249&view=rev
Log:
JCR-890: concurrent read-only access to a session
Make ItemValidator a more integral part of SessionContext.
Modified:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/BatchedItemOperations.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemValidator.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/SessionContext.java
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/BatchedItemOperations.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/BatchedItemOperations.java?rev=985249&r1=985248&r2=985249&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/BatchedItemOperations.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/BatchedItemOperations.java Fri Aug 13 15:39:09 2010
@@ -39,6 +39,7 @@ import org.apache.jackrabbit.core.id.Nod
import org.apache.jackrabbit.core.id.PropertyId;
import org.apache.jackrabbit.core.nodetype.EffectiveNodeType;
import org.apache.jackrabbit.core.nodetype.NodeTypeConflictException;
+import org.apache.jackrabbit.core.nodetype.NodeTypeRegistry;
import org.apache.jackrabbit.core.retention.RetentionRegistry;
import org.apache.jackrabbit.core.security.AccessManager;
import org.apache.jackrabbit.core.security.authorization.Permission;
@@ -718,7 +719,8 @@ public class BatchedItemOperations exten
}
// make sure there's an applicable definition for new child node
EffectiveNodeType entParent = getEffectiveNodeType(parentState);
- entParent.checkAddNodeConstraints(nodeName, nodeTypeName, ntReg);
+ entParent.checkAddNodeConstraints(
+ nodeName, nodeTypeName, context.getNodeTypeRegistry());
QNodeDefinition newNodeDef =
findApplicableNodeDefinition(nodeName, nodeTypeName,
parentState);
@@ -1908,7 +1910,9 @@ public class BatchedItemOperations exten
}
try {
- EffectiveNodeType type = ntReg.getEffectiveNodeType(primary, mixins);
+ NodeTypeRegistry registry = context.getNodeTypeRegistry();
+ EffectiveNodeType type =
+ registry.getEffectiveNodeType(primary, mixins);
return type.includesNodeType(NameConstants.MIX_REFERENCEABLE);
} catch (NodeTypeConflictException ntce) {
String msg = "internal error: failed to build effective node type for node "
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemValidator.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemValidator.java?rev=985249&r1=985248&r2=985249&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemValidator.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemValidator.java Fri Aug 13 15:39:09 2010
@@ -108,11 +108,6 @@ public class ItemValidator {
protected final SessionContext context;
/**
- * node type registry
- */
- protected final NodeTypeRegistry ntReg;
-
- /**
* A bit mask of the checks that are currently enabled. All access to
* this mask must be synchronized to ensure that only the thread that
* uses the {@link #performRelaxed(SessionOperation, int)} method will
@@ -125,9 +120,8 @@ public class ItemValidator {
*
* @param context component context of this session
*/
- public ItemValidator(SessionContext context) throws RepositoryException {
+ public ItemValidator(SessionContext context) {
this.context = context;
- this.ntReg = context.getRepositoryContext().getNodeTypeRegistry();
}
/**
@@ -171,8 +165,9 @@ public class ItemValidator {
public void validate(NodeState nodeState)
throws ConstraintViolationException, RepositoryException {
// effective primary node type
+ NodeTypeRegistry registry = context.getNodeTypeRegistry();
EffectiveNodeType entPrimary =
- ntReg.getEffectiveNodeType(nodeState.getNodeTypeName());
+ registry.getEffectiveNodeType(nodeState.getNodeTypeName());
// effective node type (primary type incl. mixins)
EffectiveNodeType entPrimaryAndMixins = getEffectiveNodeType(nodeState);
QNodeDefinition def =
@@ -421,7 +416,7 @@ public class ItemValidator {
public EffectiveNodeType getEffectiveNodeType(NodeState state)
throws RepositoryException {
try {
- return ntReg.getEffectiveNodeType(
+ return context.getNodeTypeRegistry().getEffectiveNodeType(
state.getNodeTypeName(), state.getMixinTypeNames());
} catch (NodeTypeConflictException ntce) {
String msg = "internal error: failed to build effective node type for node "
@@ -449,7 +444,8 @@ public class ItemValidator {
NodeState parentState)
throws RepositoryException, ConstraintViolationException {
EffectiveNodeType entParent = getEffectiveNodeType(parentState);
- return entParent.getApplicableChildNodeDef(name, nodeTypeName, ntReg);
+ return entParent.getApplicableChildNodeDef(
+ name, nodeTypeName, context.getNodeTypeRegistry());
}
/**
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java?rev=985249&r1=985248&r2=985249&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java Fri Aug 13 15:39:09 2010
@@ -254,7 +254,6 @@ public class SessionImpl extends Abstrac
wsp = createWorkspaceInstance(wspConfig);
context.setItemStateManager(createSessionItemStateManager());
context.setItemManager(createItemManager());
- context.setItemValidator(new ItemValidator(context));
context.setAccessManager(createAccessManager(subject));
context.setObservationManager(
createObservationManager(wspConfig.getName()));
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/SessionContext.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/SessionContext.java?rev=985249&r1=985248&r2=985249&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/SessionContext.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/SessionContext.java Fri Aug 13 15:39:09 2010
@@ -58,6 +58,11 @@ public class SessionContext implements N
private final SessionState state;
/**
+ * The item validator of this session
+ */
+ private final ItemValidator itemValidator;
+
+ /**
* Node type manager of this session
*/
private final NodeTypeManagerImpl nodeTypeManager;
@@ -73,11 +78,6 @@ public class SessionContext implements N
private volatile ItemManager itemManager;
/**
- * The item validator of this session
- */
- private volatile ItemValidator itemValidator;
-
- /**
* The access manager of this session
*/
private volatile AccessManager accessManager;
@@ -103,6 +103,7 @@ public class SessionContext implements N
this.nodeTypeManager = new NodeTypeManagerImpl(
repositoryContext.getNodeTypeRegistry(), session,
repositoryContext.getDataStore());
+ this.itemValidator = new ItemValidator(this);
}
/**
@@ -161,6 +162,15 @@ public class SessionContext implements N
}
/**
+ * Returns the item validator of this session.
+ *
+ * @return item validator
+ */
+ public ItemValidator getItemValidator() {
+ return itemValidator;
+ }
+
+ /**
* Returns the node type manager of this session.
*
* @return node type manager
@@ -194,16 +204,6 @@ public class SessionContext implements N
this.itemManager = itemManager;
}
- public ItemValidator getItemValidator() {
- assert itemValidator != null;
- return itemValidator;
- }
-
- public void setItemValidator(ItemValidator itemValidator) {
- assert itemValidator != null;
- this.itemValidator = itemValidator;
- }
-
public AccessManager getAccessManager() {
assert accessManager != null;
return accessManager;