Merged V3.2 to HEAD

17332: ETHREEOH-2020: Original tag disappears after a new one has been added to a wiki page
   17711: Fix ETHREEOH-3720 - blocker (upgrade from 2.x)
   17712: Build/test fix (FeedCleanerTest.testConcurrentAccessAndRemoval)
   17726: DownloadContentServlet wraps call in read-only RetryingTransactionHelper
   17736: Fix ETHREEOH-2821 - deployment of layered file (fix for 3.2 deployment)
   17745: Fixed broken PostgreSQL (AVM, audit, etc) and Oracle (audit)
   17746: Merged V3.1 to V3.2
      17290: Merged V2.2 to V3.1
         17282: (record-only) Fix for ETWOTWO-1387: Node deletions transactions not properly detected ...
      17381: (record-only) Putting explicit version name on PDFRenderer.jar
      17413: (record-only) Removed dev from label
   17749: Type handler fixes for PostgreSQL: Use LONGVARBINARY
   17750: Fixed propval mappings for DB2
   17754: Fixed "invalid character" in Oracle port of propval
   17757: Re-added fix for ETHREEOH-2789 that got lost in a merge.
   17762: Fix FeedCleanerTest (for Oracle 10g) + exposed feed cleaner issue (maxSize)
   17765: Assorted minor build fixes for Oracle
   17767: Empty String property values are persisted as '.empty'
   17768: Merged DEV/BELARUS/V3.2-2009_11_24 to V3.2
      17758: ETHREEOH-3757: Oracle upgrade issue: failed "inviteEmailTemplate" patch
   17772: Fix build (JBPMEngineUnitTest) - fallout from r17765
   17774: Fix JSONtoFmModelTest
   17781: Build/test fix (AVMCrawlTestP)
   17791: Fix for ETHREEOH-3793: Oracle unit test failure for JobLockServiceTest - Missing unique indexes for all DB ports
   17795: ETHREEOH-3696: Attempt to navigate into any existent web-project or create new one after upgrade from Enterprise 2.1.7 ...
   17799: ETHREEOH-3796: org.alfresco.repo.importer.ImporterComponentTest fails
   17807: Fix ETHREEOH-3723 - MT blocker (can't restart)
   17816: Merged DEV/BELARUS/V3.2-2009_12_15 to V3.2
      17814: ETHREEOH-3808: Upgrade fails if content cm:name contains curly brackets ('{}')
   17822: Fix for ETHREEOH-3828: Mistake porting AlfrescoPostCreate-3.2-PropertyValueTables.sql script to mssql dialect
   17823: Fix for ETHREEOH-3829: SQLServer index limit reached for 'idx_alf_props_str'
   17831: Fix ETHREEOH-3818 - upgrade from Community 3.2r2 to Enterprise 3.2
   17862: Merged V3.1 to V3.2
      17722: Fix ETHREEOH-3643 - WCM layered folders (flatten) - also add unit test
      17835: ETHREEOH-3763 - fix for WCM layered folders - also add unit test
   17871: Merged V3.1 to V3.2
      17855: ACT 12915 - create web project performance (-> setPermission -> buildIndirections)
      17863: ETHREEOH-3852 - perf tweak (WCM layered files)
-------------------------------------
Modified: svn:mergeinfo
   Merged /alfresco/BRANCHES/DEV/BELARUS/V3.2-2009_11_24:r17758
   Merged /alfresco/BRANCHES/DEV/BELARUS/V3.2-2009_12_15:r17814
   Merged /alfresco/BRANCHES/V2.2:r17282
   Merged /alfresco/BRANCHES/V3.1:r17290,17381,17413,17722,17835,17855,17863
   Merged /alfresco/BRANCHES/V3.2:r17332,17711-17712,17726,17736,17745-17746,17749-17750,17754,17757,17762,17765,17767-17768,17772,17774,17781,17791,17795,17799,17807,17816,17822-17823,17831,17862,17871


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@18169 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Derek Hulley
2010-01-20 12:30:14 +00:00
parent 5e86299377
commit add74c1a59
50 changed files with 1160 additions and 293 deletions

View File

@@ -32,8 +32,10 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import org.alfresco.config.JNDIConstants;
import org.alfresco.repo.avm.AVMNodeConverter;
import org.alfresco.repo.avm.AVMRepository;
import org.alfresco.repo.avm.util.AVMUtil;
import org.alfresco.repo.domain.AccessControlListDAO;
import org.alfresco.repo.domain.DbAccessControlList;
import org.alfresco.repo.domain.PropertyValue;
@@ -60,6 +62,7 @@ import org.alfresco.service.cmr.repository.StoreRef;
import org.alfresco.service.namespace.QName;
import org.alfresco.util.EqualsHelper;
import org.springframework.extensions.surf.util.Pair;
import org.alfresco.wcm.util.WCMUtil;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -308,7 +311,9 @@ public class AVMAccessControlListDAO implements AccessControlListDAO
{
inherited = aclDaoComponent.getInheritedAccessControlList(after);
}
Map<Long, Set<Long>> indirections = buildIndirections();
AVMNodeDescriptor descriptor = getDesc(startingPoint);
Map<Long, Set<Long>> indirections = buildIndirections(descriptor);
updateChangedAclsImpl(startingPoint, changes, SetMode.ALL, inherited, after, indirections);
}
@@ -368,9 +373,46 @@ public class AVMAccessControlListDAO implements AccessControlListDAO
throw new InvalidNodeRefException(nodeRef);
}
}
private AVMNodeDescriptor getDesc(NodeRef node)
{
Pair<Integer, String> avmVersionPath = AVMNodeConverter.ToAVMVersionPath(node);
int version = avmVersionPath.getFirst();
if (version >= 0)
{
throw new InvalidNodeRefException("Read Only Node.", node);
}
String path = avmVersionPath.getSecond();
try
{
AVMNodeDescriptor descriptor = fAVMService.lookup(version, path);
return descriptor;
}
catch (AVMException e)
{
throw new InvalidNodeRefException(node);
}
}
private Map<Long, Set<Long>> buildIndirections(AVMNodeDescriptor desc)
{
if ((desc != null) && (desc.getVersionID() == 1))
{
String[] pathParts = AVMUtil.splitPath(desc.getPath());
if ((pathParts[1].equals(AVMUtil.AVM_PATH_SEPARATOR+JNDIConstants.DIR_DEFAULT_WWW)) && (WCMUtil.isStagingStore(pathParts[0])))
{
// WCM optimisation - skip when creating web project
return null;
}
}
return buildIndirections();
}
private Map<Long, Set<Long>> buildIndirections()
{
long start = System.currentTimeMillis();
Map<Long, Set<Long>> answer = new HashMap<Long, Set<Long>>();
List<Indirection> indirections = aclDaoComponent.getAvmIndirections();
@@ -389,7 +431,11 @@ public class AVMAccessControlListDAO implements AccessControlListDAO
referees.add(indirection.getFrom());
}
}
if (s_logger.isDebugEnabled())
{
s_logger.debug("buildIndirections: ("+indirections.size()+", "+answer.size()+") in "+(System.currentTimeMillis()-start)+" msecs");
}
return answer;
}
@@ -405,7 +451,7 @@ public class AVMAccessControlListDAO implements AccessControlListDAO
try
{
AVMNodeDescriptor descriptor = fAVMService.lookup(version, path);
if (descriptor == null)
if ((descriptor == null) || (indirections == null))
{
return;
}
@@ -613,9 +659,9 @@ public class AVMAccessControlListDAO implements AccessControlListDAO
String path = avmVersionPath.getSecond();
try
{
Map<Long, Set<Long>> indirections = buildIndirections();
List<AclChange> changes = new ArrayList<AclChange>();
AVMNodeDescriptor descriptor = fAVMService.lookup(version, path);
Map<Long, Set<Long>> indirections = buildIndirections(descriptor);
setFixedAcls(descriptor, inheritFrom, null, changes, SetMode.ALL, false, indirections);
return changes;