Merged V3.1 to HEAD

12994: Merged V3.0 to V3.1
      12931: Merged V2.2 to V3.0
         12635: Fix for ETWOTWO-995: Diff performance degrades on large data sets
         12742: Fix for ETWOTWO-981: WCM - regression - revert fails (eg. for content publisher)
         12743: AVM - add missing tests to test suite & fix existing tests (including base setup)
         12759: AVM - build/test fix - follow-on to r12742
         12781: Fix PersonDAO - fixes AuthorityServiceTest which failed after adding AVMServicePermissionsTest
      12932: Merged V2.2 to V3.0   
         12763: Support for ETWOTWO-975: AVMDifference now implements Comparable<AVMDifference>
         12782: Fix for ETWOTWO-939: Content Contributor cannot edit their own items
         12809: Test fixes after r 12782
         12818: ETWOTWO-977 (Orphan Reaper) - removal of comment questioning cache interaction.
      12933: Merged V2.2 to V3.0
         12306: (record-only) Final set of XSS and HTML encoding fixes for ETWOONE-90 - already merged (see r12310)
      12934: Merged V2.2 to V3.0
         12311: (record-only) Fix for ETWOONE-389 - Current page number not always visible on the browse screen - already merged (see r12312)
      12935: Merged V2.2 to V3.0
         12320: (record-only) Fix for ETWOONE-87: Behavior of delete cascade - already merged (see r12324)
         12322: (record-only) Fix merge issue (marked as Do Not Merge - see CHK-5607)
      12936: Merged V2.2 to V3.0
         12775: (record-only) ETHREEOH-872: Editing Email-notify-rules fails w/ ClassCastException (back-port of r11966)
      12937: Merged V2.2 to V3.0
         12780: Fixed ETWOTWO-1003: DuplicateChildNameException not generated correctly (on Oracle)
         12820: Update to ETWOTWO-926 (WCM Form Inline callouts to Web Scripts)
         12825: Further ETWOTWO-926 update: provide compatibility with old token scheme as the original patch has already made its way into 3.0.1
         12850: ETWOTWO-975 - Show Conflicts in Modified Items List
         12938: Fix merge typo (follow on from r12931)
         12941: Fix merge typo (follow on from r12931)
   12998: Cleaned up svn:mergeinfo entries
   ___________________________________________________________________
   Modified: svn:mergeinfo
      Merged /alfresco/BRANCHES/V3.0:r12931-12938,12941
      Merged /alfresco/BRANCHES/V2.2:r12306,12311,12320,12322,12635,12742-12743,12759,12763,12775,12780-12782,12809,12818,12820,12825,12850
      Merged /alfresco/BRANCHES/V3.1:r12994,12998


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@13549 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Derek Hulley
2009-03-11 02:50:32 +00:00
parent 37d3c2e25e
commit 6eb1963971
34 changed files with 972 additions and 627 deletions

View File

@@ -44,6 +44,7 @@ import java.util.TreeMap;
import java.util.zip.CRC32;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.error.ExceptionStackUtil;
import org.alfresco.model.ContentModel;
import org.alfresco.repo.cache.SimpleCache;
import org.alfresco.repo.domain.AuditableProperties;
@@ -160,6 +161,18 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements
/** Log to trace parent association caching: <b>classname + .ParentAssocsCache</b> */
private static Log loggerParentAssocsCache = LogFactory.getLog(HibernateNodeDaoServiceImpl.class.getName() + ".ParentAssocsCache");
/**
* Exceptions that indicate duplicate child names violations.
*/
@SuppressWarnings("unchecked")
public static final Class[] DUPLICATE_CHILD_NAME_EXCEPTIONS;
static
{
DUPLICATE_CHILD_NAME_EXCEPTIONS = new Class[] {
ConstraintViolationException.class
};
}
private QNameDAO qnameDAO;
private UsageDeltaDAO usageDeltaDAO;
private AclDaoComponent aclDaoComponent;
@@ -1589,13 +1602,34 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements
DirtySessionMethodInterceptor.flushSession(getSession(false));
Long assocId = (Long) getHibernateTemplate().execute(new HibernateCallback()
{
@SuppressWarnings("unchecked")
public Object doInHibernate(Session session)
{
try
{
Object result = session.save(assoc);
DirtySessionMethodInterceptor.flushSession(session);
return result;
try
{
Object result = session.save(assoc);
DirtySessionMethodInterceptor.flushSession(session, true);
return result;
}
catch (Throwable e)
{
ConstraintViolationException constraintViolation = (ConstraintViolationException) ExceptionStackUtil.getCause(
e,
DUPLICATE_CHILD_NAME_EXCEPTIONS);
if (constraintViolation == null)
{
// It was something else
RuntimeException ee = AlfrescoRuntimeException.makeRuntimeException(
e, "Exception while flushing child assoc to database");
throw ee;
}
else
{
throw constraintViolation;
}
}
}
catch (ConstraintViolationException e)
{