You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by an...@apache.org on 2007/10/08 15:13:41 UTC

svn commit: r582815 - in /jackrabbit/trunk/contrib/spi: jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/lock/ spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/ spi2jcr/src/main/java/org/apache...

Author: angela
Date: Mon Oct  8 06:13:39 2007
New Revision: 582815

URL: http://svn.apache.org/viewvc?rev=582815&view=rev
Log:
JCR-1159 SPI: improve description of locking methods on RepositoryService

Modified:
    jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceImpl.java
    jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java
    jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/lock/LockManagerImpl.java
    jackrabbit/trunk/contrib/spi/spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java
    jackrabbit/trunk/contrib/spi/spi2jcr/src/main/java/org/apache/jackrabbit/spi2jcr/RepositoryServiceImpl.java

Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceImpl.java?rev=582815&r1=582814&r2=582815&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceImpl.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceImpl.java Mon Oct  8 06:13:39 2007
@@ -415,7 +415,6 @@
         // NOTE: wspManager has already been disposed upon SessionItemStateManager.dispose()
     }
 
-
     IdFactory getIdFactory() {
         return wspManager.getIdFactory();
     }

Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java?rev=582815&r1=582814&r2=582815&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java Mon Oct  8 06:13:39 2007
@@ -127,6 +127,7 @@
     private final HierarchyManager hierarchyManager;
     private final CacheBehaviour cacheBehaviour;
 
+    private final IdFactory idFactory;
     private final NamespaceRegistryImpl nsRegistry;
     private final NodeTypeRegistryImpl ntRegistry;
     private final ItemDefinitionProvider definitionProvider;
@@ -158,6 +159,7 @@
         this.sessionInfo = sessionInfo;
         this.cacheBehaviour = cacheBehaviour;
 
+        idFactory = service.getIdFactory();
         nsRegistry = createNamespaceRegistry(NamespaceCache.getInstance(service));
         ntRegistry = createNodeTypeRegistry(nsRegistry);
         changeFeed = createChangeFeed(pollTimeout, enableObservation);
@@ -165,7 +167,7 @@
 
         TransientItemStateFactory stateFactory = createItemStateFactory();
         this.isf = stateFactory;
-        this.hierarchyManager = createHierarchyManager(stateFactory, service.getIdFactory());
+        this.hierarchyManager = createHierarchyManager(stateFactory, idFactory);
         createHierarchyListener(hierarchyManager);
     }
 
@@ -182,7 +184,7 @@
     }
 
     public EffectiveNodeTypeProvider getEffectiveNodeTypeProvider() {
-        return (NodeTypeRegistryImpl) ntRegistry;
+        return ntRegistry;
     }
 
     public HierarchyManager getHierarchyManager() {
@@ -194,14 +196,14 @@
     }
 
     public IdFactory getIdFactory() {
-        return service.getIdFactory();
+        return idFactory;
     }
 
     public ItemStateFactory getItemStateFactory() {
         return isf;
     }
 
-    public LockInfo getLockInfo(NodeId nodeId) throws LockException, RepositoryException {
+    public LockInfo getLockInfo(NodeId nodeId) throws RepositoryException {
         return service.getLockInfo(sessionInfo, nodeId);
     }
 
@@ -515,7 +517,7 @@
         // identified by the resulting id.
         // the server must be able to deal with paths and with proper ids anyway.
         // TODO: 'createNodeId' is basically wrong since isGranted is unspecific for any item.
-        ItemId id = getIdFactory().createNodeId((NodeId) parentState.getWorkspaceId(), relPath);
+        ItemId id = idFactory.createNodeId((NodeId) parentState.getWorkspaceId(), relPath);
         return service.isGranted(sessionInfo, id, actions);
     }
 
