Merged HEAD-BUG-FIX (4.3/Cloud) to HEAD (4.3/Cloud)

60596: Merged V4.2-BUG-FIX (4.2.2) to HEAD-BUG-FIX (Cloud/4.3)
      60363: Merged DEV to V4.2-BUG-FIX (4.2.2)
         58124: Added missing transaction(s) in SOLRTrackingComponentTest (MNT-9806)
         58128: Added missing transaction(s) in MultiTDemoTest (MNT-9806)
         58247: Added missing transaction(s) in TransferServiceToBeRefactoredTest.  Fixed dozens of warnings as well. (MNT-9806)
         58248: Added missing transaction(s) in WikiServiceImplTest.  Fixed code warnings. (MNT-9806)
         58249: Added missing transaction(s) in CalendarServiceImplTest. (MNT-9806)
         58251: Added missing transaction(s) in NodeServiceTest. (MNT-9806)
         58252: Added missing transaction(s) in LockDAOTest. (MNT-9806)
         58253: Added missing transaction(s) in NodeDAOTest. (MNT-9806)
         58257: Added missing transaction(s) in SOLRDAOTest. (MNT-9806)
         58259: Added missing transaction(s) in ReplicationRestApiTest (MNT-9806)
         58260: Added missing transaction(s) in RunningActionRestApiTest (MNT-9806)
         58304: Added missing transaction(s) in UnlockMethodTest (MNT-9806)
         58368: Added missing transaction(s) in UnlockMethodTest (MNT-9806)
         58892: Added missing transaction(s) in NodeServiceTest (MNT-9806)


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@62327 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Alan Davis
2014-02-12 14:09:43 +00:00
parent 72662536a7
commit 73fe0fb759
9 changed files with 472 additions and 188 deletions

View File

