You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by mr...@apache.org on 2009/09/17 21:20:36 UTC
svn commit: r816343 [1/4] - in /jackrabbit/trunk: ./
jackrabbit-core/src/main/java/org/apache/jackrabbit/core/
jackrabbit-core/src/main/java/org/apache/jackrabbit/core/lock/
jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/
jackrabbit-...
Author: mreutegg
Date: Thu Sep 17 19:20:33 2009
New Revision: 816343
URL: http://svn.apache.org/viewvc?rev=816343&view=rev
Log:
JCR-2170: Remove PropDefId and NodeDefId
- merged changes from sandbox branch
Removed:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/ItemDef.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/ItemDefImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/ItemDefinitionImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeDef.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeDefImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeDefinitionImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/PropDef.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/PropDefImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/PropertyDefinitionImpl.java
Modified:
jackrabbit/trunk/ (props changed)
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/BatchedItemOperations.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemManager.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/NodeImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeTypeInstanceHandler.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/PropertyImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ProtectedItemModifier.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/lock/LockManagerImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/EffectiveNodeType.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeDefId.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeDef.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeDefDiff.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeDefinitionImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeManagerImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeRegistry.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/PropDefId.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/virtual/VirtualNodeTypeStateProvider.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/xml/NodeTypeReader.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/xml/NodeTypeWriter.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/PersistenceCopier.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/AbstractBundlePersistenceManager.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/util/BundleBinding.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/util/ItemStateBinding.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/util/NodePropBundle.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/util/Serializer.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/xml/XMLPersistenceManager.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/PropertyTypeRegistry.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryObjectModelImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/NodeState.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/PropertyState.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SessionItemStateManager.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SharedItemStateManager.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/value/InternalValue.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/InternalVersionManagerImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/NodeStateEx.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImplRestore.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/virtual/AbstractVISProvider.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/DefaultProtectedPropertyImporter.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/PropInfo.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/ProtectedPropertyImporter.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/SessionImporter.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/WorkspaceImporter.java
jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/nodetype/CyclicNodeTypeRegistrationTest.java
jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/nodetype/xml/TestAll.java
jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/QItemDefinitionImpl.java
jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/QNodeDefinitionImpl.java
jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/QNodeTypeDefinitionImpl.java
jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/nodetype/NodeDefinitionImpl.java
jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/nodetype/PropertyDefinitionImpl.java
jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/nodetype/QDefinitionBuilderFactory.java
jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/nodetype/QItemDefinitionBuilder.java
jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/nodetype/QNodeDefinitionBuilder.java
jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/nodetype/QPropertyDefinitionBuilder.java
jackrabbit/trunk/jackrabbit-spi2jcr/src/main/java/org/apache/jackrabbit/spi2jcr/QNodeDefinitionImpl.java
jackrabbit/trunk/jackrabbit-spi2jcr/src/main/java/org/apache/jackrabbit/spi2jcr/QPropertyDefinitionImpl.java
Propchange: jackrabbit/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Sep 17 19:20:33 2009
@@ -1,2 +1,3 @@
/jackrabbit/branches/1.5:794012,794100,794102
+/jackrabbit/sandbox/JCR-2170:812417-816332
/jackrabbit/sandbox/tripod-JCR-2209:795441-795863
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=816343&r1=816342&r2=816343&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 Thu Sep 17 19:20:33 2009
@@ -18,7 +18,6 @@
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Calendar;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
@@ -40,11 +39,8 @@
import org.apache.jackrabbit.core.id.PropertyId;
import org.apache.jackrabbit.core.lock.LockManager;
import org.apache.jackrabbit.core.nodetype.EffectiveNodeType;
-import org.apache.jackrabbit.core.nodetype.NodeDef;
import org.apache.jackrabbit.core.nodetype.NodeTypeConflictException;
import org.apache.jackrabbit.core.nodetype.NodeTypeRegistry;
-import org.apache.jackrabbit.core.nodetype.PropDef;
-import org.apache.jackrabbit.core.nodetype.PropDefId;
import org.apache.jackrabbit.core.security.AccessManager;
import org.apache.jackrabbit.core.security.authorization.Permission;
import org.apache.jackrabbit.core.state.ChildNodeEntry;
@@ -62,6 +58,9 @@
import org.apache.jackrabbit.core.version.InternalVersionManager;
import org.apache.jackrabbit.spi.Name;
import org.apache.jackrabbit.spi.Path;
+import org.apache.jackrabbit.spi.QPropertyDefinition;
+import org.apache.jackrabbit.spi.QItemDefinition;
+import org.apache.jackrabbit.spi.QNodeDefinition;
import org.apache.jackrabbit.spi.commons.conversion.MalformedPathException;
import org.apache.jackrabbit.spi.commons.name.NameConstants;
import org.apache.jackrabbit.spi.commons.name.PathFactoryImpl;
@@ -106,7 +105,8 @@
LockManager lockMgr,
SessionImpl session,
HierarchyManager hierMgr) throws RepositoryException {
- super(ntReg, hierMgr, session, lockMgr, session.getAccessManager(), session.getRetentionRegistry());
+ super(ntReg, hierMgr, session, lockMgr, session.getAccessManager(),
+ session.getRetentionRegistry(), session.getItemManager());
this.stateMgr = stateMgr;
this.session = session;
}
@@ -432,12 +432,6 @@
// add to new parent
destParentState.addChildNodeEntry(destName.getName(), newState.getNodeId());
- // change definition (id) of new node
- NodeDef newNodeDef =
- findApplicableNodeDefinition(destName.getName(),
- srcState.getNodeTypeName(), destParentState);
- newState.setDefinitionId(newNodeDef.getId());
-
// adjust references that refer to uuid's which have been mapped to
// newly generated uuid's on copy/clone
Iterator<Object> iter = refTracker.getProcessedReferences();
@@ -589,12 +583,6 @@
destParent.addChildNodeEntry(destName.getName(), target.getNodeId());
}
- // change definition (id) of target node
- NodeDef newTargetDef =
- findApplicableNodeDefinition(destName.getName(),
- target.getNodeTypeName(), destParent);
- target.setDefinitionId(newTargetDef.getId());
-
// store states
stateMgr.store(target);
if (renameOnly) {
@@ -725,7 +713,7 @@
// 4. node type constraints
if ((options & CHECK_CONSTRAINTS) == CHECK_CONSTRAINTS) {
- NodeDef parentDef = ntReg.getNodeDef(parentState.getDefinitionId());
+ QItemDefinition parentDef = itemMgr.getDefinition(parentState).unwrap();
// make sure parent node is not protected
if (parentDef.isProtected()) {
throw new ConstraintViolationException(
@@ -735,7 +723,7 @@
// make sure there's an applicable definition for new child node
EffectiveNodeType entParent = getEffectiveNodeType(parentState);
entParent.checkAddNodeConstraints(nodeName, nodeTypeName, ntReg);
- NodeDef newNodeDef =
+ QNodeDefinition newNodeDef =
findApplicableNodeDefinition(nodeName, nodeTypeName,
parentState);
@@ -756,8 +744,7 @@
log.debug(msg);
throw new RepositoryException(msg, ise);
}
- NodeDef conflictingTargetDef =
- ntReg.getNodeDef(conflictingState.getDefinitionId());
+ QNodeDefinition conflictingTargetDef = itemMgr.getDefinition(conflictingState).unwrap();
// check same-name sibling setting of both target and existing node
if (!conflictingTargetDef.allowsSameNameSiblings()
|| !newNodeDef.allowsSameNameSiblings()) {
@@ -900,12 +887,12 @@
// 4. node type constraints
if ((options & CHECK_CONSTRAINTS) == CHECK_CONSTRAINTS) {
- NodeDef parentDef = ntReg.getNodeDef(parentState.getDefinitionId());
+ QItemDefinition parentDef = itemMgr.getDefinition(parentState).unwrap();
if (parentDef.isProtected()) {
throw new ConstraintViolationException(safeGetJCRPath(parentId)
+ ": cannot remove child node of protected parent node");
}
- NodeDef targetDef = ntReg.getNodeDef(targetState.getDefinitionId());
+ QItemDefinition targetDef = itemMgr.getDefinition(targetState).unwrap();
if (targetDef.isMandatory()) {
throw new ConstraintViolationException(safeGetJCRPath(targetPath)
+ ": cannot remove mandatory node");
@@ -1071,7 +1058,7 @@
+ " because manager is not in edit mode");
}
- NodeDef def = findApplicableNodeDefinition(nodeName, nodeTypeName, parent);
+ QNodeDefinition def = findApplicableNodeDefinition(nodeName, nodeTypeName, parent);
return createNodeState(parent, nodeName, nodeTypeName, mixinNames, id, def);
}
@@ -1099,7 +1086,7 @@
Name nodeTypeName,
Name[] mixinNames,
NodeId id,
- NodeDef def)
+ QNodeDefinition def)
throws ItemExistsException, ConstraintViolationException,
RepositoryException, IllegalStateException {
@@ -1128,7 +1115,6 @@
if (mixinNames != null && mixinNames.length > 0) {
node.setMixinTypeNames(new HashSet<Name>(Arrays.asList(mixinNames)));
}
- node.setDefinitionId(def.getId());
// now add new child node entry to parent
parent.addChildNodeEntry(nodeName, id);
@@ -1142,18 +1128,18 @@
if (!node.getMixinTypeNames().isEmpty()) {
// create jcr:mixinTypes property
- PropDef pd = ent.getApplicablePropertyDef(NameConstants.JCR_MIXINTYPES,
+ QPropertyDefinition pd = ent.getApplicablePropertyDef(NameConstants.JCR_MIXINTYPES,
PropertyType.NAME, true);
createPropertyState(node, pd.getName(), pd.getRequiredType(), pd);
}
// add 'auto-create' properties defined in node type
- for (PropDef pd : ent.getAutoCreatePropDefs()) {
+ for (QPropertyDefinition pd : ent.getAutoCreatePropDefs()) {
createPropertyState(node, pd.getName(), pd.getRequiredType(), pd);
}
// recursively add 'auto-create' child nodes defined in node type
- for (NodeDef nd : ent.getAutoCreateNodeDefs()) {
+ for (QNodeDefinition nd : ent.getAutoCreateNodeDefs()) {
createNodeState(node, nd.getName(), nd.getDefaultPrimaryType(),
null, null, nd);
}
@@ -1198,7 +1184,7 @@
}
// find applicable definition
- PropDef def;
+ QPropertyDefinition def;
// multi- or single-valued property?
if (numValues == 1) {
// could be single- or multi-valued (n == 1)
@@ -1237,7 +1223,7 @@
public PropertyState createPropertyState(NodeState parent,
Name propName,
int type,
- PropDef def)
+ QPropertyDefinition def)
throws ItemExistsException, RepositoryException {
// check for name collisions with existing properties
@@ -1249,7 +1235,6 @@
// create property
PropertyState prop = stateMgr.createNew(propName, parent.getNodeId());
- prop.setDefinitionId(def.getId());
if (def.getRequiredType() != PropertyType.UNDEFINED) {
prop.setType(def.getRequiredType());
} else if (type != PropertyType.UNDEFINED) {
@@ -1265,7 +1250,7 @@
if (genValues != null) {
prop.setValues(genValues);
} else if (def.getDefaultValues() != null) {
- prop.setValues(def.getDefaultValues());
+ prop.setValues(InternalValue.create(def.getDefaultValues()));
}
// now add new property entry to parent
@@ -1442,8 +1427,7 @@
throws PathNotFoundException, ConstraintViolationException,
RepositoryException {
NodeState node = getNodeState(nodePath);
- NodeDef parentDef = ntReg.getNodeDef(node.getDefinitionId());
- if (parentDef.isProtected()) {
+ if (itemMgr.getDefinition(node).isProtected()) {
throw new ConstraintViolationException(safeGetJCRPath(nodePath)
+ ": node is protected");
}
@@ -1686,7 +1670,6 @@
newState = stateMgr.createNew(id, srcState.getNodeTypeName(), destParentId);
// copy node state
newState.setMixinTypeNames(srcState.getMixinTypeNames());
- newState.setDefinitionId(srcState.getDefinitionId());
if (shareable) {
// initialize shared set
newState.addShare(destParentId);
@@ -1773,15 +1756,16 @@
*
* todo FIXME delegate to 'node type instance handler'
*/
- PropDefId defId = srcChildState.getDefinitionId();
- PropDef def = ntReg.getPropDef(defId);
+ QPropertyDefinition def = ent.getApplicablePropertyDef(
+ srcChildState.getName(), srcChildState.getType(),
+ srcChildState.isMultiValued());
if (def.getDeclaringNodeType().equals(NameConstants.MIX_LOCKABLE)) {
// skip properties defined by mix:lockable
continue;
}
PropertyState newChildState =
- copyPropertyState(srcChildState, id, propName);
+ copyPropertyState(srcChildState, id, propName, def);
if (history != null) {
if (fullVersionable) {
@@ -1830,23 +1814,21 @@
/**
* Copies the specified property state.
*
- * @param srcState
- * @param parentId
- * @param propName
- * @return
- * @throws RepositoryException
+ * @param srcState the property state to copy.
+ * @param parentId the id of the parent node.
+ * @param propName the name of the property.
+ * @param def the definition of the property.
+ * @return a copy of the property state.
+ * @throws RepositoryException if an error occurs while copying.
*/
private PropertyState copyPropertyState(PropertyState srcState,
NodeId parentId,
- Name propName)
+ Name propName,
+ QPropertyDefinition def)
throws RepositoryException {
- PropDefId defId = srcState.getDefinitionId();
- PropDef def = ntReg.getPropDef(defId);
-
PropertyState newState = stateMgr.createNew(propName, parentId);
- newState.setDefinitionId(defId);
newState.setType(srcState.getType());
newState.setMultiValued(srcState.isMultiValued());
InternalValue[] values = srcState.getValues();
@@ -1858,8 +1840,8 @@
*
* todo FIXME delegate to 'node type instance handler'
*/
- if (def.getDeclaringNodeType().equals(NameConstants.MIX_REFERENCEABLE)
- && propName.equals(NameConstants.JCR_UUID)) {
+ if (propName.equals(NameConstants.JCR_UUID)
+ && def.getDeclaringNodeType().equals(NameConstants.MIX_REFERENCEABLE)) {
// set correct value of jcr:uuid property
newState.setValues(new InternalValue[]{InternalValue.create(parentId.toString())});
} else {
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemImpl.java?rev=816343&r1=816342&r2=816343&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemImpl.java Thu Sep 17 19:20:33 2009
@@ -48,13 +48,10 @@
import org.apache.jackrabbit.core.id.ItemId;
import org.apache.jackrabbit.core.id.NodeId;
import org.apache.jackrabbit.core.nodetype.EffectiveNodeType;
-import org.apache.jackrabbit.core.nodetype.NodeDef;
import org.apache.jackrabbit.core.nodetype.NodeTypeConflictException;
import org.apache.jackrabbit.core.nodetype.NodeTypeImpl;
import org.apache.jackrabbit.core.nodetype.NodeTypeManagerImpl;
import org.apache.jackrabbit.core.nodetype.NodeTypeRegistry;
-import org.apache.jackrabbit.core.nodetype.PropDef;
-import org.apache.jackrabbit.core.nodetype.PropertyDefinitionImpl;
import org.apache.jackrabbit.core.security.AccessManager;
import org.apache.jackrabbit.core.security.authorization.Permission;
import org.apache.jackrabbit.core.state.ChildNodeEntry;
@@ -69,6 +66,8 @@
import org.apache.jackrabbit.core.version.InternalVersionManager;
import org.apache.jackrabbit.spi.Name;
import org.apache.jackrabbit.spi.Path;
+import org.apache.jackrabbit.spi.QPropertyDefinition;
+import org.apache.jackrabbit.spi.QItemDefinition;
import org.apache.jackrabbit.spi.commons.name.NameConstants;
import org.apache.jackrabbit.util.Text;
import org.slf4j.Logger;
@@ -373,9 +372,9 @@
for (ItemState itemState : dirty) {
ItemDefinition def;
if (itemState.isNode()) {
- def = ntMgr.getNodeDefinition(((NodeState) itemState).getDefinitionId());
+ def = itemMgr.getDefinition((NodeState) itemState);
} else {
- def = ntMgr.getPropertyDefinition(((PropertyState) itemState).getDefinitionId());
+ def = itemMgr.getDefinition((PropertyState) itemState);
}
/* check permissions for non-protected items. protected items are
only added through API methods which need to assert that
@@ -444,9 +443,9 @@
}
// mandatory child properties
- PropDef[] pda = ent.getMandatoryPropDefs();
+ QPropertyDefinition[] pda = ent.getMandatoryPropDefs();
for (int i = 0; i < pda.length; i++) {
- PropDef pd = pda[i];
+ QPropertyDefinition pd = pda[i];
if (pd.getDeclaringNodeType().equals(NameConstants.MIX_VERSIONABLE)
|| pd.getDeclaringNodeType().equals(NameConstants.MIX_SIMPLE_VERSIONABLE)) {
/**
@@ -465,9 +464,9 @@
}
}
// mandatory child nodes
- NodeDef[] cnda = ent.getMandatoryNodeDefs();
+ QItemDefinition[] cnda = ent.getMandatoryNodeDefs();
for (int i = 0; i < cnda.length; i++) {
- NodeDef cnd = cnda[i];
+ QItemDefinition cnd = cnda[i];
if (!nodeState.hasChildNodeEntry(cnd.getName())) {
String msg = itemMgr.safeGetJCRPath(id)
+ ": mandatory child node " + cnd.getName()
@@ -480,7 +479,7 @@
// the transient item is a property
PropertyState propState = (PropertyState) itemState;
ItemId propId = propState.getPropertyId();
- PropertyDefinitionImpl propDef = (PropertyDefinitionImpl) def;
+ org.apache.jackrabbit.spi.commons.nodetype.PropertyDefinitionImpl propDef = (org.apache.jackrabbit.spi.commons.nodetype.PropertyDefinitionImpl) def;
/**
* check value constraints
@@ -579,11 +578,11 @@
// walk through list of removed transient items and check REMOVE permission
for (ItemState itemState : removed) {
- ItemDefinition def;
+ QItemDefinition def;
if (itemState.isNode()) {
- def = ntMgr.getNodeDefinition(((NodeState) itemState).getDefinitionId());
+ def = itemMgr.getDefinition((NodeState) itemState).unwrap();
} else {
- def = ntMgr.getPropertyDefinition(((PropertyState) itemState).getDefinitionId());
+ def = itemMgr.getDefinition((PropertyState) itemState).unwrap();
}
if (!def.isProtected()) {
Path path = stateMgr.getAtticAwareHierarchyMgr().getPath(itemState.getId());
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemManager.java?rev=816343&r1=816342&r2=816343&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemManager.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemManager.java Thu Sep 17 19:20:33 2009
@@ -29,23 +29,19 @@
import javax.jcr.PathNotFoundException;
import javax.jcr.PropertyIterator;
import javax.jcr.RepositoryException;
-import javax.jcr.nodetype.NodeDefinition;
-import javax.jcr.nodetype.PropertyDefinition;
import org.apache.commons.collections.map.ReferenceMap;
import org.apache.jackrabbit.core.id.ItemId;
import org.apache.jackrabbit.core.id.NodeId;
import org.apache.jackrabbit.core.id.PropertyId;
-import org.apache.jackrabbit.core.nodetype.NodeDefId;
-import org.apache.jackrabbit.core.nodetype.NodeDefinitionImpl;
-import org.apache.jackrabbit.core.nodetype.PropDefId;
-import org.apache.jackrabbit.core.nodetype.PropertyDefinitionImpl;
+import org.apache.jackrabbit.core.nodetype.NodeTypeRegistry;
+import org.apache.jackrabbit.core.nodetype.EffectiveNodeType;
+import org.apache.jackrabbit.core.nodetype.NodeTypeConflictException;
import org.apache.jackrabbit.core.security.AccessManager;
import org.apache.jackrabbit.core.state.ChildNodeEntry;
import org.apache.jackrabbit.core.state.ItemState;
import org.apache.jackrabbit.core.state.ItemStateException;
import org.apache.jackrabbit.core.state.ItemStateListener;
-import org.apache.jackrabbit.core.state.ItemStateManager;
import org.apache.jackrabbit.core.state.NoSuchItemStateException;
import org.apache.jackrabbit.core.state.NodeState;
import org.apache.jackrabbit.core.state.PropertyState;
@@ -55,6 +51,8 @@
import org.apache.jackrabbit.core.version.VersionImpl;
import org.apache.jackrabbit.spi.Name;
import org.apache.jackrabbit.spi.Path;
+import org.apache.jackrabbit.spi.QPropertyDefinition;
+import org.apache.jackrabbit.spi.QNodeDefinition;
import org.apache.jackrabbit.spi.commons.name.NameConstants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -86,12 +84,12 @@
private static Logger log = LoggerFactory.getLogger(ItemManager.class);
- private final NodeDefinition rootNodeDef;
+ private final org.apache.jackrabbit.spi.commons.nodetype.NodeDefinitionImpl rootNodeDef;
private final NodeId rootNodeId;
protected final SessionImpl session;
- private final ItemStateManager itemStateProvider;
+ private final SessionItemStateManager sism;
private final HierarchyManager hierMgr;
/**
@@ -107,17 +105,19 @@
/**
* Creates a new per-session instance <code>ItemManager</code> instance.
*
- * @param itemStateProvider the item state provider associated with
- * the new instance
- * @param hierMgr the hierarchy manager
- * @param session the session associated with the new instance
- * @param rootNodeDef the definition of the root node
- * @param rootNodeId the id of the root node
- */
- protected ItemManager(SessionItemStateManager itemStateProvider, HierarchyManager hierMgr,
- SessionImpl session, NodeDefinition rootNodeDef,
+ * @param sism the item state manager associated with the new
+ * instance
+ * @param hierMgr the hierarchy manager
+ * @param session the session associated with the new instance
+ * @param rootNodeDef the definition of the root node
+ * @param rootNodeId the id of the root node
+ */
+ protected ItemManager(SessionItemStateManager sism,
+ HierarchyManager hierMgr,
+ SessionImpl session,
+ org.apache.jackrabbit.spi.commons.nodetype.NodeDefinitionImpl rootNodeDef,
NodeId rootNodeId) {
- this.itemStateProvider = itemStateProvider;
+ this.sism = sism;
this.hierMgr = hierMgr;
this.session = session;
this.rootNodeDef = rootNodeDef;
@@ -145,7 +145,7 @@
SessionItemStateManager itemStateProvider,
HierarchyManager hierMgr,
SessionImpl session,
- NodeDefinition rootNodeDef,
+ org.apache.jackrabbit.spi.commons.nodetype.NodeDefinitionImpl rootNodeDef,
NodeId rootNodeId) {
ItemManager mgr = new ItemManager(itemStateProvider, hierMgr,
session, rootNodeDef, rootNodeId);
@@ -163,52 +163,76 @@
shareableNodesCache.clear();
}
- NodeDefinition getDefinition(NodeState state)
+ org.apache.jackrabbit.spi.commons.nodetype.NodeDefinitionImpl getDefinition(NodeState state)
throws RepositoryException {
if (state.getId().equals(rootNodeId)) {
// special handling required for root node
return rootNodeDef;
}
- NodeDefId defId = state.getDefinitionId();
- NodeDefinitionImpl def = session.getNodeTypeManager().getNodeDefinition(defId);
- if (def == null) {
- /**
- * todo need proper way of handling inconsistent/corrupt definition
- * e.g. 'flag' items that refer to non-existent definitions
- */
- log.warn("node at " + safeGetJCRPath(state.getNodeId())
- + " has invalid definitionId (" + defId + ")");
-
- // fallback: try finding applicable definition
- NodeImpl parent = (NodeImpl) getItem(state.getParentId());
- NodeState parentState = parent.getNodeState();
- ChildNodeEntry cne = parentState.getChildNodeEntry(state.getNodeId());
- def = parent.getApplicableChildNodeDefinition(cne.getName(), state.getNodeTypeName());
- state.setDefinitionId(def.unwrap().getId());
+ NodeId parentId = state.getParentId();
+ if (parentId == null) {
+ // removed state has parentId set to null
+ // get from overlayed state
+ parentId = state.getOverlayedState().getParentId();
+ }
+ NodeState parentState;
+ try {
+ NodeImpl parent = (NodeImpl) getItem(parentId);
+ parentState = parent.getNodeState();
+ if (state.getParentId() == null) {
+ // indicates state has been removed, must use
+ // overlayed state of parent, otherwise child node entry
+ // cannot be found
+ parentState = (NodeState) parentState.getOverlayedState();
+ }
+ } catch (ItemNotFoundException e) {
+ // parent probably removed, get it from attic
+ try {
+ // use overlayed state if available
+ parentState = (NodeState) sism.getAttic().getItemState(
+ parentId).getOverlayedState();
+ } catch (ItemStateException ex) {
+ throw new RepositoryException(ex);
+ }
+ }
+ // get child node entry
+ ChildNodeEntry cne = parentState.getChildNodeEntry(state.getNodeId());
+ NodeTypeRegistry ntReg = session.getNodeTypeManager().getNodeTypeRegistry();
+ try {
+ EffectiveNodeType ent = ntReg.getEffectiveNodeType(
+ parentState.getNodeTypeName(), parentState.getMixinTypeNames());
+ QNodeDefinition def = ent.getApplicableChildNodeDef(
+ cne.getName(), state.getNodeTypeName(), ntReg);
+ return session.getNodeTypeManager().getNodeDefinition(def);
+ } catch (NodeTypeConflictException e) {
+ throw new RepositoryException(e);
}
- return def;
}
- PropertyDefinition getDefinition(PropertyState state)
+ org.apache.jackrabbit.spi.commons.nodetype.PropertyDefinitionImpl getDefinition(PropertyState state)
throws RepositoryException {
- PropDefId defId = state.getDefinitionId();
- PropertyDefinitionImpl def = session.getNodeTypeManager().getPropertyDefinition(defId);
- if (def == null) {
- /**
- * todo need proper way of handling inconsistent/corrupt definition
- * e.g. 'flag' items that refer to non-existent definitions
- */
- log.warn("property at " + safeGetJCRPath(state.getPropertyId())
- + " has invalid definitionId (" + defId + ")");
-
- // fallback: try finding applicable definition
+ try {
NodeImpl parent = (NodeImpl) getItem(state.getParentId());
- def = parent.getApplicablePropertyDefinition(
+ return parent.getApplicablePropertyDefinition(
state.getName(), state.getType(), state.isMultiValued(), true);
- state.setDefinitionId(def.unwrap().getId());
+ } catch (ItemNotFoundException e) {
+ // parent probably removed, get it from attic
+ }
+ try {
+ NodeState parent = (NodeState) sism.getAttic().getItemState(
+ state.getParentId()).getOverlayedState();
+ NodeTypeRegistry ntReg = session.getNodeTypeManager().getNodeTypeRegistry();
+ EffectiveNodeType ent = ntReg.getEffectiveNodeType(
+ parent.getNodeTypeName(), parent.getMixinTypeNames());
+ QPropertyDefinition def = ent.getApplicablePropertyDef(
+ state.getName(), state.getType(), state.isMultiValued());
+ return session.getNodeTypeManager().getPropertyDefinition(def);
+ } catch (ItemStateException e) {
+ throw new RepositoryException(e);
+ } catch (NodeTypeConflictException e) {
+ throw new RepositoryException(e);
}
- return def;
}
/**
@@ -228,7 +252,7 @@
session.sanityCheck();
// shortcut: check if state exists for the given item
- if (!itemStateProvider.hasItemState(itemId)) {
+ if (!sism.hasItemState(itemId)) {
return false;
}
getItemData(itemId, path, true);
@@ -310,7 +334,7 @@
// NOTE: permission check & caching within createItemData
ItemState state;
try {
- state = itemStateProvider.getItemState(itemId);
+ state = sism.getItemState(itemId);
} catch (NoSuchItemStateException nsise) {
throw new ItemNotFoundException(itemId.toString());
} catch (ItemStateException ise) {
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=816343&r1=816342&r2=816343&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 Thu Sep 17 19:20:33 2009
@@ -31,10 +31,8 @@
import org.apache.jackrabbit.core.id.ItemId;
import org.apache.jackrabbit.core.lock.LockManager;
import org.apache.jackrabbit.core.nodetype.EffectiveNodeType;
-import org.apache.jackrabbit.core.nodetype.NodeDef;
import org.apache.jackrabbit.core.nodetype.NodeTypeConflictException;
import org.apache.jackrabbit.core.nodetype.NodeTypeRegistry;
-import org.apache.jackrabbit.core.nodetype.PropDef;
import org.apache.jackrabbit.core.retention.RetentionRegistry;
import org.apache.jackrabbit.core.security.AccessManager;
import org.apache.jackrabbit.core.security.authorization.Permission;
@@ -43,6 +41,9 @@
import org.apache.jackrabbit.core.value.InternalValue;
import org.apache.jackrabbit.spi.Name;
import org.apache.jackrabbit.spi.Path;
+import org.apache.jackrabbit.spi.QPropertyDefinition;
+import org.apache.jackrabbit.spi.QItemDefinition;
+import org.apache.jackrabbit.spi.QNodeDefinition;
import org.apache.jackrabbit.spi.commons.conversion.PathResolver;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -130,6 +131,8 @@
protected final RetentionRegistry retentionReg;
+ protected final ItemManager itemMgr;
+
/**
* Creates a new <code>ItemValidator</code> instance.
*
@@ -140,7 +143,9 @@
public ItemValidator(NodeTypeRegistry ntReg,
HierarchyManager hierMgr,
SessionImpl session) throws RepositoryException {
- this(ntReg, hierMgr, session, session.getLockManager(), session.getAccessManager(), session.getRetentionRegistry());
+ this(ntReg, hierMgr, session, session.getLockManager(),
+ session.getAccessManager(), session.getRetentionRegistry(),
+ session.getItemManager());
}
/**
@@ -152,19 +157,22 @@
* @param lockMgr lockMgr
* @param accessMgr accessMgr
* @param retentionReg
+ * @param itemMgr the item manager
*/
public ItemValidator(NodeTypeRegistry ntReg,
HierarchyManager hierMgr,
PathResolver resolver,
LockManager lockMgr,
AccessManager accessMgr,
- RetentionRegistry retentionReg) {
+ RetentionRegistry retentionReg,
+ ItemManager itemMgr) {
this.ntReg = ntReg;
this.hierMgr = hierMgr;
this.resolver = resolver;
this.lockMgr = lockMgr;
this.accessMgr = accessMgr;
this.retentionReg = retentionReg;
+ this.itemMgr = itemMgr;
}
/**
@@ -190,7 +198,7 @@
ntReg.getEffectiveNodeType(nodeState.getNodeTypeName());
// effective node type (primary type incl. mixins)
EffectiveNodeType entPrimaryAndMixins = getEffectiveNodeType(nodeState);
- NodeDef def = ntReg.getNodeDef(nodeState.getDefinitionId());
+ QNodeDefinition def = itemMgr.getDefinition(nodeState).unwrap();
// check if primary type satisfies the 'required node types' constraint
Name[] requiredPrimaryTypes = def.getRequiredPrimaryTypes();
@@ -204,9 +212,9 @@
}
}
// mandatory properties
- PropDef[] pda = entPrimaryAndMixins.getMandatoryPropDefs();
+ QPropertyDefinition[] pda = entPrimaryAndMixins.getMandatoryPropDefs();
for (int i = 0; i < pda.length; i++) {
- PropDef pd = pda[i];
+ QPropertyDefinition pd = pda[i];
if (!nodeState.hasPropertyName(pd.getName())) {
String msg = safeGetJCRPath(nodeState.getNodeId())
+ ": mandatory property " + pd.getName()
@@ -216,9 +224,9 @@
}
}
// mandatory child nodes
- NodeDef[] cnda = entPrimaryAndMixins.getMandatoryNodeDefs();
+ QItemDefinition[] cnda = entPrimaryAndMixins.getMandatoryNodeDefs();
for (int i = 0; i < cnda.length; i++) {
- NodeDef cnd = cnda[i];
+ QItemDefinition cnd = cnda[i];
if (!nodeState.hasChildNodeEntry(cnd.getName())) {
String msg = safeGetJCRPath(nodeState.getNodeId())
+ ": mandatory child node " + cnd.getName()
@@ -246,7 +254,7 @@
*/
public void validate(PropertyState propState)
throws ConstraintViolationException, RepositoryException {
- PropDef def = ntReg.getPropDef(propState.getDefinitionId());
+ QPropertyDefinition def = itemMgr.getDefinition(propState).unwrap();
InternalValue[] values = propState.getValues();
int type = PropertyType.UNDEFINED;
for (int i = 0; i < values.length; i++) {
@@ -451,12 +459,12 @@
* @param name
* @param nodeTypeName
* @param parentState
- * @return a <code>NodeDef</code>
+ * @return a <code>QNodeDefinition</code>
* @throws ConstraintViolationException if no applicable child node definition
* could be found
* @throws RepositoryException if another error occurs
*/
- public NodeDef findApplicableNodeDefinition(Name name,
+ public QNodeDefinition findApplicableNodeDefinition(Name name,
Name nodeTypeName,
NodeState parentState)
throws RepositoryException, ConstraintViolationException {
@@ -479,12 +487,12 @@
* @param type
* @param multiValued
* @param parentState
- * @return a <code>PropDef</code>
+ * @return a <code>QPropertyDefinition</code>
* @throws ConstraintViolationException if no applicable property definition
* could be found
* @throws RepositoryException if another error occurs
*/
- public PropDef findApplicablePropertyDefinition(Name name,
+ public QPropertyDefinition findApplicablePropertyDefinition(Name name,
int type,
boolean multiValued,
NodeState parentState)
@@ -510,12 +518,12 @@
* @param name
* @param type
* @param parentState
- * @return a <code>PropDef</code>
+ * @return a <code>QPropertyDefinition</code>
* @throws ConstraintViolationException if no applicable property definition
* could be found
* @throws RepositoryException if another error occurs
*/
- public PropDef findApplicablePropertyDefinition(Name name,
+ public QPropertyDefinition findApplicablePropertyDefinition(Name name,
int type,
NodeState parentState)
throws RepositoryException, ConstraintViolationException {
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeImpl.java?rev=816343&r1=816342&r2=816343&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeImpl.java Thu Sep 17 19:20:33 2009
@@ -71,16 +71,10 @@
import org.apache.jackrabbit.core.id.NodeId;
import org.apache.jackrabbit.core.id.PropertyId;
import org.apache.jackrabbit.core.nodetype.EffectiveNodeType;
-import org.apache.jackrabbit.core.nodetype.ItemDef;
-import org.apache.jackrabbit.core.nodetype.NodeDef;
-import org.apache.jackrabbit.core.nodetype.NodeDefId;
-import org.apache.jackrabbit.core.nodetype.NodeDefinitionImpl;
import org.apache.jackrabbit.core.nodetype.NodeTypeConflictException;
import org.apache.jackrabbit.core.nodetype.NodeTypeImpl;
import org.apache.jackrabbit.core.nodetype.NodeTypeManagerImpl;
import org.apache.jackrabbit.core.nodetype.NodeTypeRegistry;
-import org.apache.jackrabbit.core.nodetype.PropDef;
-import org.apache.jackrabbit.core.nodetype.PropertyDefinitionImpl;
import org.apache.jackrabbit.core.query.QueryManagerImpl;
import org.apache.jackrabbit.core.security.authorization.Permission;
import org.apache.jackrabbit.core.state.ChildNodeEntry;
@@ -92,6 +86,9 @@
import org.apache.jackrabbit.core.value.InternalValue;
import org.apache.jackrabbit.spi.Name;
import org.apache.jackrabbit.spi.Path;
+import org.apache.jackrabbit.spi.QItemDefinition;
+import org.apache.jackrabbit.spi.QPropertyDefinition;
+import org.apache.jackrabbit.spi.QNodeDefinition;
import org.apache.jackrabbit.spi.commons.conversion.MalformedPathException;
import org.apache.jackrabbit.spi.commons.conversion.NameException;
import org.apache.jackrabbit.spi.commons.name.NameConstants;
@@ -108,6 +105,8 @@
import static org.apache.jackrabbit.spi.commons.name.NameConstants.JCR_CURRENT_LIFECYCLE_STATE;
import static org.apache.jackrabbit.spi.commons.name.NameConstants.MIX_LIFECYCLE;
import static org.apache.jackrabbit.spi.commons.name.NameConstants.MIX_REFERENCEABLE;
+import org.apache.jackrabbit.spi.commons.nodetype.NodeDefinitionImpl;
+import org.apache.jackrabbit.spi.commons.nodetype.PropertyDefinitionImpl;
/**
* <code>NodeImpl</code> implements the <code>Node</code> interface.
@@ -144,6 +143,23 @@
+ state.getNodeTypeName() + "' of " + this);
data.getNodeState().setNodeTypeName(NameConstants.NT_UNSTRUCTURED);
}
+ List<Name> unknown = null;
+ for (Name mixinName : state.getMixinTypeNames()) {
+ if (!ntReg.isRegistered(mixinName)) {
+ if (unknown == null) {
+ unknown = new ArrayList<Name>();
+ }
+ unknown.add(mixinName);
+ log.warn("Ignoring unknown mixin type '" + mixinName +
+ "' of " + this);
+ }
+ }
+ if (unknown != null) {
+ // ignore unknown mixin type names
+ Set<Name> known = new HashSet<Name>(state.getMixinTypeNames());
+ known.removeAll(unknown);
+ state.setMixinTypeNames(known);
+ }
}
/**
@@ -359,7 +375,7 @@
if (isNew() && !hasProperty(name)) {
// this is a new node and the property does not exist yet
// -> no need to check item manager
- PropertyDefinitionImpl def = getApplicablePropertyDefinition(
+ org.apache.jackrabbit.spi.commons.nodetype.PropertyDefinitionImpl def = getApplicablePropertyDefinition(
name, type, multiValued, exactTypeMatch);
PropertyImpl prop = createChildProperty(name, type, def);
status.set(CREATED);
@@ -396,7 +412,7 @@
} catch (ItemNotFoundException e) {
// does not exist yet:
// find definition for the specified property and create property
- PropertyDefinitionImpl def = getApplicablePropertyDefinition(
+ org.apache.jackrabbit.spi.commons.nodetype.PropertyDefinitionImpl def = getApplicablePropertyDefinition(
name, type, multiValued, exactTypeMatch);
PropertyImpl prop = createChildProperty(name, type, def);
status.set(CREATED);
@@ -405,24 +421,23 @@
}
protected synchronized PropertyImpl createChildProperty(Name name, int type,
- PropertyDefinitionImpl def)
+ org.apache.jackrabbit.spi.commons.nodetype.PropertyDefinitionImpl def)
throws RepositoryException {
// create a new property state
PropertyState propState;
try {
- PropDef propDef = def.unwrap();
+ QPropertyDefinition propDef = def.unwrap();
propState =
stateMgr.createTransientPropertyState(getNodeId(), name,
ItemState.STATUS_NEW);
propState.setType(type);
propState.setMultiValued(propDef.isMultiple());
- propState.setDefinitionId(propDef.getId());
// compute system generated values if necessary
InternalValue[] genValues = session.getNodeTypeInstanceHandler()
.computeSystemGeneratedPropertyValues(data.getNodeState(), propDef);
if (genValues == null) {
- genValues = propDef.getDefaultValues();
+ genValues = InternalValue.create(propDef.getDefaultValues());
}
if (genValues != null) {
propState.setValues(genValues);
@@ -450,7 +465,6 @@
}
protected synchronized NodeImpl createChildNode(Name name,
- NodeDefinitionImpl def,
NodeTypeImpl nodeType,
NodeId id)
throws RepositoryException {
@@ -463,7 +477,6 @@
nodeState =
stateMgr.createTransientNodeState(id, nodeType.getQName(),
getNodeId(), ItemState.STATUS_NEW);
- nodeState.setDefinitionId(def.unwrap().getId());
} catch (ItemStateException ise) {
String msg = "failed to add child node " + name + " to " + this;
log.debug(msg);
@@ -495,15 +508,14 @@
PropertyDefinition[] pda = nodeType.getAutoCreatedPropertyDefinitions();
for (int i = 0; i < pda.length; i++) {
PropertyDefinitionImpl pd = (PropertyDefinitionImpl) pda[i];
- node.createChildProperty(pd.getQName(), pd.getRequiredType(), pd);
+ node.createChildProperty(pd.unwrap().getName(), pd.getRequiredType(), pd);
}
// recursively add 'auto-create' child nodes defined in node type
NodeDefinition[] nda = nodeType.getAutoCreatedNodeDefinitions();
for (int i = 0; i < nda.length; i++) {
NodeDefinitionImpl nd = (NodeDefinitionImpl) nda[i];
- node.createChildNode(nd.getQName(), nd,
- (NodeTypeImpl) nd.getDefaultPrimaryType(), null);
+ node.createChildNode(nd.unwrap().getName(), (NodeTypeImpl) nd.getDefaultPrimaryType(), null);
}
return node;
@@ -570,13 +582,12 @@
}
}
- protected void onRedefine(NodeDefId defId) throws RepositoryException {
- NodeDefinitionImpl newDef =
- session.getNodeTypeManager().getNodeDefinition(defId);
+ protected void onRedefine(QNodeDefinition def) throws RepositoryException {
+ org.apache.jackrabbit.spi.commons.nodetype.NodeDefinitionImpl newDef =
+ session.getNodeTypeManager().getNodeDefinition(def);
// modify the state of 'this', i.e. the target node
- NodeState thisState = (NodeState) getOrCreateTransientItemState();
- // set id of new definition
- thisState.setDefinitionId(defId);
+ getOrCreateTransientItemState();
+ // set new definition
data.setDefinition(newDef);
}
@@ -641,7 +652,7 @@
prop = (PropertyImpl) itemMgr.getItem(new PropertyId(thisState.getNodeId(), NameConstants.JCR_MIXINTYPES));
} else {
// find definition for the jcr:mixinTypes property and create property
- PropertyDefinitionImpl def = getApplicablePropertyDefinition(
+ org.apache.jackrabbit.spi.commons.nodetype.PropertyDefinitionImpl def = getApplicablePropertyDefinition(
NameConstants.JCR_MIXINTYPES, PropertyType.NAME, true, true);
prop = createChildProperty(NameConstants.JCR_MIXINTYPES, PropertyType.NAME, def);
}
@@ -704,13 +715,13 @@
* could be found
* @throws RepositoryException if another error occurs
*/
- protected NodeDefinitionImpl getApplicableChildNodeDefinition(Name nodeName,
+ protected org.apache.jackrabbit.spi.commons.nodetype.NodeDefinitionImpl getApplicableChildNodeDefinition(Name nodeName,
Name nodeTypeName)
throws ConstraintViolationException, RepositoryException {
NodeTypeManagerImpl ntMgr = session.getNodeTypeManager();
- NodeDef cnd = getEffectiveNodeType().getApplicableChildNodeDef(
+ QNodeDefinition cnd = getEffectiveNodeType().getApplicableChildNodeDef(
nodeName, nodeTypeName, ntMgr.getNodeTypeRegistry());
- return ntMgr.getNodeDefinition(cnd.getId());
+ return ntMgr.getNodeDefinition(cnd);
}
/**
@@ -726,12 +737,12 @@
* could be found
* @throws RepositoryException if another error occurs
*/
- protected PropertyDefinitionImpl getApplicablePropertyDefinition(Name propertyName,
+ protected org.apache.jackrabbit.spi.commons.nodetype.PropertyDefinitionImpl getApplicablePropertyDefinition(Name propertyName,
int type,
boolean multiValued,
boolean exactTypeMatch)
throws ConstraintViolationException, RepositoryException {
- PropDef pd;
+ QPropertyDefinition pd;
if (exactTypeMatch || type == PropertyType.UNDEFINED) {
pd = getEffectiveNodeType().getApplicablePropertyDef(
propertyName, type, multiValued);
@@ -746,7 +757,7 @@
propertyName, PropertyType.UNDEFINED, multiValued);
}
}
- return session.getNodeTypeManager().getPropertyDefinition(pd.getId());
+ return session.getNodeTypeManager().getPropertyDefinition(pd);
}
protected void makePersistent() throws InvalidItemStateException {
@@ -779,8 +790,6 @@
persistentState.setNodeTypeName(transientState.getNodeTypeName());
// mixin types
persistentState.setMixinTypeNames(transientState.getMixinTypeNames());
- // id of definition
- persistentState.setDefinitionId(transientState.getDefinitionId());
// child node entries
persistentState.setChildNodeEntries(transientState.getChildNodeEntries());
// property entries
@@ -816,7 +825,6 @@
thisState.setParentId(transientState.getParentId());
thisState.setNodeTypeName(transientState.getNodeTypeName());
thisState.setMixinTypeNames(transientState.getMixinTypeNames());
- thisState.setDefinitionId(transientState.getDefinitionId());
thisState.setChildNodeEntries(transientState.getChildNodeEntries());
thisState.setPropertyNames(transientState.getPropertyNames());
thisState.setSharedSet(transientState.getSharedSet());
@@ -902,7 +910,7 @@
// or existing mixin's
NodeTypeImpl declaringNT = (NodeTypeImpl) pd.getDeclaringNodeType();
if (!entExisting.includesNodeType(declaringNT.getQName())) {
- createChildProperty(pd.getQName(), pd.getRequiredType(), pd);
+ createChildProperty(pd.unwrap().getName(), pd.getRequiredType(), pd);
}
}
@@ -914,7 +922,7 @@
// or existing mixin's
NodeTypeImpl declaringNT = (NodeTypeImpl) nd.getDeclaringNodeType();
if (!entExisting.includesNodeType(declaringNT.getQName())) {
- createChildNode(nd.getQName(), nd, (NodeTypeImpl) nd.getDefaultPrimaryType(), null);
+ createChildNode(nd.unwrap().getName(), (NodeTypeImpl) nd.getDefaultPrimaryType(), null);
}
}
} catch (RepositoryException re) {
@@ -1021,7 +1029,7 @@
for (Name propName : set) {
PropertyState propState = (PropertyState) stateMgr.getItemState(new PropertyId(thisState.getNodeId(), propName));
// check if property has been defined by mixin type (or one of its supertypes)
- PropertyDefinition def = ntMgr.getPropertyDefinition(propState.getDefinitionId());
+ PropertyDefinition def = itemMgr.getDefinition(propState);
NodeTypeImpl declaringNT = (NodeTypeImpl) def.getDeclaringNodeType();
if (!entResulting.includesNodeType(declaringNT.getQName())) {
// the resulting effective node type doesn't include the
@@ -1036,7 +1044,7 @@
removeChildProperty(propName);
continue;
}
- PropertyDefinitionImpl pdi = getApplicablePropertyDefinition(
+ org.apache.jackrabbit.spi.commons.nodetype.PropertyDefinitionImpl pdi = getApplicablePropertyDefinition(
propName, propState.getType(),
propState.isMultiValued(), false);
if (pdi.getRequiredType() != PropertyType.UNDEFINED
@@ -1050,7 +1058,7 @@
pdi.getRequiredType(),
session.getValueFactory());
// redefine property
- prop.onRedefine(pdi.unwrap().getId());
+ prop.onRedefine(pdi.unwrap());
// set converted values
prop.setValue(values);
} else {
@@ -1061,13 +1069,13 @@
pdi.getRequiredType(),
session.getValueFactory());
// redefine property
- prop.onRedefine(pdi.unwrap().getId());
+ prop.onRedefine(pdi.unwrap());
// set converted values
prop.setValue(value);
}
} else {
// redefine property
- prop.onRedefine(pdi.unwrap().getId());
+ prop.onRedefine(pdi.unwrap());
}
} catch (ValueFormatException vfe) {
// value conversion failed, remove it
@@ -1085,7 +1093,7 @@
for (int i = list.size() - 1; i >= 0; i--) {
ChildNodeEntry entry = list.get(i);
NodeState nodeState = (NodeState) stateMgr.getItemState(entry.getId());
- NodeDefinition def = ntMgr.getNodeDefinition(nodeState.getDefinitionId());
+ NodeDefinition def = itemMgr.getDefinition(nodeState);
// check if node has been defined by mixin type (or one of its supertypes)
NodeTypeImpl declaringNT = (NodeTypeImpl) def.getDeclaringNodeType();
if (!entResulting.includesNodeType(declaringNT.getQName())) {
@@ -1099,11 +1107,11 @@
removeChildNode(entry.getName(), entry.getIndex());
continue;
}
- NodeDefinitionImpl ndi = getApplicableChildNodeDefinition(
+ org.apache.jackrabbit.spi.commons.nodetype.NodeDefinitionImpl ndi = getApplicableChildNodeDefinition(
entry.getName(),
nodeState.getNodeTypeName());
// redefine node
- node.onRedefine(ndi.unwrap().getId());
+ node.onRedefine(ndi.unwrap());
} catch (ConstraintViolationException cve) {
// no suitable definition found for this child node,
// remove it
@@ -1451,7 +1459,7 @@
}
// Get the applicable child node definition for this node.
- NodeDefinitionImpl def;
+ org.apache.jackrabbit.spi.commons.nodetype.NodeDefinitionImpl def;
try {
def = getApplicableChildNodeDefinition(nodeName, nodeTypeName);
} catch (RepositoryException e) {
@@ -1493,7 +1501,7 @@
session.getValidator().checkModify(this, options, Permission.NONE);
// now do create the child node
- return createChildNode(nodeName, def, nt, id);
+ return createChildNode(nodeName, nt, id);
}
/**
@@ -1890,7 +1898,7 @@
session.getValidator().checkModify(this, options, Permission.NONE);
// (4) check for name collisions
- NodeDefinitionImpl def;
+ org.apache.jackrabbit.spi.commons.nodetype.NodeDefinitionImpl def;
try {
def = getApplicableChildNodeDefinition(name, null);
} catch (RepositoryException re) {
@@ -3677,26 +3685,26 @@
}
// get applicable definition for this node using new primary type
- NodeDefId defId;
+ QNodeDefinition nodeDef;
try {
NodeImpl parent = (NodeImpl) getParent();
- defId = parent.getApplicableChildNodeDefinition(getQName(), ntName).unwrap().getId();
+ nodeDef = parent.getApplicableChildNodeDefinition(getQName(), ntName).unwrap();
} catch (RepositoryException re) {
String msg = this + ": no applicable definition found in parent node's node type";
log.debug(msg);
throw new ConstraintViolationException(msg, re);
}
- if (!defId.equals(state.getDefinitionId())) {
- onRedefine(defId);
+ if (!nodeDef.equals(itemMgr.getDefinition(state).unwrap())) {
+ onRedefine(nodeDef);
}
- Set<ItemDef> oldDefs = new HashSet<ItemDef>(Arrays.asList(entOld.getAllItemDefs()));
- Set<ItemDef> newDefs = new HashSet<ItemDef>(Arrays.asList(entNew.getAllItemDefs()));
- Set<ItemDef> allDefs = new HashSet<ItemDef>(Arrays.asList(entAll.getAllItemDefs()));
+ Set<QItemDefinition> oldDefs = new HashSet<QItemDefinition>(Arrays.asList(entOld.getAllItemDefs()));
+ Set<QItemDefinition> newDefs = new HashSet<QItemDefinition>(Arrays.asList(entNew.getAllItemDefs()));
+ Set<QItemDefinition> allDefs = new HashSet<QItemDefinition>(Arrays.asList(entAll.getAllItemDefs()));
// added child item definitions
- Set<ItemDef> addedDefs = new HashSet<ItemDef>(newDefs);
+ Set<QItemDefinition> addedDefs = new HashSet<QItemDefinition>(newDefs);
addedDefs.removeAll(oldDefs);
// referential integrity check
@@ -3732,7 +3740,7 @@
PropertyState propState =
(PropertyState) stateMgr.getItemState(
new PropertyId(thisState.getNodeId(), propName));
- if (!allDefs.contains(ntReg.getPropDef(propState.getDefinitionId()))) {
+ if (!allDefs.contains(itemMgr.getDefinition(propState).unwrap())) {
// try to find new applicable definition first and
// redefine property if possible
try {
@@ -3742,7 +3750,7 @@
removeChildProperty(propName);
continue;
}
- PropertyDefinitionImpl pdi = getApplicablePropertyDefinition(
+ org.apache.jackrabbit.spi.commons.nodetype.PropertyDefinitionImpl pdi = getApplicablePropertyDefinition(
propName, propState.getType(),
propState.isMultiValued(), false);
if (pdi.getRequiredType() != PropertyType.UNDEFINED
@@ -3756,7 +3764,7 @@
pdi.getRequiredType(),
session.getValueFactory());
// redefine property
- prop.onRedefine(pdi.unwrap().getId());
+ prop.onRedefine(pdi.unwrap());
// set converted values
prop.setValue(values);
} else {
@@ -3767,13 +3775,13 @@
pdi.getRequiredType(),
session.getValueFactory());
// redefine property
- prop.onRedefine(pdi.unwrap().getId());
+ prop.onRedefine(pdi.unwrap());
// set converted values
prop.setValue(value);
}
} else {
// redefine property
- prop.onRedefine(pdi.unwrap().getId());
+ prop.onRedefine(pdi.unwrap());
}
// update collection of added definitions
addedDefs.remove(pdi.unwrap());
@@ -3800,7 +3808,7 @@
ChildNodeEntry entry = list.get(i);
try {
NodeState nodeState = (NodeState) stateMgr.getItemState(entry.getId());
- if (!allDefs.contains(ntReg.getNodeDef(nodeState.getDefinitionId()))) {
+ if (!allDefs.contains(itemMgr.getDefinition(nodeState).unwrap())) {
// try to find new applicable definition first and
// redefine node if possible
try {
@@ -3810,11 +3818,11 @@
removeChildNode(entry.getName(), entry.getIndex());
continue;
}
- NodeDefinitionImpl ndi = getApplicableChildNodeDefinition(
+ org.apache.jackrabbit.spi.commons.nodetype.NodeDefinitionImpl ndi = getApplicableChildNodeDefinition(
entry.getName(),
nodeState.getNodeTypeName());
// redefine node
- node.onRedefine(ndi.unwrap().getId());
+ node.onRedefine(ndi.unwrap());
// update collection of added definitions
addedDefs.remove(ndi.unwrap());
} catch (ConstraintViolationException cve) {
@@ -3832,15 +3840,14 @@
// create items that are defined as auto-created by the new primary node
// type and at the same time were not present with the old nt
- for (Iterator<ItemDef> iter = addedDefs.iterator(); iter.hasNext();) {
- ItemDef def = iter.next();
+ for (QItemDefinition def : addedDefs) {
if (def.isAutoCreated()) {
if (def.definesNode()) {
- NodeDefinitionImpl ndi = ntMgr.getNodeDefinition(((NodeDef) def).getId());
- createChildNode(ndi.getQName(), ndi, (NodeTypeImpl) ndi.getDefaultPrimaryType(), null);
+ NodeDefinitionImpl ndi = ntMgr.getNodeDefinition((QNodeDefinition) def);
+ createChildNode(def.getName(), (NodeTypeImpl) ndi.getDefaultPrimaryType(), null);
} else {
- PropertyDefinitionImpl pdi = ntMgr.getPropertyDefinition(((PropDef) def).getId());
- createChildProperty(pdi.getQName(), pdi.getRequiredType(), pdi);
+ PropertyDefinitionImpl pdi = ntMgr.getPropertyDefinition((QPropertyDefinition) def);
+ createChildProperty(pdi.unwrap().getName(), pdi.getRequiredType(), pdi);
}
}
}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeTypeInstanceHandler.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeTypeInstanceHandler.java?rev=816343&r1=816342&r2=816343&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeTypeInstanceHandler.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeTypeInstanceHandler.java Thu Sep 17 19:20:33 2009
@@ -19,10 +19,10 @@
import java.util.Calendar;
import java.util.Set;
-import org.apache.jackrabbit.core.nodetype.PropDef;
import org.apache.jackrabbit.core.state.NodeState;
import org.apache.jackrabbit.core.value.InternalValue;
import org.apache.jackrabbit.spi.Name;
+import org.apache.jackrabbit.spi.QPropertyDefinition;
import org.apache.jackrabbit.spi.commons.name.NameConstants;
/**
@@ -60,7 +60,7 @@
* @return the computed values
*/
public InternalValue[] computeSystemGeneratedPropertyValues(NodeState parent,
- PropDef def) {
+ QPropertyDefinition def) {
InternalValue[] genValues = null;
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/PropertyImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/PropertyImpl.java?rev=816343&r1=816342&r2=816343&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/PropertyImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/PropertyImpl.java Thu Sep 17 19:20:33 2009
@@ -38,8 +38,6 @@
import javax.jcr.version.VersionException;
import org.apache.jackrabbit.core.id.PropertyId;
-import org.apache.jackrabbit.core.nodetype.PropDefId;
-import org.apache.jackrabbit.core.nodetype.PropertyDefinitionImpl;
import org.apache.jackrabbit.core.security.authorization.Permission;
import org.apache.jackrabbit.core.state.ItemState;
import org.apache.jackrabbit.core.state.ItemStateException;
@@ -47,6 +45,7 @@
import org.apache.jackrabbit.core.value.InternalValue;
import org.apache.jackrabbit.spi.Name;
import org.apache.jackrabbit.spi.Path;
+import org.apache.jackrabbit.spi.QPropertyDefinition;
import org.apache.jackrabbit.spi.commons.name.NameConstants;
import org.apache.jackrabbit.spi.commons.value.ValueFormat;
import org.apache.jackrabbit.value.ValueHelper;
@@ -137,7 +136,6 @@
throw new InvalidItemStateException(msg);
}
// copy state from transient state
- persistentState.setDefinitionId(transientState.getDefinitionId());
persistentState.setType(transientState.getType());
persistentState.setMultiValued(transientState.isMultiValued());
persistentState.setValues(transientState.getValues());
@@ -162,19 +160,14 @@
stateMgr.disconnectTransientItemState(thisState);
}
// reapply transient changes
- thisState.setDefinitionId(transientState.getDefinitionId());
thisState.setType(transientState.getType());
thisState.setMultiValued(transientState.isMultiValued());
thisState.setValues(transientState.getValues());
}
- protected void onRedefine(PropDefId defId) throws RepositoryException {
- PropertyDefinitionImpl newDef =
- session.getNodeTypeManager().getPropertyDefinition(defId);
- // modify the state of 'this', i.e. the target property
- PropertyState thisState = (PropertyState) getOrCreateTransientItemState();
- // set id of new definition
- thisState.setDefinitionId(defId);
+ protected void onRedefine(QPropertyDefinition def) throws RepositoryException {
+ org.apache.jackrabbit.spi.commons.nodetype.PropertyDefinitionImpl newDef =
+ session.getNodeTypeManager().getPropertyDefinition(def);
data.setDefinition(newDef);
}
@@ -433,7 +426,6 @@
* @throws RepositoryException
*/
public InternalValue internalGetValue() throws RepositoryException {
- final PropertyDefinition definition = data.getPropertyDefinition();
if (isMultiple()) {
throw new ValueFormatException(
this + " is a multi-valued property,"
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ProtectedItemModifier.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ProtectedItemModifier.java?rev=816343&r1=816342&r2=816343&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ProtectedItemModifier.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ProtectedItemModifier.java Thu Sep 17 19:20:33 2009
@@ -23,7 +23,6 @@
import javax.jcr.Value;
import org.apache.jackrabbit.core.id.NodeId;
-import org.apache.jackrabbit.core.nodetype.NodeDefinitionImpl;
import org.apache.jackrabbit.core.nodetype.NodeTypeImpl;
import org.apache.jackrabbit.core.retention.RetentionManagerImpl;
import org.apache.jackrabbit.core.security.AccessManager;
@@ -70,7 +69,7 @@
parentImpl.checkSetProperty();
NodeTypeImpl nodeType = parentImpl.session.getNodeTypeManager().getNodeType(ntName);
- NodeDefinitionImpl def = parentImpl.getApplicableChildNodeDefinition(name, ntName);
+ org.apache.jackrabbit.spi.commons.nodetype.NodeDefinitionImpl def = parentImpl.getApplicableChildNodeDefinition(name, ntName);
// check for name collisions
// TODO: improve. copied from NodeImpl
@@ -90,7 +89,7 @@
}
}
- return parentImpl.createChildNode(name, def, nodeType, null);
+ return parentImpl.createChildNode(name, nodeType, null);
}
protected Property setProperty(NodeImpl parentImpl, Name name, Value value) throws RepositoryException {
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=816343&r1=816342&r2=816343&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 Thu Sep 17 19:20:33 2009
@@ -29,7 +29,6 @@
import org.apache.jackrabbit.core.data.GarbageCollector;
import org.apache.jackrabbit.core.id.NodeId;
import org.apache.jackrabbit.core.lock.LockManager;
-import org.apache.jackrabbit.core.nodetype.NodeDefinitionImpl;
import org.apache.jackrabbit.core.nodetype.NodeTypeImpl;
import org.apache.jackrabbit.core.nodetype.NodeTypeManagerImpl;
import org.apache.jackrabbit.core.persistence.IterablePersistenceManager;
@@ -1081,7 +1080,7 @@
// check constraints
// get applicable definition of target node at new location
NodeTypeImpl nt = (NodeTypeImpl) targetNode.getPrimaryNodeType();
- NodeDefinitionImpl newTargetDef;
+ org.apache.jackrabbit.spi.commons.nodetype.NodeDefinitionImpl newTargetDef;
try {
newTargetDef = destParentNode.getApplicableChildNodeDefinition(destName.getName(), nt.getQName());
} catch (RepositoryException re) {
@@ -1140,7 +1139,7 @@
}
// change definition of target
- targetNode.onRedefine(newTargetDef.unwrap().getId());
+ targetNode.onRedefine(newTargetDef.unwrap());
}
/**
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/lock/LockManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/lock/LockManagerImpl.java?rev=816343&r1=816342&r2=816343&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/lock/LockManagerImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/lock/LockManagerImpl.java Thu Sep 17 19:20:33 2009
@@ -20,7 +20,6 @@
import org.apache.commons.collections.map.LinkedMap;
import org.apache.commons.io.IOUtils;
import org.apache.jackrabbit.core.id.ItemId;
-import org.apache.jackrabbit.core.ItemValidator;
import org.apache.jackrabbit.core.id.NodeId;
import org.apache.jackrabbit.core.NodeImpl;
import org.apache.jackrabbit.core.id.PropertyId;
@@ -34,7 +33,6 @@
import org.apache.jackrabbit.core.fs.FileSystem;
import org.apache.jackrabbit.core.fs.FileSystemException;
import org.apache.jackrabbit.core.fs.FileSystemResource;
-import org.apache.jackrabbit.core.nodetype.PropDef;
import org.apache.jackrabbit.core.observation.EventImpl;
import org.apache.jackrabbit.core.observation.SynchronousEventListener;
import org.apache.jackrabbit.core.state.ItemStateException;
@@ -874,7 +872,6 @@
SessionImpl editingSession = (SessionImpl) node.getSession();
WorkspaceImpl wsp = (WorkspaceImpl) editingSession.getWorkspace();
UpdatableItemStateManager stateMgr = wsp.getItemStateManager();
- ItemValidator helper = new ItemValidator(editingSession.getNodeTypeManager().getNodeTypeRegistry(), wsp.getHierarchyManager(), editingSession);
synchronized (stateMgr) {
if (stateMgr.inEditMode()) {
@@ -888,9 +885,7 @@
PropertyState propState;
if (!nodeState.hasPropertyName(NameConstants.JCR_LOCKOWNER)) {
- PropDef def = helper.findApplicablePropertyDefinition(NameConstants.JCR_LOCKOWNER, PropertyType.STRING, false, nodeState);
propState = stateMgr.createNew(NameConstants.JCR_LOCKOWNER, nodeId);
- propState.setDefinitionId(def.getId());
propState.setType(PropertyType.STRING);
propState.setMultiValued(false);
} else {
@@ -901,9 +896,7 @@
stateMgr.store(nodeState);
if (!nodeState.hasPropertyName(NameConstants.JCR_LOCKISDEEP)) {
- PropDef def = helper.findApplicablePropertyDefinition(NameConstants.JCR_LOCKISDEEP, PropertyType.BOOLEAN, false, nodeState);
propState = stateMgr.createNew(NameConstants.JCR_LOCKISDEEP, nodeId);
- propState.setDefinitionId(def.getId());
propState.setType(PropertyType.BOOLEAN);
propState.setMultiValued(false);
} else {