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 an...@apache.org on 2012/04/17 11:50:12 UTC

svn commit: r1327020 - in /jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr: NodeImpl.java SessionContext.java SessionImpl.java

Author: angela
Date: Tue Apr 17 09:50:12 2012
New Revision: 1327020

URL: http://svn.apache.org/viewvc?rev=1327020&view=rev
Log:
OAK-66 : JCR Node Type Management

- Node#getPrimaryNodeType
- Node#getMixinNodeTypes

Modified:
    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/SessionContext.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java

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=1327020&r1=1327019&r2=1327020&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 Tue Apr 17 09:50:12 2012
@@ -47,12 +47,11 @@ import javax.jcr.RepositoryException;
 import javax.jcr.UnsupportedRepositoryOperationException;
 import javax.jcr.Value;
 import javax.jcr.lock.Lock;
-import javax.jcr.lock.LockManager;
 import javax.jcr.nodetype.NodeDefinition;
 import javax.jcr.nodetype.NodeType;
+import javax.jcr.nodetype.NodeTypeManager;
 import javax.jcr.version.Version;
 import javax.jcr.version.VersionHistory;
-import javax.jcr.version.VersionManager;
 import java.io.InputStream;
 import java.math.BigDecimal;
 import java.util.Calendar;
@@ -562,20 +561,38 @@ public class NodeImpl extends ItemImpl i
         return getTransientNodeState().getPropertyCount() != 0;
     }
 
+    /**
+     * @see javax.jcr.Node#getPrimaryNodeType()
+     */
     @Override
     public NodeType getPrimaryNodeType() throws RepositoryException {
         checkStatus();
 
-        // TODO
-        return null;
+        // TODO: check if transient changes to mixin-types are reflected here
+        NodeTypeManager ntMgr = sessionContext.getNodeTypeManager();
+        String primaryNtName = getProperty(JcrConstants.JCR_PRIMARYTYPE).getString();
+        return ntMgr.getNodeType(primaryNtName);
     }
 
+    /**
+     * @see javax.jcr.Node#getMixinNodeTypes()
+     */
     @Override
     public NodeType[] getMixinNodeTypes() throws RepositoryException {
         checkStatus();
 
-        // TODO
-        return new NodeType[0];
+        // TODO: check if transient changes to mixin-types are reflected here
+        if (hasProperty(JcrConstants.JCR_MIXINTYPES)) {
+            NodeTypeManager ntMgr = sessionContext.getNodeTypeManager();
+            Value[] mixinNames = getProperty(JcrConstants.JCR_MIXINTYPES).getValues();
+            NodeType[] mixinTypes = new NodeType[mixinNames.length];
+            for (int i = 0; i < mixinNames.length; i++) {
+                mixinTypes[i] = ntMgr.getNodeType(mixinNames[i].getString());
+            }
+            return mixinTypes;
+        } else {
+            return new NodeType[0];
+        }
     }
 
     @Override
@@ -656,7 +673,7 @@ public class NodeImpl extends ItemImpl i
      */
     @Override
     public Version checkin() throws RepositoryException {
-        return getVersionManager().checkin(getPath());
+        return sessionContext.getVersionManager().checkin(getPath());
     }
 
     /**
@@ -664,7 +681,7 @@ public class NodeImpl extends ItemImpl i
      */
     @Override
     public void checkout() throws RepositoryException {
-        getVersionManager().checkout(getPath());
+        sessionContext.getVersionManager().checkout(getPath());
     }
 
     /**
@@ -672,7 +689,7 @@ public class NodeImpl extends ItemImpl i
      */
     @Override
     public void doneMerge(Version version) throws RepositoryException {
-        getVersionManager().doneMerge(getPath(), version);
+        sessionContext.getVersionManager().doneMerge(getPath(), version);
     }
 
     /**
@@ -680,7 +697,7 @@ public class NodeImpl extends ItemImpl i
      */
     @Override
     public void cancelMerge(Version version) throws RepositoryException {
-        getVersionManager().cancelMerge(getPath(), version);
+        sessionContext.getVersionManager().cancelMerge(getPath(), version);
     }
 
     /**
@@ -688,7 +705,7 @@ public class NodeImpl extends ItemImpl i
      */
     @Override
     public NodeIterator merge(String srcWorkspace, boolean bestEffort) throws RepositoryException {
-        return getVersionManager().merge(getPath(), srcWorkspace, bestEffort);
+        return sessionContext.getVersionManager().merge(getPath(), srcWorkspace, bestEffort);
     }
 
     /**
@@ -696,7 +713,7 @@ public class NodeImpl extends ItemImpl i
      */
     @Override
     public boolean isCheckedOut() throws RepositoryException {
-        return getVersionManager().isCheckedOut(getPath());
+        return sessionContext.getVersionManager().isCheckedOut(getPath());
     }
 
     /**
@@ -704,7 +721,7 @@ public class NodeImpl extends ItemImpl i
      */
     @Override
     public void restore(String versionName, boolean removeExisting) throws RepositoryException {
-        getVersionManager().restore(getPath(), versionName, removeExisting);
+        sessionContext.getVersionManager().restore(getPath(), versionName, removeExisting);
     }
 
     /**
@@ -712,7 +729,7 @@ public class NodeImpl extends ItemImpl i
      */
     @Override
     public void restore(Version version, boolean removeExisting) throws RepositoryException {
-        getVersionManager().restore(version, removeExisting);
+        sessionContext.getVersionManager().restore(version, removeExisting);
     }
 
     /**
@@ -734,7 +751,7 @@ public class NodeImpl extends ItemImpl i
      */
     @Override
     public void restoreByLabel(String versionLabel, boolean removeExisting) throws RepositoryException {
-        getVersionManager().restoreByLabel(getPath(), versionLabel, removeExisting);
+        sessionContext.getVersionManager().restoreByLabel(getPath(), versionLabel, removeExisting);
     }
 
     /**
@@ -742,7 +759,7 @@ public class NodeImpl extends ItemImpl i
      */
     @Override
     public VersionHistory getVersionHistory() throws RepositoryException {
-        return getVersionManager().getVersionHistory(getPath());
+        return sessionContext.getVersionManager().getVersionHistory(getPath());
     }
 
     /**
@@ -750,7 +767,7 @@ public class NodeImpl extends ItemImpl i
      */
     @Override
     public Version getBaseVersion() throws RepositoryException {
-        return getVersionManager().getBaseVersion(getPath());
+        return sessionContext.getVersionManager().getBaseVersion(getPath());
     }
 
     /**
@@ -758,7 +775,7 @@ public class NodeImpl extends ItemImpl i
      */
     @Override
     public Lock lock(boolean isDeep, boolean isSessionScoped) throws RepositoryException {
-        return getLockManager().lock(getPath(), isDeep, isSessionScoped, Long.MAX_VALUE, null);
+        return sessionContext.getLockManager().lock(getPath(), isDeep, isSessionScoped, Long.MAX_VALUE, null);
     }
 
     /**
@@ -766,7 +783,7 @@ public class NodeImpl extends ItemImpl i
      */
     @Override
     public Lock getLock() throws RepositoryException {
-        return getLockManager().getLock(getPath());
+        return sessionContext.getLockManager().getLock(getPath());
     }
 
     /**
@@ -774,7 +791,7 @@ public class NodeImpl extends ItemImpl i
      */
     @Override
     public void unlock() throws RepositoryException {
-        getLockManager().unlock(getPath());
+        sessionContext.getLockManager().unlock(getPath());
     }
 
     /**
@@ -782,7 +799,7 @@ public class NodeImpl extends ItemImpl i
      */
     @Override
     public boolean holdsLock() throws RepositoryException {
-        return getLockManager().holdsLock(getPath());
+        return sessionContext.getLockManager().holdsLock(getPath());
     }
 
     /**
@@ -790,7 +807,7 @@ public class NodeImpl extends ItemImpl i
      */
     @Override
     public boolean isLocked() throws RepositoryException {
-        return getLockManager().isLocked(getPath());
+        return sessionContext.getLockManager().isLocked(getPath());
     }
 
 