@@ -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<CannedQueryFactory<? extends Object>> calendarCannedQueryRegistry =
(NamedObjectRegistry<CannedQueryFactory<? extends Object>>)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<CalendarEntity> full = new ArrayList<CalendarEntity>();
final List<CalendarEntity> filtered = new ArrayList<CalendarEntity>();
GetCalendarEntriesCannedQueryTestHook hook = new GetCalendarEntriesCannedQueryTestHook()
final GetCalendarEntriesCannedQueryTestHook hook = new GetCalendarEntriesCannedQueryTestHook()
{
@Override
public void notifyComplete(List<CalendarEntity> fullList,
@@ -889,13 +893,20 @@ public class CalendarServiceImplTest
}
};
// With no entries, won't find anything
TRANSACTION_HELPER.doInTransaction(new RetryingTransactionCallback<Void>()
{
@Override
public Void execute() throws Throwable
{
GetCalendarEntriesCannedQuery cq = (GetCalendarEntriesCannedQuery) CALENDAR_CQ_FACTORY.getCannedQuery(
containers, from, to, paging
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);
TRANSACTION_HELPER.doInTransaction(new RetryingTransactionCallback<Void>()
{
@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);
final Date from2 = new Date(1302431400-10);
final Date to2 = new Date(1302431400+10);
TRANSACTION_HELPER.doInTransaction(new RetryingTransactionCallback<Void>()
{
@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);
TRANSACTION_HELPER.doInTransaction(new RetryingTransactionCallback<Void>()
{
@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(
TRANSACTION_HELPER.doInTransaction(new RetryingTransactionCallback<Void>()
{
@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(
TRANSACTION_HELPER.doInTransaction(new RetryingTransactionCallback<Void>()
{
@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(
TRANSACTION_HELPER.doInTransaction(new RetryingTransactionCallback<Void>()
{
@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(
TRANSACTION_HELPER.doInTransaction(new RetryingTransactionCallback<Void>()
{
@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());
}

View File

@@ -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
{
transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<Void>()
{
@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<Boolean>()
{
@Override
public Boolean execute() throws Throwable
{
return lockDAO.releaseLock(lockAAA, token, true);
}
});
// Expected
assertFalse("Release should have been negative.", released);
}

View File

@@ -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<Long, NodeRef> nodePair)
{
@@ -108,10 +108,18 @@ public class NodeDAOTest extends TestCase
return false;
}
};
transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<Void>()
{
@Override
public Void execute() throws Throwable
{
nodeDAO.getNodesWithAspects(
Collections.singleton(ContentModel.ASPECT_AUDITABLE),
1L, 1000L,
callback);
return null;
}
}, true);
}
public void testGetPrimaryChildAcls() throws Throwable

View File

@@ -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<Node> getNodes(final NodeParameters nodeParameters)
{
return transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<List<Node>>()
{
@Override
public List<Node> execute() throws Throwable
{
return solrDAO.getNodes(nodeParameters);
}
}, true);
}
private List<Acl> getAcls(final List<Long> aclChangeSetIds, final Long minAclId, final int maxResults)
{
return transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<List<Acl>>()
{
@Override
public List<Acl> execute() throws Throwable
{
return solrDAO.getAcls(aclChangeSetIds, minAclId, maxResults);
}
}, true);
}
private List<Transaction> getTransactions(
final Long minTxnId, final Long fromCommitTime,
final Long maxTxnId, final Long toCommitTime,
final int maxResults)
{
return transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<List<Transaction>>()
{
@Override
public List<Transaction> execute() throws Throwable
{
return solrDAO.getTransactions(minTxnId, fromCommitTime, maxTxnId, toCommitTime, maxResults);
}
}, true);
}
private List<AclChangeSet> getAclChangeSets(
final Long minAclChangeSetId, final Long fromCommitTime,
final Long maxAclChangeSetId, final Long toCommitTime,
final int maxResults)
{
return transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<List<AclChangeSet>>()
{
@Override
public List<AclChangeSet> 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<AclChangeSet> results = solrDAO.getAclChangeSets(null, startTime, null, null, 50);
List<AclChangeSet> results = getAclChangeSets(null, startTime, null, null, 50);
assertTrue("ChangeSet count not limited", results.size() == 0);
}
public void testQueryChangeSets_Limit()
{
List<AclChangeSet> results = solrDAO.getAclChangeSets(null, 0L, null, null, 50);
List<AclChangeSet> 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.<Long>emptyList(), null, 50);
getAcls(Collections.<Long>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<AclChangeSet> aclChangeSets = solrDAO.getAclChangeSets(null, 0L, null, null, 50);
List<AclChangeSet> 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<Long> aclChangeSetIds = toIds(aclChangeSets);
// Now use those to query for details
List<Acl> acls = solrDAO.getAcls(aclChangeSetIds, null, 1000);
List<Acl> acls = getAcls(aclChangeSetIds, null, 1000);
// Check that the ACL ChangeSet IDs are correct
Set<Long> aclChangeSetIdsSet = new HashSet<Long>(aclChangeSetIds);
@@ -148,7 +205,7 @@ public class SOLRDAOTest extends TestCase
public void testQueryAcls_Single()
{
List<AclChangeSet> aclChangeSets = solrDAO.getAclChangeSets(null, 0L, null, null, 1000);
List<AclChangeSet> 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<Acl> acls = solrDAO.getAcls(aclChangeSetIds, minAclId, 1);
List<Acl> 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<Transaction> results = solrDAO.getTransactions(null, startTime, null, null, 50);
List<Transaction> results = getTransactions(null, startTime, null, null, 50);
assertTrue("Transaction count not limited", results.size() == 0);
}
public void testQueryTransactions_Limit()
{
List<Transaction> results = solrDAO.getTransactions(null, 0L, null, null, 50);
List<Transaction> 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<Transaction> txns = solrDAO.getTransactions(null, startTime, null, null, 500);
List<Transaction> txns = getTransactions(null, startTime, null, null, 500);
List<Long> 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<Node> nodes = solrDAO.getNodes(nodeParameters);
List<Node> nodes = getNodes(nodeParameters);
assertTrue("Expect 'some' nodes associated with txns", nodes.size() > 0);
}
public void testGetNodesForStore()
{
List<Transaction> txns = solrDAO.getTransactions(null, null, null, null, 500);
List<Transaction> txns = getTransactions(null, null, null, null, 500);
List<Long> txnIds = toTxnIds(txns);
NodeParameters nodeParameters = new NodeParameters();
nodeParameters.setTransactionIds(txnIds);
List<Node> nodes = solrDAO.getNodes(nodeParameters);
List<Node> nodes = getNodes(nodeParameters);
assertTrue("Expect 'some' nodes associated with txns", nodes.size() > 0);
}
public void testGetNodesForTxnRange()
{
List<Transaction> txns = solrDAO.getTransactions(null, null, null, null, 500);
List<Transaction> txns = getTransactions(null, null, null, null, 500);
List<Long> txnIds = toTxnIds(txns);
@@ -270,7 +327,7 @@ public class SOLRDAOTest extends TestCase
nodeParameters.setFromTxnId(txnIds.get(0));
nodeParameters.setToTxnId(txnIds.get(1));
List<Node> nodes = solrDAO.getNodes(nodeParameters);
List<Node> nodes = getNodes(nodeParameters);
assertTrue("Expect 'some' nodes associated with txns", nodes.size() > 0);
}

View File

@@ -132,6 +132,8 @@ public class NodeServiceTest
private static SimpleCache<Serializable, Serializable> propsCache;
private static SimpleCache<Serializable, Serializable> 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<Long>()
{
@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<NodeRef> lostAndFoundNodeRefs = getLostAndFoundNodes();
final List<NodeRef> lostAndFoundNodeRefs = getLostAndFoundNodes();
assertFalse(lostAndFoundNodeRefs.isEmpty());
List<Long> lostAndFoundNodeIds = new ArrayList<Long>(lostAndFoundNodeRefs.size());
final List<Long> lostAndFoundNodeIds = new ArrayList<Long>(lostAndFoundNodeRefs.size());
txnService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<Void>()
{
@Override
public Void execute() throws Throwable
{
for (NodeRef nodeRef : lostAndFoundNodeRefs)
{
lostAndFoundNodeIds.add(nodeDAO.getNodePair(nodeRef).getFirst());
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<Boolean>()
{
@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<Long, NodeRef> parentNodePair = nodeDAO.getNodePair(nodes[0]);
Pair<Long, ChildAssociationRef> 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 = txnService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<NodeHierarchyWalker>()
{
@Override
public NodeHierarchyWalker execute() throws Throwable
{
Pair<Long, NodeRef> parentNodePair = nodeDAO.getNodePair(nodes[0]);
Pair<Long, ChildAssociationRef> parentAssocPair = nodeDAO.getPrimaryParentAssoc(parentNodePair.getFirst());
NodeHierarchyWalker walker = new NodeHierarchyWalker(nodeDAO);
walker.walkHierarchy(parentNodePair, parentAssocPair);
return walker;
}
}, true);
List<VisitedNode> nodesLeafFirst = walker.getNodes(true);
assertEquals("Unexpected number of nodes visited", 6, nodesLeafFirst.size());

View File

@@ -122,25 +122,25 @@ public class SOLRTrackingComponentTest extends TestCase
rootNodeRef = nodeService.getRootNode(storeRef);
}
public void testAclChnageSetLimits()
public void testAclChangeSetLimits()
{
List<AclChangeSet> aclChangeSets = solrTrackingComponent.getAclChangeSets(null, null, null, null, 50);
List<AclChangeSet> aclChangeSets = getAclChangeSets(null, null, null, null, 50);
// First
Long first = aclChangeSets.get(0).getId();
Long firstTime = aclChangeSets.get(1).getId();
List<AclChangeSet> testSets = solrTrackingComponent.getAclChangeSets(first, null, first, null, 50);
List<AclChangeSet> 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<AclChangeSet> cs = solrTrackingComponent.getAclChangeSets(null, null, null, null, 50);
List<AclChangeSet> 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<Acl> acls = solrTrackingComponent.getAcls(Arrays.asList(new Long[]{aclChangeSet.getId()}), null, 200);
List<Acl> 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<Long> createdTransactions = st.buildTransactions();
List<Transaction> txns = solrTrackingComponent.getTransactions(null, startTime-1000, null, null, 100);
List<Transaction> txns = getTransactions(null, startTime-1000, null, null, 100);
int[] updates = new int[] {1, 1};
int[] deletes = new int[] {0, 1};
@@ -196,6 +196,82 @@ public class SOLRTrackingComponentTest extends TestCase
return txIds;
}
/**
* Call {@link SOLRTrackingComponent#getTransactions(Long, Long, Long, Long, int)} in a transaction
*/
private List<Transaction> getTransactions(
final Long minTxnId, final Long fromCommitTime,
final Long maxTxnId, final Long toCommitTimeint,
final int maxResults)
{
RetryingTransactionCallback<List<Transaction>> callback = new RetryingTransactionCallback<List<Transaction>>()
{
@Override
public List<Transaction> 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<Void>()
{
@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<Acl> getAcls(final List<Long> aclChangeSetIds, final Long minAclId, final int maxResults)
{
RetryingTransactionCallback<List<Acl>> callback = new RetryingTransactionCallback<List<Acl>>()
{
@Override
public List<Acl> 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<AclChangeSet> getAclChangeSets(
final Long minAclChangeSetId, final Long fromCommitTime,
final Long maxAclChangeSetId, final Long toCommitTime,
final int maxResults)
{
RetryingTransactionCallback<List<AclChangeSet>> callback = new RetryingTransactionCallback<List<AclChangeSet>>()
{
@Override
public List<AclChangeSet> execute() throws Throwable
{
return solrTrackingComponent.getAclChangeSets(minAclChangeSetId, fromCommitTime, maxAclChangeSetId, toCommitTime, maxResults);
}
};
return transactionService.getRetryingTransactionHelper().doInTransaction(callback, true);
}
public void testGetTransactionLimits()
{
long startTime = System.currentTimeMillis();
@@ -205,7 +281,7 @@ public class SOLRTrackingComponentTest extends TestCase
// All
List<Transaction> txns = solrTrackingComponent.getTransactions(null, startTime-1000, null, null, 100);
List<Transaction> 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<Long> createdTransactionFirst = new ArrayList<Long>(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<Long> createdTransactionLast = new ArrayList<Long>(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<Long> createdTransactions = st.buildTransactions();
List<Transaction> txns = solrTrackingComponent.getTransactions(null, startTime-1000, null, null, 100);
List<Transaction> 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<Long> createdTransactions = st.buildTransactions();
List<Transaction> txns = solrTrackingComponent.getTransactions(null, startTime-1000, null, null, 100);
List<Transaction> 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<Long> createdTransactions = st.buildTransactions();
List<Transaction> txns = solrTrackingComponent.getTransactions(null, fromCommitTime-1000, null, null, 100);
List<Transaction> 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<Long> createdTransactions = st.buildTransactions();
List<Transaction> txns = solrTrackingComponent.getTransactions(null, fromCommitTime-1000, null, null, 100);
List<Transaction> 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<Long> createdTransactions = st.buildTransactions();
List<Transaction> txns = solrTrackingComponent.getTransactions(null, fromCommitTime-1000, null, null, 100);
List<Transaction> 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<Long> createdTransactions = st.buildTransactions();
List<Transaction> txns = solrTrackingComponent.getTransactions(null, startTime-1000, null, null, 100);
List<Transaction> 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();

View File

@@ -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);
transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<Void>()
{
@Override
public Void execute() throws Throwable
{
usageService.deleteDeltas(personNodeRef);
return null;
}
}, false);
}

View File

@@ -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<Pair<Path, Path>> pathMap = testNodeFactory.getPathMap();
// Map company_home/guest_home to company_home so tranferred nodes and moved "up" one level.
pathMap.add(new Pair<Path, Path>(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<Pair<Path, Path>> pathMap = testNodeFactory.getPathMap();
final List<Pair<Path, Path>> pathMap = testNodeFactory.getPathMap();
transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<Void>()
{
@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<Path, Path>(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<String> invaders = (List<String>) 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<String> invaders = (List<String>) 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<Pair<Path, Path>> pathMap = testNodeFactory.getPathMap();
pathMap.add(new Pair(nodeService.getPath(testData.A0NodeRef), nodeService.getPath(testData.B1NodeRef)));
final List<Pair<Path, Path>> pathMap = testNodeFactory.getPathMap();
transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<Void>()
{
@Override
public Void execute() throws Throwable
{
pathMap.add(new Pair<Path, Path>(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<String> invaders = (List<String>) 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<String> invaders = (List<String>) 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<NodeRef> nodes = new HashSet<NodeRef>();
@@ -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<Pair<Path, Path>> pathMap = testNodeFactory.getPathMap();
final List<Pair<Path, Path>> pathMap = testNodeFactory.getPathMap();
// Map Project A/images to Project B/images
// Map Project C/images to Project A/images
transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<Void>()
{
@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)));
pathMap.add(new Pair<Path, Path>(nodeService.getPath(testData.A1NodeRef), nodeService.getPath(testData.B1NodeRef)));
pathMap.add(new Pair<Path, Path>(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<Pair<Path, Path>> pathMap = testNodeFactory.getPathMap();
final List<Pair<Path, Path>> 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<Void>()
{
@Override
public Void execute() throws Throwable
{
pathMap.add(new Pair<Path, Path>(nodeService.getPath(testData.A1NodeRef), nodeService.getPath(testData.B1NodeRef)));
pathMap.add(new Pair<Path, Path>(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<String> invaders = (List<String>) 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<String> invaders = (List<String>) 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<Pair<Path, Path>> pathMap = testNodeFactory.getPathMap();
final List<Pair<Path, Path>> pathMap = testNodeFactory.getPathMap();
transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<Void>()
{
@Override
public Void execute() throws Throwable
{
// Map Project A to Project B
pathMap.add(new Pair(nodeService.getPath(testData.A1NodeRef), nodeService.getPath(testData.B1NodeRef)));
pathMap.add(new Pair<Path, Path>(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<QName> 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<Pair<Path, Path>> pathMap = testNodeFactory.getPathMap();
final List<Pair<Path, Path>> pathMap = testNodeFactory.getPathMap();
transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<Void>()
{
@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)));
pathMap.add(new Pair<Path, Path>(nodeService.getPath(testData.A1NodeRef), nodeService.getPath(testData.B1NodeRef)));
pathMap.add(new Pair<Path, Path>(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<String> C2invaders = (List<String>) nodeService.getProperty(testNodeFactory.getMappedNodeRef(testData.C2NodeRef), TransferModel.PROP_INVADED_BY);
@SuppressWarnings("unchecked")
List<String> C3invaders = (List<String>) 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<String> C2invaders = (List<String>) nodeService.getProperty(testNodeFactory.getMappedNodeRef(testData.C2NodeRef), TransferModel.PROP_INVADED_BY);
@SuppressWarnings("unchecked")
List<String> A4invaders = (List<String>) nodeService.getProperty(testNodeFactory.getMappedNodeRef(testData.A4NodeRef), TransferModel.PROP_INVADED_BY);
assertTrue("A4 invaders contains local repository Id", A4invaders.contains(localRepositoryId));

View File

@@ -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