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

@@ -878,6 +878,9 @@ public class AVMServiceLocalTest extends TestCase
// Flatten.
fSyncService.flatten("main:/layer", "main:/a");
recursiveList("main");
// Compare again.
diffs = fSyncService.compare(-1, "main:/layer", -1, "main:/a", null);
assertEquals(0, diffs.size());
}
catch (Exception e)
{
@@ -1156,7 +1159,7 @@ public class AVMServiceLocalTest extends TestCase
recursiveContents("main:/");
fService.createFile("layer:/a/b/z", "fudge").close();
fService.rename("layer:/a/b", "z", "layer:/a/b", "y");
recursiveContents("layer:/");
recursiveContents("layer:/");
diffs = fSyncService.compare(-1, "layer:/a", -1, "main:/a", null);
assertEquals(2, diffs.size());
assertEquals("[layer:/a/b/y[-1] > main:/a/b/y[-1], layer:/a/b/z[-1] > main:/a/b/z[-1]]", diffs.toString());
@@ -1898,10 +1901,6 @@ public class AVMServiceLocalTest extends TestCase
fService.createStore("mainB--layer");
recursiveList("mainA");
recursiveList("mainB");
recursiveList("mainB--layer");
List<VersionDescriptor> snapshots = fService.getStoreVersions("mainA");
assertEquals(1, snapshots.size());
assertEquals(0, snapshots.get(0).getVersionID());
@@ -1925,19 +1924,11 @@ public class AVMServiceLocalTest extends TestCase
logger.debug("created file: mainA:/a/b/foo");
recursiveList("mainA");
recursiveList("mainB");
recursiveList("mainB--layer");
// create equivalent of WCM layered folder between web project staging sandboxes (mainB:/a/b pointing to mainA:/a/b)
fService.createLayeredDirectory("mainA:/a/b", "mainB:/a", "b");
logger.debug("created layered directory: mainB:/a/b -> mainA:/a/b");
recursiveList("mainA");
recursiveList("mainB");
recursiveList("mainB--layer");
fService.createFile("mainB--layer:/a/b", "bar");
out = new PrintStream(fService.getFileOutputStream("mainB--layer:/a/b/bar"));
@@ -1946,10 +1937,6 @@ public class AVMServiceLocalTest extends TestCase
logger.debug("created file: mainB--layer:/a/b/bar");
recursiveList("mainA");
recursiveList("mainB");
recursiveList("mainB--layer");
List<AVMDifference> diffs = fSyncService.compare(-1, "mainB--layer:/a", -1, "mainB:/a", null);
assertEquals(1, diffs.size());
assertEquals("[mainB--layer:/a/b/bar[-1] > mainB:/a/b/bar[-1]]", diffs.toString());
@@ -1966,10 +1953,6 @@ public class AVMServiceLocalTest extends TestCase
logger.debug("updated: created file: mainB:/a/b/bar");
recursiveList("mainA");
recursiveList("mainB");
recursiveList("mainB--layer");
snapshots = fService.getStoreVersions("mainB");
assertEquals(3, snapshots.size());
assertEquals(2, snapshots.get(snapshots.size()-1).getVersionID());
@@ -1983,18 +1966,10 @@ public class AVMServiceLocalTest extends TestCase
logger.debug("created file: mainA:/a/b/baz");
recursiveList("mainA");
recursiveList("mainB");
recursiveList("mainB--layer");
fService.createSnapshot("mainB", "two", "two");
logger.debug("snapshot: mainB");
recursiveList("mainA");
recursiveList("mainB");
recursiveList("mainB--layer");
snapshots = fService.getStoreVersions("mainB");
assertEquals(4, snapshots.size());
assertEquals(3, snapshots.get(snapshots.size()-1).getVersionID());
@@ -2004,10 +1979,6 @@ public class AVMServiceLocalTest extends TestCase
assertEquals(1, diffs.size());
assertEquals("[mainB:/a/b/baz[2] < mainB:/a/b/baz[3]]", diffs.toString());
recursiveList("mainA");
recursiveList("mainB");
recursiveList("mainB--layer");
logger.debug("list mainB [2]");
recursiveList("mainB", 2);
@@ -2015,6 +1986,10 @@ public class AVMServiceLocalTest extends TestCase
logger.debug("list mainB [3]");
recursiveList("mainB", 3);
recursiveList("mainA");
recursiveList("mainB");
recursiveList("mainB--layer");
}
catch (Exception e)
{
@@ -2029,6 +2004,222 @@ public class AVMServiceLocalTest extends TestCase
}
}
public void testLayeredFolder3() throws Exception
{
try
{
fService.createStore("mainA");
fService.createStore("mainB");
fService.createStore("mainB--layer");
logger.debug("created stores: mainA, mainB and mainB--layer");
fService.createDirectory("mainA:/", "a");
fService.createDirectory("mainA:/a", "b");
fService.createDirectory("mainB:/", "a");
logger.debug("created directories: mainA:/a/b and mainB:/a");
fService.createLayeredDirectory("mainB:/a", "mainB--layer:/", "a");
logger.debug("created layered directory: mainB--layer:/a -> mainB:/a");
// create equivalent of WCM layered folder between web project staging sandboxes (mainB:/a/b pointing to mainA:/a/b)
fService.createLayeredDirectory("mainA:/a/b", "mainB:/a", "b");
logger.debug("created layered directory: mainB:/a/b -> mainA:/a/b");
fService.createDirectory("mainB--layer:/a/b", "c");
logger.debug("created directory: mainB--layer:/a/b/c");
fService.createFile("mainB--layer:/a/b/c", "foo");
PrintStream out = new PrintStream(fService.getFileOutputStream("mainB--layer:/a/b/c/foo"));
out.println("I am mainB--layer:/a/b/c/foo");
out.close();
logger.debug("created file: mainB--layer:/a/b/c/foo");
List<AVMDifference> diffs = fSyncService.compare(-1, "mainB--layer:/a", -1, "mainB:/a", null);
assertEquals(1, diffs.size());
assertEquals("[mainB--layer:/a/b/c[-1] > mainB:/a/b/c[-1]]", diffs.toString());
fSyncService.update(diffs, null, false, false, false, false, "one", "one");
logger.debug("updated: mainB--layer:/a/b/c (including 'foo') to mainB:/a/b/c");
diffs = fSyncService.compare(-1, "mainB--layer:/a", -1, "mainB:/a", null);
assertEquals(0, diffs.size());
diffs = fSyncService.compare(-1, "mainB:/a", -1, "mainA:/a", null);
assertEquals(1, diffs.size());
assertEquals("[mainB:/a/b/c[-1] > mainA:/a/b/c[-1]]", diffs.toString());
fSyncService.flatten("mainB--layer:/a", "mainB:/a");
logger.debug("flattened: mainB--layer:/a to mainB:/a");
diffs = fSyncService.compare(-1, "mainB--layer:/a", -1, "mainB:/a", null);
assertEquals(0, diffs.size());
diffs = fSyncService.compare(-1, "mainB:/a", -1, "mainA:/a", null);
assertEquals(1, diffs.size());
assertEquals("[mainB:/a/b/c[-1] > mainA:/a/b/c[-1]]", diffs.toString());
// ETHREEOH-3643
out = new PrintStream(fService.getFileOutputStream("mainB--layer:/a/b/c/foo"));
out.println("I am mainB--layer:/a/b/c/foo V2");
out.close();
logger.debug("updated file: mainB--layer:/a/b/c/foo");
diffs = fSyncService.compare(-1, "mainB--layer:/a", -1, "mainB:/a", null);
assertEquals(1, diffs.size());
assertEquals("[mainB--layer:/a/b/c/foo[-1] > mainB:/a/b/c/foo[-1]]", diffs.toString());
logger.debug("updated: mainB:/a/b/c/foo");
diffs = fSyncService.compare(-1, "mainB--layer:/a", -1, "mainB:/a", null);
assertEquals(1, diffs.size());
assertEquals("[mainB--layer:/a/b/c/foo[-1] > mainB:/a/b/c/foo[-1]]", diffs.toString());
fSyncService.update(diffs, null, false, false, false, false, "two", "two");
logger.debug("updated: mainB--layer:/a/b/c/foo to mainB:/a/b/c/foo");
fSyncService.flatten("mainB--layer:/a", "mainB:/a");
logger.debug("flattened: mainB--layer:/a to mainB:/a");
diffs = fSyncService.compare(-1, "mainB--layer:/a", -1, "mainB:/a", null);
assertEquals(0, diffs.size());
recursiveList("mainA");
recursiveList("mainB");
recursiveList("mainB--layer");
}
catch (Exception e)
{
e.printStackTrace(System.err);
throw e;
}
finally
{
fService.purgeStore("mainA");
fService.purgeStore("mainB");
fService.purgeStore("mainB--layer");
}
}
public void testLayeredFolder4() throws Exception
{
try
{
fService.createStore("mainA");
fService.createStore("mainB");
fService.createStore("mainB--layer");
logger.debug("created stores: mainA, mainB and mainB--layer");
fService.createDirectory("mainA:/", "a");
fService.createDirectory("mainA:/a", "b");
fService.createDirectory("mainA:/a/b", "c");
fService.createDirectory("mainB:/", "a");
logger.debug("created directories: mainA:/a/b/c and mainB:/a");
fService.createLayeredDirectory("mainB:/a", "mainB--layer:/", "a");
logger.debug("created layered directory: mainB--layer:/a -> mainB:/a");
// create equivalent of WCM layered folder between web project staging sandboxes (mainB:/a/b pointing to mainA:/a/b)
fService.createLayeredDirectory("mainA:/a/b", "mainB:/a", "b");
logger.debug("created layered directory: mainB:/a/b -> mainA:/a/b");
fService.createDirectory("mainB--layer:/a/b/c", "d");
logger.debug("created directory: mainB--layer:/a/b/c/d");
List<AVMDifference> diffs = fSyncService.compare(-1, "mainB--layer:/a", -1, "mainB:/a", null);
assertEquals(1, diffs.size());
assertEquals("[mainB--layer:/a/b/c/d[-1] > mainB:/a/b/c/d[-1]]", diffs.toString());
fSyncService.update(diffs, null, false, false, false, false, "one", "one");
logger.debug("updated: mainB--layer:/a/b/c/d to mainB:/a/b/c/d");
fSyncService.flatten("mainB--layer:/a", "mainB:/a");
logger.debug("flattened: mainB--layer:/a to mainB:/a");
fService.createFile("mainB--layer:/a/b/c/d", "foo");
PrintStream out = new PrintStream(fService.getFileOutputStream("mainB--layer:/a/b/c/d/foo"));
out.println("I am mainB--layer:/a/b/c/d/foo");
out.close();
logger.debug("created file: mainB--layer:/a/b/c/foo");
fService.createStore("mainB--workflow1");
logger.debug("created store: mainB--workflow1");
fService.createLayeredDirectory("mainB:/a", "mainB--workflow1:/", "a");
logger.debug("created layered dir: mainB--workflow1:/a -> mainB:/a");
diffs = fSyncService.compare(-1, "mainB--workflow1:/a", -1, "mainB:/a", null);
assertEquals(0, diffs.size());
diffs = new ArrayList<AVMDifference>(1);
diffs.add(new AVMDifference(-1, "mainB--layer:/a/b/c/d/foo", -1, "mainB--workflow1:/a/b/c/d/foo", AVMDifference.NEWER));
assertNotNull(fService.lookup(-1, "mainB--workflow1:/a/b/c/d"));
// ETHREEOH-3763
fSyncService.update(diffs, null, false, false, false, false, null, null);
logger.debug("updated: added file: mainB--workflow1:/a/b/c/d/foo");
diffs = fSyncService.compare(-1, "mainB--layer:/a", -1, "mainB:/a", null);
assertEquals("[mainB--layer:/a/b/c/d/foo[-1] > mainB:/a/b/c/d/foo[-1]]", diffs.toString());
diffs = fSyncService.compare(-1, "mainB--workflow1:/a", -1, "mainB:/a", null);
assertEquals("[mainB--workflow1:/a/b/c/d/foo[-1] > mainB:/a/b/c/d/foo[-1]]", diffs.toString());
fSyncService.update(diffs, null, false, false, true, true, "two", "two");
fSyncService.flatten("mainB--workflow1:/a", "mainB:/a");
logger.debug("updated & flattened: added file: mainB:/a/b/c/d/foo");
diffs = fSyncService.compare(-1, "mainB--workflow1:/a", -1, "mainB:/a", null);
assertEquals(0, diffs.size());
diffs = fSyncService.compare(-1, "mainB--workflow1:/a", -1, "mainB--layer:/a", null);
assertEquals(0, diffs.size());
fService.purgeStore("mainB--workflow1");
recursiveList("mainA");
recursiveList("mainB");
recursiveList("mainB--layer");
}
catch (Exception e)
{
e.printStackTrace(System.err);
throw e;
}
finally
{
fService.purgeStore("mainA");
fService.purgeStore("mainB");
fService.purgeStore("mainB--layer");
if (fService.getStore("mainB--workflow1") != null) { fService.purgeStore("mainB--workflow1"); }
}
}
public void testLayeredFolderDelete1() throws Exception
{
try