diff --git a/source/test-java/org/alfresco/repo/calendar/CalendarServiceImplTest.java b/source/test-java/org/alfresco/repo/calendar/CalendarServiceImplTest.java index 78d34d24e5..6f93403ceb 100644 --- a/source/test-java/org/alfresco/repo/calendar/CalendarServiceImplTest.java +++ b/source/test-java/org/alfresco/repo/calendar/CalendarServiceImplTest.java @@ -42,6 +42,7 @@ import org.alfresco.repo.policy.BehaviourFilter; import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.repo.site.SiteModel; import org.alfresco.repo.transaction.RetryingTransactionHelper; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.cmr.calendar.CalendarEntry; import org.alfresco.service.cmr.calendar.CalendarEntryDTO; import org.alfresco.service.cmr.calendar.CalendarService; @@ -80,8 +81,10 @@ public class CalendarServiceImplTest // injected services private static MutableAuthenticationService AUTHENTICATION_SERVICE; + @SuppressWarnings("unused") private static BehaviourFilter BEHAVIOUR_FILTER; private static CalendarService CALENDAR_SERVICE; + @SuppressWarnings("unused") private static DictionaryService DICTIONARY_SERVICE; private static NodeService NODE_SERVICE; private static NodeService PUBLIC_NODE_SERVICE; @@ -122,6 +125,7 @@ public class CalendarServiceImplTest TAGGING_SERVICE = (TaggingService)testContext.getBean("TaggingService"); // Get the canned query registry, and from that the factory + @SuppressWarnings("unchecked") NamedObjectRegistry> calendarCannedQueryRegistry = (NamedObjectRegistry>)testContext.getBean("calendarCannedQueryRegistry"); CALENDAR_CQ_FACTORY = (GetCalendarEntriesCannedQueryFactory) @@ -182,8 +186,8 @@ public class CalendarServiceImplTest assertNotNull(entry.getNodeRef()); assertNotNull(entry.getSystemName()); - NodeRef container = NODE_SERVICE.getPrimaryParent(entry.getNodeRef()).getParentRef(); - NodeRef site = NODE_SERVICE.getPrimaryParent(container).getParentRef(); + NodeRef container = PUBLIC_NODE_SERVICE.getPrimaryParent(entry.getNodeRef()).getParentRef(); + NodeRef site = PUBLIC_NODE_SERVICE.getPrimaryParent(container).getParentRef(); assertEquals(CALENDAR_SITE.getNodeRef(), site); // Tell the test system about it, for tidying later @@ -864,19 +868,19 @@ public class CalendarServiceImplTest */ @Test public void testCannedQueryEntityResults() throws Exception { - PagingRequest paging = new PagingRequest(10); - NodeRef[] containers = new NodeRef[] { + final PagingRequest paging = new PagingRequest(10); + final NodeRef[] containers = new NodeRef[] { SITE_SERVICE.getContainer(CALENDAR_SITE.getShortName(), CalendarServiceImpl.CALENDAR_COMPONENT), SITE_SERVICE.getContainer(ALTERNATE_CALENDAR_SITE.getShortName(), CalendarServiceImpl.CALENDAR_COMPONENT), }; - Date from = new Date(1302431400); - Date to = new Date(1302442200); + final Date from1 = new Date(1302431400); + final Date to1 = new Date(1302442200); // To capture the low level results final List full = new ArrayList(); final List filtered = new ArrayList(); - GetCalendarEntriesCannedQueryTestHook hook = new GetCalendarEntriesCannedQueryTestHook() + final GetCalendarEntriesCannedQueryTestHook hook = new GetCalendarEntriesCannedQueryTestHook() { @Override public void notifyComplete(List fullList, @@ -889,13 +893,20 @@ public class CalendarServiceImplTest } }; - // With no entries, won't find anything - GetCalendarEntriesCannedQuery cq = (GetCalendarEntriesCannedQuery)CALENDAR_CQ_FACTORY.getCannedQuery( - containers, from, to, paging - ); - cq.setTestHook(hook); - cq.execute(); + TRANSACTION_HELPER.doInTransaction(new RetryingTransactionCallback() + { + @Override + public Void execute() throws Throwable + { + GetCalendarEntriesCannedQuery cq = (GetCalendarEntriesCannedQuery) CALENDAR_CQ_FACTORY.getCannedQuery( + containers, from1, to1, paging + ); + cq.setTestHook(hook); + cq.execute(); + return null; + } + }); assertEquals(0, full.size()); assertEquals(0, filtered.size()); @@ -911,10 +922,19 @@ public class CalendarServiceImplTest // Do a fetch that'll include all of them - cq = (GetCalendarEntriesCannedQuery)CALENDAR_CQ_FACTORY.getCannedQuery( - containers, from, to, paging); - cq.setTestHook(hook); - cq.execute(); + TRANSACTION_HELPER.doInTransaction(new RetryingTransactionCallback() + { + @Override + public Void execute() throws Throwable + { + GetCalendarEntriesCannedQuery cq = (GetCalendarEntriesCannedQuery)CALENDAR_CQ_FACTORY.getCannedQuery( + containers, from1, to1, paging + ); + cq.setTestHook(hook); + cq.execute(); + return null; + } + }); assertEquals(3, full.size()); assertEquals(3, filtered.size()); @@ -942,12 +962,21 @@ public class CalendarServiceImplTest // Now do one that'll only have some - from = new Date(1302431400-10); - to = new Date(1302431400+10); - cq = (GetCalendarEntriesCannedQuery)CALENDAR_CQ_FACTORY.getCannedQuery( - containers, from, to, paging); - cq.setTestHook(hook); - cq.execute(); + final Date from2 = new Date(1302431400-10); + final Date to2 = new Date(1302431400+10); + TRANSACTION_HELPER.doInTransaction(new RetryingTransactionCallback() + { + @Override + public Void execute() throws Throwable + { + GetCalendarEntriesCannedQuery cq = (GetCalendarEntriesCannedQuery)CALENDAR_CQ_FACTORY.getCannedQuery( + containers, from2, to2, paging + ); + cq.setTestHook(hook); + cq.execute(); + return null; + } + }); assertEquals(3, full.size()); assertEquals(2, filtered.size()); @@ -962,10 +991,19 @@ public class CalendarServiceImplTest c3.setLastRecurrence(new Date(1303431400)); CALENDAR_SERVICE.updateCalendarEntry(c3); - cq = (GetCalendarEntriesCannedQuery)CALENDAR_CQ_FACTORY.getCannedQuery( - containers, from, to, paging); - cq.setTestHook(hook); - cq.execute(); + TRANSACTION_HELPER.doInTransaction(new RetryingTransactionCallback() + { + @Override + public Void execute() throws Throwable + { + GetCalendarEntriesCannedQuery cq = (GetCalendarEntriesCannedQuery)CALENDAR_CQ_FACTORY.getCannedQuery( + containers, from2, to2, paging + ); + cq.setTestHook(hook); + cq.execute(); + return null; + } + }); assertEquals(3, full.size()); assertEquals(2, filtered.size()); @@ -985,10 +1023,10 @@ public class CalendarServiceImplTest // Do a recurring query - Calendar c20110718mon = Calendar.getInstance(); - Calendar c20110719tue = Calendar.getInstance(); - Calendar c20110720wed = Calendar.getInstance(); - Calendar c20110722fri = Calendar.getInstance(); + final Calendar c20110718mon = Calendar.getInstance(); + final Calendar c20110719tue = Calendar.getInstance(); + final Calendar c20110720wed = Calendar.getInstance(); + final Calendar c20110722fri = Calendar.getInstance(); c20110718mon.set(2011, 7-1, 18, 0, 0, 0); c20110719tue.set(2011, 7-1, 19, 0, 0, 0); c20110720wed.set(2011, 7-1, 20, 0, 0, 0); @@ -1001,28 +1039,52 @@ public class CalendarServiceImplTest // Monday-Tuesday will find it for itself - cq = (GetCalendarEntriesCannedQuery)CALENDAR_CQ_FACTORY.getCannedQuery( - containers, c20110718mon.getTime(), c20110719tue.getTime(), paging); - cq.setTestHook(hook); - cq.execute(); + TRANSACTION_HELPER.doInTransaction(new RetryingTransactionCallback() + { + @Override + public Void execute() throws Throwable + { + GetCalendarEntriesCannedQuery cq = (GetCalendarEntriesCannedQuery)CALENDAR_CQ_FACTORY.getCannedQuery( + containers, c20110718mon.getTime(), c20110719tue.getTime(), paging); + cq.setTestHook(hook); + cq.execute(); + return null; + } + }); assertEquals(3, full.size()); assertEquals(1, filtered.size()); assertEquals(c3.getSystemName(), filtered.get(0).getName()); // Monday-Wednesday will find it for itself - cq = (GetCalendarEntriesCannedQuery)CALENDAR_CQ_FACTORY.getCannedQuery( - containers, c20110718mon.getTime(), c20110720wed.getTime(), paging); - cq.setTestHook(hook); - cq.execute(); + TRANSACTION_HELPER.doInTransaction(new RetryingTransactionCallback() + { + @Override + public Void execute() throws Throwable + { + GetCalendarEntriesCannedQuery cq = (GetCalendarEntriesCannedQuery)CALENDAR_CQ_FACTORY.getCannedQuery( + containers, c20110718mon.getTime(), c20110720wed.getTime(), paging); + cq.setTestHook(hook); + cq.execute(); + return null; + } + }); assertEquals(3, full.size()); assertEquals(1, filtered.size()); assertEquals(c3.getSystemName(), filtered.get(0).getName()); // Wednesday-Friday will find it as a repeating event on the Thursday - cq = (GetCalendarEntriesCannedQuery)CALENDAR_CQ_FACTORY.getCannedQuery( - containers, c20110720wed.getTime(), c20110722fri.getTime(), paging); - cq.setTestHook(hook); - cq.execute(); + TRANSACTION_HELPER.doInTransaction(new RetryingTransactionCallback() + { + @Override + public Void execute() throws Throwable + { + GetCalendarEntriesCannedQuery cq = (GetCalendarEntriesCannedQuery)CALENDAR_CQ_FACTORY.getCannedQuery( + containers, c20110720wed.getTime(), c20110722fri.getTime(), paging); + cq.setTestHook(hook); + cq.execute(); + return null; + } + }); assertEquals(3, full.size()); assertEquals(1, filtered.size()); assertEquals(c3.getSystemName(), filtered.get(0).getName()); @@ -1031,10 +1093,18 @@ public class CalendarServiceImplTest c3.setLastRecurrence(c20110720wed.getTime()); CALENDAR_SERVICE.updateCalendarEntry(c3); - cq = (GetCalendarEntriesCannedQuery)CALENDAR_CQ_FACTORY.getCannedQuery( - containers, c20110720wed.getTime(), c20110722fri.getTime(), paging); - cq.setTestHook(hook); - cq.execute(); + TRANSACTION_HELPER.doInTransaction(new RetryingTransactionCallback() + { + @Override + public Void execute() throws Throwable + { + GetCalendarEntriesCannedQuery cq = (GetCalendarEntriesCannedQuery)CALENDAR_CQ_FACTORY.getCannedQuery( + containers, c20110720wed.getTime(), c20110722fri.getTime(), paging); + cq.setTestHook(hook); + cq.execute(); + return null; + } + }); assertEquals(3, full.size()); assertEquals(0, filtered.size()); } diff --git a/source/test-java/org/alfresco/repo/domain/locks/LockDAOTest.java b/source/test-java/org/alfresco/repo/domain/locks/LockDAOTest.java index 130ad32a41..d16e6e4526 100644 --- a/source/test-java/org/alfresco/repo/domain/locks/LockDAOTest.java +++ b/source/test-java/org/alfresco/repo/domain/locks/LockDAOTest.java @@ -242,12 +242,20 @@ public class LockDAOTest extends TestCase public void testReleaseLockRepeated() throws Exception { - String token = lock(lockAAA, 500000L, true); + final String token = lock(lockAAA, 500000L, true); release(lockAAA, token, true); release(lockAAA, token, false); try { - lockDAO.releaseLock(lockAAA, token, false); + transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() + { + @Override + public Void execute() throws Throwable + { + lockDAO.releaseLock(lockAAA, token, false); + return null; + } + }); fail("Pessimistic lock release should have failed."); } catch (LockAcquisitionException e) @@ -256,7 +264,14 @@ public class LockDAOTest extends TestCase } try { - boolean released = lockDAO.releaseLock(lockAAA, token, true); + boolean released = transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() + { + @Override + public Boolean execute() throws Throwable + { + return lockDAO.releaseLock(lockAAA, token, true); + } + }); // Expected assertFalse("Release should have been negative.", released); } diff --git a/source/test-java/org/alfresco/repo/domain/node/NodeDAOTest.java b/source/test-java/org/alfresco/repo/domain/node/NodeDAOTest.java index 46bcacc1ae..945750f35e 100644 --- a/source/test-java/org/alfresco/repo/domain/node/NodeDAOTest.java +++ b/source/test-java/org/alfresco/repo/domain/node/NodeDAOTest.java @@ -100,7 +100,7 @@ public class NodeDAOTest extends TestCase public void testGetNodesWithAspects() throws Throwable { - NodeRefQueryCallback callback = new NodeRefQueryCallback() + final NodeRefQueryCallback callback = new NodeRefQueryCallback() { public boolean handle(Pair nodePair) { @@ -108,10 +108,18 @@ public class NodeDAOTest extends TestCase return false; } }; - nodeDAO.getNodesWithAspects( - Collections.singleton(ContentModel.ASPECT_AUDITABLE), - 1L, 1000L, - callback); + transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() + { + @Override + public Void execute() throws Throwable + { + nodeDAO.getNodesWithAspects( + Collections.singleton(ContentModel.ASPECT_AUDITABLE), + 1L, 1000L, + callback); + return null; + } + }, true); } public void testGetPrimaryChildAcls() throws Throwable diff --git a/source/test-java/org/alfresco/repo/domain/solr/SOLRDAOTest.java b/source/test-java/org/alfresco/repo/domain/solr/SOLRDAOTest.java index bfe6bf2b0e..1aa8d1b3bb 100644 --- a/source/test-java/org/alfresco/repo/domain/solr/SOLRDAOTest.java +++ b/source/test-java/org/alfresco/repo/domain/solr/SOLRDAOTest.java @@ -33,8 +33,9 @@ import org.alfresco.repo.solr.Acl; import org.alfresco.repo.solr.AclChangeSet; import org.alfresco.repo.solr.NodeParameters; import org.alfresco.repo.solr.Transaction; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.cmr.repository.StoreRef; -import org.alfresco.test_category.OwnJVMTestsCategory; +import org.alfresco.service.transaction.TransactionService; import org.alfresco.util.ApplicationContextHelper; import org.junit.experimental.categories.Category; import org.springframework.context.ConfigurableApplicationContext; @@ -49,6 +50,7 @@ public class SOLRDAOTest extends TestCase { private ConfigurableApplicationContext ctx = (ConfigurableApplicationContext) ApplicationContextHelper.getApplicationContext(); + private TransactionService transactionService; private AuthenticationComponent authenticationComponent; private SOLRDAO solrDAO; @@ -57,17 +59,72 @@ public class SOLRDAOTest extends TestCase { solrDAO = (SOLRDAO)ctx.getBean("solrDAO"); authenticationComponent = (AuthenticationComponent)ctx.getBean("authenticationComponent"); + transactionService = (TransactionService) ctx.getBean("TransactionService"); authenticationComponent.setSystemUserAsCurrentUser(); } + private List getNodes(final NodeParameters nodeParameters) + { + return transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback>() + { + @Override + public List execute() throws Throwable + { + return solrDAO.getNodes(nodeParameters); + } + }, true); + } + + private List getAcls(final List aclChangeSetIds, final Long minAclId, final int maxResults) + { + return transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback>() + { + @Override + public List execute() throws Throwable + { + return solrDAO.getAcls(aclChangeSetIds, minAclId, maxResults); + } + }, true); + } + + private List getTransactions( + final Long minTxnId, final Long fromCommitTime, + final Long maxTxnId, final Long toCommitTime, + final int maxResults) + { + return transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback>() + { + @Override + public List execute() throws Throwable + { + return solrDAO.getTransactions(minTxnId, fromCommitTime, maxTxnId, toCommitTime, maxResults); + } + }, true); + } + + private List getAclChangeSets( + final Long minAclChangeSetId, final Long fromCommitTime, + final Long maxAclChangeSetId, final Long toCommitTime, + final int maxResults) + { + return transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback>() + { + @Override + public List execute() throws Throwable + { + return solrDAO.getAclChangeSets(minAclChangeSetId, fromCommitTime, maxAclChangeSetId, toCommitTime, maxResults); + } + }, true); + } + public void testQueryChangeSets_NoLimit() { long startTime = System.currentTimeMillis() - (5 * 60000L); try { - solrDAO.getAclChangeSets(null, startTime, null, null, 0); + getAclChangeSets(null, startTime, null, null, 0); fail("Must have result limit"); } catch (IllegalArgumentException e) @@ -79,13 +136,13 @@ public class SOLRDAOTest extends TestCase public void testQueryChangeSets_Time() { long startTime = System.currentTimeMillis() + (5 * 60000L); // The future - List results = solrDAO.getAclChangeSets(null, startTime, null, null, 50); + List results = getAclChangeSets(null, startTime, null, null, 50); assertTrue("ChangeSet count not limited", results.size() == 0); } public void testQueryChangeSets_Limit() { - List results = solrDAO.getAclChangeSets(null, 0L, null, null, 50); + List results = getAclChangeSets(null, 0L, null, null, 50); assertTrue("Transaction count not limited", results.size() <= 50); } @@ -97,7 +154,7 @@ public class SOLRDAOTest extends TestCase try { // No IDs - solrDAO.getAcls(Collections.emptyList(), null, 50); + getAcls(Collections.emptyList(), null, 50); fail("Expected IllegalArgumentException"); } catch (IllegalArgumentException e) @@ -109,7 +166,7 @@ public class SOLRDAOTest extends TestCase public void testQueryAcls_All() { // Do a query for some changesets - List aclChangeSets = solrDAO.getAclChangeSets(null, 0L, null, null, 50); + List aclChangeSets = getAclChangeSets(null, 0L, null, null, 50); // Choose some changesets with changes int aclTotal = 0; @@ -135,7 +192,7 @@ public class SOLRDAOTest extends TestCase List aclChangeSetIds = toIds(aclChangeSets); // Now use those to query for details - List acls = solrDAO.getAcls(aclChangeSetIds, null, 1000); + List acls = getAcls(aclChangeSetIds, null, 1000); // Check that the ACL ChangeSet IDs are correct Set aclChangeSetIdsSet = new HashSet(aclChangeSetIds); @@ -148,7 +205,7 @@ public class SOLRDAOTest extends TestCase public void testQueryAcls_Single() { - List aclChangeSets = solrDAO.getAclChangeSets(null, 0L, null, null, 1000); + List aclChangeSets = getAclChangeSets(null, 0L, null, null, 1000); // Find one with multiple ALCs AclChangeSet aclChangeSet = null; for (AclChangeSet aclChangeSetLoop : aclChangeSets) @@ -173,7 +230,7 @@ public class SOLRDAOTest extends TestCase Long minAclId = null; while (true) { - List acls = solrDAO.getAcls(aclChangeSetIds, minAclId, 1); + List acls = getAcls(aclChangeSetIds, minAclId, 1); if (acls.size() == 0) { break; @@ -201,7 +258,7 @@ public class SOLRDAOTest extends TestCase try { - solrDAO.getTransactions(null, startTime, null, null, 0); + getTransactions(null, startTime, null, null, 0); fail("Must have result limit"); } catch (IllegalArgumentException e) @@ -213,13 +270,13 @@ public class SOLRDAOTest extends TestCase public void testQueryTransactions_Time() { long startTime = System.currentTimeMillis() + (5 * 60000L); // The future - List results = solrDAO.getTransactions(null, startTime, null, null, 50); + List results = getTransactions(null, startTime, null, null, 50); assertTrue("Transaction count not limited", results.size() == 0); } public void testQueryTransactions_Limit() { - List results = solrDAO.getTransactions(null, 0L, null, null, 50); + List results = getTransactions(null, 0L, null, null, 50); assertTrue("Transaction count not limited", results.size() <= 50); } @@ -227,7 +284,7 @@ public class SOLRDAOTest extends TestCase { long startTime = 0L; - List txns = solrDAO.getTransactions(null, startTime, null, null, 500); + List txns = getTransactions(null, startTime, null, null, 500); List txnIds = toTxnIds(txns); @@ -236,26 +293,26 @@ public class SOLRDAOTest extends TestCase nodeParameters.setStoreProtocol(StoreRef.PROTOCOL_WORKSPACE); nodeParameters.setStoreIdentifier(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE.getIdentifier()); - List nodes = solrDAO.getNodes(nodeParameters); + List nodes = getNodes(nodeParameters); assertTrue("Expect 'some' nodes associated with txns", nodes.size() > 0); } public void testGetNodesForStore() { - List txns = solrDAO.getTransactions(null, null, null, null, 500); + List txns = getTransactions(null, null, null, null, 500); List txnIds = toTxnIds(txns); NodeParameters nodeParameters = new NodeParameters(); nodeParameters.setTransactionIds(txnIds); - List nodes = solrDAO.getNodes(nodeParameters); + List nodes = getNodes(nodeParameters); assertTrue("Expect 'some' nodes associated with txns", nodes.size() > 0); } public void testGetNodesForTxnRange() { - List txns = solrDAO.getTransactions(null, null, null, null, 500); + List txns = getTransactions(null, null, null, null, 500); List txnIds = toTxnIds(txns); @@ -270,7 +327,7 @@ public class SOLRDAOTest extends TestCase nodeParameters.setFromTxnId(txnIds.get(0)); nodeParameters.setToTxnId(txnIds.get(1)); - List nodes = solrDAO.getNodes(nodeParameters); + List nodes = getNodes(nodeParameters); assertTrue("Expect 'some' nodes associated with txns", nodes.size() > 0); } diff --git a/source/test-java/org/alfresco/repo/node/NodeServiceTest.java b/source/test-java/org/alfresco/repo/node/NodeServiceTest.java index 0840dc91ee..454c4135bc 100644 --- a/source/test-java/org/alfresco/repo/node/NodeServiceTest.java +++ b/source/test-java/org/alfresco/repo/node/NodeServiceTest.java @@ -132,6 +132,8 @@ public class NodeServiceTest private static SimpleCache propsCache; private static SimpleCache aspectsCache; + private static Long deletedTypeQNameId; + /** populated during setup */ private static NodeRef rootNodeRef; @@ -172,6 +174,17 @@ public class NodeServiceTest } }; rootNodeRef = txnService.getRetryingTransactionHelper().doInTransaction(createStoreWork); + + final QNameDAO qnameDAO = (QNameDAO) APP_CONTEXT_INIT.getApplicationContext().getBean("qnameDAO"); + deletedTypeQNameId = txnService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() + { + @Override + public Long execute() throws Throwable + { + return qnameDAO.getOrCreateQName(ContentModel.TYPE_DELETED).getFirst(); + } + }); + } /** @@ -1199,8 +1212,6 @@ public class NodeServiceTest */ @Test public void testConcurrentLinkToDeletedNode() throws Throwable { - QNameDAO qnameDAO = (QNameDAO) APP_CONTEXT_INIT.getApplicationContext().getBean("qnameDAO"); - Long deletedTypeQNameId = qnameDAO.getOrCreateQName(ContentModel.TYPE_DELETED).getFirst(); // First find any broken links to start with final NodeEntity params = new NodeEntity(); params.setId(0L); @@ -1371,8 +1382,6 @@ public class NodeServiceTest */ @Test public void testLinkToDeletedNodeRecovery() throws Throwable { - QNameDAO qnameDAO = (QNameDAO) APP_CONTEXT_INIT.getApplicationContext().getBean("qnameDAO"); - Long deletedTypeQNameId = qnameDAO.getOrCreateQName(ContentModel.TYPE_DELETED).getFirst(); // First find any broken links to start with final NodeEntity params = new NodeEntity(); params.setId(0L); @@ -1504,18 +1513,35 @@ public class NodeServiceTest assertTrue("The following child nodes have no parent node: " + nodeIds, nodeIds.isEmpty()); // check lost_found ... - List lostAndFoundNodeRefs = getLostAndFoundNodes(); + final List lostAndFoundNodeRefs = getLostAndFoundNodes(); assertFalse(lostAndFoundNodeRefs.isEmpty()); - List lostAndFoundNodeIds = new ArrayList(lostAndFoundNodeRefs.size()); - for (NodeRef nodeRef : lostAndFoundNodeRefs) + final List lostAndFoundNodeIds = new ArrayList(lostAndFoundNodeRefs.size()); + txnService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() { - lostAndFoundNodeIds.add(nodeDAO.getNodePair(nodeRef).getFirst()); - } + @Override + public Void execute() throws Throwable + { + for (NodeRef nodeRef : lostAndFoundNodeRefs) + { + Long nodeId = nodeDAO.getNodePair(nodeRef).getFirst(); + lostAndFoundNodeIds.add(nodeId); + } + return null; + } + }); - for (Long childNodeId : childNodeIds) + for (final Long childNodeId : childNodeIds) { - assertTrue("Not found: "+childNodeId, lostAndFoundNodeIds.contains(childNodeId) || !nodeDAO.exists(childNodeId)); + Boolean exists = txnService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() + { + @Override + public Boolean execute() throws Throwable + { + return nodeDAO.exists(childNodeId); + } + }); + assertTrue("Not found: "+childNodeId, lostAndFoundNodeIds.contains(childNodeId) || !exists); } } @@ -1524,8 +1550,6 @@ public class NodeServiceTest */ @Test public void testForceNonRootNodeWithNoParentNode() throws Throwable { - QNameDAO qnameDAO = (QNameDAO) APP_CONTEXT_INIT.getApplicationContext().getBean("qnameDAO"); - Long deletedTypeQNameId = qnameDAO.getOrCreateQName(ContentModel.TYPE_DELETED).getFirst(); // First find any broken links to start with final NodeEntity params = new NodeEntity(); params.setId(0L); @@ -1695,8 +1719,6 @@ public class NodeServiceTest final NodeRef workspaceRootNodeRef = nodeService.getRootNode(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE); final NodeRef[] nodes = new NodeRef[6]; buildNodeHierarchy(workspaceRootNodeRef, nodes); - Pair parentNodePair = nodeDAO.getNodePair(nodes[0]); - Pair parentAssocPair = nodeDAO.getPrimaryParentAssoc(parentNodePair.getFirst()); // Hook up some associations nodeService.addAspect(nodes[1], ContentModel.ASPECT_COPIEDFROM, null); nodeService.createAssociation(nodes[1], nodes[0], ContentModel.ASSOC_ORIGINAL); // Peer n1-n0 @@ -1707,8 +1729,19 @@ public class NodeServiceTest QName.createQName(NamespaceService.ALFRESCO_URI, "testNodeHierarchyWalker")); // Walk the hierarchy - NodeHierarchyWalker walker = new NodeHierarchyWalker(nodeDAO); - walker.walkHierarchy(parentNodePair, parentAssocPair); + NodeHierarchyWalker walker = txnService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() + { + @Override + public NodeHierarchyWalker execute() throws Throwable + { + Pair parentNodePair = nodeDAO.getNodePair(nodes[0]); + Pair parentAssocPair = nodeDAO.getPrimaryParentAssoc(parentNodePair.getFirst()); + + NodeHierarchyWalker walker = new NodeHierarchyWalker(nodeDAO); + walker.walkHierarchy(parentNodePair, parentAssocPair); + return walker; + } + }, true); List nodesLeafFirst = walker.getNodes(true); assertEquals("Unexpected number of nodes visited", 6, nodesLeafFirst.size()); diff --git a/source/test-java/org/alfresco/repo/solr/SOLRTrackingComponentTest.java b/source/test-java/org/alfresco/repo/solr/SOLRTrackingComponentTest.java index 3e8119e3ce..ec47704ca5 100644 --- a/source/test-java/org/alfresco/repo/solr/SOLRTrackingComponentTest.java +++ b/source/test-java/org/alfresco/repo/solr/SOLRTrackingComponentTest.java @@ -122,25 +122,25 @@ public class SOLRTrackingComponentTest extends TestCase rootNodeRef = nodeService.getRootNode(storeRef); } - public void testAclChnageSetLimits() + public void testAclChangeSetLimits() { - List aclChangeSets = solrTrackingComponent.getAclChangeSets(null, null, null, null, 50); + List aclChangeSets = getAclChangeSets(null, null, null, null, 50); // First Long first = aclChangeSets.get(0).getId(); Long firstTime = aclChangeSets.get(1).getId(); - List testSets = solrTrackingComponent.getAclChangeSets(first, null, first, null, 50); + List testSets = getAclChangeSets(first, null, first, null, 50); assertEquals(0, testSets.size()); - testSets = solrTrackingComponent.getAclChangeSets(first, firstTime, first+1, firstTime, 50); + testSets = getAclChangeSets(first, firstTime, first+1, firstTime, 50); assertEquals(0, testSets.size()); - testSets = solrTrackingComponent.getAclChangeSets(first, firstTime, first+1, firstTime+1, 50); + testSets = getAclChangeSets(first, firstTime, first+1, firstTime+1, 50); assertEquals(0, testSets.size()); } public void testGetAcls_Simple() { - List cs = solrTrackingComponent.getAclChangeSets(null, null, null, null, 50); + List cs = getAclChangeSets(null, null, null, null, 50); assertTrue("Expected results to be limited in number", cs.size() <= 50); int totalAcls = 0; for (AclChangeSet aclChangeSet : cs) @@ -151,7 +151,7 @@ public class SOLRTrackingComponentTest extends TestCase for (AclChangeSet aclChangeSet : cs) { - List acls = solrTrackingComponent.getAcls(Arrays.asList(new Long[]{aclChangeSet.getId()}), null, 200); + List acls = getAcls(Arrays.asList(new Long[]{aclChangeSet.getId()}), null, 200); assertEquals(aclChangeSet.getAclCount(), acls.size()); totalAclsCheck += acls.size(); } @@ -167,7 +167,7 @@ public class SOLRTrackingComponentTest extends TestCase SOLRTest st = new SOLRTest3(txnHelper, fileFolderService, nodeDAO, qnameDAO, nodeService, dictionaryService, rootNodeRef, "testGetNodeMetaData", true, true); List createdTransactions = st.buildTransactions(); - List txns = solrTrackingComponent.getTransactions(null, startTime-1000, null, null, 100); + List txns = getTransactions(null, startTime-1000, null, null, 100); int[] updates = new int[] {1, 1}; int[] deletes = new int[] {0, 1}; @@ -195,6 +195,82 @@ public class SOLRTrackingComponentTest extends TestCase } return txIds; } + + /** + * Call {@link SOLRTrackingComponent#getTransactions(Long, Long, Long, Long, int)} in a transaction + */ + private List getTransactions( + final Long minTxnId, final Long fromCommitTime, + final Long maxTxnId, final Long toCommitTimeint, + final int maxResults) + { + RetryingTransactionCallback> callback = new RetryingTransactionCallback>() + { + @Override + public List execute() throws Throwable + { + return solrTrackingComponent.getTransactions(minTxnId, fromCommitTime, maxTxnId, toCommitTimeint, maxResults); + } + }; + return transactionService.getRetryingTransactionHelper().doInTransaction(callback, true); + } + + /** + * Call {@link SOLRTrackingComponent#getNodes(NodeParameters, NodeQueryCallback)} in a transaction + */ + private void getNodes(final NodeParameters nodeParameters, final SOLRTest bt) + { + long startTime = System.currentTimeMillis(); + transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() + { + @Override + public Void execute() throws Throwable + { + solrTrackingComponent.getNodes(nodeParameters, bt); + return null; + } + }, true); + long endTime = System.currentTimeMillis(); + + bt.runNodeChecks(nodeParameters.getMaxResults()); + + logger.debug("Got " + bt.getActualNodeCount() + " nodes in " + (endTime - startTime) + " ms"); + } + + /** + * Call {@link SOLRTrackingComponent#getAcls(List, Long, int)} in a transaction + */ + private List getAcls(final List aclChangeSetIds, final Long minAclId, final int maxResults) + { + RetryingTransactionCallback> callback = new RetryingTransactionCallback>() + { + @Override + public List execute() throws Throwable + { + return solrTrackingComponent.getAcls(aclChangeSetIds, minAclId, maxResults); + } + }; + return transactionService.getRetryingTransactionHelper().doInTransaction(callback, true); + } + + /** + * Call {@link SOLRTrackingComponent#getAclChangeSets(Long, Long, Long, Long, int)} in a transaction + */ + private List getAclChangeSets( + final Long minAclChangeSetId, final Long fromCommitTime, + final Long maxAclChangeSetId, final Long toCommitTime, + final int maxResults) + { + RetryingTransactionCallback> callback = new RetryingTransactionCallback>() + { + @Override + public List execute() throws Throwable + { + return solrTrackingComponent.getAclChangeSets(minAclChangeSetId, fromCommitTime, maxAclChangeSetId, toCommitTime, maxResults); + } + }; + return transactionService.getRetryingTransactionHelper().doInTransaction(callback, true); + } public void testGetTransactionLimits() { @@ -205,7 +281,7 @@ public class SOLRTrackingComponentTest extends TestCase // All - List txns = solrTrackingComponent.getTransactions(null, startTime-1000, null, null, 100); + List txns = getTransactions(null, startTime-1000, null, null, 100); int[] updates = new int[] {1, 1}; int[] deletes = new int[] {0, 1}; @@ -218,28 +294,28 @@ public class SOLRTrackingComponentTest extends TestCase // First - txns = solrTrackingComponent.getTransactions(first, null, first, null, 50); + txns = getTransactions(first, null, first, null, 50); assertEquals(0, txns.size()); - txns = solrTrackingComponent.getTransactions(first, null, first+1, null, 50); + txns = getTransactions(first, null, first+1, null, 50); updates = new int[] {1}; deletes = new int[] {0}; List createdTransactionFirst = new ArrayList(1); createdTransactionFirst.add(createdTransactions.get(0)); checkTransactions(txns, createdTransactionFirst, updates, deletes); - txns = solrTrackingComponent.getTransactions(first, firstTime, first+1, firstTime+1, 50); + txns = getTransactions(first, firstTime, first+1, firstTime+1, 50); checkTransactions(txns, createdTransactionFirst, updates, deletes); - txns = solrTrackingComponent.getTransactions(first, firstTime-1, first+1, firstTime, 50); + txns = getTransactions(first, firstTime-1, first+1, firstTime, 50); assertEquals(0, txns.size()); // Last - txns = solrTrackingComponent.getTransactions(last, null, last, null, 50); + txns = getTransactions(last, null, last, null, 50); assertEquals(0, txns.size()); - txns = solrTrackingComponent.getTransactions(last, null, last+1, null, 50); + txns = getTransactions(last, null, last+1, null, 50); updates = new int[] {1}; deletes = new int[] {1}; List createdTransactionLast = new ArrayList(1); @@ -247,10 +323,10 @@ public class SOLRTrackingComponentTest extends TestCase checkTransactions(txns, createdTransactionLast, updates, deletes); - txns = solrTrackingComponent.getTransactions(last, lastTime, last+1, lastTime+1, 50); + txns = getTransactions(last, lastTime, last+1, lastTime+1, 50); checkTransactions(txns, createdTransactionLast, updates, deletes); - txns = solrTrackingComponent.getTransactions(last, lastTime-1, last+1, lastTime, 50); + txns = getTransactions(last, lastTime-1, last+1, lastTime, 50); assertEquals(0, txns.size()); } @@ -261,7 +337,7 @@ public class SOLRTrackingComponentTest extends TestCase SOLRTest st = new SOLRTestResidualProperties(txnHelper, fileFolderService, nodeDAO, qnameDAO, nodeService, dictionaryService, rootNodeRef, "testNodeMetaDataNullPropertyValue", true, true); List createdTransactions = st.buildTransactions(); - List txns = solrTrackingComponent.getTransactions(null, startTime-1000, null, null, 100); + List txns = getTransactions(null, startTime-1000, null, null, 100); int[] updates = new int[] {2}; int[] deletes = new int[] {0}; @@ -285,7 +361,7 @@ public class SOLRTrackingComponentTest extends TestCase SOLRTest st = new SOLRTest100Nodes(txnHelper, fileFolderService, nodeDAO, qnameDAO, nodeService, dictionaryService, rootNodeRef, "testGetNodeMetaData", true, true); List createdTransactions = st.buildTransactions(); - List txns = solrTrackingComponent.getTransactions(null, startTime-1000, null, null, 100); + List txns = getTransactions(null, startTime-1000, null, null, 100); int[] updates = new int[] {100}; int[] deletes = new int[] {0}; @@ -314,7 +390,7 @@ public class SOLRTrackingComponentTest extends TestCase SOLRTest st = new SOLRTest4(txnHelper, fileFolderService, nodeDAO, qnameDAO, nodeService, dictionaryService, rootNodeRef, "testNodeMetaDataManyNodes", true, false); List createdTransactions = st.buildTransactions(); - List txns = solrTrackingComponent.getTransactions(null, fromCommitTime-1000, null, null, 100); + List txns = getTransactions(null, fromCommitTime-1000, null, null, 100); int[] updates = new int[] {2001}; int[] deletes = new int[] {0}; @@ -371,7 +447,7 @@ public class SOLRTrackingComponentTest extends TestCase SOLRTest st = new SOLRTest4(txnHelper, fileFolderService, nodeDAO, qnameDAO, nodeService, dictionaryService, rootNodeRef, "testNodeMetaDataManyNodes", true, false); List createdTransactions = st.buildTransactions(); - List txns = solrTrackingComponent.getTransactions(null, fromCommitTime-1000, null, null, 100); + List txns = getTransactions(null, fromCommitTime-1000, null, null, 100); int[] updates = new int[] {2001}; int[] deletes = new int[] {0}; @@ -401,7 +477,7 @@ public class SOLRTrackingComponentTest extends TestCase SOLRTest st = new SOLRTest5(txnHelper, fileFolderService, nodeDAO, qnameDAO, nodeService, dictionaryService, rootNodeRef, "testNodeMetaDataNullPropertyValue", true, true); List createdTransactions = st.buildTransactions(); - List txns = solrTrackingComponent.getTransactions(null, fromCommitTime-1000, null, null, 100); + List txns = getTransactions(null, fromCommitTime-1000, null, null, 100); int[] updates = new int[] {11}; int[] deletes = new int[] {0}; @@ -423,7 +499,7 @@ public class SOLRTrackingComponentTest extends TestCase SOLRTest st = new SOLRTest1(txnHelper, fileFolderService, nodeDAO, qnameDAO, nodeService, dictionaryService, rootNodeRef, "testFilters", true, true); List createdTransactions = st.buildTransactions(); - List txns = solrTrackingComponent.getTransactions(null, startTime-1000, null, null, 100); + List txns = getTransactions(null, startTime-1000, null, null, 100); int[] updates = new int[] {1, 1}; int[] deletes = new int[] {0, 1}; @@ -672,17 +748,6 @@ public class SOLRTrackingComponentTest extends TestCase return matchedTransactions; } - private void getNodes(NodeParameters nodeParameters, SOLRTest bt) - { - long startTime = System.currentTimeMillis(); - solrTrackingComponent.getNodes(nodeParameters, bt); - long endTime = System.currentTimeMillis(); - - bt.runNodeChecks(nodeParameters.getMaxResults()); - - logger.debug("Got " + bt.getActualNodeCount() + " nodes in " + (endTime - startTime) + " ms"); - } - private void getNodeMetaData(final NodeMetaDataParameters params, final MetaDataResultsFilter filter, final SOLRTest bt) { bt.clearNodesMetaData(); diff --git a/source/test-java/org/alfresco/repo/tenant/MultiTDemoTest.java b/source/test-java/org/alfresco/repo/tenant/MultiTDemoTest.java index f78e3f968f..83a83a130c 100644 --- a/source/test-java/org/alfresco/repo/tenant/MultiTDemoTest.java +++ b/source/test-java/org/alfresco/repo/tenant/MultiTDemoTest.java @@ -960,10 +960,18 @@ public class MultiTDemoTest extends TestCase AuthenticationUtil.setFullyAuthenticatedUser(AuthenticationUtil.getAdminUserName()); // authenticate as super-admin // find person - NodeRef personNodeRef = personService.getPerson(userName); + final NodeRef personNodeRef = personService.getPerson(userName); // clear user usage nodeService.setProperty(personNodeRef, ContentModel.PROP_SIZE_CURRENT, null); - usageService.deleteDeltas(personNodeRef); + transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() + { + @Override + public Void execute() throws Throwable + { + usageService.deleteDeltas(personNodeRef); + return null; + } + }, false); } diff --git a/source/test-java/org/alfresco/repo/transfer/TransferServiceToBeRefactoredTest.java b/source/test-java/org/alfresco/repo/transfer/TransferServiceToBeRefactoredTest.java index 93214001a2..e24d072eec 100644 --- a/source/test-java/org/alfresco/repo/transfer/TransferServiceToBeRefactoredTest.java +++ b/source/test-java/org/alfresco/repo/transfer/TransferServiceToBeRefactoredTest.java @@ -579,28 +579,6 @@ public class TransferServiceToBeRefactoredTest extends BaseAlfrescoSpringTest } } - private UnitTestTransferManifestNodeFactory unitTestKludgeToTransferGuestHomeToCompanyHome() - { - /** - * For unit test - * - replace the HTTP transport with the in-process transport - * - replace the node factory with one that will map node refs, paths etc. - */ - TransferTransmitter transmitter = new UnitTestInProcessTransmitterImpl(this.receiver, this.contentService, transactionService); - transferServiceImpl.setTransmitter(transmitter); - UnitTestTransferManifestNodeFactory testNodeFactory = new UnitTestTransferManifestNodeFactory(this.transferManifestNodeFactory); - transferServiceImpl.setTransferManifestNodeFactory(testNodeFactory); - List> pathMap = testNodeFactory.getPathMap(); - // Map company_home/guest_home to company_home so tranferred nodes and moved "up" one level. - pathMap.add(new Pair(PathHelper.stringToPath(GUEST_HOME_XPATH_QUERY), PathHelper.stringToPath(COMPANY_HOME_XPATH_QUERY))); - - DescriptorService mockedDescriptorService = getMockDescriptorService(REPO_ID_A); - transferServiceImpl.setDescriptorService(mockedDescriptorService); - - return testNodeFactory; - - } - /** * Test the transfer method behaviour with respect to sync folders - sending a complete set * of nodes and implying delete from the absence of an association. @@ -644,7 +622,6 @@ public class TransferServiceToBeRefactoredTest extends BaseAlfrescoSpringTest setDefaultRollback(false); final String CONTENT_TITLE = "ContentTitle"; - final String CONTENT_TITLE_UPDATED = "ContentTitleUpdated"; final Locale CONTENT_LOCALE = Locale.GERMAN; final String CONTENT_STRING = "Hello"; @@ -657,9 +634,17 @@ public class TransferServiceToBeRefactoredTest extends BaseAlfrescoSpringTest transferServiceImpl.setTransmitter(transmitter); final UnitTestTransferManifestNodeFactory testNodeFactory = new UnitTestTransferManifestNodeFactory(this.transferManifestNodeFactory); transferServiceImpl.setTransferManifestNodeFactory(testNodeFactory); - List> pathMap = testNodeFactory.getPathMap(); - // Map company_home/guest_home to company_home so tranferred nodes and moved "up" one level. - pathMap.add(new Pair(PathHelper.stringToPath(GUEST_HOME_XPATH_QUERY), PathHelper.stringToPath(COMPANY_HOME_XPATH_QUERY))); + final List> pathMap = testNodeFactory.getPathMap(); + transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() + { + @Override + public Void execute() throws Throwable + { + // Map company_home/guest_home to company_home so tranferred nodes and moved "up" one level. + pathMap.add(new Pair(PathHelper.stringToPath(GUEST_HOME_XPATH_QUERY), PathHelper.stringToPath(COMPANY_HOME_XPATH_QUERY))); + return null; + } + }); DescriptorService mockedDescriptorService = getMockDescriptorService(REPO_ID_A); transferServiceImpl.setDescriptorService(mockedDescriptorService); @@ -1354,7 +1339,6 @@ public class TransferServiceToBeRefactoredTest extends BaseAlfrescoSpringTest setDefaultRollback(false); final String CONTENT_TITLE = "ContentTitle"; - final String CONTENT_TITLE_UPDATED = "ContentTitleUpdated"; final Locale CONTENT_LOCALE = Locale.JAPAN; final String CONTENT_STRING = "Hello"; @@ -1593,6 +1577,7 @@ public class TransferServiceToBeRefactoredTest extends BaseAlfrescoSpringTest assertTrue("node B9 is not alien", (Boolean) nodeService.hasAspect(testData.B9NodeRef, TransferModel.ASPECT_ALIEN)); // Temp code + @SuppressWarnings("unchecked") List invaders = (List) nodeService.getProperty(A1destNodeRef, TransferModel.PROP_INVADED_BY); assertTrue("invaders contains local repository Id", invaders.contains(localRepositoryId)); assertFalse("invaders contains REPO_ID_A", invaders.contains(REPO_ID_A)); @@ -1619,6 +1604,7 @@ public class TransferServiceToBeRefactoredTest extends BaseAlfrescoSpringTest { NodeRef A1destNodeRef = testNodeFactory.getMappedNodeRef(testData.A1NodeRef); NodeRef A3destNodeRef = testNodeFactory.getMappedNodeRef(testData.A3NodeRef); + @SuppressWarnings({ "unused", "unchecked" }) List invaders = (List) nodeService.getProperty(A1destNodeRef, TransferModel.PROP_INVADED_BY); assertTrue("dest node ref does not exist", nodeService.exists(A1destNodeRef)); assertFalse("node A1 is still alien", (Boolean) nodeService.hasAspect(A1destNodeRef, TransferModel.ASPECT_ALIEN)); @@ -2043,9 +2029,6 @@ public class TransferServiceToBeRefactoredTest extends BaseAlfrescoSpringTest setDefaultRollback(false); final String CONTENT_TITLE = "ContentTitle"; - final String CONTENT_TITLE_UPDATED = "ContentTitleUpdated"; - final Locale CONTENT_LOCALE = Locale.JAPAN; - final String CONTENT_STRING = "Hello"; /** * Now go ahead and create our first transfer target @@ -2054,6 +2037,7 @@ public class TransferServiceToBeRefactoredTest extends BaseAlfrescoSpringTest class TestData { + @SuppressWarnings("unused") TransferTarget transferMe; NodeRef S0NodeRef; NodeRef A0NodeRef; @@ -2134,8 +2118,16 @@ public class TransferServiceToBeRefactoredTest extends BaseAlfrescoSpringTest transferServiceImpl.setTransmitter(transmitter); final UnitTestTransferManifestNodeFactory testNodeFactory = new UnitTestTransferManifestNodeFactory(this.transferManifestNodeFactory); transferServiceImpl.setTransferManifestNodeFactory(testNodeFactory); - List> pathMap = testNodeFactory.getPathMap(); - pathMap.add(new Pair(nodeService.getPath(testData.A0NodeRef), nodeService.getPath(testData.B1NodeRef))); + final List> pathMap = testNodeFactory.getPathMap(); + transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() + { + @Override + public Void execute() throws Throwable + { + pathMap.add(new Pair(nodeService.getPath(testData.A0NodeRef), nodeService.getPath(testData.B1NodeRef))); + return null; + } + }); DescriptorService mockedDescriptorService = getMockDescriptorService(REPO_ID_A); transferServiceImpl.setDescriptorService(mockedDescriptorService); @@ -2227,6 +2219,7 @@ public class TransferServiceToBeRefactoredTest extends BaseAlfrescoSpringTest public Void execute() throws Throwable { NodeRef A1destNodeRef = testNodeFactory.getMappedNodeRef(testData.A1NodeRef); + @SuppressWarnings({ "unchecked", "unused" }) List invaders = (List) nodeService.getProperty(A1destNodeRef, TransferModel.PROP_INVADED_BY); assertTrue("dest node ref does not exist", nodeService.exists(A1destNodeRef)); assertFalse("node A1 is still alien", (Boolean) nodeService.hasAspect(A1destNodeRef, TransferModel.ASPECT_ALIEN)); @@ -2305,6 +2298,7 @@ public class TransferServiceToBeRefactoredTest extends BaseAlfrescoSpringTest public Void execute() throws Throwable { NodeRef A1destNodeRef = testNodeFactory.getMappedNodeRef(testData.A1NodeRef); + @SuppressWarnings({ "unused", "unchecked" }) List invaders = (List) nodeService.getProperty(A1destNodeRef, TransferModel.PROP_INVADED_BY); assertTrue("dest node ref does not exist", nodeService.exists(A1destNodeRef)); assertFalse("node A1 is still alien", (Boolean) nodeService.hasAspect(A1destNodeRef, TransferModel.ASPECT_ALIEN)); @@ -2371,7 +2365,6 @@ public class TransferServiceToBeRefactoredTest extends BaseAlfrescoSpringTest setDefaultRollback(false); final String CONTENT_TITLE = "ContentTitle"; - final String CONTENT_TITLE_UPDATED = "ContentTitleUpdated"; final Locale CONTENT_LOCALE = Locale.GERMAN; final String CONTENT_STRING = "Hello"; @@ -2714,8 +2707,6 @@ public class TransferServiceToBeRefactoredTest extends BaseAlfrescoSpringTest setDefaultRollback(false); final String CONTENT_TITLE = "ContentTitle"; - final String CONTENT_TITLE_UPDATED = "ContentTitleUpdated"; - final String CONTENT_NAME = "Demo Node 1"; final Locale CONTENT_LOCALE = Locale.GERMAN; final String CONTENT_STRING = "The quick brown fox"; final Set nodes = new HashSet(); @@ -2733,6 +2724,7 @@ public class TransferServiceToBeRefactoredTest extends BaseAlfrescoSpringTest ChildAssociationRef child; + @SuppressWarnings("unused") TransferTarget transferMe; } final TestData testData = new TestData(); @@ -3125,7 +3117,6 @@ public class TransferServiceToBeRefactoredTest extends BaseAlfrescoSpringTest setDefaultRollback(false); final String CONTENT_TITLE = "ContentTitle"; - final String CONTENT_TITLE_UPDATED = "ContentTitleUpdated"; final Locale CONTENT_LOCALE = Locale.GERMAN; final String CONTENT_STRING = "Hello"; @@ -3153,6 +3144,7 @@ public class TransferServiceToBeRefactoredTest extends BaseAlfrescoSpringTest final String targetName = "testTransferSyncNodes"; class TestData { + @SuppressWarnings("unused") TransferTarget transferMe; NodeRef A1NodeRef; NodeRef A2NodeRef; @@ -3444,14 +3436,12 @@ public class TransferServiceToBeRefactoredTest extends BaseAlfrescoSpringTest setDefaultRollback(false); final String CONTENT_TITLE = "ContentTitle"; - final String CONTENT_TITLE_UPDATED = "ContentTitleUpdated"; - final Locale CONTENT_LOCALE = Locale.GERMAN; - final String CONTENT_STRING = "Hello"; final String targetName = "testMultiRepoTransfer"; class TestData { + @SuppressWarnings("unused") TransferTarget transferMe; NodeRef S0NodeRef; NodeRef A1NodeRef; @@ -3584,12 +3574,20 @@ public class TransferServiceToBeRefactoredTest extends BaseAlfrescoSpringTest transferServiceImpl.setTransmitter(transmitter); final UnitTestTransferManifestNodeFactory testNodeFactory = new UnitTestTransferManifestNodeFactory(this.transferManifestNodeFactory); transferServiceImpl.setTransferManifestNodeFactory(testNodeFactory); - List> pathMap = testNodeFactory.getPathMap(); + final List> pathMap = testNodeFactory.getPathMap(); // Map Project A/images to Project B/images // Map Project C/images to Project A/images - nodeService.getPath(testData.A2NodeRef); - pathMap.add(new Pair(nodeService.getPath(testData.A1NodeRef), nodeService.getPath(testData.B1NodeRef))); - pathMap.add(new Pair(nodeService.getPath(testData.C1NodeRef), nodeService.getPath(testData.B1NodeRef))); + transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() + { + @Override + public Void execute() throws Throwable + { + nodeService.getPath(testData.A2NodeRef); + pathMap.add(new Pair(nodeService.getPath(testData.A1NodeRef), nodeService.getPath(testData.B1NodeRef))); + pathMap.add(new Pair(nodeService.getPath(testData.C1NodeRef), nodeService.getPath(testData.B1NodeRef))); + return null; + } + }, true); { DescriptorService mockedDescriptorService = getMockDescriptorService(REPO_ID_A); transferServiceImpl.setDescriptorService(mockedDescriptorService); @@ -3873,13 +3871,11 @@ public class TransferServiceToBeRefactoredTest extends BaseAlfrescoSpringTest final String localRepositoryId = descriptorService.getCurrentRepositoryDescriptor().getId(); final String CONTENT_TITLE = "ContentTitle"; - final String CONTENT_TITLE_UPDATED = "ContentTitleUpdated"; - final Locale CONTENT_LOCALE = Locale.GERMAN; - final String CONTENT_STRING = "Hello"; final String targetName = "testMultiRepoTransferMove"; class TestData { + @SuppressWarnings("unused") TransferTarget transferMe; NodeRef S0NodeRef; NodeRef A1NodeRef; @@ -4015,11 +4011,19 @@ public class TransferServiceToBeRefactoredTest extends BaseAlfrescoSpringTest transferServiceImpl.setTransmitter(transmitter); final UnitTestTransferManifestNodeFactory testNodeFactory = new UnitTestTransferManifestNodeFactory(this.transferManifestNodeFactory); transferServiceImpl.setTransferManifestNodeFactory(testNodeFactory); - List> pathMap = testNodeFactory.getPathMap(); + final List> pathMap = testNodeFactory.getPathMap(); // Map Project A to Project B // Map Project C to Project B - pathMap.add(new Pair(nodeService.getPath(testData.A1NodeRef), nodeService.getPath(testData.B1NodeRef))); - pathMap.add(new Pair(nodeService.getPath(testData.C1NodeRef), nodeService.getPath(testData.B1NodeRef))); + transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() + { + @Override + public Void execute() throws Throwable + { + pathMap.add(new Pair(nodeService.getPath(testData.A1NodeRef), nodeService.getPath(testData.B1NodeRef))); + pathMap.add(new Pair(nodeService.getPath(testData.C1NodeRef), nodeService.getPath(testData.B1NodeRef))); + return null; + } + }, true); DescriptorService mockedDescriptorService = getMockDescriptorService(REPO_ID_C); transferServiceImpl.setDescriptorService(mockedDescriptorService); @@ -4200,6 +4204,7 @@ public class TransferServiceToBeRefactoredTest extends BaseAlfrescoSpringTest assertTrue("A5 dest is not invaded", nodeService.hasAspect(testNodeFactory.getMappedNodeRef(testData.A5NodeRef), TransferModel.ASPECT_ALIEN)); assertTrue("C2 dest is not invaded", nodeService.hasAspect(testNodeFactory.getMappedNodeRef(testData.C2NodeRef), TransferModel.ASPECT_ALIEN)); assertFalse("C3 dest is still invaded", nodeService.hasAspect(testNodeFactory.getMappedNodeRef(testData.C3NodeRef), TransferModel.ASPECT_ALIEN)); + @SuppressWarnings("unchecked") List invaders = (List) nodeService.getProperty(testNodeFactory.getMappedNodeRef(testData.C2NodeRef), TransferModel.PROP_INVADED_BY); assertTrue("invaders is too small", invaders.size() > 1); assertTrue("invaders does not contain REPO A", invaders.contains(REPO_ID_A)); @@ -4251,6 +4256,7 @@ public class TransferServiceToBeRefactoredTest extends BaseAlfrescoSpringTest assertFalse("C2 dest is still invaded", nodeService.hasAspect(testNodeFactory.getMappedNodeRef(testData.C2NodeRef), TransferModel.ASPECT_ALIEN)); assertFalse("C3 dest is still invaded", nodeService.hasAspect(testNodeFactory.getMappedNodeRef(testData.C3NodeRef), TransferModel.ASPECT_ALIEN)); + @SuppressWarnings("unchecked") List invaders = (List) nodeService.getProperty(testNodeFactory.getMappedNodeRef(testData.A4NodeRef), TransferModel.PROP_INVADED_BY); assertTrue("invaders is too big", invaders.size() < 2); assertFalse("invaders contains REPO A", invaders.contains(REPO_ID_A)); @@ -4283,6 +4289,7 @@ public class TransferServiceToBeRefactoredTest extends BaseAlfrescoSpringTest final String targetName = "testCopyTransferredNode"; class TestData { + @SuppressWarnings("unused") TransferTarget transferMe; NodeRef S0NodeRef; NodeRef A1NodeRef; @@ -4377,10 +4384,18 @@ public class TransferServiceToBeRefactoredTest extends BaseAlfrescoSpringTest transferServiceImpl.setTransmitter(transmitter); final UnitTestTransferManifestNodeFactory testNodeFactory = new UnitTestTransferManifestNodeFactory(this.transferManifestNodeFactory); transferServiceImpl.setTransferManifestNodeFactory(testNodeFactory); - List> pathMap = testNodeFactory.getPathMap(); + final List> pathMap = testNodeFactory.getPathMap(); - // Map Project A to Project B - pathMap.add(new Pair(nodeService.getPath(testData.A1NodeRef), nodeService.getPath(testData.B1NodeRef))); + transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() + { + @Override + public Void execute() throws Throwable + { + // Map Project A to Project B + pathMap.add(new Pair(nodeService.getPath(testData.A1NodeRef), nodeService.getPath(testData.B1NodeRef))); + return null; + } + }); DescriptorService mockedDescriptorService = getMockDescriptorService(REPO_ID_A); transferServiceImpl.setDescriptorService(mockedDescriptorService); @@ -4428,6 +4443,7 @@ public class TransferServiceToBeRefactoredTest extends BaseAlfrescoSpringTest assertFalse("copied node still has transferred aspect", nodeService.hasAspect(copiedNode, TransferModel.ASPECT_TRANSFERRED)); assertNull("copied node still has from repository id", nodeService.getProperty(copiedNode, TransferModel.PROP_FROM_REPOSITORY_ID)); assertNull("copied node still has original repository id", nodeService.getProperty(copiedNode, TransferModel.PROP_REPOSITORY_ID)); + @SuppressWarnings("unused") Set aspects = nodeService.getAspects(copiedNode); /** @@ -4503,13 +4519,11 @@ public class TransferServiceToBeRefactoredTest extends BaseAlfrescoSpringTest setDefaultRollback(false); final String CONTENT_TITLE = "ContentTitle"; - final String CONTENT_TITLE_UPDATED = "ContentTitleUpdated"; - final Locale CONTENT_LOCALE = Locale.GERMAN; - final String CONTENT_STRING = "Hello"; final String targetName = "testCopyAlien"; class TestData { + @SuppressWarnings("unused") TransferTarget transferMe; NodeRef S0NodeRef; NodeRef A1NodeRef; @@ -4648,11 +4662,19 @@ public class TransferServiceToBeRefactoredTest extends BaseAlfrescoSpringTest transferServiceImpl.setTransmitter(transmitter); final UnitTestTransferManifestNodeFactory testNodeFactory = new UnitTestTransferManifestNodeFactory(this.transferManifestNodeFactory); transferServiceImpl.setTransferManifestNodeFactory(testNodeFactory); - List> pathMap = testNodeFactory.getPathMap(); - // Map Project A to Project B - // Map Project C to Project B - pathMap.add(new Pair(nodeService.getPath(testData.A1NodeRef), nodeService.getPath(testData.B1NodeRef))); - pathMap.add(new Pair(nodeService.getPath(testData.C1NodeRef), nodeService.getPath(testData.B1NodeRef))); + final List> pathMap = testNodeFactory.getPathMap(); + transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() + { + @Override + public Void execute() throws Throwable + { + // Map Project A to Project B + // Map Project C to Project B + pathMap.add(new Pair(nodeService.getPath(testData.A1NodeRef), nodeService.getPath(testData.B1NodeRef))); + pathMap.add(new Pair(nodeService.getPath(testData.C1NodeRef), nodeService.getPath(testData.B1NodeRef))); + return null; + } + }); DescriptorService mockedDescriptorService = getMockDescriptorService(REPO_ID_C); transferServiceImpl.setDescriptorService(mockedDescriptorService); @@ -4754,7 +4776,9 @@ public class TransferServiceToBeRefactoredTest extends BaseAlfrescoSpringTest assertTrue("C3 dest is not invaded", nodeService.hasAspect(testNodeFactory.getMappedNodeRef(testData.C3NodeRef), TransferModel.ASPECT_ALIEN)); assertTrue("C2 dest is not invaded", nodeService.hasAspect(testNodeFactory.getMappedNodeRef(testData.C2NodeRef), TransferModel.ASPECT_ALIEN)); + @SuppressWarnings("unchecked") List C2invaders = (List) nodeService.getProperty(testNodeFactory.getMappedNodeRef(testData.C2NodeRef), TransferModel.PROP_INVADED_BY); + @SuppressWarnings("unchecked") List C3invaders = (List) nodeService.getProperty(testNodeFactory.getMappedNodeRef(testData.C3NodeRef), TransferModel.PROP_INVADED_BY); assertTrue("C3 invaders contains local repository Id", C3invaders.contains(localRepositoryId)); assertFalse("C3 invaders contains REPO_ID_A", C3invaders.contains(REPO_ID_A)); @@ -4784,7 +4808,9 @@ public class TransferServiceToBeRefactoredTest extends BaseAlfrescoSpringTest assertTrue("A4 dest is not invaded", nodeService.hasAspect(testNodeFactory.getMappedNodeRef(testData.A4NodeRef), TransferModel.ASPECT_ALIEN)); assertTrue("C2 dest is not invaded", nodeService.hasAspect(testNodeFactory.getMappedNodeRef(testData.C2NodeRef), TransferModel.ASPECT_ALIEN)); + @SuppressWarnings("unchecked") List C2invaders = (List) nodeService.getProperty(testNodeFactory.getMappedNodeRef(testData.C2NodeRef), TransferModel.PROP_INVADED_BY); + @SuppressWarnings("unchecked") List A4invaders = (List) nodeService.getProperty(testNodeFactory.getMappedNodeRef(testData.A4NodeRef), TransferModel.PROP_INVADED_BY); assertTrue("A4 invaders contains local repository Id", A4invaders.contains(localRepositoryId)); diff --git a/source/test-java/org/alfresco/repo/wiki/WikiServiceImplTest.java b/source/test-java/org/alfresco/repo/wiki/WikiServiceImplTest.java index 06f3e7cb68..40088e6d60 100644 --- a/source/test-java/org/alfresco/repo/wiki/WikiServiceImplTest.java +++ b/source/test-java/org/alfresco/repo/wiki/WikiServiceImplTest.java @@ -78,11 +78,13 @@ public class WikiServiceImplTest private static BehaviourFilter BEHAVIOUR_FILTER; private static WikiService WIKI_SERVICE; private static ContentService CONTENT_SERVICE; + @SuppressWarnings("unused") private static DictionaryService DICTIONARY_SERVICE; private static NodeService NODE_SERVICE; private static NodeService PUBLIC_NODE_SERVICE; private static PersonService PERSON_SERVICE; private static RetryingTransactionHelper TRANSACTION_HELPER; + @SuppressWarnings("unused") private static TransactionService TRANSACTION_SERVICE; private static PermissionService PERMISSION_SERVICE; private static SiteService SITE_SERVICE; @@ -154,8 +156,8 @@ public class WikiServiceImplTest assertNotNull(page.getNodeRef()); assertNotNull(page.getSystemName()); - NodeRef container = NODE_SERVICE.getPrimaryParent(page.getNodeRef()).getParentRef(); - NodeRef site = NODE_SERVICE.getPrimaryParent(container).getParentRef(); + NodeRef container = PUBLIC_NODE_SERVICE.getPrimaryParent(page.getNodeRef()).getParentRef(); + NodeRef site = PUBLIC_NODE_SERVICE.getPrimaryParent(container).getParentRef(); assertEquals(WIKI_SITE.getNodeRef(), site); // Ensure the content was correctly set up