@@ -840,27 +857,6 @@ public class NodeImpl extends ItemImpl i
     }
 
     //------------------------------------------------------------< private >---
-    /**
-     * Shortcut to retrieve the version manager from the workspace associated
-     * with the editing session.
-     *
-     * @return the version manager associated with the editing session.
-     * @throws RepositoryException If an error occurs while retrieving the version manager.
-     */
-    private VersionManager getVersionManager() throws RepositoryException {
-        return getSession().getWorkspace().getVersionManager();
-    }
-
-    /**
-     * Shortcut to retrieve the lock manager from the workspace associated
-     * with the editing session.
-     *
-     * @return the lock manager associated with the editing session.
-     * @throws RepositoryException If an error occurs while retrieving the lock manager.
-     */
-    private LockManager getLockManager() throws RepositoryException {
-        return getSession().getWorkspace().getLockManager();
-    }
 
     private Branch getBranch() {
         return sessionContext.getBranch();

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=1327020&r1=1327019&r2=1327020&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 Tue Apr 17 09:50:12 2012
@@ -22,8 +22,12 @@ package org.apache.jackrabbit.oak.jcr;
 import org.apache.jackrabbit.oak.api.Connection;
 import org.apache.jackrabbit.oak.api.Branch;
 
+import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 import javax.jcr.ValueFactory;
+import javax.jcr.lock.LockManager;
+import javax.jcr.nodetype.NodeTypeManager;
+import javax.jcr.version.VersionManager;
 
 public interface SessionContext<T extends Session> {
     T getSession();
@@ -31,5 +35,8 @@ public interface SessionContext<T extend
     String getWorkspaceName();
     Connection getConnection();
     ValueFactory getValueFactory();
+    LockManager getLockManager() throws RepositoryException;
+    NodeTypeManager getNodeTypeManager() throws RepositoryException;
+    VersionManager getVersionManager() throws RepositoryException;
     Branch getBranch();
 }

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=1327020&r1=1327019&r2=1327020&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 Tue Apr 17 09:50:12 2012
@@ -33,8 +33,11 @@ import javax.jcr.Session;
 import javax.jcr.UnsupportedRepositoryOperationException;
 import javax.jcr.ValueFactory;
 import javax.jcr.Workspace;
+import javax.jcr.lock.LockManager;
+import javax.jcr.nodetype.NodeTypeManager;
 import javax.jcr.retention.RetentionManager;
 import javax.jcr.security.AccessControlManager;
+import javax.jcr.version.VersionManager;
 import java.io.IOException;
 import java.security.AccessControlException;
 
@@ -438,6 +441,21 @@ public class SessionImpl extends Abstrac
         }
 
         @Override
+        public LockManager getLockManager() throws RepositoryException {
+            return getWorkspace().getLockManager();
+        }
+
+        @Override
+        public NodeTypeManager getNodeTypeManager() throws RepositoryException {
+            return getWorkspace().getNodeTypeManager();
+        }
+
+        @Override
+        public VersionManager getVersionManager() throws RepositoryException {
+            return getWorkspace().getVersionManager();
+        }
+
+        @Override
         public Branch getBranch() {
             return branch;
         }