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 2006/11/24 21:19:05 UTC
svn commit: r478979 - in
/jackrabbit/branches/1.1/jackrabbit/src/main/java/org/apache/jackrabbit/core:
RepositoryImpl.java state/SharedItemStateManager.java
Author: jukka
Date: Fri Nov 24 12:19:05 2006
New Revision: 478979
URL: http://svn.apache.org/viewvc?view=rev&rev=478979
Log:
1.1: Merged revisions 469480 and 469480 (JCR-605)
Modified:
jackrabbit/branches/1.1/jackrabbit/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java
jackrabbit/branches/1.1/jackrabbit/src/main/java/org/apache/jackrabbit/core/state/SharedItemStateManager.java
Modified: jackrabbit/branches/1.1/jackrabbit/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.1/jackrabbit/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java?view=diff&rev=478979&r1=478978&r2=478979
==============================================================================
--- jackrabbit/branches/1.1/jackrabbit/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java (original)
+++ jackrabbit/branches/1.1/jackrabbit/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java Fri Nov 24 12:19:05 2006
@@ -35,7 +35,6 @@
import org.apache.jackrabbit.core.fs.FileSystemResource;
import org.apache.jackrabbit.core.lock.LockManager;
import org.apache.jackrabbit.core.lock.LockManagerImpl;
-import org.apache.jackrabbit.core.nodetype.NodeTypeImpl;
import org.apache.jackrabbit.core.nodetype.NodeTypeRegistry;
import org.apache.jackrabbit.core.nodetype.virtual.VirtualNodeTypeStateManager;
import org.apache.jackrabbit.core.observation.DelegatingObservationDispatcher;
@@ -533,20 +532,9 @@
* - all other workspaces should be dynamic workspaces based on
* this 'read-only' system workspace
*
- * for now, we just create a /jcr:system node in every workspace
+ * for now, the jcr:system node is created in
+ * {@link org.apache.jackrabbit.core.state.SharedItemStateManager#createRootNodeState}
*/
- NodeImpl rootNode = (NodeImpl) sysSession.getRootNode();
- if (!rootNode.hasNode(QName.JCR_SYSTEM)) {
- NodeTypeImpl nt = sysSession.getNodeTypeManager().getNodeType(QName.REP_SYSTEM);
- NodeImpl sysRoot = rootNode.internalAddChildNode(QName.JCR_SYSTEM, nt, SYSTEM_ROOT_NODE_ID);
- // add version storage
- nt = sysSession.getNodeTypeManager().getNodeType(QName.REP_VERSIONSTORAGE);
- sysRoot.internalAddChildNode(QName.JCR_VERSIONSTORAGE, nt, VERSION_STORAGE_NODE_ID);
- // add node types
- nt = sysSession.getNodeTypeManager().getNodeType(QName.REP_NODETYPES);
- sysRoot.internalAddChildNode(QName.JCR_NODETYPES, nt, NODETYPES_NODE_ID);
- rootNode.save();
- }
// register the repository as event listener for keeping repository statistics
wsp.getObservationManager().addEventListener(this,
Modified: jackrabbit/branches/1.1/jackrabbit/src/main/java/org/apache/jackrabbit/core/state/SharedItemStateManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.1/jackrabbit/src/main/java/org/apache/jackrabbit/core/state/SharedItemStateManager.java?view=diff&rev=478979&r1=478978&r2=478979
==============================================================================
--- jackrabbit/branches/1.1/jackrabbit/src/main/java/org/apache/jackrabbit/core/state/SharedItemStateManager.java (original)
+++ jackrabbit/branches/1.1/jackrabbit/src/main/java/org/apache/jackrabbit/core/state/SharedItemStateManager.java Fri Nov 24 12:19:05 2006
@@ -21,6 +21,8 @@
import org.apache.jackrabbit.core.ItemId;
import org.apache.jackrabbit.core.NodeId;
import org.apache.jackrabbit.core.PropertyId;
+import org.apache.jackrabbit.core.RepositoryImpl;
+import org.apache.jackrabbit.core.persistence.PersistenceManager;
import org.apache.jackrabbit.core.version.XAVersionManager;
import org.apache.jackrabbit.core.nodetype.EffectiveNodeType;
import org.apache.jackrabbit.core.nodetype.NodeDefId;
@@ -798,6 +800,7 @@
throws ItemStateException {
NodeState rootState = createInstance(rootNodeId, QName.REP_ROOT, null);
+ NodeState jcrSystemState = createInstance(RepositoryImpl.SYSTEM_ROOT_NODE_ID, QName.REP_SYSTEM, rootNodeId);
// FIXME need to manually setup root node by creating mandatory jcr:primaryType property
// @todo delegate setup of root node to NodeTypeInstanceHandler
@@ -806,11 +809,14 @@
NodeDefId nodeDefId;
// definition of jcr:primaryType property
PropDef propDef;
+ // id of the jcr:system node's definition
+ NodeDefId jcrSystemDefId;
try {
nodeDefId = ntReg.getRootNodeDef().getId();
EffectiveNodeType ent = ntReg.getEffectiveNodeType(QName.REP_ROOT);
propDef = ent.getApplicablePropertyDef(QName.JCR_PRIMARYTYPE,
PropertyType.NAME, false);
+ jcrSystemDefId = ent.getApplicableChildNodeDef(QName.JCR_SYSTEM, QName.REP_SYSTEM, ntReg).getId();
} catch (NoSuchNodeTypeException nsnte) {
String msg = "internal error: failed to create root node";
log.error(msg, nsnte);
@@ -821,8 +827,9 @@
throw new ItemStateException(msg, cve);
}
rootState.setDefinitionId(nodeDefId);
+ jcrSystemState.setDefinitionId(jcrSystemDefId);
- // create jcr:primaryType property
+ // create jcr:primaryType property on root node state
rootState.addPropertyName(propDef.getName());
PropertyState prop = createInstance(propDef.getName(), rootNodeId);
@@ -831,9 +838,30 @@
prop.setMultiValued(propDef.isMultiple());
prop.setDefinitionId(propDef.getId());
+ // create jcr:primaryType property on jcr:system node state
+ jcrSystemState.addPropertyName(propDef.getName());
+
+ PropertyState primaryTypeProp = createInstance(propDef.getName(), jcrSystemState.getNodeId());
+ primaryTypeProp.setValues(new InternalValue[]{InternalValue.create(QName.REP_SYSTEM)});
+ primaryTypeProp.setType(propDef.getRequiredType());
+ primaryTypeProp.setMultiValued(propDef.isMultiple());
+ primaryTypeProp.setDefinitionId(propDef.getId());
+
+ // add child node entry for jcr:system node
+ rootState.addChildNodeEntry(QName.JCR_SYSTEM, RepositoryImpl.SYSTEM_ROOT_NODE_ID);
+
+ // add child node entry for virtual jcr:versionStorage
+ jcrSystemState.addChildNodeEntry(QName.JCR_VERSIONSTORAGE, RepositoryImpl.VERSION_STORAGE_NODE_ID);
+
+ // add child node entry for virtual jcr:nodeTypes
+ jcrSystemState.addChildNodeEntry(QName.JCR_NODETYPES, RepositoryImpl.NODETYPES_NODE_ID);
+
+
ChangeLog changeLog = new ChangeLog();
changeLog.added(rootState);
changeLog.added(prop);
+ changeLog.added(jcrSystemState);
+ changeLog.added(primaryTypeProp);
persistMgr.store(changeLog);
changeLog.persisted();