Merged V3.0 to HEAD

11489: Added step for JDBC info
   11490: Fixed: ETHREEOH-452 Error appear when a user trying to view metadata for item, which is deleting
   11491: Blog integration package rename and removal of obsolete web-client beans
   11492: Adding missing web-extension dir to dynamic-website project
   11493: ETHREEOH_520: Fixes to prevent new users from being created when existing users invited to a site
   11494: Updated version to beta2
   11495: Fixes ETHREEOH-252, 392 & 393. When merged to 2.2 will also fix ETWOTWO-246 & 616 and when merged to HEAD will fix ALFCOM-1685 & 1712. 
   11496: Partial fix for ETHREEOH-27, fixes 2 out of the final 3 error conditions.
   11497: Fix for ETHREEOH-550

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@12447 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Kevin Roast
2008-12-17 13:28:44 +00:00
parent afc473ec7f
commit 4669d51678
15 changed files with 127 additions and 21 deletions

View File

@@ -30,6 +30,7 @@ import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import javax.transaction.UserTransaction;
@@ -50,6 +51,7 @@ import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.cmr.repository.StoreRef;
import org.alfresco.service.namespace.QName;
import org.alfresco.service.namespace.RegexQNamePattern;
import org.alfresco.service.transaction.TransactionService;
import org.alfresco.util.Pair;
import org.apache.commons.lang.mutable.MutableInt;
@@ -488,4 +490,70 @@ public class DbNodeServiceImplTest extends BaseNodeServiceTest
handler);
assertTrue("Set value not found.", count.intValue() == 1);
}
public void testAspectRemovalWithCommit() throws Throwable
{
// Create a node to add the aspect to
NodeRef sourceNodeRef = nodeService.createNode(
rootNodeRef,
ASSOC_TYPE_QNAME_TEST_CHILDREN,
QName.createQName(BaseNodeServiceTest.NAMESPACE, "testAspectRemoval-source"),
ContentModel.TYPE_CONTAINER).getChildRef();
// Create a target for the associations
NodeRef targetNodeRef = nodeService.createNode(
rootNodeRef,
ASSOC_TYPE_QNAME_TEST_CHILDREN,
QName.createQName(BaseNodeServiceTest.NAMESPACE, "testAspectRemoval-target"),
ContentModel.TYPE_CONTAINER).getChildRef();
// Add the aspect to the source
nodeService.addAspect(sourceNodeRef, ASPECT_WITH_ASSOCIATIONS, null);
// Make the associations
nodeService.addChild(
sourceNodeRef,
targetNodeRef,
ASSOC_ASPECT_CHILD_ASSOC,
QName.createQName(NAMESPACE, "aspect-child"));
nodeService.createAssociation(sourceNodeRef, targetNodeRef, ASSOC_ASPECT_NORMAL_ASSOC);
// Check that the correct associations are present
assertEquals("Expected exactly one child",
1, nodeService.getChildAssocs(sourceNodeRef).size());
assertEquals("Expected exactly one target",
1, nodeService.getTargetAssocs(sourceNodeRef, RegexQNamePattern.MATCH_ALL).size());
// Force a commit here
setComplete();
endTransaction();
// start another transaction to remove the aspect
UserTransaction txn = txnService.getUserTransaction();
txn.begin();
try
{
Set<QName> aspects = nodeService.getAspects(sourceNodeRef);
int noAspectsBefore = aspects.size();
// Now remove the aspect
nodeService.removeAspect(sourceNodeRef, ASPECT_WITH_ASSOCIATIONS);
// Check that the associations were removed
assertEquals("Expected exactly zero child",
0, nodeService.getChildAssocs(sourceNodeRef).size());
assertEquals("Expected exactly zero target",
0, nodeService.getTargetAssocs(sourceNodeRef, RegexQNamePattern.MATCH_ALL).size());
aspects = nodeService.getAspects(sourceNodeRef);
assertEquals("Expected exactly one less aspect",
noAspectsBefore-1, aspects.size());
txn.commit();
}
catch (Throwable e)
{
try { txn.rollback(); } catch (Throwable ee) {}
throw e;
}
}
}