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

@@ -60,6 +60,7 @@ import org.alfresco.service.cmr.dictionary.PropertyDefinition;
import org.alfresco.service.cmr.repository.ContentData;
import org.alfresco.service.cmr.repository.ContentReader;
import org.alfresco.service.cmr.repository.ContentWriter;
import org.alfresco.service.cmr.repository.InvalidNodeRefException;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.security.PermissionService;
import org.alfresco.service.namespace.QName;
@@ -224,9 +225,14 @@ public class AVMStoreImpl implements AVMStore
AVMDAOs.Instance().fVersionRootDAO.update(lastVersion);
}
snapShotMap.put(getName(), lastVersion.getVersionID());
if (logger.isTraceEnabled())
{
logger.trace("createSnapshot: no snapshot required: "+me.getName()+(tag != null ? "("+tag+")" : "")+" [lastVersion = "+lastVersion.getVersionID()+"]");
}
return snapShotMap;
}
if (logger.isTraceEnabled())
{
logger.trace("createSnapshot: snapshot: "+me.getName()+" ["+me.getId()+"] - lastVersion="+lastVersion.getVersionID()+", layeredEntries="+layeredEntries.size());
@@ -260,20 +266,9 @@ public class AVMStoreImpl implements AVMStore
else if (lookup.getCurrentNode().getType() == AVMNodeType.LAYERED_FILE)
{
String parentName[] = AVMUtil.splitBase(entry.getPath());
parentName[0] = parentName[0].substring(parentName[0].indexOf(':') + 1);
AVMNode child = lookup.getCurrentNode();
DirectoryNode parent = lookup.getCurrentNodeDirectory();
lookup = me.lookupDirectory(-1, parentName[0], true);
DirectoryNode parent = (DirectoryNode)lookup.getCurrentNode();
Pair<AVMNode, Boolean> temp = parent.lookupChild(lookup, parentName[1], false);
AVMNode child = temp.getFirst();
if (child == null)
{
throw new AVMException("Unexpected: missing child: "+entry.getPath());
}
lookup.add(child, parentName[1], temp.getSecond(), false);
AVMNode newChild = ((LayeredFileNode)child).copyLiterally(lookup);
newChild.setAncestor(child);
parent.putChild(parentName[1], newChild);
@@ -307,6 +302,12 @@ public class AVMStoreImpl implements AVMStore
parent.putChild(parentName[1], newChild);
*/
}
if (logger.isTraceEnabled())
{
logger.trace("createSnapshot: force copy: "+me.getName()+(tag != null ? "("+tag+")" : "")+" [lastVersion="+lastVersion.getVersionID()+", layeredEntriesCnt="+layeredEntries.size()+"] in " + (System.currentTimeMillis() - start) + " msecs");
}
// Clear out the new nodes.
List<Long> allLayeredNodeIDs = AVMDAOs.Instance().fAVMNodeDAO.getNewLayeredInStoreIDs(me);
@@ -366,9 +367,10 @@ public class AVMStoreImpl implements AVMStore
AVMDAOs.Instance().fAVMStoreDAO.update(me);
AVMDAOs.Instance().fVersionRootDAO.save(versionRoot);
int vlneCnt = 0;
AVMDAOs.Instance().fVersionRootDAO.save(versionRoot);
for (Long nodeID : layeredNodeIDs)
{
AVMNode node = AVMDAOs.Instance().fAVMNodeDAO.getByID(nodeID);
@@ -383,14 +385,9 @@ public class AVMStoreImpl implements AVMStore
vlneCnt = vlneCnt+paths.size();
}
if (logger.isTraceEnabled())
{
logger.trace("createSnapshot: snapshot: "+me.getName()+" ["+me.getId()+"] - created new version root ["+versionRoot.getId()+"] - layeredNodeIDs="+layeredNodeIDs.size()+", versionLayeredNodeEntries="+vlneCnt);
}
if (logger.isDebugEnabled())
{
logger.debug("createSnapshot: snapshot: "+me.getName()+" ["+me.getId()+"] in "+(System.currentTimeMillis()-start)+" msecs");
logger.debug("Raw snapshot: "+me.getName()+(tag != null ? "("+tag+")" : "")+" [versionRootId="+versionRoot.getId()+", layeredNodeIDsCnt="+layeredNodeIDs.size()+", versionLayeredNodeEntriesCnt="+vlneCnt+"] in " + (System.currentTimeMillis() - start) + " msecs");
}
return snapShotMap;
@@ -703,8 +700,15 @@ public class AVMStoreImpl implements AVMStore
*/
public ContentReader getContentReader(int version, String path)
{
NodeRef nodeRef = AVMNodeConverter.ToNodeRef(version, getName() + ":" + path);
return RawServices.Instance().getContentService().getReader(nodeRef, ContentModel.PROP_CONTENT);
try
{
NodeRef nodeRef = AVMNodeConverter.ToNodeRef(version, getName() + ":" + path);
return RawServices.Instance().getContentService().getReader(nodeRef, ContentModel.PROP_CONTENT);
}
catch (InvalidNodeRefException inre)
{
throw new AVMNotFoundException("Path " + path + " not found.");
}
}
/**
@@ -714,10 +718,17 @@ public class AVMStoreImpl implements AVMStore
*/
public ContentWriter createContentWriter(String path)
{
NodeRef nodeRef = AVMNodeConverter.ToNodeRef(-1, getName() + ":" + path);
ContentWriter writer =
RawServices.Instance().getContentService().getWriter(nodeRef, ContentModel.PROP_CONTENT, true);
return writer;
try
{
NodeRef nodeRef = AVMNodeConverter.ToNodeRef(-1, getName() + ":" + path);
ContentWriter writer =
RawServices.Instance().getContentService().getWriter(nodeRef, ContentModel.PROP_CONTENT, true);
return writer;
}
catch (InvalidNodeRefException inre)
{
throw new AVMNotFoundException("Path " + path + " not found.");
}
}
/**
@@ -1776,6 +1787,34 @@ public class AVMStoreImpl implements AVMStore
Lookup lPath = lookupDirectory(-1, parentPath, true);
if (lPath == null)
{
String pathParts[] = AVMUtil.splitBase(parentPath);
Lookup lPath2 = lookup(-1, pathParts[0], true, false);
if (lPath2 != null)
{
DirectoryNode parent = (DirectoryNode)lPath2.getCurrentNode();
Pair<AVMNode, Boolean> temp = parent.lookupChild(lPath2, pathParts[1], false);
if ((temp != null) && (temp.getFirst() != null))
{
DirectoryNode dir = (DirectoryNode)temp.getFirst();
if (logger.isDebugEnabled())
{
logger.debug("Found: "+dir);
}
boolean directlyContained = false;
if (!fAVMRepository.can(null, dir, PermissionService.ADD_CHILDREN, directlyContained))
{
throw new AccessDeniedException("Not allowed to add children: " + parentPath);
}
AVMNodeDescriptor desc = fAVMRepository.forceCopy(AVMUtil.buildAVMPath(this.getName(), parentPath));
fAVMRepository.link(desc, name, toLink);
return;
}
}
throw new AVMNotFoundException("Path " + parentPath + " not found.");
}
DirectoryNode dir = (DirectoryNode)lPath.getCurrentNode();
@@ -1933,4 +1972,11 @@ public class AVMStoreImpl implements AVMStore
AVMDAOs.Instance().fAVMNodeDAO.update(file);
}
// for debug
@Override
public String toString()
{
return getName();
}
}