@@ -841,7 +843,7 @@
                 NodeId targetId;
                 Path relPath = operation.getRelativePath();
                 if (relPath != null) {
-                    targetId = getIdFactory().createNodeId(nId, relPath);
+                    targetId = idFactory.createNodeId(nId, relPath);
                 } else {
                     targetId = nId;
                 }

Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/lock/LockManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/lock/LockManagerImpl.java?rev=582815&r1=582814&r2=582815&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/lock/LockManagerImpl.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/lock/LockManagerImpl.java Mon Oct  8 06:13:39 2007
@@ -315,10 +315,8 @@
     private LockState buildLockState(NodeState nodeState) throws RepositoryException {
         NodeId nId = nodeState.getNodeId();
         NodeState lockHoldingState = null;
-        LockInfo lockInfo;
-        try {
-            lockInfo = wspManager.getLockInfo(nId);
-        } catch (LockException e) {
+        LockInfo lockInfo = wspManager.getLockInfo(nId);
+        if (lockInfo == null) {
             // no lock present
             return null;
         }
@@ -438,10 +436,9 @@
      * lock info.
      *
      * @param lt
-     * @throws LockException
      * @throws RepositoryException
      */
-    private void notifyTokenAdded(String lt) throws LockException, RepositoryException {
+    private void notifyTokenAdded(String lt) throws RepositoryException {
         LockTokenListener[] listeners = (LockTokenListener[]) lockMap.values().toArray(new LockTokenListener[lockMap.size()]);
         for (int i = 0; i < listeners.length; i++) {
             listeners[i].lockTokenAdded(lt);
@@ -453,10 +450,9 @@
      * removed lock token and allow them to reload their lock info, if necessary.
      *
      * @param lt
-     * @throws LockException
      * @throws RepositoryException
      */
-    private void notifyTokenRemoved(String lt) throws LockException, RepositoryException {
+    private void notifyTokenRemoved(String lt) throws RepositoryException {
         LockTokenListener[] listeners = (LockTokenListener[]) lockMap.values().toArray(new LockTokenListener[lockMap.size()]);
         for (int i = 0; i < listeners.length; i++) {
             listeners[i].lockTokenRemoved(lt);
@@ -507,12 +503,15 @@
         /**
          * Reload the lockInfo from the server.
          *
-         * @throws LockException
          * @throws RepositoryException
          */
-        private void reloadLockInfo() throws LockException, RepositoryException {
+        private void reloadLockInfo() throws RepositoryException {
             NodeId nId = lockHoldingState.getNodeEntry().getWorkspaceId();
             lockInfo = wspManager.getLockInfo(nId);
+            if (lockInfo == null) {
+                // lock has been released on the server
+                unlocked();
+            }
         }
 
         /**
@@ -697,11 +696,10 @@
          * from the server.
          *
          * @param lockToken
-         * @throws LockException
          * @throws RepositoryException
          * @see LockTokenListener#lockTokenAdded(String)
          */
-        public void lockTokenAdded(String lockToken) throws LockException, RepositoryException {
+        public void lockTokenAdded(String lockToken) throws RepositoryException {
             if (getLockToken() == null) {
                 // could be that this affects this lock and session became
                 // lock holder -> releoad info to assert.
@@ -713,10 +711,9 @@
          *
          * @param lockToken
          * @throws LockException
-         * @throws RepositoryException
          * @see LockTokenListener#lockTokenRemoved(String)
          */
-        public void lockTokenRemoved(String lockToken) throws LockException, RepositoryException {
+        public void lockTokenRemoved(String lockToken) throws RepositoryException {
             // reload lock info, if session gave away its lock-holder status
             // for this lock.
             if (lockToken.equals(getLockToken())) {
@@ -740,8 +737,6 @@
             if (reloadInfo) {
                 try {
                     lockState.reloadLockInfo();
-                } catch (LockException e) {
-                    lockState.unlocked();
                 } catch (RepositoryException e) {
                     // may occur if session has been logged out. rather throw?
                     log.warn("Unable to determine lock status.", e.getMessage());
@@ -768,7 +763,7 @@
          * @throws LockException
          * @throws RepositoryException
          */
-        void lockTokenAdded(String lockToken) throws LockException, RepositoryException;
+        void lockTokenAdded(String lockToken) throws RepositoryException;
 
         /**
          *
@@ -776,6 +771,6 @@
          * @throws LockException
          * @throws RepositoryException
          */
-        void lockTokenRemoved(String lockToken) throws LockException, RepositoryException;
+        void lockTokenRemoved(String lockToken) throws RepositoryException;
     }
 }

Modified: jackrabbit/trunk/contrib/spi/spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java?rev=582815&r1=582814&r2=582815&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/spi/spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java (original)
+++ jackrabbit/trunk/contrib/spi/spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java Mon Oct  8 06:13:39 2007
@@ -1037,7 +1037,7 @@
     /**
      * @see RepositoryService#getLockInfo(SessionInfo, NodeId)
      */
-    public LockInfo getLockInfo(SessionInfo sessionInfo, NodeId nodeId) throws LockException, RepositoryException {
+    public LockInfo getLockInfo(SessionInfo sessionInfo, NodeId nodeId) throws RepositoryException {
         // set of Dav-properties to be retrieved
         DavPropertyNameSet nameSet = new DavPropertyNameSet();
         nameSet.add(DavPropertyName.LOCKDISCOVERY);
@@ -1065,7 +1065,9 @@
                 NodeId parentId = getParentId(ps, sessionInfo);
                 return retrieveLockInfo(ld, sessionInfo, nodeId, parentId);
             }  else {
-                throw new LockException("No Lock present on node with id " + nodeId);
+                // no lock present
+                log.debug("No Lock present on node with id " + nodeId);
+                return null;
             }
         } catch (IOException e) {
             throw new RepositoryException(e);

Modified: jackrabbit/trunk/contrib/spi/spi2jcr/src/main/java/org/apache/jackrabbit/spi2jcr/RepositoryServiceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/spi2jcr/src/main/java/org/apache/jackrabbit/spi2jcr/RepositoryServiceImpl.java?rev=582815&r1=582814&r2=582815&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/spi/spi2jcr/src/main/java/org/apache/jackrabbit/spi2jcr/RepositoryServiceImpl.java (original)
+++ jackrabbit/trunk/contrib/spi/spi2jcr/src/main/java/org/apache/jackrabbit/spi2jcr/RepositoryServiceImpl.java Mon Oct  8 06:13:39 2007
@@ -559,10 +559,15 @@
      * {@inheritDoc}
      */
     public LockInfo getLockInfo(SessionInfo sessionInfo, NodeId nodeId)
-            throws LockException, RepositoryException {
+            throws RepositoryException {
         SessionInfoImpl sInfo = getSessionInfoImpl(sessionInfo);
-        return new LockInfoImpl(getNode(nodeId, sInfo).getLock(), idFactory,
-                sInfo.getNamespaceResolver());
+        try {
+            Lock lock = getNode(nodeId, sInfo).getLock();
+            return new LockInfoImpl(lock, idFactory, sInfo.getNamespaceResolver());
+        } catch (LockException e) {
+            // no lock present on this node.
+            return null;
+        }
     }
 
     /**