From 838e14cc852b58be6b256e49f0ce7b08bb85e4e8 Mon Sep 17 00:00:00 2001 From: Britt Park Date: Fri, 22 Jun 2007 17:35:37 +0000 Subject: [PATCH] AVMLockingAwareService does not take out locks for operations on staging. AVMLockingAwareService does not take out locks on Directories. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@6072 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../alfresco/repo/avm/AVMLockingAwareService.java | 10 ++++++++++ .../java/org/alfresco/repo/avm/AVMServiceTest.java | 14 ++------------ .../org/alfresco/repo/avm/AVMServiceTestBase.java | 5 +++++ 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/source/java/org/alfresco/repo/avm/AVMLockingAwareService.java b/source/java/org/alfresco/repo/avm/AVMLockingAwareService.java index 4e8c7267f4..5ef12006b2 100644 --- a/source/java/org/alfresco/repo/avm/AVMLockingAwareService.java +++ b/source/java/org/alfresco/repo/avm/AVMLockingAwareService.java @@ -821,8 +821,18 @@ public class AVMLockingAwareService implements AVMService, ApplicationContextAwa private void grabLock(String path) { + AVMNodeDescriptor desc = fService.lookup(-1, path, false); + if (desc != null && desc.isDirectory()) + { + return; + } String[] storePath = splitPath(path); String webProject = getWebProject(storePath[0]); + if (webProject != null && webProject.equals(storePath[0])) + { + // Don't do locking in staging. + return; + } if (webProject != null) { String userName = fAuthenticationService.getCurrentUserName(); diff --git a/source/java/org/alfresco/repo/avm/AVMServiceTest.java b/source/java/org/alfresco/repo/avm/AVMServiceTest.java index d70aff8b46..0d5e3a943a 100644 --- a/source/java/org/alfresco/repo/avm/AVMServiceTest.java +++ b/source/java/org/alfresco/repo/avm/AVMServiceTest.java @@ -108,7 +108,6 @@ public class AVMServiceTest extends AVMServiceTestBase { AVMService oldService = fService; fService = (AVMService)fContext.getBean("AVMLockingAwareService"); - AVMLockingService lockingService = (AVMLockingService)fContext.getBean("AVMLockingService"); AuthenticationService authService = (AuthenticationService)fContext.getBean("AuthenticationService"); try { @@ -119,18 +118,9 @@ public class AVMServiceTest extends AVMServiceTestBase new PropertyValue(QName.createQName(null, "silly"), "Nothing.")); setupBasicTree0(); authService.authenticateAsGuest(); - assertEquals(2, lockingService.getUsersLocks("admin").size()); + assertEquals(0, fLockingService.getUsersLocks("admin").size()); List diffs = fSyncService.compare(-1, "main:/", -1, "test:/", null); fSyncService.update(diffs, null, false, false, false, false, null, null); - try - { - fService.getFileOutputStream("test:/a/b/c/foo").close(); - fail("Shouldn't be able to lock."); - } - catch (AVMLockingException ale) - { - // Do nothing. Success. - } } catch (Exception e) { @@ -140,7 +130,7 @@ public class AVMServiceTest extends AVMServiceTestBase finally { fService = oldService; - lockingService.removeWebProject("main"); + fLockingService.removeWebProject("main"); authService.authenticate("admin", "admin".toCharArray()); } } diff --git a/source/java/org/alfresco/repo/avm/AVMServiceTestBase.java b/source/java/org/alfresco/repo/avm/AVMServiceTestBase.java index c181500615..79046ae5bc 100644 --- a/source/java/org/alfresco/repo/avm/AVMServiceTestBase.java +++ b/source/java/org/alfresco/repo/avm/AVMServiceTestBase.java @@ -36,6 +36,7 @@ import org.alfresco.repo.search.impl.lucene.LuceneQueryParser; import org.alfresco.service.cmr.avm.AVMNodeDescriptor; import org.alfresco.service.cmr.avm.AVMService; import org.alfresco.service.cmr.avm.AVMStoreDescriptor; +import org.alfresco.service.cmr.avm.locking.AVMLockingService; import org.alfresco.service.cmr.avmsync.AVMSyncService; import org.alfresco.service.cmr.repository.ContentData; import org.alfresco.service.cmr.repository.ContentWriter; @@ -84,6 +85,8 @@ public class AVMServiceTestBase extends TestCase protected static IndexerAndSearcher fIndexerAndSearcher; + protected static AVMLockingService fLockingService; + /** * Setup for AVM tests. Note that we set the polling * interval for the reaper to 4 seconds so that tests will @@ -100,6 +103,7 @@ public class AVMServiceTestBase extends TestCase fSyncService = (AVMSyncService)fContext.getBean("AVMSyncService"); fIndexerAndSearcher = (IndexerAndSearcher)fContext.getBean("indexerAndSearcherFactory"); fTransactionService = (TransactionService)fContext.getBean("transactionComponent"); + fLockingService = (AVMLockingService)fContext.getBean("AVMLockingService"); AuthenticationService authService = (AuthenticationService)fContext.getBean("AuthenticationService"); authService.authenticate("admin", "admin".toCharArray()); CreateStoreTxnListener cstl = (CreateStoreTxnListener)fContext.getBean("createStoreTxnListener"); @@ -144,6 +148,7 @@ public class AVMServiceTestBase extends TestCase ); } fService.createStore("main"); + fLockingService.addWebProject("main"); fStartTime = System.currentTimeMillis(); }