diff --git a/source/test-java/org/alfresco/repo/coci/CheckOutCheckInServiceImplTest.java b/source/test-java/org/alfresco/repo/coci/CheckOutCheckInServiceImplTest.java index 1ce9a290a0..ed30caaa53 100644 --- a/source/test-java/org/alfresco/repo/coci/CheckOutCheckInServiceImplTest.java +++ b/source/test-java/org/alfresco/repo/coci/CheckOutCheckInServiceImplTest.java @@ -679,10 +679,10 @@ public class CheckOutCheckInServiceImplTest extends BaseSpringTest final NodeRef finalNodeRef = origNodeRef; - this.transactionService.getRetryingTransactionHelper().doInTransaction( - new RetryingTransactionCallback() + NodeRef wk3 = this.transactionService.getRetryingTransactionHelper().doInTransaction( + new RetryingTransactionCallback() { - public Object execute() + public NodeRef execute() { NodeRef wk2 = cociService.getWorkingCopy(finalNodeRef); assertNotNull(wk2); @@ -691,12 +691,10 @@ public class CheckOutCheckInServiceImplTest extends BaseSpringTest assertNotNull(orig2); assertEquals(origNodeRef, orig2); - cociService.cancelCheckout(workingCopy); - return null; + cociService.cancelCheckout(workingCopy); + return cociService.getWorkingCopy(nodeRef); } }); - - NodeRef wk3 = cociService.getWorkingCopy(this.nodeRef); assertNull(wk3); } /** @@ -730,21 +728,19 @@ public class CheckOutCheckInServiceImplTest extends BaseSpringTest final NodeRef finalNodeRef = origNodeRef; - this.transactionService.getRetryingTransactionHelper().doInTransaction( - new RetryingTransactionCallback() + NodeRef wk3 = this.transactionService.getRetryingTransactionHelper().doInTransaction( + new RetryingTransactionCallback() { - public Object execute() + public NodeRef execute() { NodeRef wk2 = cociService.getWorkingCopy(finalNodeRef); assertNotNull(wk2); assertEquals(workingCopy, wk2); cociService.cancelCheckout(workingCopy); - return null; + return cociService.getWorkingCopy(nodeRef); } }); - - NodeRef wk3 = cociService.getWorkingCopy(this.nodeRef); assertNull(wk3); } diff --git a/source/test-java/org/alfresco/repo/links/LinksServiceImplTest.java b/source/test-java/org/alfresco/repo/links/LinksServiceImplTest.java index 787c0cd70d..f117f43cab 100644 --- a/source/test-java/org/alfresco/repo/links/LinksServiceImplTest.java +++ b/source/test-java/org/alfresco/repo/links/LinksServiceImplTest.java @@ -147,8 +147,8 @@ public class LinksServiceImplTest assertNotNull(link.getNodeRef()); assertNotNull(link.getSystemName()); - NodeRef container = NODE_SERVICE.getPrimaryParent(link.getNodeRef()).getParentRef(); - NodeRef site = NODE_SERVICE.getPrimaryParent(container).getParentRef(); + NodeRef container = PUBLIC_NODE_SERVICE.getPrimaryParent(link.getNodeRef()).getParentRef(); + NodeRef site = PUBLIC_NODE_SERVICE.getPrimaryParent(container).getParentRef(); assertEquals(LINKS_SITE.getNodeRef(), site); @@ -199,11 +199,11 @@ public class LinksServiceImplTest // Check the underlying node - assertEquals("Title", NODE_SERVICE.getProperty(link.getNodeRef(), LinksModel.PROP_TITLE)); - assertEquals("Description", NODE_SERVICE.getProperty(link.getNodeRef(), LinksModel.PROP_DESCRIPTION)); - assertEquals("http://www.alfresco.com/", NODE_SERVICE.getProperty(link.getNodeRef(), LinksModel.PROP_URL)); + assertEquals("Title", PUBLIC_NODE_SERVICE.getProperty(link.getNodeRef(), LinksModel.PROP_TITLE)); + assertEquals("Description", PUBLIC_NODE_SERVICE.getProperty(link.getNodeRef(), LinksModel.PROP_DESCRIPTION)); + assertEquals("http://www.alfresco.com/", PUBLIC_NODE_SERVICE.getProperty(link.getNodeRef(), LinksModel.PROP_URL)); assertEquals("http://www.alfresco.com/", CONTENT_SERVICE.getReader(link.getNodeRef(), ContentModel.PROP_CONTENT).getContentString()); - assertEquals(false, NODE_SERVICE.hasAspect(link.getNodeRef(), LinksModel.ASPECT_INTERNAL_LINK)); + assertEquals(false, PUBLIC_NODE_SERVICE.hasAspect(link.getNodeRef(), LinksModel.ASPECT_INTERNAL_LINK)); // Change it @@ -225,11 +225,11 @@ public class LinksServiceImplTest // Check the underlying node now - assertEquals("New Title", NODE_SERVICE.getProperty(link.getNodeRef(), LinksModel.PROP_TITLE)); - assertEquals("Description", NODE_SERVICE.getProperty(link.getNodeRef(), LinksModel.PROP_DESCRIPTION)); - assertEquals("http://share.alfresco.com/", NODE_SERVICE.getProperty(link.getNodeRef(), LinksModel.PROP_URL)); + assertEquals("New Title", PUBLIC_NODE_SERVICE.getProperty(link.getNodeRef(), LinksModel.PROP_TITLE)); + assertEquals("Description", PUBLIC_NODE_SERVICE.getProperty(link.getNodeRef(), LinksModel.PROP_DESCRIPTION)); + assertEquals("http://share.alfresco.com/", PUBLIC_NODE_SERVICE.getProperty(link.getNodeRef(), LinksModel.PROP_URL)); assertEquals("http://share.alfresco.com/", CONTENT_SERVICE.getReader(link.getNodeRef(), ContentModel.PROP_CONTENT).getContentString()); - assertEquals(true, NODE_SERVICE.hasAspect(link.getNodeRef(), LinksModel.ASPECT_INTERNAL_LINK)); + assertEquals(true, PUBLIC_NODE_SERVICE.hasAspect(link.getNodeRef(), LinksModel.ASPECT_INTERNAL_LINK)); // Delete it diff --git a/source/test-java/org/alfresco/repo/lock/mem/LockableAspectInterceptorTest.java b/source/test-java/org/alfresco/repo/lock/mem/LockableAspectInterceptorTest.java index 63c905b522..1933c5f583 100644 --- a/source/test-java/org/alfresco/repo/lock/mem/LockableAspectInterceptorTest.java +++ b/source/test-java/org/alfresco/repo/lock/mem/LockableAspectInterceptorTest.java @@ -18,11 +18,13 @@ import java.util.concurrent.Future; import org.alfresco.model.ContentModel; import org.alfresco.repo.security.authentication.AuthenticationUtil; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.cmr.lock.LockType; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.repository.StoreRef; import org.alfresco.service.namespace.QName; +import org.alfresco.service.transaction.TransactionService; import org.alfresco.util.ApplicationContextHelper; import org.junit.AfterClass; import org.junit.Before; @@ -33,6 +35,7 @@ import org.springframework.context.ApplicationContext; public class LockableAspectInterceptorTest { private static ApplicationContext appCtx; + private TransactionService transactionService; private NodeService nodeService; private NodeService rawNodeService; private LockStore lockStore; @@ -61,6 +64,7 @@ public class LockableAspectInterceptorTest // The 'current' user. userName = AuthenticationUtil.getAdminUserName(); AuthenticationUtil.setFullyAuthenticatedUser(userName); + transactionService = (TransactionService) appCtx.getBean("TransactionService"); nodeService = (NodeService) appCtx.getBean("NodeService"); rawNodeService = (NodeService) appCtx.getBean("dbNodeService"); lockStore = (LockStore) appCtx.getBean("lockStore"); @@ -202,7 +206,25 @@ public class LockableAspectInterceptorTest // Spoofed - wasn't explicitly added. assertEquals(Lifetime.PERSISTENT, readProps.get(ContentModel.PROP_LOCK_LIFETIME)); // Double check - not really present - assertFalse(rawNodeService.getProperties(nodeRef).containsKey(ContentModel.PROP_LOCK_LIFETIME)); + ensurePropertyNotPresent(nodeRef, ContentModel.PROP_LOCK_LIFETIME); + } + + /** + * Uses the raw NodeService to ensure that the given property is not present + */ + private void ensurePropertyNotPresent(final NodeRef nodeRef, final QName propQName) + { + RetryingTransactionCallback check = new RetryingTransactionCallback() + { + @Override + public Boolean execute() throws Throwable + { + return rawNodeService.getProperties(nodeRef).containsKey(propQName); + } + }; + assertFalse( + "Node should not have the " + propQName + " property present.", + transactionService.getRetryingTransactionHelper().doInTransaction(check)); } @Test @@ -296,8 +318,8 @@ public class LockableAspectInterceptorTest assertEquals(now, nodeService.getProperty(nodeRef, ContentModel.PROP_EXPIRY_DATE)); // Spoofed property assertEquals(Lifetime.PERSISTENT.toString(), nodeService.getProperty(nodeRef, ContentModel.PROP_LOCK_LIFETIME)); - // Double check, not really present - assertNull(rawNodeService.getProperty(nodeRef, ContentModel.PROP_LOCK_LIFETIME)); + // Double check - not really present + ensurePropertyNotPresent(nodeRef, ContentModel.PROP_LOCK_LIFETIME); } @Test @@ -365,7 +387,7 @@ public class LockableAspectInterceptorTest nodeName, ContentModel.TYPE_BASE).getChildRef(); - Map properties = rawNodeService.getProperties(nodeRef); + Map properties = nodeService.getProperties(nodeRef); // With the exception of cm:lockLifetime, lock properties should be unaffected after setProperties() properties.put(ContentModel.PROP_AUTHOR, "Joe Bloggs"); @@ -380,7 +402,7 @@ public class LockableAspectInterceptorTest nodeService.setProperties(nodeRef, properties); // Check the persisted properties - properties = rawNodeService.getProperties(nodeRef); + properties = nodeService.getProperties(nodeRef); assertEquals("Joe Bloggs", properties.get(ContentModel.PROP_AUTHOR)); assertEquals("A Name", properties.get(ContentModel.PROP_NAME)); assertEquals(LockType.NODE_LOCK.toString(), properties.get(ContentModel.PROP_LOCK_TYPE)); @@ -388,7 +410,7 @@ public class LockableAspectInterceptorTest assertEquals(expiryDate, properties.get(ContentModel.PROP_EXPIRY_DATE)); // cm:lockLifetime is not persisted. - assertFalse(properties.containsKey(ContentModel.PROP_LOCK_LIFETIME)); + ensurePropertyNotPresent(nodeRef, ContentModel.PROP_LOCK_LIFETIME); } @Test @@ -401,7 +423,7 @@ public class LockableAspectInterceptorTest nodeName, ContentModel.TYPE_BASE).getChildRef(); - Map properties = rawNodeService.getProperties(nodeRef); + Map properties = nodeService.getProperties(nodeRef); // Non-lock properties should be unaffected after setProperties() properties.put(ContentModel.PROP_AUTHOR, "Joe Bloggs"); properties.put(ContentModel.PROP_NAME, "A Name"); @@ -416,7 +438,7 @@ public class LockableAspectInterceptorTest nodeService.setProperties(nodeRef, properties); // Check the persisted properties - properties = rawNodeService.getProperties(nodeRef); + properties = nodeService.getProperties(nodeRef); assertEquals("Joe Bloggs", properties.get(ContentModel.PROP_AUTHOR)); assertEquals("A Name", properties.get(ContentModel.PROP_NAME)); // Check the filtered properties diff --git a/source/test-java/org/alfresco/repo/node/cleanup/TransactionCleanupTest.java b/source/test-java/org/alfresco/repo/node/cleanup/TransactionCleanupTest.java index db64ef97c9..6ea63efe9f 100644 --- a/source/test-java/org/alfresco/repo/node/cleanup/TransactionCleanupTest.java +++ b/source/test-java/org/alfresco/repo/node/cleanup/TransactionCleanupTest.java @@ -11,6 +11,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import javax.transaction.UserTransaction; + import org.alfresco.model.ContentModel; import org.alfresco.repo.cache.SimpleCache; import org.alfresco.repo.domain.node.NodeDAO; @@ -170,8 +172,8 @@ public class TransactionCleanupTest // run the transaction cleaner to clean up any existing unused transactions worker.doClean(); - long start = System.currentTimeMillis(); - Long minTxnId = nodeDAO.getMinTxnId(); + final long start = System.currentTimeMillis(); + final Long minTxnId = nodeDAO.getMinTxnId(); final Map> txnIds = createTransactions(); final List txnIds1 = txnIds.get(nodeRef1); @@ -182,8 +184,17 @@ public class TransactionCleanupTest // Double-check that n4 and n5 are present in deleted form nodesCache.clear(); - assertNotNull("Node 4 is deleted but not purged", nodeDAO.getNodeRefStatus(nodeRef4)); - assertNotNull("Node 5 is deleted but not purged", nodeDAO.getNodeRefStatus(nodeRef5)); + UserTransaction txn = transactionService.getUserTransaction(true); + txn.begin(); + try + { + assertNotNull("Node 4 is deleted but not purged", nodeDAO.getNodeRefStatus(nodeRef4)); + assertNotNull("Node 5 is deleted but not purged", nodeDAO.getNodeRefStatus(nodeRef5)); + } + finally + { + txn.rollback(); + } // run the transaction cleaner worker.setPurgeSize(5); // small purge size @@ -194,7 +205,15 @@ public class TransactionCleanupTest } // Get transactions committed after the test started - List txns = nodeDAO.getTxnsByCommitTimeAscending(Long.valueOf(start), Long.valueOf(Long.MAX_VALUE), Integer.MAX_VALUE, null, false); + RetryingTransactionCallback> getTxnsCallback = new RetryingTransactionCallback>() + { + @Override + public List execute() throws Throwable + { + return nodeDAO.getTxnsByCommitTimeAscending(Long.valueOf(start), Long.valueOf(Long.MAX_VALUE), Integer.MAX_VALUE, null, false); + } + }; + List txns = transactionService.getRetryingTransactionHelper().doInTransaction(getTxnsCallback, true, false); List expectedUnusedTxnIds = new ArrayList(10); expectedUnusedTxnIds.addAll(txnIds1.subList(0, txnIds1.size() - 1)); @@ -233,7 +252,16 @@ public class TransactionCleanupTest assertEquals(3, numFoundUsedTxnIds); - List txnsUnused = nodeDAO.getTxnsUnused(minTxnId, Long.MAX_VALUE, Integer.MAX_VALUE); + // Get transactions committed after the test started + RetryingTransactionCallback> getTxnsUnusedCallback = new RetryingTransactionCallback>() + { + @Override + public List execute() throws Throwable + { + return nodeDAO.getTxnsUnused(minTxnId, Long.MAX_VALUE, Integer.MAX_VALUE); + } + }; + List txnsUnused = transactionService.getRetryingTransactionHelper().doInTransaction(getTxnsUnusedCallback, true, false); assertEquals(0, txnsUnused.size()); // Double-check that n4 and n5 were removed as well diff --git a/source/test-java/org/alfresco/repo/node/getchildren/GetChildrenCannedQueryTest.java b/source/test-java/org/alfresco/repo/node/getchildren/GetChildrenCannedQueryTest.java index 8d15cdc85d..66584039bf 100644 --- a/source/test-java/org/alfresco/repo/node/getchildren/GetChildrenCannedQueryTest.java +++ b/source/test-java/org/alfresco/repo/node/getchildren/GetChildrenCannedQueryTest.java @@ -57,6 +57,7 @@ import org.alfresco.repo.node.getchildren.FilterPropString.FilterTypeString; import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityBean; import org.alfresco.repo.tenant.TenantService; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.cmr.dictionary.DictionaryService; import org.alfresco.service.cmr.rating.RatingScheme; import org.alfresco.service.cmr.rating.RatingService; @@ -72,6 +73,7 @@ import org.alfresco.service.cmr.security.PermissionService; import org.alfresco.service.cmr.security.PersonService; import org.alfresco.service.namespace.NamespaceService; import org.alfresco.service.namespace.QName; +import org.alfresco.service.transaction.TransactionService; import org.alfresco.test_category.OwnJVMTestsCategory; import org.alfresco.util.ApplicationContextHelper; import org.alfresco.util.Pair; @@ -97,6 +99,7 @@ public class GetChildrenCannedQueryTest extends TestCase private Repository repositoryHelper; private NodeService nodeService; + private TransactionService transactionService; private DictionaryService dictionaryService; private ContentService contentService; private MimetypeService mimetypeService; @@ -145,6 +148,7 @@ public class GetChildrenCannedQueryTest extends TestCase repositoryHelper = (Repository)ctx.getBean("repositoryHelper"); nodeService = (NodeService)ctx.getBean("NodeService"); + transactionService = (TransactionService)ctx.getBean("TransactionService"); contentService = (ContentService)ctx.getBean("ContentService"); mimetypeService = (MimetypeService)ctx.getBean("MimetypeService"); dictionaryService = (DictionaryService)ctx.getBean("DictionaryService"); @@ -818,6 +822,7 @@ public class GetChildrenCannedQueryTest extends TestCase assertEquals(2, children.size()); } + @SuppressWarnings("unused") public void testAspectFiltering() throws Exception { NodeRef parentNodeRef = repositoryHelper.getCompanyHome(); @@ -898,10 +903,18 @@ public class GetChildrenCannedQueryTest extends TestCase // get canned query GetChildrenCannedQueryFactory getChildrenCannedQueryFactory = (GetChildrenCannedQueryFactory)cannedQueryRegistry.getNamedObject(CQ_FACTORY_NAME); - GetChildrenCannedQuery cq = (GetChildrenCannedQuery)getChildrenCannedQueryFactory.getCannedQuery(parentNodeRef, pattern, null, null, null, null, null, sortProps, pagingRequest); + final GetChildrenCannedQuery cq = (GetChildrenCannedQuery)getChildrenCannedQueryFactory.getCannedQuery(parentNodeRef, pattern, null, null, null, null, null, sortProps, pagingRequest); // execute canned query - CannedQueryResults results = cq.execute(); + RetryingTransactionCallback> callback = new RetryingTransactionCallback>() + { + @Override + public CannedQueryResults execute() throws Throwable + { + return cq.execute(); + } + }; + CannedQueryResults results = transactionService.getRetryingTransactionHelper().doInTransaction(callback, true); List nodeRefs = results.getPages().get(0); @@ -1182,10 +1195,18 @@ public class GetChildrenCannedQueryTest extends TestCase // get canned query (note: test the fileFolder extension - including support for sorting folders first) GetChildrenCannedQueryFactory getChildrenCannedQueryFactory = (GetChildrenCannedQueryFactory)cannedQueryRegistry.getNamedObject(CQ_FACTORY_NAME); - GetChildrenCannedQuery cq = (GetChildrenCannedQuery)getChildrenCannedQueryFactory.getCannedQuery(parentNodeRef, null, null, childTypeQNames, null, null, filterProps, sortProps, pagingRequest); + final GetChildrenCannedQuery cq = (GetChildrenCannedQuery)getChildrenCannedQueryFactory.getCannedQuery(parentNodeRef, null, null, childTypeQNames, null, null, filterProps, sortProps, pagingRequest); // execute canned query - CannedQueryResults results = cq.execute(); + RetryingTransactionCallback> callback = new RetryingTransactionCallback>() + { + @Override + public CannedQueryResults execute() throws Throwable + { + return cq.execute(); + } + }; + CannedQueryResults results = transactionService.getRetryingTransactionHelper().doInTransaction(callback, true); List nodeRefs = results.getPages().get(0); @@ -1206,10 +1227,18 @@ public class GetChildrenCannedQueryTest extends TestCase // get canned query GetChildrenCannedQueryFactory getChildrenCannedQueryFactory = (GetChildrenCannedQueryFactory)cannedQueryRegistry.getNamedObject(CQ_FACTORY_NAME); - GetChildrenCannedQuery cq = (GetChildrenCannedQuery)getChildrenCannedQueryFactory.getCannedQuery(parentNodeRef, null, assocTypeQNames, childTypeQNames, inclusiveAspects, exclusiveAspects, filterProps, sortProps, pagingRequest); + final GetChildrenCannedQuery cq = (GetChildrenCannedQuery)getChildrenCannedQueryFactory.getCannedQuery(parentNodeRef, null, assocTypeQNames, childTypeQNames, inclusiveAspects, exclusiveAspects, filterProps, sortProps, pagingRequest); // execute canned query - CannedQueryResults results = cq.execute(); + RetryingTransactionCallback> callback = new RetryingTransactionCallback>() + { + @Override + public CannedQueryResults execute() throws Throwable + { + return cq.execute(); + } + }; + CannedQueryResults results = transactionService.getRetryingTransactionHelper().doInTransaction(callback, true); List nodeRefs = results.getPages().get(0); diff --git a/source/test-java/org/alfresco/repo/rating/RatingServiceIntegrationTest.java b/source/test-java/org/alfresco/repo/rating/RatingServiceIntegrationTest.java index 6e0e025be0..49d8ab5dd6 100644 --- a/source/test-java/org/alfresco/repo/rating/RatingServiceIntegrationTest.java +++ b/source/test-java/org/alfresco/repo/rating/RatingServiceIntegrationTest.java @@ -116,7 +116,6 @@ public class RatingServiceIntegrationTest private static NodeRef COPY_DEST_FOLDER; private static NodeRef TEST_FOLDER; private NodeRef testDoc_Admin; - private NodeRef testDoc_Copy; private NodeRef testDoc_UserOne; private NodeRef testDoc_UserTwo; @@ -188,11 +187,19 @@ public class RatingServiceIntegrationTest } } - private void applyIllegalRating(NodeRef nodeRef, float illegalRating, String schemeName) + private void applyIllegalRating(final NodeRef nodeRef, final float illegalRating, final String schemeName) { try { - RATING_SERVICE.applyRating(nodeRef, illegalRating, schemeName); + TRANSACTION_HELPER.doInTransaction(new RetryingTransactionCallback() + { + @Override + public Void execute() throws Throwable + { + RATING_SERVICE.applyRating(nodeRef, illegalRating, schemeName); + return null; + } + }); } catch (RatingServiceException expectedException) { diff --git a/source/test-java/org/alfresco/repo/replication/ReplicationServiceIntegrationTest.java b/source/test-java/org/alfresco/repo/replication/ReplicationServiceIntegrationTest.java index 1401f21036..d5adb8ce53 100644 --- a/source/test-java/org/alfresco/repo/replication/ReplicationServiceIntegrationTest.java +++ b/source/test-java/org/alfresco/repo/replication/ReplicationServiceIntegrationTest.java @@ -148,7 +148,7 @@ public class ReplicationServiceIntegrationTest extends TestCase jobLockService = (JobLockService) ctx.getBean("jobLockService"); actionService = (ActionService) ctx.getBean("actionService"); scriptService = (ScriptService)ctx.getBean("scriptService"); - nodeService = (NodeService) ctx.getBean("nodeService"); + nodeService = (NodeService) ctx.getBean("NodeService"); lockService = (LockService) ctx.getBean("lockService"); repositoryHelper = (Repository) ctx.getBean("repositoryHelper"); actionTrackingService = (ActionTrackingService) ctx.getBean("actionTrackingService"); diff --git a/source/test-java/org/alfresco/repo/security/person/PersonTest.java b/source/test-java/org/alfresco/repo/security/person/PersonTest.java index 7a65d57a3a..6a99258c4e 100644 --- a/source/test-java/org/alfresco/repo/security/person/PersonTest.java +++ b/source/test-java/org/alfresco/repo/security/person/PersonTest.java @@ -1460,7 +1460,15 @@ public class PersonTest extends TestCase testTX.rollback(); // Clean up - personService.deletePerson(TEST_PERSON); + transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() + { + @Override + public Void execute() throws Throwable + { + personService.deletePerson(TEST_PERSON); + return null; + } + }); } public void testDisableEnablePerson()