diff --git a/source/test-java/org/alfresco/Repository01TestSuite.java b/source/test-java/org/alfresco/Repository01TestSuite.java
index ab3e29d016..387130018c 100644
--- a/source/test-java/org/alfresco/Repository01TestSuite.java
+++ b/source/test-java/org/alfresco/Repository01TestSuite.java
@@ -116,11 +116,6 @@ public class Repository01TestSuite extends TestSuite
suite.addTest(org.alfresco.repo.audit.AuditTestSuite.suite());
}
- static void tests12(TestSuite suite)
- {
- suite.addTest(org.alfresco.repo.avm.AVMTestSuite.suite());
- }
-
static void tests13(TestSuite suite)
{
suite.addTest(new JUnit4TestAdapter(org.alfresco.repo.blog.BlogServiceImplTest.class));
@@ -156,16 +151,6 @@ public class Repository01TestSuite extends TestSuite
suite.addTestSuite(org.alfresco.repo.copy.CopyServiceImplTest.class);
}
- static void tests19(TestSuite suite) // fails if not on own - tests="3" time="5.6"
- {
- suite.addTestSuite(org.alfresco.repo.deploy.ASRDeploymentTest.class);
- }
-
- static void tests20(TestSuite suite) // fails if not on own - tests="9" time="170.012"
- {
- suite.addTestSuite(org.alfresco.repo.deploy.DeploymentServiceImplFSTest.class);
- }
-
static void tests21(TestSuite suite)
{
suite.addTestSuite(org.alfresco.repo.descriptor.DescriptorServiceTest.class);
@@ -264,7 +249,6 @@ public class Repository01TestSuite extends TestSuite
static void tests36(TestSuite suite) // Fails with previous tests
{
suite.addTestSuite(org.alfresco.repo.node.getchildren.GetChildrenCannedQueryTest.class);
- suite.addTestSuite(org.alfresco.repo.node.index.AVMRemoteSnapshotTrackerTest.class);
suite.addTestSuite(org.alfresco.repo.node.index.FullIndexRecoveryComponentTest.class);
suite.addTestSuite(org.alfresco.repo.node.index.IndexTransactionTrackerTest.class);
}
@@ -372,11 +356,6 @@ public class Repository01TestSuite extends TestSuite
suite.addTestSuite(org.alfresco.repo.tagging.TaggingServiceImplTest.class);
}
- static void tests54(TestSuite suite)
- {
- suite.addTestSuite(org.alfresco.repo.template.AVMTemplateNodeTest.class);
- }
-
static void tests55(TestSuite suite)
{
suite.addTestSuite(org.alfresco.repo.template.TemplateServiceImplTest.class);
diff --git a/source/test-java/org/alfresco/Repository12TestSuite.java b/source/test-java/org/alfresco/Repository12TestSuite.java
deleted file mode 100644
index d6902cf5de..0000000000
--- a/source/test-java/org/alfresco/Repository12TestSuite.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2005-2014 Alfresco Software Limited.
- *
- * This file is part of Alfresco
- *
- * Alfresco is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Alfresco is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Alfresco. If not, see .
- */
-package org.alfresco;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * See {@link RepositoryMisc01TestSuite}
- *
- * @Author Alan Davis
- */
-public class Repository12TestSuite extends TestSuite
-{
- public static Test suite()
- {
- TestSuite suite = new TestSuite();
- Repository01TestSuite.tests12(suite);
- return suite;
- }
-}
diff --git a/source/test-java/org/alfresco/Repository19TestSuite.java b/source/test-java/org/alfresco/Repository19TestSuite.java
deleted file mode 100644
index 6c2f5ea877..0000000000
--- a/source/test-java/org/alfresco/Repository19TestSuite.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2005-2014 Alfresco Software Limited.
- *
- * This file is part of Alfresco
- *
- * Alfresco is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Alfresco is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Alfresco. If not, see .
- */
-package org.alfresco;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * See {@link RepositoryMisc01TestSuite}
- *
- * @Author Alan Davis
- */
-public class Repository19TestSuite extends TestSuite
-{
- public static Test suite()
- {
- TestSuite suite = new TestSuite();
- Repository01TestSuite.tests19(suite);
- return suite;
- }
-}
diff --git a/source/test-java/org/alfresco/Repository20TestSuite.java b/source/test-java/org/alfresco/Repository20TestSuite.java
deleted file mode 100644
index 86bfb64e39..0000000000
--- a/source/test-java/org/alfresco/Repository20TestSuite.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2005-2014 Alfresco Software Limited.
- *
- * This file is part of Alfresco
- *
- * Alfresco is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Alfresco is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Alfresco. If not, see .
- */
-package org.alfresco;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * See {@link RepositoryMisc01TestSuite}
- *
- * @Author Alan Davis
- */
-public class Repository20TestSuite extends TestSuite
-{
- public static Test suite()
- {
- TestSuite suite = new TestSuite();
- Repository01TestSuite.tests20(suite);
- return suite;
- }
-}
diff --git a/source/test-java/org/alfresco/Repository54TestSuite.java b/source/test-java/org/alfresco/Repository54TestSuite.java
deleted file mode 100644
index bc201b79d2..0000000000
--- a/source/test-java/org/alfresco/Repository54TestSuite.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2005-2014 Alfresco Software Limited.
- *
- * This file is part of Alfresco
- *
- * Alfresco is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Alfresco is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Alfresco. If not, see .
- */
-package org.alfresco;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * See {@link RepositoryMisc01TestSuite}
- *
- * @Author Alan Davis
- */
-public class Repository54TestSuite extends TestSuite
-{
- public static Test suite()
- {
- TestSuite suite = new TestSuite();
- Repository01TestSuite.tests54(suite);
- return suite;
- }
-}
diff --git a/source/test-java/org/alfresco/repo/avm/AVMChildNamePatternMatchPerformanceTest.java b/source/test-java/org/alfresco/repo/avm/AVMChildNamePatternMatchPerformanceTest.java
deleted file mode 100644
index 900acaebcf..0000000000
--- a/source/test-java/org/alfresco/repo/avm/AVMChildNamePatternMatchPerformanceTest.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2005-2010 Alfresco Software Limited.
- *
- * This file is part of Alfresco
- *
- * Alfresco is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Alfresco is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Alfresco. If not, see .
- */
-package org.alfresco.repo.avm;
-
-import java.util.SortedMap;
-
-import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
-import org.alfresco.service.cmr.avm.AVMNodeDescriptor;
-import org.alfresco.test_category.LegacyCategory;
-import org.alfresco.util.GUID;
-import org.junit.experimental.categories.Category;
-
-@Category(LegacyCategory.class)
-public class AVMChildNamePatternMatchPerformanceTest extends AVMServiceTestBase
-{
-
- public void test_1000() throws Exception
- {
- fTransactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback()
- {
-
- public Object execute() throws Throwable
- {
- try
- {
- fService.createStore("StagingArea");
- fService.createStore("SandBox");
-
- fService.createDirectory("StagingArea:/", "www");
- fService.createLayeredDirectory("StagingArea:/www", "SandBox:/", "www");
-
- for (int i = 0; i < 500; i++)
- {
- String name = GUID.generate();
- if (i % 100 == 0)
- {
- name = "A" + name;
- }
- if(name.startsWith("a"))
- {
- name = "G"+name;
- }
- fService.createFile("SandBox:/www", name).close();
- }
- System.out.println("Create SandBox:/www");
-
-
- for (int i = 0; i < 500; i++)
- {
- String name = GUID.generate();
- if (i % 100 == 0)
- {
- name = "A" + name;
- }
- if(name.startsWith("a"))
- {
- name = "G"+name;
- }
- fService.createFile("StagingArea:/www", name).close();
- }
- System.out.println("Create StagingArea:/www");
-
- long start = System.nanoTime();
- AVMNodeDescriptor dir = fService.lookup(-1, "SandBox:/www");
- SortedMap result = fService.getDirectoryListing(dir, "A*");
- assertEquals(10, result.size());
- long end = System.nanoTime();
- System.out.println("Pattern in " + ((end - start) / 1000000000.0f));
- }
- finally
- {
- fService.purgeStore("StagingArea");
- fService.purgeStore("SandBox");
- }
- return null;
- }
- });
-
- }
-}
diff --git a/source/test-java/org/alfresco/repo/avm/AVMCrawlTestP.java b/source/test-java/org/alfresco/repo/avm/AVMCrawlTestP.java
deleted file mode 100644
index 07e3e5aad6..0000000000
--- a/source/test-java/org/alfresco/repo/avm/AVMCrawlTestP.java
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- * Copyright (C) 2005-2010 Alfresco Software Limited.
- *
- * This file is part of Alfresco
- *
- * Alfresco is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Alfresco is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Alfresco. If not, see . */
-
-package org.alfresco.repo.avm;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import net.sf.acegisecurity.Authentication;
-
-import org.alfresco.repo.avm.util.BulkLoader;
-import org.alfresco.repo.security.authentication.AuthenticationUtil;
-import org.alfresco.test_category.LegacyCategory;
-import org.junit.experimental.categories.Category;
-
-
-/**
- * Another performance test that runs simultaneous crawlers that
- * do operations with locality of reference.
- * @author britt
- */
-@Category(LegacyCategory.class)
-public class AVMCrawlTestP extends AVMServiceTestBase
-{
- /*
- public void xtestCrawlA()
- {
- testCrawl(1,
- getSourceFolder() + "/org/alfresco/repo/avm/actions", // relative from .../repository
- 1,
- 30000); // 30 secs
- }
- */
-
- public void testCrawlB()
- {
- testCrawl(2,
- getSourceFolder() + "/org/alfresco/repo/avm/actions", // relative from .../repository
- 2,
- 30000); // 30 secs
- }
-
- /*
- public void xtestCrawlC()
- {
- testCrawl(10,
- getSourceFolder() + "/org/alfresco/repo/avm", // relative from .../repository
- 2,
- 60000); // 1 min
- }
- */
-
- /*
- public void xtestCrawlZ()
- {
- testCrawl(8,
- "source", // relative from .../repository
- 2,
- 28800000); // 8 hours
- }
- */
-
- /**
- * Do the crawl test
- *
- * @param n Number of threads
- * @param fsPath The path in the filesystem to load (tree of stuff) from
- * @param m How many multiples of content to start with
- * @param runTime Min run time (in msecs)
- */
- private void testCrawl(int n, String fsPath, int m, long runTime)
- {
- try
- {
- Authentication authentication = AuthenticationUtil.setFullyAuthenticatedUser(AuthenticationUtil.SYSTEM_USER_NAME);
- try
- {
- if (m < 1)
- {
- fail("Must have at least one 1 copy of content");
- }
-
- BulkLoader loader = new BulkLoader();
- loader.setAvmService(fService);
- for (int i = 0; i < m; i++)
- {
- fService.createStore("d" + i);
- loader.recursiveLoad(fsPath, "d" + i + ":/");
- fService.createSnapshot("d" + i, null, null);
- }
- long startTime = System.currentTimeMillis();
- List crawlers = new ArrayList();
- List threads = new ArrayList();
- for (int i = 0; i < n; i++)
- {
- crawlers.add(new AVMCrawler(fService, authentication));
- threads.add(new Thread(crawlers.get(i)));
- threads.get(i).start();
- }
- while (true)
- {
- try
- {
- Thread.sleep(5000);
- // Check that none of the crawlers has errored out.
- for (AVMCrawler crawler : crawlers)
- {
- if (crawler.getError())
- {
- for (AVMCrawler craw : crawlers)
- {
- craw.setDone();
- }
- for (Thread thread : threads)
- {
- try
- {
- thread.join();
- }
- catch (InterruptedException ie)
- {
- // Do nothing.
- }
- }
- //fail();
- System.err.println("Crawler error");
- }
- }
- }
- catch (InterruptedException ie)
- {
- // Do nothing.
- }
- long now = System.currentTimeMillis();
- if (now - startTime > runTime)
- {
- break;
- }
- }
- for (AVMCrawler crawler : crawlers)
- {
- crawler.setDone();
- }
- for (Thread thread : threads)
- {
- try
- {
- thread.join();
- }
- catch (InterruptedException ie)
- {
- // Do nothing.
- }
- }
- long ops = 0L;
- int errorCnt = 0;
- for (AVMCrawler crawler : crawlers)
- {
- ops += crawler.getOpCount();
- errorCnt += (crawler.getError() ? 1 : 0);
- }
-
- long time = System.currentTimeMillis() - startTime;
- System.out.println("Ops/Sec: " + (ops * 1000L / time));
-
- if (errorCnt > 0)
- {
- StringBuffer errorStack = new StringBuffer();
- errorStack.append("Crawler errors: ").append(errorCnt).append(" out of ").append(crawlers.size()).append(" are in error state");
-
- for (AVMCrawler crawler : crawlers)
- {
- if (crawler.getError())
- {
- errorStack.append("\n\n").append(crawler.getErrorStackTrace());
- }
- }
-
- fail(errorStack.toString());
- }
- }
- finally
- {
- for (int i = 0; i < m; i++)
- {
- if (fService.getStore("d" + i) != null)
- {
- fService.purgeStore("d" + i);
- }
- }
- }
- }
- finally
- {
- AuthenticationUtil.clearCurrentSecurityContext();
- }
- }
-}
diff --git a/source/test-java/org/alfresco/repo/avm/AVMDeploymentAttemptCleanerTest.java b/source/test-java/org/alfresco/repo/avm/AVMDeploymentAttemptCleanerTest.java
deleted file mode 100644
index 6b696b2676..0000000000
--- a/source/test-java/org/alfresco/repo/avm/AVMDeploymentAttemptCleanerTest.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2005-2010 Alfresco Software Limited.
- *
- * This file is part of Alfresco
- *
- * Alfresco is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Alfresco is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Alfresco. If not, see .
- */
-package org.alfresco.repo.avm;
-
-
-import junit.framework.TestCase;
-
-import org.alfresco.repo.importer.ImporterBootstrap;
-import org.alfresco.service.ServiceRegistry;
-import org.alfresco.service.cmr.repository.NodeService;
-import org.alfresco.service.cmr.search.SearchService;
-import org.alfresco.service.transaction.TransactionService;
-import org.alfresco.test_category.LegacyCategory;
-import org.junit.experimental.categories.Category;
-import org.springframework.context.ApplicationContext;
-
-/**
- * @see org.alfresco.repo.avm.AVMDeploymentAttemptCleaner
- *
- * @author gavinc
- */
-@Category(LegacyCategory.class)
-public class AVMDeploymentAttemptCleanerTest extends TestCase
-{
- private static ApplicationContext ctx = AVMTestSuite.getContext();
-
- private AVMDeploymentAttemptCleaner cleaner;
-
- @Override
- public void setUp() throws Exception
- {
- ServiceRegistry serviceRegistry = (ServiceRegistry) ctx.getBean("ServiceRegistry");
- ImporterBootstrap importerBootstrap = (ImporterBootstrap)ctx.getBean("spacesBootstrap");
- NodeService nodeService = serviceRegistry.getNodeService();
- SearchService searchService = serviceRegistry.getSearchService();
- TransactionService transactionService = serviceRegistry.getTransactionService();
- this.cleaner = new AVMDeploymentAttemptCleaner();
- this.cleaner.setNodeService(nodeService);
- this.cleaner.setSearchService(searchService);
- this.cleaner.setTransactionService(transactionService);
- this.cleaner.setImporterBootstrap(importerBootstrap);
-// this.cleaner.setMaxAge(30);
- }
-
- public void testProcessor() throws Exception
- {
- this.cleaner.execute();
- }
-}
diff --git a/source/test-java/org/alfresco/repo/avm/AVMDiffPerformanceTest.java b/source/test-java/org/alfresco/repo/avm/AVMDiffPerformanceTest.java
deleted file mode 100644
index 406a60219d..0000000000
--- a/source/test-java/org/alfresco/repo/avm/AVMDiffPerformanceTest.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright (C) 2005-2010 Alfresco Software Limited.
- *
- * This file is part of Alfresco
- *
- * Alfresco is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Alfresco is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Alfresco. If not, see . */
-
-package org.alfresco.repo.avm;
-
-import java.util.List;
-
-import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
-import org.alfresco.service.cmr.avmsync.AVMDifference;
-import org.alfresco.test_category.LegacyCategory;
-import org.alfresco.util.GUID;
-import org.junit.experimental.categories.Category;
-
-@Category(LegacyCategory.class)
-public class AVMDiffPerformanceTest extends AVMServiceTestBase
-{
- public void testSetup() throws Exception
- {
- super.testSetup();
- }
-
- public void test_1000() throws Exception
- {
- runTest(1000);
- }
-
- public void xtest_2000() throws Exception
- {
- runTest(2000);
- }
-
- /*
- public void xtest_10000() throws Exception
- {
- runTest(10000);
- }
- */
-
- private void runTest(final int cnt) throws Exception
- {
- fTransactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() {
-
- public Object execute() throws Throwable
- {
- try
- {
- fService.createStore("StagingArea");
- fService.createStore("SandBox");
-
- fService.createDirectory("StagingArea:/", "www");
- fService.createDirectory("StagingArea:/www", "test");
- fService.createLayeredDirectory("StagingArea:/www", "SandBox:/", "www");
-
- long start = System.nanoTime();
- for(int i = 0; i < cnt; i++)
- {
- String name = GUID.generate();
- fService.createFile("SandBox:/www", name).close();
- }
- long end = System.nanoTime();
- System.out.println("Create SandBox:/www in "+( (end-start)/1000000000.0f));
-
- start = System.nanoTime();
- for(int i = 0; i < cnt; i++)
- {
- String name = GUID.generate();
- fService.createFile("SandBox:/www/test", name).close();
- }
- end = System.nanoTime();
- System.out.println("Create SandBox:/www/test in "+( (end-start)/1000000000.0f));
-
- start = System.nanoTime();
- for(int i = 0; i < cnt; i++)
- {
- String name = GUID.generate();
- fService.createFile("StagingArea:/www", name).close();
- }
- end = System.nanoTime();
- System.out.println("Create StagingArea:/www in "+( (end-start)/1000000000.0f));
-
- start = System.nanoTime();
- for(int i = 0; i < cnt; i++)
- {
- String name = GUID.generate();
- fService.createFile("StagingArea:/www/test", name).close();
- }
- end = System.nanoTime();
- System.out.println("Create StagingArea:/www/test in "+( (end-start)/1000000000.0f));
-
- start = System.nanoTime();
- List diffs = fSyncService.compare(-1, "SandBox:/www", -1, "StagingArea:/www", null);
- end = System.nanoTime();
- System.out.println("Diff in "+( (end-start)/1000000000.0f));
-
- assertEquals(cnt*2, diffs.size());
- }
- finally
- {
- fService.purgeStore("StagingArea");
- fService.purgeStore("SandBox");
- }
- return null;
- }});
-
- }
-}
\ No newline at end of file
diff --git a/source/test-java/org/alfresco/repo/avm/AVMExpiredContentTest.java b/source/test-java/org/alfresco/repo/avm/AVMExpiredContentTest.java
deleted file mode 100644
index f6357ca905..0000000000
--- a/source/test-java/org/alfresco/repo/avm/AVMExpiredContentTest.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) 2005-2010 Alfresco Software Limited.
- *
- * This file is part of Alfresco
- *
- * Alfresco is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Alfresco is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Alfresco. If not, see .
- */
-package org.alfresco.repo.avm;
-
-import junit.framework.TestCase;
-
-import org.alfresco.service.ServiceRegistry;
-import org.alfresco.service.cmr.avm.AVMService;
-import org.alfresco.service.cmr.avmsync.AVMSyncService;
-import org.alfresco.service.cmr.repository.NodeService;
-import org.alfresco.service.cmr.search.SearchService;
-import org.alfresco.service.cmr.security.PermissionService;
-import org.alfresco.service.cmr.security.PersonService;
-import org.alfresco.service.cmr.workflow.WorkflowService;
-import org.alfresco.service.transaction.TransactionService;
-import org.alfresco.test_category.LegacyCategory;
-import org.junit.experimental.categories.Category;
-import org.springframework.context.ApplicationContext;
-
-/**
- * @see org.alfresco.repo.avm.AVMEXpiredContentProcessor
- *
- * @author gavinc
- */
-@Category(LegacyCategory.class)
-public class AVMExpiredContentTest extends TestCase
-{
- private static ApplicationContext ctx = AVMTestSuite.getContext();
-
- private AVMExpiredContentProcessor processor;
-
- @Override
- public void setUp() throws Exception
- {
- ServiceRegistry serviceRegistry = (ServiceRegistry) ctx.getBean("ServiceRegistry");
- AVMService avmService = serviceRegistry.getAVMService();
- AVMSyncService avmSyncService = serviceRegistry.getAVMSyncService();
- NodeService nodeService = serviceRegistry.getNodeService();
- PermissionService permissionService = serviceRegistry.getPermissionService();
- PersonService personService = serviceRegistry.getPersonService();
- TransactionService transactionService = serviceRegistry.getTransactionService();
- WorkflowService workflowService = serviceRegistry.getWorkflowService();
- SearchService searchService = serviceRegistry.getSearchService();
-
- // construct the test processor
- this.processor = new AVMExpiredContentProcessor();
- this.processor.setAvmService(avmService);
- this.processor.setAvmSyncService(avmSyncService);
- this.processor.setNodeService(nodeService);
- this.processor.setPermissionService(permissionService);
- this.processor.setPersonService(personService);
- this.processor.setTransactionService(transactionService);
- this.processor.setWorkflowService(workflowService);
- this.processor.setSearchService(searchService);
- }
-
- public void testProcessor() throws Exception
- {
- this.processor.execute();
- }
-}
diff --git a/source/test-java/org/alfresco/repo/avm/AVMFileFolderPerformanceTester.java b/source/test-java/org/alfresco/repo/avm/AVMFileFolderPerformanceTester.java
deleted file mode 100644
index e2b8617d0c..0000000000
--- a/source/test-java/org/alfresco/repo/avm/AVMFileFolderPerformanceTester.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2005-2010 Alfresco Software Limited.
- *
- * This file is part of Alfresco
- *
- * Alfresco is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Alfresco is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Alfresco. If not, see .
- */
-package org.alfresco.repo.avm;
-
-import org.alfresco.repo.model.filefolder.FileFolderPerformanceTester;
-import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
-import org.alfresco.service.cmr.repository.NodeRef;
-import org.alfresco.service.cmr.repository.NodeService;
-import org.alfresco.service.cmr.repository.StoreRef;
-import org.alfresco.test_category.LegacyCategory;
-import org.junit.experimental.categories.Category;
-
-/**
- * @see FileFolderPerformanceTester
- */
-@Category(LegacyCategory.class)
-public class AVMFileFolderPerformanceTester extends FileFolderPerformanceTester
-{
- @Override
- protected NodeService getNodeService()
- {
- // note: vanilla AVM stores are defined as indexed by default, hence
- // use "avmLockingAwareNodeService" for now (which, unlike "avmNodeService", is also indexing aware)
- // so that index is created when store is created (else config check will fail on restart)
- return (NodeService)ctx.getBean("avmLockingAwareNodeService");
- }
-
- protected NodeRef getOrCreateRootFolder()
- {
- RetryingTransactionCallback callback = new RetryingTransactionCallback()
- {
- public NodeRef execute() throws Throwable
- {
- String storeName = "AVMFileFolderPerformanceTester-"+System.currentTimeMillis();
- StoreRef storeRef = nodeService.createStore(StoreRef.PROTOCOL_AVM, storeName);
- return nodeService.getRootNode(storeRef);
- }
- };
- return retryingTransactionHelper.doInTransaction(callback);
- }
-}
diff --git a/source/test-java/org/alfresco/repo/avm/AVMNodeConverterTest.java b/source/test-java/org/alfresco/repo/avm/AVMNodeConverterTest.java
deleted file mode 100644
index 24ec1f5bad..0000000000
--- a/source/test-java/org/alfresco/repo/avm/AVMNodeConverterTest.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2005-2010 Alfresco Software Limited.
- *
- * This file is part of Alfresco
- *
- * Alfresco is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Alfresco is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Alfresco. If not, see . */
-
-package org.alfresco.repo.avm;
-
-import org.alfresco.service.cmr.repository.NodeRef;
-import org.alfresco.test_category.LegacyCategory;
-import org.alfresco.util.Pair;
-import org.junit.experimental.categories.Category;
-
-import junit.framework.TestCase;
-
-/**
- * Tester of the converter from NodeRef, StoreRef space to AVM space.
- * @author britt
- */
-@Category(LegacyCategory.class)
-public class AVMNodeConverterTest extends TestCase
-{
- /**
- * Test Going betwwen a NodeRef and a version, path pair.
- */
- public void testTranslate()
- {
- String avmPath = "main:/";
- int version = 2;
- NodeRef nodeRef = AVMNodeConverter.ToNodeRef(version, avmPath);
- System.out.println(nodeRef);
- Pair backOut = AVMNodeConverter.ToAVMVersionPath(nodeRef);
- assertEquals(2, backOut.getFirst().intValue());
- assertEquals(avmPath, backOut.getSecond());
- avmPath = "main:/fista/mista/wisticuff";
- version = -1;
- nodeRef = AVMNodeConverter.ToNodeRef(version, avmPath);
- System.out.println(nodeRef);
- backOut = AVMNodeConverter.ToAVMVersionPath(nodeRef);
- assertEquals(-1, backOut.getFirst().intValue());
- assertEquals(avmPath, backOut.getSecond());
- }
-}
diff --git a/source/test-java/org/alfresco/repo/avm/AVMScaleTestP.java b/source/test-java/org/alfresco/repo/avm/AVMScaleTestP.java
deleted file mode 100644
index 74d6b3ca77..0000000000
--- a/source/test-java/org/alfresco/repo/avm/AVMScaleTestP.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (C) 2005-2010 Alfresco Software Limited.
- *
- * This file is part of Alfresco
- *
- * Alfresco is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Alfresco is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Alfresco. If not, see .
- */
-
-package org.alfresco.repo.avm;
-
-import org.alfresco.repo.avm.util.BulkLoader;
-import org.alfresco.repo.avm.util.BulkReader;
-import org.alfresco.test_category.LegacyCategory;
-import org.junit.experimental.categories.Category;
-
-/**
- * Test of scaling out to large numbers of files.
- * @author britt
- */
-@Category(LegacyCategory.class)
-public class AVMScaleTestP extends AVMServiceTestBase
-{
- public void testScaleA()
- {
- testScaling(1,
- getSourceFolder() + "/org/alfresco/repo/avm/actions", // relative from .../repository
- 1);
- }
-
- public void testScaleB()
- {
- testScaling(2,
- getSourceFolder() + "/org/alfresco/repo/avm", // relative from .../repository
- 2);
- }
-
- /*
- public void xtestScaleZ()
- {
- testScaling(250,
- "/Users/britt/hibernate-3.1",
- 10);
- }
- */
-
- /**
- * Do the scale test
- *
- * @param n Number of bulkloads to do
- * @param fsPath The path in the filesystem to load (tree of stuff) from
- * @param futzCount The number of post snapshot modifications to make after each load
- */
- private void testScaling(int n, String fsPath, int futzCount)
- {
- try
- {
- BulkLoader loader = new BulkLoader();
- loader.setAvmService(fService);
- loader.setPropertyCount(50);
- BulkReader reader = new BulkReader();
- reader.setAvmService(fService);
- long lastTime = System.currentTimeMillis();
- for (int i = 0; i < n; i++)
- {
- System.out.println("Round " + (i + 1));
- fService.createStore("store" + i);
- loader.recursiveLoad(fsPath, "store" + i + ":/");
- fService.createSnapshot("store" + i, null, null);
- long now = System.currentTimeMillis();
- System.out.println("Load Time: " + (now - lastTime) + "ms");
- lastTime = now;
- reader.recursiveFutz("store" + i, "store" + i + ":/", futzCount);
- now = System.currentTimeMillis();
- System.out.println("Read Time: " + (now - lastTime) + "ms");
- System.out.flush();
- lastTime = now;
- }
- }
- finally
- {
- for (int i = 0; i < n; i++)
- {
- if (fService.getStore("store" + i) != null)
- {
- fService.purgeStore("store" + i);
- }
- }
- }
- }
-}
diff --git a/source/test-java/org/alfresco/repo/avm/AVMServiceConcurrentTest.java b/source/test-java/org/alfresco/repo/avm/AVMServiceConcurrentTest.java
deleted file mode 100644
index 6a5ac094b8..0000000000
--- a/source/test-java/org/alfresco/repo/avm/AVMServiceConcurrentTest.java
+++ /dev/null
@@ -1,659 +0,0 @@
-/*
- * Copyright (C) 2005-2010 Alfresco Software Limited.
- *
- * This file is part of Alfresco
- *
- * Alfresco is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Alfresco is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Alfresco. If not, see .
- */
-
-package org.alfresco.repo.avm;
-
-import java.util.List;
-import java.util.SortedMap;
-
-import javax.transaction.UserTransaction;
-
-import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
-import org.alfresco.service.cmr.avm.AVMNodeDescriptor;
-import org.alfresco.service.cmr.avmsync.AVMDifference;
-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.cmr.search.ResultSet;
-import org.alfresco.service.cmr.search.ResultSetRow;
-import org.alfresco.service.cmr.search.SearchService;
-import org.alfresco.service.namespace.NamespaceService;
-import org.alfresco.test_category.LegacyCategory;
-import org.junit.experimental.categories.Category;
-
-/**
- * AVM concurrency and search
- *
- * @author andyh, janv
- */
-@Category(LegacyCategory.class)
-public class AVMServiceConcurrentTest extends AVMServiceTestBase
-{
- public void testSetup() throws Exception
- {
- super.testSetup();
- }
-
- public void test_CreateDelete() throws Exception
- {
- int threads= 4;
- int loops = 10;
-
- int snapshotsPerLoop = 4;
-
- assertEquals(1, fService.getStoreVersions("main").size());
-
- fService.createDirectory("main:/", "test");
-
- int startVersion = fService.createSnapshot("main", null, null).get("main");
-
- assertEquals(2, fService.getStoreVersions("main").size());
-
- assertEquals(0, fService.getDirectoryListing(-1, "main:/test").size());
-
- UserTransaction testTX = fTransactionService.getUserTransaction();
- testTX.begin();
-
- StoreRef storeRef = AVMNodeConverter.ToStoreRef("main");
- SearchService searchService = fIndexerAndSearcher.getSearcher(AVMNodeConverter.ToStoreRef("main"), true);
- ResultSet results = searchService.query(storeRef, "lucene", "PATH:\"/test/*\"");
- assertEquals(0, results.length());
- results.close();
-
- testTX.commit();
-
- Thread runner = null;
- for (int i = 0; i < threads; i++)
- {
- runner = new Nester("Concurrent-" + i, runner, false, snapshotsPerLoop, Nester.Mode.CREATE, loops);
- }
-
- if (runner != null)
- {
- runner.start();
-
- try
- {
- runner.join();
- }
- catch (InterruptedException e)
- {
- e.printStackTrace();
- }
- }
-
- System.out.println("Snapshot count: "+fService.getStoreVersions("main").size());
-
- SortedMap listing = fService.getDirectoryListing(-1, "main:/test");
- assertEquals(loops, listing.size());
-
- for(AVMNodeDescriptor node : listing.values())
- {
- System.out.println("Listed: "+node.getPath()+" "+node.getVersionID());
- }
- List diffs = fSyncService.compare(startVersion, "main:/", -1, "main:/", null);
- assertEquals(loops, diffs.size());
- for(AVMDifference diff : diffs)
- {
- AVMNodeDescriptor desc = fService.lookup(diff.getDestinationVersion(), diff.getDestinationPath(), true);
- assertFalse(desc.isDeleted());
- }
-
- testTX = fTransactionService.getUserTransaction();
- testTX.begin();
- try
- {
-
- searchService = fIndexerAndSearcher.getSearcher(AVMNodeConverter.ToStoreRef("main"), true);
- results = searchService.query(storeRef, "lucene", "PATH:\"/test/*\"");
- for(ResultSetRow row : results)
- {
- System.out.println("Found: "+row.getNodeRef());
- }
- assertEquals(loops, results.length());
- results.close();
-
- }
- finally
- {
- try { testTX.commit(); } catch (Exception e) {}
- }
-
- // delete
-
- runner = null;
- for (int i = 0; i < threads; i++)
- {
- runner = new Nester("Concurrent-" + i, runner, false, snapshotsPerLoop, Nester.Mode.DELETE, loops);
- }
- if (runner != null)
- {
- runner.start();
-
- try
- {
- runner.join();
- }
- catch (InterruptedException e)
- {
- e.printStackTrace();
- }
- }
-
- assertEquals(0, fService.getDirectoryListing(-1, "main:/test").size());
-
- System.out.println("Snapshot count: "+fService.getStoreVersions("main").size());
-
- /*
- for(org.alfresco.service.cmr.avm.VersionDescriptor v : fService.getStoreVersions("main"))
- {
- System.out.println(v);
- }
- */
-
- testTX = fTransactionService.getUserTransaction();
- testTX.begin();
-
- searchService = fIndexerAndSearcher.getSearcher(AVMNodeConverter.ToStoreRef("main"), true);
- results = searchService.query(storeRef, "lucene", "PATH:\"/test/*\"");
- for(ResultSetRow row : results)
- {
- System.out.println("Found: "+row.getNodeRef());
- }
- assertEquals(0, results.length());
- results.close();
-
- testTX.commit();
- }
-
- public synchronized void test_ALF_14979() throws Exception
- {
- String name = "test" + System.currentTimeMillis();
-
- fService.createDirectory("main:/", name);
-
- // Now create many, many orphans
- int peerCount = 1000;
- for (int i = 0; i < peerCount; i++)
- {
- fService.createDirectory("main:/", name + "-" + i);
- }
-
- StoreRef storeRef = AVMNodeConverter.ToStoreRef("main");
- NodeService fNodeService = (NodeService) fContext.getBean("NodeService");
- NodeRef rootNodeRef = fNodeService.getRootNode(storeRef);
-
- SearchService fSearchService = (SearchService) fContext.getBean("SearchService");
- NamespaceService fNamespaceService = (NamespaceService) fContext.getBean("NamespaceService");
-
- // Now look it up
- long before = System.nanoTime();
- List nodeRefs = fSearchService.selectNodes(
- rootNodeRef,
- "/cm:" + name,
- null, fNamespaceService, false);
- assertEquals("Expected to find a result", 1, nodeRefs.size());
- long after = System.nanoTime();
- System.out.println("Took " + (after-before)/1E6 + "ms to find entry out of " + peerCount);
- }
-
- public void test_ALF_786() throws Exception
- {
- int threads= 4;
- int loops = 10;
-
- int snapshotsPerLoop = 4;
-
- fService.createDirectory("main:/", "test");
-
- int startVersion = fService.createSnapshot("main", null, null).get("main");
-
- assertEquals(0, fService.getDirectoryListing(-1, "main:/test").size());
-
- UserTransaction testTX = fTransactionService.getUserTransaction();
- testTX.begin();
-
- StoreRef storeRef = AVMNodeConverter.ToStoreRef("main");
- SearchService searchService = fIndexerAndSearcher.getSearcher(AVMNodeConverter.ToStoreRef("main"), true);
- ResultSet results = searchService.query(storeRef, "lucene", "PATH:\"/test/*\"");
- assertEquals(0, results.length());
- results.close();
-
- testTX.commit();
-
- // create
-
- Thread runner = null;
- for (int i = 0; i < threads; i++)
- {
- runner = new Nester("Concurrent-" + i, runner, false, snapshotsPerLoop, Nester.Mode.CREATE, loops);
- }
-
- if (runner != null)
- {
- runner.start();
-
- try
- {
- runner.join();
- }
- catch (InterruptedException e)
- {
- e.printStackTrace();
- }
- }
-
- SortedMap listing = fService.getDirectoryListing(-1, "main:/test");
- assertEquals(loops, listing.size());
-
- for(AVMNodeDescriptor node : listing.values())
- {
- System.out.println("Listed: "+node.getPath()+" "+node.getVersionID());
- }
- List diffs = fSyncService.compare(startVersion, "main:/", -1, "main:/", null);
- assertEquals(loops, diffs.size());
- for(AVMDifference diff : diffs)
- {
- AVMNodeDescriptor desc = fService.lookup(diff.getDestinationVersion(), diff.getDestinationPath(), true);
- assertFalse(desc.isDeleted());
- }
-
- testTX = fTransactionService.getUserTransaction();
- testTX.begin();
- try
- {
- searchService = fIndexerAndSearcher.getSearcher(AVMNodeConverter.ToStoreRef("main"), true);
- results = searchService.query(storeRef, "lucene", "PATH:\"/test/*\"");
- for(ResultSetRow row : results)
- {
- System.out.println("Found: "+row.getNodeRef());
- }
- assertEquals(loops, results.length());
- results.close();
- }
- finally
- {
- try { testTX.commit(); } catch (Exception e) {}
- }
-
- // update
-
- runner = null;
- for (int i = 0; i < threads; i++)
- {
- runner = new Nester("Concurrent-" + i, runner, false, snapshotsPerLoop, Nester.Mode.UPDATE, loops);
- }
-
- if (runner != null)
- {
- runner.start();
-
- try
- {
- runner.join();
- }
- catch (InterruptedException e)
- {
- e.printStackTrace();
- }
- }
-
- testTX = fTransactionService.getUserTransaction();
- testTX.begin();
-
- searchService = fIndexerAndSearcher.getSearcher(AVMNodeConverter.ToStoreRef("main"), true);
- results = searchService.query(storeRef, "lucene", "PATH:\"/test/*\"");
- for(ResultSetRow row : results)
- {
- System.out.println("Found: "+row.getNodeRef());
- }
- assertEquals(loops, results.length());
-
- results.close();
- testTX.commit();
-
- // delete
-
- runner = null;
- for (int i = 0; i < threads; i++)
- {
- runner = new Nester("Concurrent-" + i, runner, false, snapshotsPerLoop, Nester.Mode.DELETE, loops);
- }
- if (runner != null)
- {
- runner.start();
-
- try
- {
- runner.join();
- }
- catch (InterruptedException e)
- {
- e.printStackTrace();
- }
- }
-
- assertEquals(0, fService.getDirectoryListing(-1, "main:/test").size());
-
- testTX = fTransactionService.getUserTransaction();
- testTX.begin();
-
- searchService = fIndexerAndSearcher.getSearcher(AVMNodeConverter.ToStoreRef("main"), true);
- results = searchService.query(storeRef, "lucene", "PATH:\"/test/*\"");
- for(ResultSetRow row : results)
- {
- System.out.println("Found: "+row.getNodeRef());
- }
- assertEquals(0, results.length());
- results.close();
-
- testTX.commit();
-
- // recreate
-
- runner = null;
- for (int i = 0; i < threads; i++)
- {
- runner = new Nester("Concurrent-" + i, runner, false, snapshotsPerLoop, Nester.Mode.CREATE, loops);
- }
- if (runner != null)
- {
- runner.start();
-
- try
- {
- runner.join();
- }
- catch (InterruptedException e)
- {
- e.printStackTrace();
- }
- }
-
- testTX = fTransactionService.getUserTransaction();
- testTX.begin();
-
- searchService = fIndexerAndSearcher.getSearcher(AVMNodeConverter.ToStoreRef("main"), true);
- results = searchService.query(storeRef, "lucene", "PATH:\"/test/*\"");
- for(ResultSetRow row : results)
- {
- System.out.println("Found: "+row.getNodeRef());
- }
- assertEquals(loops, results.length());
- results.close();
-
- testTX.commit();
-
- // move
-
- runner = null;
- for (int i = 0; i < threads; i++)
- {
- runner = new Nester("Concurrent-" + i, runner, false, snapshotsPerLoop, Nester.Mode.MOVE, loops);
- }
- if (runner != null)
- {
- runner.start();
-
- try
- {
- runner.join();
- }
- catch (InterruptedException e)
- {
- e.printStackTrace();
- }
- }
-
- testTX = fTransactionService.getUserTransaction();
- testTX.begin();
-
- searchService = fIndexerAndSearcher.getSearcher(AVMNodeConverter.ToStoreRef("main"), true);
- results = searchService.query(storeRef, "lucene", "PATH:\"/test/*\"");
- for(ResultSetRow row : results)
- {
- System.out.println("Found: "+row.getNodeRef());
- }
- assertEquals(loops, results.length());
- results.close();
-
- testTX.commit();
- }
-
- public void xtest_ALF_786_PLUS() throws Exception
- {
- int startVersion;
- UserTransaction testTX = fTransactionService.getUserTransaction();
- testTX.begin();
- fService.createDirectory("main:/", "test");
- startVersion = fService.createSnapshot("main", null, null).get("main");
-
- testTX.commit();
- testTX = fTransactionService.getUserTransaction();
- testTX.begin();
-
- StoreRef storeRef = AVMNodeConverter.ToStoreRef("main");
- SearchService searchService = fIndexerAndSearcher.getSearcher(AVMNodeConverter.ToStoreRef("main"), true);
- ResultSet results = searchService.query(storeRef, "lucene", "PATH:\"/test/*\"");
- assertEquals(0, results.length());
- results.close();
- testTX.commit();
-
- Thread runner = null;
-
- for (int i = 0; i < 10; i++)
- {
- runner = new Nester("Concurrent-" + i, runner, true, 10, Nester.Mode.CREATE, 10 );
- }
- if (runner != null)
- {
- runner.start();
-
- try
- {
- runner.join();
- }
- catch (InterruptedException e)
- {
- e.printStackTrace();
- }
- }
-
- testTX = fTransactionService.getUserTransaction();
- testTX.begin();
- // snap
- testTX.commit();
-
- testTX = fTransactionService.getUserTransaction();
- testTX.begin();;
- SortedMap listing = fService.getDirectoryListing(-1, "main:/test");
- assertEquals(100, listing.size());
- for(AVMNodeDescriptor node : listing.values())
- {
- System.out.println("Listed: "+node.getPath()+" "+node.getVersionID());
- }
- List diffs = fSyncService.compare(startVersion, "main:/", -1, "main:/", null);
- assertEquals(100, diffs.size());
- for(AVMDifference diff : diffs)
- {
- AVMNodeDescriptor desc = fService.lookup(diff.getDestinationVersion(), diff.getDestinationPath(), true);
- assertFalse(desc.isDeleted());
- }
-
-
-
- searchService = fIndexerAndSearcher.getSearcher(AVMNodeConverter.ToStoreRef("main"), true);
- results = searchService.query(storeRef, "lucene", "PATH:\"/test/*\"");
- for(ResultSetRow row : results)
- {
- System.out.println("Found: "+row.getNodeRef());
- }
- assertEquals(100, results.length());
- results.close();
- testTX.commit();
- }
-
- static class Nester extends Thread
- {
- enum Mode {CREATE, UPDATE, DELETE, MOVE};
-
- Thread waiter;
-
- int i;
-
- boolean multiThread;
-
- int snapshotCount;
-
- Mode mode;
-
- int loopCount;
-
- Nester(String name, Thread waiter, boolean multiThread, int snapshotCount, Mode mode, int loopCount)
- {
- super(name);
- this.setDaemon(true);
- this.waiter = waiter;
- this.multiThread = multiThread;
- this.snapshotCount = snapshotCount;
- this.mode = mode;
- this.loopCount = loopCount;
- }
-
- public void run()
- {
- fAuthenticationComponent.setSystemUserAsCurrentUser();
- if (waiter != null)
- {
- waiter.start();
- }
- try
- {
- //System.out.println("Start " + this.getName());
-
- for(i = 0; i < loopCount; i++)
- {
- RetryingTransactionCallback create = new RetryingTransactionCallback()
- {
- public Void execute() throws Throwable
- {
- System.out.println("Create file: " + "main:/test/" + getName()+"-"+i);
-
- fService.createFile("main:/test", getName()+"-"+i).close();
-
- return null;
- }
- };
- RetryingTransactionCallback update = new RetryingTransactionCallback()
- {
- public Void execute() throws Throwable
- {
- System.out.println("Update file mime type: " + "main:/test/" + getName()+"-"+i);
-
- fService.setMimeType("main:/test/"+getName()+"-"+i, "text/plain");
-
- return null;
- }
- };
- RetryingTransactionCallback delete = new RetryingTransactionCallback()
- {
- public Void execute() throws Throwable
- {
- System.out.println("Remove file: " + "main:/test/" + getName()+"-"+i);
-
- fService.removeNode("main:/test/"+getName()+"-"+i);
-
- return null;
- }
- };
- RetryingTransactionCallback move = new RetryingTransactionCallback()
- {
- public Void execute() throws Throwable
- {
- System.out.println("Rename file: " + "main:/test/" + getName()+"-"+i);
-
- fService.rename("main:/test/", getName()+"-"+i, "main:/test/", "MOVED-"+getName()+"-"+i);
-
- return null;
- }
- };
- if(multiThread || (waiter == null))
- {
- // only one thread creates for 786
- switch(mode)
- {
- case CREATE:
- fRetryingTransactionHelper.doInTransaction(create);
- break;
- case UPDATE:
- fRetryingTransactionHelper.doInTransaction(update);
- break;
- case DELETE:
- fRetryingTransactionHelper.doInTransaction(delete);
- break;
- case MOVE:
- fRetryingTransactionHelper.doInTransaction(move);
- break;
- default:
- }
-
- }
-
- RetryingTransactionCallback snap = new RetryingTransactionCallback()
- {
- public Void execute() throws Throwable
- {
- //System.out.println("Snap: main:/");
-
- fService.createSnapshot("main", null, null);
-
- return null;
- }
- };
- for(int s = 0; s < snapshotCount; s++)
- {
- fRetryingTransactionHelper.doInTransaction(snap);
- }
- }
-
- //System.out.println("End " + this.getName());
- }
- catch (Exception e)
- {
- System.out.println("End " + this.getName() + " with error " + e.getMessage());
- e.printStackTrace();
- }
- finally
- {
- fAuthenticationComponent.clearCurrentSecurityContext();
- }
- if (waiter != null)
- {
- try
- {
- waiter.join();
- System.out.println("Waited for " + waiter.getName()+" by "+this.getName());
- }
- catch (InterruptedException e)
- {
- }
- }
- }
- }
-}
diff --git a/source/test-java/org/alfresco/repo/avm/AVMServiceIndexTest.java b/source/test-java/org/alfresco/repo/avm/AVMServiceIndexTest.java
deleted file mode 100644
index bbea19a3a4..0000000000
--- a/source/test-java/org/alfresco/repo/avm/AVMServiceIndexTest.java
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- * Copyright (C) 2005-2010 Alfresco Software Limited.
- *
- * This file is part of Alfresco
- *
- * Alfresco is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Alfresco is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Alfresco. If not, see . */
-
-package org.alfresco.repo.avm;
-
-import javax.transaction.UserTransaction;
-
-import org.alfresco.repo.search.IndexMode;
-import org.alfresco.repo.search.Indexer;
-import org.alfresco.repo.search.impl.lucene.AVMLuceneIndexer;
-import org.alfresco.service.cmr.repository.StoreRef;
-import org.alfresco.service.cmr.search.ResultSet;
-import org.alfresco.service.cmr.search.SearchService;
-import org.alfresco.test_category.LegacyCategory;
-import org.alfresco.util.TriggerBeanSPI;
-import org.junit.experimental.categories.Category;
-import org.springframework.beans.factory.DisposableBean;
-import org.springframework.beans.factory.InitializingBean;
-
-/**
- * Test AVMService indexing
- */
-@Category(LegacyCategory.class)
-public class AVMServiceIndexTest extends AVMServiceTestBase
-{
- /*
- private final static long SLEEP = 180000; // 3 mins (default, where startDelay & repeatInterval are both 1 min)
- private final static long START_DELAY_MSECS = 1000 * 60;
- private final static long REPEAT_INTERVAL_MSECS = 1000 * 60;
- */
-
- private final static long SLEEP = 20000;
- private final static long START_DELAY_MSECS = 2000;
- private final static long REPEAT_INTERVAL_MSECS = 2000;
-
- @Override
- protected void setUp() throws Exception
- {
- super.setUp();
-
- //
- // override default schedule to speed up this unit test (by reducing the sleep time)
- //
- DisposableBean dispBean = (DisposableBean)fContext.getBean("ftsIndexerTrigger");
- InitializingBean initBean = (InitializingBean)fContext.getBean("ftsIndexerTrigger");
- TriggerBeanSPI triggerBeanSPI = (TriggerBeanSPI)fContext.getBean("ftsIndexerTrigger");
-
- dispBean.destroy(); // unschedule
-
- triggerBeanSPI.setStartDelay(START_DELAY_MSECS);
- triggerBeanSPI.setRepeatInterval(REPEAT_INTERVAL_MSECS);
-
- initBean.afterPropertiesSet(); // re-schedule
- }
-
- /**
- * Test async indexing.
- *
- * @throws Exception
- */
- public void testAsyncIndex() throws Exception
- {
- try
- {
- // Make sure the slate is clean ...
- UserTransaction tx = fTransactionService.getUserTransaction();
- tx.begin();
- if (fService.getStore("avmAsynchronousTest") != null)
- {
- assertTrue(fIndexingInterceptor.hasIndexBeenCreated("avmAsynchronousTest"));
- fService.purgeStore("avmAsynchronousTest");
- assertTrue(fIndexingInterceptor.hasIndexBeenCreated("avmAsynchronousTest"));
- assertFalse(fIndexingInterceptor.hasIndexBeenCreated("bananaStoreWoof"));
- }
- else
- {
- assertFalse(fIndexingInterceptor.hasIndexBeenCreated("avmAsynchronousTest"));
- }
- StoreRef storeRef = AVMNodeConverter.ToStoreRef("avmAsynchronousTest");
- Indexer indexer = fIndexerAndSearcher.getIndexer(storeRef);
- if (indexer instanceof AVMLuceneIndexer)
- {
- AVMLuceneIndexer avmIndexer = (AVMLuceneIndexer) indexer;
- avmIndexer.deleteIndex("avmAsynchronousTest", IndexMode.SYNCHRONOUS);
- }
- tx.commit();
-
- tx = fTransactionService.getUserTransaction();
- tx.begin();
- assertEquals(-1, fIndexingInterceptor.getLastIndexedSnapshot("bananaStoreWoof"));
- assertEquals(-1, fIndexingInterceptor.getLastIndexedSnapshot("avmAsynchronousTest"));
- tx.commit();
-
- // TODO: Suspend and resume indexing in case we are really unlucky and hit an index before we expect it.
-
- SearchService searchService = fIndexerAndSearcher.getSearcher(storeRef, true);
- ResultSet results;
-
- results = searchService.query(storeRef, "lucene", "PATH:\"//.\"");
- assertEquals(0, results.length());
- results.close();
-
- fService.createStore("avmAsynchronousTest");
-
- tx = fTransactionService.getUserTransaction();
- tx.begin();
- assertEquals(0, fIndexingInterceptor.getLastIndexedSnapshot("avmAsynchronousTest"));
- tx.commit();
-
- fService.createSnapshot("avmAsynchronousTest", null, null);
-
- tx = fTransactionService.getUserTransaction();
- tx.begin();
- assertEquals(0, fIndexingInterceptor.getLastIndexedSnapshot("avmAsynchronousTest"));
- tx.commit();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"//.\"");
- assertEquals(1, results.length());
- results.close();
-
- fService.createDirectory("avmAsynchronousTest:/", "a");
- fService.createDirectory("avmAsynchronousTest:/a", "b");
- fService.createDirectory("avmAsynchronousTest:/a/b", "c");
-
- tx = fTransactionService.getUserTransaction();
- tx.begin();
- assertEquals(0, fIndexingInterceptor.getLastIndexedSnapshot("avmAsynchronousTest"));
- assertTrue(fIndexingInterceptor.isIndexUpToDate("avmAsynchronousTest"));
- tx.commit();
-
- fService.createSnapshot("avmAsynchronousTest", null, null);
-
- tx = fTransactionService.getUserTransaction();
- tx.begin();
- assertEquals(1, fIndexingInterceptor.getLastIndexedSnapshot("avmAsynchronousTest"));
- assertTrue(fIndexingInterceptor.isIndexUpToDate("avmAsynchronousTest"));
- assertFalse(fIndexingInterceptor.isIndexUpToDateAndSearchable("avmAsynchronousTest"));
- assertEquals(IndexMode.ASYNCHRONOUS, fIndexingInterceptor.getIndexMode("avmAsynchronousTest"));
- assertEquals(IndexMode.SYNCHRONOUS, fIndexingInterceptor.getIndexMode("main"));
- assertTrue(fIndexingInterceptor.isSnapshotIndexed("avmAsynchronousTest", 0));
- assertTrue(fIndexingInterceptor.isSnapshotIndexed("avmAsynchronousTest", 1));
- assertFalse(fIndexingInterceptor.isSnapshotIndexed("avmAsynchronousTest", 2));
- tx.commit();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"//.\"");
- assertEquals(1, results.length());
- results.close();
-
- Thread.sleep(SLEEP);
-
- results = searchService.query(storeRef, "lucene", "PATH:\"//.\"");
- assertEquals(4, results.length());
- results.close();
-
- tx = fTransactionService.getUserTransaction();
- tx.begin();
- assertEquals(1, fIndexingInterceptor.getLastIndexedSnapshot("avmAsynchronousTest"));
- assertTrue(fIndexingInterceptor.isIndexUpToDate("avmAsynchronousTest"));
- assertTrue(fIndexingInterceptor.isIndexUpToDateAndSearchable("avmAsynchronousTest"));
- tx.commit();
-
- fService.purgeStore("avmAsynchronousTest");
-
- results = searchService.query(storeRef, "lucene", "PATH:\"//.\"");
- assertEquals(0, results.length());
- results.close();
-
- fService.createStore("avmAsynchronousTest");
- fService.createSnapshot("avmAsynchronousTest", null, null);
- fService.createDirectory("avmAsynchronousTest:/", "a");
- fService.createDirectory("avmAsynchronousTest:/a", "b");
- fService.createDirectory("avmAsynchronousTest:/a/b", "c");
- fService.createSnapshot("avmAsynchronousTest", null, null);
- fService.purgeStore("avmAsynchronousTest");
- fService.createStore("avmAsynchronousTest");
- fService.createSnapshot("avmAsynchronousTest", null, null);
- fService.createDirectory("avmAsynchronousTest:/", "a");
- fService.createDirectory("avmAsynchronousTest:/a", "b");
- fService.createDirectory("avmAsynchronousTest:/a/b", "c");
- fService.createSnapshot("avmAsynchronousTest", null, null);
-
- Thread.sleep(SLEEP);
-
- results = searchService.query(storeRef, "lucene", "PATH:\"//.\"");
- assertEquals(4, results.length());
- results.close();
- }
- finally
- {
- fService.purgeStore("avmAsynchronousTest");
- }
- }
-}
diff --git a/source/test-java/org/alfresco/repo/avm/AVMServiceLocalTest.java b/source/test-java/org/alfresco/repo/avm/AVMServiceLocalTest.java
deleted file mode 100644
index e06f585ebf..0000000000
--- a/source/test-java/org/alfresco/repo/avm/AVMServiceLocalTest.java
+++ /dev/null
@@ -1,3877 +0,0 @@
-/*
- * Copyright (C) 2005-2010 Alfresco Software Limited.
- *
- * This file is part of Alfresco
- *
- * Alfresco is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Alfresco is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Alfresco. If not, see . */
-
-package org.alfresco.repo.avm;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.PrintStream;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.SortedMap;
-
-import junit.framework.TestCase;
-
-import org.alfresco.model.ContentModel;
-import org.alfresco.repo.avm.util.RemoteBulkLoader;
-import org.alfresco.repo.domain.PropertyValue;
-import org.alfresco.repo.security.authentication.AuthenticationUtil;
-import org.alfresco.service.cmr.avm.AVMNodeDescriptor;
-import org.alfresco.service.cmr.avm.AVMNotFoundException;
-import org.alfresco.service.cmr.avm.AVMStoreDescriptor;
-import org.alfresco.service.cmr.avm.VersionDescriptor;
-import org.alfresco.service.cmr.avmsync.AVMDifference;
-import org.alfresco.service.cmr.avmsync.AVMSyncException;
-import org.alfresco.service.cmr.avmsync.AVMSyncService;
-import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
-import org.alfresco.service.cmr.remote.AVMRemote;
-import org.alfresco.service.cmr.security.AuthenticationService;
-import org.alfresco.service.namespace.QName;
-import org.alfresco.test_category.LegacyCategory;
-import org.alfresco.util.NameMatcher;
-import org.alfresco.util.Pair;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.junit.experimental.categories.Category;
-import org.springframework.context.ApplicationContext;
-
-/**
- * Local unit tests of AVM (AVMSyncService & AVMService)
- */
-@Category(LegacyCategory.class)
-public class AVMServiceLocalTest extends TestCase
-{
- private static Log logger = LogFactory.getLog(AVMServiceLocalTest.class);
-
- /**
- * The application context.
- */
- protected static ApplicationContext fContext;
-
- /**
- * The AVMRemote - can be local (AVMRemoteLocal) or remote (AVMRemote)
- */
- protected static AVMRemote fService;
-
- /**
- * The AVMSyncService - can be local (AVMSyncService) or remote (AVMSyncServiceRemote)
- */
- protected static AVMSyncService fSyncService;
-
- protected static NameMatcher excluder;
-
-
- @Override
- protected void setUp() throws Exception
- {
- if (fContext == null)
- {
- // local (embedded) test setup
- fContext = AVMTestSuite.getContext();
- fService = (AVMRemote)fContext.getBean("avmRemote");
- fSyncService = (AVMSyncService)fContext.getBean("AVMSyncService");
- excluder = (NameMatcher) fContext.getBean("globalPathExcluder");
-
- AuthenticationService authService = (AuthenticationService)fContext.getBean("AuthenticationService");
- authService.authenticate(AuthenticationUtil.getAdminUserName(), "admin".toCharArray());
- }
-
- if (fService.getStore("main") == null)
- {
- fService.createStore("main");
- }
- if (fService.getStore("layer") == null)
- {
- fService.createStore("layer");
- }
- }
-
- @Override
- protected void tearDown() throws Exception
- {
- fService.purgeStore("main");
- fService.purgeStore("layer");
- }
-
- public void testSetup() throws Exception
- {
- setUp();
- }
-
- public void testGetAPath() throws Exception
- {
- try
- {
- fService.createStore("test2932");
- fService.createDirectory("test2932:/", "a");
- fService.createFile("test2932:/a", "foo.txt").close();
- AVMNodeDescriptor found = fService.lookup(-1, "test2932:/a/foo.txt");
- Pair path = fService.getAPath(found);
- assertEquals(path.getSecond(), "test2932:/a/foo.txt");
- explorePaths("test2932:/");
- }
- catch (Exception e)
- {
- e.printStackTrace();
- throw e;
- }
- finally
- {
- fService.purgeStore("test2932");
- }
- }
-
- /**
- * Do a simple hello world test.
- */
- public void testSimple() throws Throwable
- {
- try
- {
- List stores = fService.getStores();
-
- for (AVMStoreDescriptor store : stores)
- {
- if (logger.isDebugEnabled()) { logger.debug(store); }
- }
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- protected void explorePaths(String path) throws Exception
- {
- Map listing = fService.getDirectoryListing(-1, path);
- for (Map.Entry entry : listing.entrySet())
- {
- Pair childPath = fService.getAPath(entry.getValue());
- if (logger.isDebugEnabled()) { logger.debug(childPath); }
- if (entry.getValue().isDirectory())
- {
- explorePaths(entry.getValue().getPath());
- }
- }
- }
-
- /**
- * Test reading and writing.
- */
- public void testReadWrite() throws Throwable
- {
- try
- {
- // Create a test store.
- fService.createStore("test2933");
- // Create a directory.
- fService.createDirectory("test2933:/", "a");
- // Write out a file.
- OutputStream out =
- fService.createFile("test2933:/a", "foo.txt");
- byte [] buff = "This is a plain old text file.\n".getBytes();
- out.write(buff);
- buff = "It contains text.\n".getBytes();
- out.write(buff);
- out.close();
- // Read back that file.
- InputStream in =
- fService.getFileInputStream(-1, "test2933:/a/foo.txt");
- buff = new byte[1024];
- assertEquals(49, in.read(buff));
- if (logger.isDebugEnabled()) { logger.debug(new String(buff)); }
- assertEquals(-1, in.read(buff));
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- finally
- {
- fService.purgeStore("test2933");
- }
- }
-
- /**
- * Another test of reading.
- */
- public void testRead() throws Throwable
- {
- try
- {
- fService.createStore("froo");
- // Create a file.
- byte [] buff = new byte[64];
- for (int i = 0; i < 64; i++)
- {
- buff[i] = (byte)i;
- }
- OutputStream out =
- fService.createFile("froo:/", "foo.dat");
- out.write(buff, 32, 32);
- out.close();
- // Read it back in.
- InputStream in =
- fService.getFileInputStream(-1, "froo:/foo.dat");
- buff = new byte[1024];
- assertEquals(32, in.read(buff));
- in.close();
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- finally
- {
- fService.purgeStore("froo");
- }
- }
-
- /**
- * Test a call that should return null;
- */
- public void testErrorState() throws Throwable
- {
- try
- {
- assertNull(fService.lookup(-1, "main:/fizz/fazz"));
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
-
- /**
- * Test update to branch
- */
- public void testSimpleUpdateBR() throws Throwable
- {
- try
- {
- // Create a store.
- fService.createStore("froo");
- // Create a directory.
- fService.createDirectory("froo:/", "a");
- // Create a file.
- fService.createFile("froo:/a", "foo").close();
- // Create another store.
- fService.createStore("broo");
- // Create a branch.
- fService.createBranch(-1, "froo:/a", "broo:/", "a");
- List diffs = fSyncService.compare(-1, "froo:/a", -1, "broo:/a", null);
- assertEquals(0, diffs.size());
- fService.createFile("froo:/a", "bar").close();
- diffs = fSyncService.compare(-1, "froo:/a", -1, "broo:/a", null);
- assertEquals(1, diffs.size());
- assertEquals("[froo:/a/bar[-1] > broo:/a/bar[-1]]", diffs.toString());
- // Update.
- fSyncService.update(diffs, null, false, false, false, false, "flippy", "Stuff");
- diffs = fSyncService.compare(-1, "froo:/a", -1, "broo:/a", null);
- assertEquals(0, diffs.size());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- throw e;
- }
- finally
- {
- fService.purgeStore("broo");
- fService.purgeStore("froo");
- }
- }
-
- //
- // Test updates to layered directories
- //
-
- public void testSimpleUpdateLD1() throws Throwable
- {
- try
- {
- List diffs = fSyncService.compare(-1, "main:/", -1, "main:/", null);
- assertEquals(0, diffs.size());
-
- diffs = fSyncService.compare(-1, "layer:/", -1, "main:/", null);
- assertEquals(0, diffs.size());
-
- // create file f-a in main root dir
- fService.createFile("main:/", "f-a").close();
-
- diffs = fSyncService.compare(-1, "layer:/", -1, "main:/", null);
- assertEquals("[layer:/f-a[-1] < main:/f-a[-1]]", diffs.toString());
- assertEquals(1, diffs.size());
-
- fService.createLayeredDirectory("main:/", "layer:/", "layer");
-
- diffs = fSyncService.compare(-1, "layer:/layer", -1, "main:/", null);
- assertEquals(0, diffs.size());
-
- // create file f-b in main root dir
- fService.createFile("main:/", "f-b").close();
-
- diffs = fSyncService.compare(-1, "layer:/layer", -1, "main:/", null);
- assertEquals(0, diffs.size());
-
- // edit file f-b in layer
- fService.getFileOutputStream("layer:/layer/f-b").close();
-
- diffs = fSyncService.compare(-1, "layer:/layer", -1, "main:/", null);
- assertEquals("[layer:/layer/f-b[-1] > main:/f-b[-1]]", diffs.toString());
- assertEquals(1, diffs.size());
-
- // update main from layer
- fSyncService.update(diffs, null, false, false, false, false, null, null);
-
- diffs = fSyncService.compare(-1, "layer:/layer", -1, "main:/", null);
- assertEquals(0, diffs.size());
- }
- catch (Throwable t)
- {
- t.printStackTrace();
- throw t;
- }
- }
-
- public void testSimpleUpdateLD2() throws Throwable
- {
- try
- {
- // create directories base/d-a and file f-aa in main
- fService.createDirectory("main:/", "base");
- fService.createDirectory("main:/base", "d-a");
- fService.createFile("main:/base/d-a", "f-aa").close();
-
- List diffs = fSyncService.compare(-1, "layer" + ":/", -1, "main:/", null);
- assertEquals("[layer:/base[-1] < main:/base[-1]]", diffs.toString());
- assertEquals(1, diffs.size());
-
- fService.createLayeredDirectory("main:/base", "layer:/", "layer-to-base");
-
- diffs = fSyncService.compare(-1, "layer:/layer-to-base", -1, "main:/base", null);
- assertEquals(0, diffs.size());
-
- // edit file f-aa in main
- fService.getFileOutputStream("main:/base/d-a/f-aa").close();
-
- diffs = fSyncService.compare(-1, "layer:/layer-to-base", -1, "main:/base", null);
- assertEquals(0, diffs.size());
-
- // edit file f-aa in layer
- fService.getFileOutputStream("layer:/layer-to-base/d-a/f-aa").close();
-
- diffs = fSyncService.compare(-1, "layer:/layer-to-base", -1, "main:/base", null);
- assertEquals("[layer:/layer-to-base/d-a/f-aa[-1] > main:/base/d-a/f-aa[-1]]", diffs.toString());
- assertEquals(1, diffs.size());
-
- // update main from layer
- fSyncService.update(diffs, null, false, false, false, false, null, null);
-
- diffs = fSyncService.compare(-1, "layer:/layer-to-base", -1, "main:/base", null);
- assertEquals(0, diffs.size());
- }
- catch (Throwable t)
- {
- t.printStackTrace();
- throw t;
- }
- }
-
- public void testSimpleUpdateLD3() throws Throwable
- {
- try
- {
- fService.createDirectory("main:/", "base");
-
- fService.createLayeredDirectory("main:/base", "layer:/", "layer-to-base");
-
- List diffs = fSyncService.compare(-1, "layer:/layer-to-base", -1, "main:/base", null);
- assertEquals(0, diffs.size());
-
- // create directory d-a and file f-aa in layer
- fService.createDirectory("layer:/layer-to-base", "d-a");
- fService.createFile("layer:/layer-to-base/d-a", "f-aa").close();
-
- diffs = fSyncService.compare(-1, "layer:/layer-to-base", -1, "main:/base", null);
- assertEquals("[layer:/layer-to-base/d-a[-1] > "+"main:/base/d-a[-1]]", diffs.toString());
- assertEquals(1, diffs.size());
-
- // update main from layer
- fSyncService.update(diffs, null, false, false, false, false, null, null);
-
- diffs = fSyncService.compare(-1, "layer:/layer-to-base", -1, "main:/base", null);
- assertEquals(0, diffs.size());
- }
- catch (Throwable t)
- {
- t.printStackTrace();
- throw t;
- }
- }
-
- public void testSimpleUpdateLD4() throws Exception
- {
- try
- {
- fService.createLayeredDirectory("main:/", "layer:/", "layer");
-
- // create directory b and file foo in layer
- fService.createDirectory("layer:/layer", "b");
- fService.createFile("layer:/layer/b", "foo").close();
-
- List diffs = fSyncService.compare(-1, "layer:/layer", -1, "main:/", null);
- assertEquals(1, diffs.size());
- assertEquals("[layer:/layer/b[-1] > main:/b[-1]]", diffs.toString());
-
- fService.createSnapshot("layer", null, null);
-
- fSyncService.update(diffs, null, false, false, false, false, null, null);
-
- fService.createSnapshot("main", null, null);
-
- diffs = fSyncService.compare(-1, "layer:/layer", -1, "main:/", null);
- assertEquals(0, diffs.size());
-
- fSyncService.flatten("layer:/layer", "main:/");
-
- fService.createStore("layer2");
- fService.createLayeredDirectory("layer:/layer", "layer2:/", "layer");
-
- // create directory c and file foo in layer2
- fService.createDirectory("layer2:/layer/", "c");
- fService.createFile("layer2:/layer/c", "foo").close();
-
- fService.createSnapshot("layer2", null, null);
-
- diffs = fSyncService.compare(-1, "layer2:/layer", -1, "layer:/layer", null);
- assertEquals(1, diffs.size());
- assertEquals("[layer2:/layer/c[-1] > layer:/layer/c[-1]]", diffs.toString());
-
- fSyncService.update(diffs, null, false, false, false, false, null, null);
-
- diffs = fSyncService.compare(-1, "layer2:/layer", -1, "layer:/layer", null);
- assertEquals(0, diffs.size());
-
- fSyncService.flatten("layer2:/layer", "layer:/layer");
-
- diffs = fSyncService.compare(-1, "layer:/layer", -1, "main:/", null);
- assertEquals(1, diffs.size());
- assertEquals("[layer:/layer/c[-1] > main:/c[-1]]", diffs.toString());
-
- recursiveList("main");
- recursiveList("layer");
- recursiveList("layer2");
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- finally
- {
- fService.purgeStore("layer2");
- }
- }
-
- public void testSimpleUpdateLD5() throws Exception
- {
- try
- {
- logger.debug("start: testSimpleUpdateLD5");
-
- logger.debug("created 2 stores: main, layer");
-
- recursiveList("main");
- recursiveList("layer");
-
- fService.createLayeredDirectory("main:/", "layer:/", "layer");
-
- logger.debug("created layered dir: layer:/layer -> main:/");
-
- recursiveList("main");
- recursiveList("layer");
-
- fService.createDirectory("layer:/layer", "b");
-
- logger.debug("created dir in layer: layer:/layer/b");
-
- recursiveList("main");
- recursiveList("layer");
-
- List diffs = fSyncService.compare(-1, "layer:/layer", -1, "main:/", null);
- assertEquals(1, diffs.size());
- assertEquals("[layer:/layer/b[-1] > main:/b[-1]]", diffs.toString());
-
- fSyncService.update(diffs, null, false, false, false, false, null, null);
-
- logger.debug("updated: created directory: main:/b");
-
- recursiveList("main");
- recursiveList("layer");
-
- diffs = fSyncService.compare(-1, "layer:/layer", -1, "main:/", null);
- assertEquals(0, diffs.size());
-
- fSyncService.flatten("layer:/layer", "main:/");
-
- logger.debug("flattened: created directory: main:/b");
-
- recursiveList("main");
- recursiveList("layer");
-
- fService.createFile("layer:/layer/b", "foo").close();
-
- logger.debug("created file: layer:/layer/b/foo");
-
- recursiveList("main");
- recursiveList("layer");
-
- fService.createFile("layer:/layer/b", "bar").close();
-
- logger.debug("created file: layer:/layer/b/bar");
-
- recursiveList("main");
- recursiveList("layer");
-
- diffs = fSyncService.compare(-1, "layer:/layer", -1, "main:/", null);
- assertEquals(2, diffs.size());
- assertEquals("[layer:/layer/b/bar[-1] > main:/b/bar[-1], layer:/layer/b/foo[-1] > main:/b/foo[-1]]", diffs.toString());
-
- // submit only first diff
- List selected = new ArrayList(1);
- selected.add(diffs.get(1));
-
- assertEquals("[layer:/layer/b/foo[-1] > main:/b/foo[-1]]", selected.toString());
-
- fSyncService.update(selected, null, false, false, false, false, null, null);
-
- logger.debug("updated: created file: main:/b/foo");
-
- recursiveList("main");
- recursiveList("layer");
-
- diffs = fSyncService.compare(-1, "layer:/layer", -1, "main:/", null);
- assertEquals(1, diffs.size());
- assertEquals("[layer:/layer/b/bar[-1] > main:/b/bar[-1]]", diffs.toString());
-
- fSyncService.flatten("layer:/layer", "main:/");
-
- logger.debug("flattened: created file: main:/b/foo");
-
- recursiveList("main");
- recursiveList("layer");
-
- fService.removeNode("layer:/layer", "b");
-
- logger.debug("removed dir in layer: layer:/layer/b");
-
- recursiveList("main");
- recursiveList("layer");
-
- fService.createSnapshot("layer", null, null);
-
- logger.debug("snapshot: layer");
-
- recursiveList("main");
- recursiveList("layer");
-
- // ETWOTWO-1266
- diffs = fSyncService.compare(-1, "layer:/layer", -1, "main:/", null);
- assertEquals(1, diffs.size());
- assertEquals("[layer:/layer/b[-1] > main:/b[-1]]", diffs.toString());
-
- fSyncService.update(diffs, null, false, false, false, false, null, null);
-
- logger.debug("updated: deleted dir: main:/b");
-
- recursiveList("main");
- recursiveList("layer");
-
- diffs = fSyncService.compare(-1, "layer:/layer", -1, "main:/", null);
- assertEquals(0, diffs.size());
-
- fSyncService.flatten("layer:/layer", "main:/");
-
- logger.debug("flattened: deleted dir: main:/b");
-
- recursiveList("main");
- recursiveList("layer");
-
- logger.debug("finish: testSimpleUpdateLD5");
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- public void testSimpleUpdateLD6() throws Exception
- {
- try
- {
- logger.debug("created 2 stores: main, layer");
-
- fService.createDirectory("main:/", "a");
- fService.createDirectory("main:/a", "b");
-
- logger.debug("created dirs: main:/a, main:/a/b");
-
- fService.createLayeredDirectory("main:/", "layer:/", "layer");
-
- logger.debug("created layered dir: layer:/layer -> main:/");
-
- List diffs = fSyncService.compare(-1, "layer:/layer", -1, "main:/", null);
- assertEquals(0, diffs.size());
-
- fService.createDirectory("layer:/layer/a", "xyz");
- fService.createFile("layer:/layer/a/xyz", "index.html").close();
-
- logger.debug("created: layer:/layer/a/xyz, layer:/layer/a/xyz/index.html");
-
- diffs = fSyncService.compare(-1, "layer:/layer", -1, "main:/", null);
- assertEquals(1, diffs.size());
- assertEquals("[layer:/layer/a/xyz[-1] > main:/a/xyz[-1]]", diffs.toString());
-
- fService.createStore("main--workflow1");
-
- logger.debug("created store: main--workflow1");
-
- fService.createLayeredDirectory("main:/a", "main--workflow1:/", "a");
-
- logger.debug("created layered dir: main--workflow1:/a -> main:/a");
-
- diffs = fSyncService.compare(-1, "main--workflow1:/a", -1, "main:/a", null);
- assertEquals(0, diffs.size());
-
- diffs = new ArrayList(1);
- diffs.add(new AVMDifference(-1, "layer:/layer/a/xyz/index.html", -1, "main--workflow1:/a/xyz/index.html", AVMDifference.NEWER));
- diffs.add(new AVMDifference(-1, "layer:/layer/a/xyz", -1, "main--workflow1:/a/xyz", AVMDifference.NEWER));
-
- // ETHREEOH-2057
- fSyncService.update(diffs, null, false, false, false, false, "one", "one");
-
- logger.debug("updated: added: main--workflow1:/a/xyz, main--workflow1:/a/xyz/index.html");
-
- diffs = fSyncService.compare(-1, "layer:/layer/a", -1, "main:/a", null);
- assertEquals(1, diffs.size());
- assertEquals("[layer:/layer/a/xyz[-1] > main:/a/xyz[-1]]", diffs.toString());
-
- diffs = fSyncService.compare(-1, "main--workflow1:/a", -1, "main:/a", null);
- assertEquals(1, diffs.size());
- assertEquals("[main--workflow1:/a/xyz[-1] > main:/a/xyz[-1]]", diffs.toString());
-
- fSyncService.update(diffs, null, false, false, true, true, "two", "two");
- fSyncService.flatten("main--workflow1:/a", "main:/a");
-
- logger.debug("updated & flattened");
-
- diffs = fSyncService.compare(-1, "main--workflow1:/a", -1, "main:/a", null);
- assertEquals(0, diffs.size());
-
- diffs = fSyncService.compare(-1, "main--workflow1:/a", -1, "layer:/layer/a", null);
- assertEquals(0, diffs.size());
-
- recursiveList("main");
- recursiveList("layer");
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- finally
- {
- if (fService.getStore("main--workflow1") != null) { fService.purgeStore("main--workflow1"); }
- }
- }
-
- public void testDeleteLD1() throws Exception
- {
- try
- {
- logger.debug("created 2 stores: main, layer");
-
- fService.createDirectory("main:/", "a");
-
- OutputStream o = fService.createFile("main:/a", "foo");
- PrintStream out = new PrintStream(o);
- out.println("I am main:/a/foo");
- out.close();
-
- logger.debug("created file in main: main:/a/foo");
-
- fService.createLayeredDirectory("main:/a", "layer:/", "a");
-
- logger.debug("created layered dir: layer:/a -> main:/a");
-
- BufferedReader reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "layer:/a/foo")));
- String line = reader.readLine();
- reader.close();
- assertEquals("I am main:/a/foo", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/a/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am main:/a/foo", line);
-
- out = new PrintStream(fService.getFileOutputStream("layer:/a/foo"));
- out.println("I am layer:/a/foo");
- out.close();
-
- logger.debug("update file in layer: layer:/a/foo");
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "layer:/a/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am layer:/a/foo", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/a/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am main:/a/foo", line);
-
- List diffs = fSyncService.compare(-1, "layer:/a", -1, "main:/a", null);
- assertEquals(1, diffs.size());
- assertEquals("[layer:/a/foo[-1] > main:/a/foo[-1]]", diffs.toString());
-
- fSyncService.update(diffs, null, false, false, false, false, null, null);
-
- diffs = fSyncService.compare(-1, "layer:/a", -1, "main:/a", null);
- assertEquals(0, diffs.size());
-
- fSyncService.flatten("layer:/a", "main:/a");
-
- logger.debug("updated & flattened: updated file: main:/a/foo");
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "layer:/a/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am layer:/a/foo", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/a/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am layer:/a/foo", line);
-
- fService.removeNode("main:/", "a");
- fService.createSnapshot("main", null, null);
-
- logger.debug("remove directory in main & snapshot: main:/a");
-
- assertNotNull(fService.lookup(-1, "layer:/a"));
- assertNull(fService.lookup(-1, "layer:/a/foo"));
-
- try
- {
- fService.getFileInputStream(-1, "layer:/a/foo");
- fail();
- }
- catch (AVMNotFoundException nfe)
- {
- // expected
- }
-
- try
- {
- fService.getFileOutputStream("layer:/a/foo");
- fail();
- }
- catch (AVMNotFoundException nfe)
- {
- // expected
- }
-
- recursiveList("main");
- recursiveList("layer");
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- public void testDeleteLD2() throws Exception
- {
- try
- {
- logger.debug("created 2 stores: main, layer");
-
- fService.createDirectory("main:/", "a");
-
- OutputStream o = fService.createFile("main:/a", "foo");
- PrintStream out = new PrintStream(o);
- out.println("I am main:/a/foo");
- out.close();
-
- logger.debug("created file in main: main:/a/foo");
-
- fService.createLayeredDirectory("main:/a", "layer:/", "a");
-
- logger.debug("created layered dir: layer:/a -> main:/a");
-
- BufferedReader reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "layer:/a/foo")));
- String line = reader.readLine();
- reader.close();
- assertEquals("I am main:/a/foo", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/a/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am main:/a/foo", line);
-
- out = new PrintStream(fService.getFileOutputStream("layer:/a/foo"));
- out.println("I am layer:/a/foo");
- out.close();
-
- logger.debug("update file in layer: layer:/a/foo");
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "layer:/a/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am layer:/a/foo", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/a/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am main:/a/foo", line);
-
- fService.removeNode("main:/", "a");
-
- logger.debug("remove directory in main: main:/a");
-
- fService.createSnapshot("main", null, null);
-
- logger.debug("snapshot: main:/a");
-
- assertNull(fService.lookup(-1, "main:/a"));
- assertNull(fService.lookup(-1, "main:/a/foo"));
-
- try
- {
- fService.getFileInputStream(-1, "main:/a/foo");
- fail();
- }
- catch (AVMNotFoundException nfe)
- {
- // expected
- }
-
- assertNotNull(fService.lookup(-1, "layer:/a"));
- assertNotNull(fService.lookup(-1, "layer:/a/foo"));
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "layer:/a/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am layer:/a/foo", line);
-
- out = new PrintStream(fService.getFileOutputStream("layer:/a/foo"));
- out.println("I am layer:/a/foo V2");
- out.close();
-
- List diffs = fSyncService.compare(-1, "layer:/a", -1, "main:/a", null);
- assertEquals(1, diffs.size());
- assertEquals("[layer:/a[-1] > main:/a[-1]]", diffs.toString());
-
- fSyncService.update(diffs, null, false, false, false, false, null, null);
-
- diffs = fSyncService.compare(-1, "layer:/a", -1, "main:/a", null);
- assertEquals(0, diffs.size());
-
- logger.debug("updated: updated dir & file: main:/a/foo");
-
- fSyncService.flatten("layer:/a", "main:/a");
-
- logger.debug("flattened: layer:/a -> main:/a");
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "layer:/a/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am layer:/a/foo V2", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/a/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am layer:/a/foo V2", line);
-
- recursiveList("main");
- recursiveList("layer");
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- public void testDeleteLD3() throws Exception
- {
- try
- {
- fService.createStore("mainB");
- fService.createStore("mainB--layer");
- fService.createDirectory("mainB:/", "a");
- fService.createSnapshot("mainB", null, null);
-
- SortedMap directoryListing = fService.getDirectoryListing(-1, "mainB:/a");
- assertTrue(directoryListing.isEmpty());
-
- fService.createLayeredDirectory("mainB:/a", "mainB--layer:/", "a");
-
- fService.createFile("mainB--layer:/a", "testfile.txt");
- fService.createDirectory("mainB--layer:/a", "testfolder");
- fService.createSnapshot("mainB--layer", null, null);
-
- List diffs = fSyncService.compare(-1, "mainB--layer:/a", -1, "mainB:/a", null);
- assertEquals(2, diffs.size());
- assertEquals("[mainB--layer:/a/testfile.txt[-1] > mainB:/a/testfile.txt[-1], mainB--layer:/a/testfolder[-1] > mainB:/a/testfolder[-1]]", diffs.toString());
-
- // ALF-1948
- fService.removeNode("mainB--layer:/a", "testfile.txt");
- fService.createSnapshot("mainB--layer", null, null);
- diffs = fSyncService.compare(-1, "mainB--layer:/a", -1, "mainB:/a", null);
- assertEquals(1, diffs.size());
- assertEquals("[mainB--layer:/a/testfolder[-1] > mainB:/a/testfolder[-1]]", diffs.toString());
-
- fService.removeNode("mainB--layer:/a", "testfolder");
- fService.createSnapshot("mainB--layer", null, null);
- diffs = fSyncService.compare(-1, "mainB--layer:/a", -1, "mainB:/a", null);
- assertEquals(0, diffs.size());
-
- directoryListing = fService.getDirectoryListing(-1, "mainB--layer:/a");
- assertTrue(directoryListing.isEmpty());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- throw e;
- }
- finally
- {
- fService.purgeStore("mainB");
- fService.purgeStore("mainB--layer");
- }
- }
-
- public void testDeleteLD4() throws Exception
- {
- try
- {
- logger.debug("created 2 stores: main, layer");
-
- fService.createDirectory("main:/", "a");
-
- fService.createLayeredDirectory("main:/a", "layer:/", "a");
-
- logger.debug("created layered dir: layer:/a -> main:/a");
-
- List diffs = fSyncService.compare(-1, "layer:/a", -1, "main:/a", null);
- assertEquals(0, diffs.size());
-
- fService.createStore("layer2");
-
- logger.debug("created store: layer2");
-
- fService.createLayeredDirectory("layer:/a", "layer2:/", "a");
-
- logger.debug("created layered dir: layer2:/a -> layer:/a");
-
- OutputStream o = fService.createFile("layer2:/a", "foo");
- PrintStream out = new PrintStream(o);
- out.println("I am layer2:/a/foo");
- out.close();
-
- diffs = fSyncService.compare(-1, "layer2:/a", -1, "layer:/a", null);
- assertEquals(1, diffs.size());
- assertEquals("[layer2:/a/foo[-1] > layer:/a/foo[-1]]", diffs.toString());
-
- fSyncService.update(diffs, null, false, false, false, false, null, null);
-
- diffs = fSyncService.compare(-1, "layer2:/a", -1, "layer:/a", null);
- assertEquals(0, diffs.size());
-
- diffs = fSyncService.compare(-1, "layer:/a", -1, "main:/a", null);
- assertEquals(1, diffs.size());
- assertEquals("[layer:/a/foo[-1] > main:/a/foo[-1]]", diffs.toString());
-
- // ALF-1948
- fService.removeNode("layer:/a", "foo");
-
- logger.debug("remove file in layer: layer:/a/foo");
-
- diffs = fSyncService.compare(-1, "layer:/a", -1, "main:/a", null);
- assertEquals(0, diffs.size());
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- finally
- {
- if (fService.getStore("layer2") != null) { fService.purgeStore("layer2"); }
- }
- }
-
- /**
- * Test bulk update (using layered directory).
- */
- public void testBulkUpdateLD() throws Exception
- {
- //String LOAD_DIR = "config/alfresco/bootstrap";
- String LOAD_DIR = System.getProperty("alfresco.java.sources.dir", "source/java") +
- "/org/alfresco/repo/avm/actions";
-
- String[] split = LOAD_DIR.split("/");
- String DIR = split[split.length-1];
-
- try
- {
- RemoteBulkLoader loader = new RemoteBulkLoader();
- loader.setAvmRemoteService(fService);
-
- fService.createLayeredDirectory("main:/", "layer:/", "layer");
-
- loader.recursiveLoad(LOAD_DIR, "layer:/layer");
-
-
-
- List diffs = fSyncService.compare(-1, "layer:/layer", -1, "main:/", null);
- assertEquals(1, diffs.size());
- assertEquals("[layer:/layer/"+DIR+"[-1] > main:/"+DIR+"[-1]]", diffs.toString());
-
- fService.createSnapshot("layer", null, null);
- fSyncService.update(diffs, null, false, false, false, false, null, null);
- fService.createSnapshot("main", null, null);
-
- diffs = fSyncService.compare(-1, "layer:/layer", -1, "main:/", null);
- assertEquals(0, diffs.size());
-
- fSyncService.flatten("layer:/layer", "main:/");
- recursiveList("layer");
- recursiveList("main");
- fService.createStore("layer2");
- fService.createLayeredDirectory("layer:/layer", "layer2:/", "layer");
-
- loader.recursiveLoad(LOAD_DIR, "layer2:/layer/"+DIR);
-
- fService.createSnapshot("layer2", null, null);
- diffs = fSyncService.compare(-1, "layer2:/layer", -1, "layer:/layer", null);
- assertEquals(1, diffs.size());
- assertEquals("[layer2:/layer/"+DIR+"/"+DIR+"[-1] > layer:/layer/"+DIR+"/"+DIR+"[-1]]", diffs.toString());
-
- fSyncService.update(diffs, null, false, false, false, false, null, null);
- diffs = fSyncService.compare(-1, "layer2:/layer", -1, "layer:/layer", null);
- assertEquals(0, diffs.size());
-
- fSyncService.flatten("layer2:/layer", "layer:/layer");
- diffs = fSyncService.compare(-1, "layer:/layer", -1, "main:/", null);
- assertEquals(1, diffs.size());
- assertEquals("[layer:/layer/"+DIR+"/"+DIR+"[-1] > main:/"+DIR+"/"+DIR+"[-1]]", diffs.toString());
-
- recursiveList("layer2");
- recursiveList("layer");
- recursiveList("main");
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- finally
- {
- if (fService.getStore("layer2") != null) { fService.purgeStore("layer2"); }
- }
- }
-
- /**
- * Test the flatten operation, with a little bit of compare and update.
- */
- public void testFlatten() throws Exception
- {
- try
- {
- setupBasicTree();
- fService.createLayeredDirectory("main:/a", "main:/", "layer");
- fService.createSnapshot("main", null, null);
- recursiveList("main");
- // Change some stuff.
- fService.createFile("main:/layer/b", "fig").close();
- fService.getFileOutputStream("main:/layer/b/c/foo").close();
- fService.createSnapshot("main", null, null);
- recursiveList("main");
- // Do a compare.
- List diffs = fSyncService.compare(-1, "main:/layer", -1, "main:/a", null);
- assertEquals(2, diffs.size());
- assertEquals("[main:/layer/b/c/foo[-1] > main:/a/b/c/foo[-1], main:/layer/b/fig[-1] > main:/a/b/fig[-1]]", diffs.toString());
- // Update.
- fSyncService.update(diffs, null, false, false, false, false, null, null);
- recursiveList("main");
- // 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)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- /**
- * Test partial flatten.
- */
- public void testPartialFlatten() throws Exception
- {
- try
- {
- setupBasicTree();
- fService.createLayeredDirectory("main:/a", "layer:/", "a");
- fService.getFileOutputStream("layer:/a/b/c/foo").close();
- fService.createFile("layer:/a/b", "bing").close();
- List diffs = new ArrayList();
- diffs.add(new AVMDifference(-1, "layer:/a/b/c/foo", -1, "main:/a/b/c/foo", AVMDifference.NEWER));
- fSyncService.update(diffs, null, false, false, false, false, null, null);
- fSyncService.flatten("layer:/a", "main:/a");
- AVMNodeDescriptor b = fService.lookup(-1, "layer:/a/b");
- assertTrue(b.isLayeredDirectory());
- AVMNodeDescriptor c = fService.lookup(-1, "layer:/a/b/c");
- assertTrue(c.isPlainDirectory());
- diffs = fSyncService.compare(-1, "layer:/a", -1, "main:/a", null);
- assertEquals(1, diffs.size());
- assertEquals("[layer:/a/b/bing[-1] > main:/a/b/bing[-1]]", diffs.toString());
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- /**
- * Test AVMSyncService resetLayer.
- */
- public void testResetLayer() throws Exception
- {
- try
- {
- setupBasicTree();
- fService.createLayeredDirectory("main:/a", "main:/", "layer");
- fService.createFile("main:/layer", "figs").close();
- assertFalse(recursiveContents("main:/a", -1, true).equals(recursiveContents("main:/layer", -1, true)));
- recursiveList("main");
- fSyncService.resetLayer("main:/layer");
- assertEquals(recursiveContents("main:/a", -1, true), recursiveContents("main:/layer", -1, true));
- recursiveList("main");
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- /**
- * Test AVMSyncService update.
- */
- public void testUpdate() throws Exception
- {
- try
- {
- setupBasicTree();
- // Try branch to branch update.
- fService.createBranch(-1, "main:/a", "main:/", "abranch");
- fService.createFile("main:/abranch", "monkey").close();
- fService.createFile("main:/abranch", "#foo").close();
- fService.createFile("main:/abranch", "figs.tmp").close();
- fService.getFileOutputStream("main:/abranch/b/c/foo").close();
- recursiveList("main");
- List cmp = fSyncService.compare(-1, "main:/abranch", -1, "main:/a", excluder);
- assertEquals(2, cmp.size());
- assertEquals("[main:/abranch/b/c/foo[-1] > main:/a/b/c/foo[-1], main:/abranch/monkey[-1] > main:/a/monkey[-1]]", cmp.toString());
- List diffs = new ArrayList();
- diffs.add(new AVMDifference(-1, "main:/abranch/monkey", -1, "main:/a/monkey", AVMDifference.NEWER));
- diffs.add(new AVMDifference(-1, "main:/abranch/b/c/foo", -1, "main:/a/b/c/foo", AVMDifference.NEWER));
- fSyncService.update(diffs, null, false, false, false, false, null, null);
- fService.createSnapshot("main", null, null);
- recursiveList("main");
- assertEquals(fService.lookup(-1, "main:/abranch/monkey").getId(), fService.lookup(-1, "main:/a/monkey").getId());
- assertEquals(fService.lookup(-1, "main:/abranch/b/c/foo").getId(), fService.lookup(-1, "main:/a/b/c/foo").getId());
- // Try updating a deletion.
- fService.removeNode("main:/abranch", "monkey");
- recursiveList("main");
- cmp = fSyncService.compare(-1, "main:/abranch", -1, "main:/a", excluder);
- assertEquals(1, cmp.size());
- assertEquals("[main:/abranch/monkey[-1] > main:/a/monkey[-1]]", cmp.toString());
- diffs.clear();
- diffs.add(new AVMDifference(-1, "main:/abranch/monkey", -1, "main:/a/monkey", AVMDifference.NEWER));
- fSyncService.update(diffs, null, false, false, false, false, null, null);
- assertEquals(0, fSyncService.compare(-1, "main:/abranch", -1, "main:/a", excluder).size());
- fService.createSnapshot("main", null, null);
- recursiveList("main");
- assertEquals(fService.lookup(-1, "main:/abranch/monkey", true).getId(), fService.lookup(-1, "main:/a/monkey", true).getId());
- // Try one that should fail.
- fService.createFile("main:/abranch", "monkey").close();
- cmp = fSyncService.compare(-1, "main:/abranch", -1, "main:/a", excluder);
- assertEquals(1, cmp.size());
- assertEquals("[main:/abranch/monkey[-1] > main:/a/monkey[-1]]", cmp.toString());
- diffs.clear();
- diffs.add(new AVMDifference(-1, "main:/a/monkey", -1, "main:/abranch/monkey", AVMDifference.NEWER));
- try
- {
- fSyncService.update(diffs, null, false, false, false, false, null, null);
- fail();
- }
- catch (AVMSyncException se)
- {
- // Do nothing.
- }
- // Get synced again by doing an override older.
- recursiveList("main");
- diffs.clear();
- diffs.add(new AVMDifference(-1, "main:/a/monkey", -1, "main:/abranch/monkey", AVMDifference.NEWER));
- fSyncService.update(diffs, null, false, false, false, true, null, null);
- assertEquals(0, fSyncService.compare(-1, "main:/abranch", -1, "main:/a", excluder).size());
- fService.createSnapshot("main", null, null);
- recursiveList("main");
- assertEquals(fService.lookup(-1, "main:/a/monkey", true).getId(), fService.lookup(-1, "main:/abranch/monkey", true).getId());
- // Cleanup for layered tests.
- fService.purgeStore("main");
- fService.createStore("main");
- setupBasicTree();
- fService.createLayeredDirectory("main:/a", "main:/", "layer");
- fService.createFile("main:/layer", "monkey").close();
- fService.getFileOutputStream("main:/layer/b/c/foo").close();
- cmp = fSyncService.compare(-1, "main:/layer", -1, "main:/a", excluder);
- assertEquals(2, cmp.size());
- assertEquals("[main:/layer/b/c/foo[-1] > main:/a/b/c/foo[-1], main:/layer/monkey[-1] > main:/a/monkey[-1]]", cmp.toString());
- recursiveList("main");
- diffs.clear();
- diffs.add(new AVMDifference(-1, "main:/layer/monkey", -1, "main:/a/monkey", AVMDifference.NEWER));
- diffs.add(new AVMDifference(-1, "main:/layer/b/c/foo", -1, "main:/a/b/c/foo", AVMDifference.NEWER));
- fSyncService.update(diffs, null, false, false, false, false, null, null);
- assertEquals(0, fSyncService.compare(-1, "main:/layer", -1, "main:/a", excluder).size());
- fService.createSnapshot("main", null, null);
- recursiveList("main");
- assertEquals(fService.lookup(-1, "main:/layer/monkey").getId(), fService.lookup(-1, "main:/a/monkey").getId());
- assertEquals(fService.lookup(-1, "main:/layer/b/c/foo").getId(), fService.lookup(-1, "main:/a/b/c/foo").getId());
- // Try updating a deletion.
- fService.removeNode("main:/layer", "monkey");
- recursiveList("main");
- cmp = fSyncService.compare(-1, "main:/layer", -1, "main:/a", excluder);
- assertEquals(1, cmp.size());
- assertEquals("[main:/layer/monkey[-1] > main:/a/monkey[-1]]", cmp.toString());
- diffs.clear();
- diffs.add(new AVMDifference(-1, "main:/layer/monkey", -1, "main:/a/monkey", AVMDifference.NEWER));
- fSyncService.update(diffs, null, false, false, false, false, null, null);
- assertEquals(0, fSyncService.compare(-1, "main:/layer", -1, "main:/a", excluder).size());
- fService.createSnapshot("main", null, null);
- recursiveList("main");
- assertEquals(fService.lookup(-1, "main:/layer/monkey", true).getId(), fService.lookup(-1, "main:/a/monkey", true).getId());
- // Try one that should fail.
- fService.createFile("main:/layer", "monkey").close();
- cmp = fSyncService.compare(-1, "main:/layer", -1, "main:/a", excluder);
- assertEquals(1, cmp.size());
- assertEquals("[main:/layer/monkey[-1] > main:/a/monkey[-1]]", cmp.toString());
- diffs.clear();
- diffs.add(new AVMDifference(-1, "main:/a/monkey", -1, "main:/layer/monkey", AVMDifference.NEWER));
- try
- {
- fSyncService.update(diffs, null, false, false, false, false, null, null);
- fail();
- }
- catch (AVMSyncException se)
- {
- // Do nothing.
- }
- // Get synced again by doing an override older.
- recursiveList("main");
- diffs.clear();
- diffs.add(new AVMDifference(-1, "main:/a/monkey", -1, "main:/layer/monkey", AVMDifference.NEWER));
- fSyncService.update(diffs, null, false, false, false, true, null, null);
- assertEquals(0, fSyncService.compare(-1, "main:/layer", -1, "main:/a", excluder).size());
- fService.createSnapshot("main", null, null);
- recursiveList("main");
- assertEquals(fService.lookup(-1, "main:/a/monkey", true).getId(), fService.lookup(-1, "main:/layer/monkey", true).getId());
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- /**
- * Test that an update forces a snapshot on the source.
- */
- public void testUpdateSnapshot() throws Exception
- {
- try
- {
- setupBasicTree();
- fService.createStore("branch");
- fService.createBranch(-1, "main:/", "branch:/", "branch");
- // Modify some things in the branch.
- fService.createFile("branch:/branch/a/b", "fing").close();
- fService.getFileOutputStream("branch:/branch/a/b/c/foo").close();
- fService.removeNode("branch:/branch/a/b/c", "bar");
- List diffs = fSyncService.compare(-1, "branch:/branch", -1, "main:/", null);
- assertEquals(3, diffs.size());
- assertEquals("[branch:/branch/a/b/c/bar[-1] > main:/a/b/c/bar[-1], branch:/branch/a/b/c/foo[-1] > main:/a/b/c/foo[-1], branch:/branch/a/b/fing[-1] > main:/a/b/fing[-1]]", diffs.toString());
- // Now update.
- fSyncService.update(diffs, null, false, false, false, false, null, null);
- diffs = fSyncService.compare(-1, "branch:/branch", -1, "main:/", null);
- assertEquals(0, diffs.size());
- fService.getFileOutputStream("branch:/branch/a/b/fing").close();
- assertTrue(fService.lookup(-1, "branch:/branch/a/b/fing").getId() != fService.lookup(-1, "main:/a/b/fing").getId());
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- finally
- {
- fService.purgeStore("branch");
- }
- }
-
- /**
- * Test a noodle update.
- */
- public void testNoodleUpdate() throws Exception
- {
- try
- {
- setupBasicTree();
- fService.createStore("staging");
- List diffs = fSyncService.compare(-1, "main:/", -1, "staging:/", null);
- assertEquals(2, diffs.size());
- assertEquals("[main:/a[-1] > staging:/a[-1], main:/d[-1] > staging:/d[-1]]", diffs.toString());
- List noodle = new ArrayList();
- noodle.add(new AVMDifference(-1, "main:/a/b/c/foo", -1, "staging:/a/b/c/foo", AVMDifference.NEWER));
- noodle.add(new AVMDifference(-1, "main:/d", -1, "staging:/d", AVMDifference.NEWER));
- fSyncService.update(noodle, null, false, false, false, false, null, null);
- diffs = fSyncService.compare(-1, "main:/", -1, "staging:/", null);
- assertEquals(1, diffs.size());
- assertEquals("[main:/a/b/c/bar[-1] > staging:/a/b/c/bar[-1]]", diffs.toString());
- assertEquals("main:/a/b/c/bar", diffs.get(0).getSourcePath());
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- finally
- {
- fService.purgeStore("staging");
- }
- }
-
- public void testRename1() throws Exception
- {
- try
- {
- setupBasicTree();
- fService.createLayeredDirectory("main:/a", "layer:/", "a");
- fService.rename("layer:/a/b", "c", "layer:/a/b", "z");
- recursiveContents("layer:/");
- List diffs = fSyncService.compare(-1, "layer:/a", -1, "main:/a", null);
- assertEquals(2, diffs.size());
- assertEquals("[layer:/a/b/c[-1] > main:/a/b/c[-1], layer:/a/b/z[-1] > main:/a/b/z[-1]]", diffs.toString());
- fSyncService.update(diffs, null, false, false, false, false, null, null);
- recursiveContents("layer:/");
- recursiveContents("main:/");
- fSyncService.flatten("layer:/a", "main:/a");
- recursiveContents("layer:/");
- recursiveContents("main:/");
- fService.createFile("layer:/a/b/z", "fudge").close();
- fService.rename("layer:/a/b", "z", "layer:/a/b", "y");
- 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());
- fSyncService.update(diffs, null, false, false, false, false, null, null);
- recursiveContents("layer:/");
- recursiveContents("main:/");
- fSyncService.flatten("layer:/a", "main:/a");
- recursiveContents("layer:/");
- recursiveContents("main:/");
- }
- catch (Exception e)
- {
- e.printStackTrace();
- throw e;
- }
- }
-
- public void testRename2() throws Exception
- {
- String fileLower = "foo";
- String fileUpper = "FOO";
-
- try
- {
- logger.debug("created 2 stores: main, layer");
-
- fService.createDirectory("main:/", "a");
- fService.createFile("main:/a", fileLower);
-
- logger.debug("created: main:/a/"+fileLower);
-
- AVMNodeDescriptor desc = fService.lookup(-1, "main:/a/"+fileLower);
- assertNotNull(desc);
- assertEquals("main:/a/"+fileLower, desc.getPath());
-
- fService.createLayeredDirectory("main:/a", "layer:/", "a");
-
- logger.debug("created: layer:/a/"+fileLower+" -> main:/a/"+fileLower);
-
- assertNotNull(fService.lookup(-1, "layer:/a/"+fileLower));
-
- List diffs = fSyncService.compare(-1, "layer:/a", -1, "main:/a", null);
- assertEquals(0, diffs.size());
-
- fService.rename("layer:/a/", fileLower, "layer:/a", fileUpper);
-
- logger.debug("rename: layer:/a/"+fileLower+" -> layer:/a/"+fileUpper);
-
- diffs = fSyncService.compare(-1, "layer:/a", -1, "main:/a", null);
- assertEquals("[layer:/a/"+fileUpper+"[-1] > main:/a/"+fileUpper+"[-1]]", diffs.toString());
-
- fSyncService.update(diffs, null, false, false, false, false, null, null);
-
- logger.debug("update: layer:/a/"+fileUpper+" -> main:/a/"+fileUpper);
-
- diffs = fSyncService.compare(-1, "layer:/a", -1, "main:/a", null);
- assertEquals(0, diffs.size());
-
- fSyncService.flatten("layer:/a", "main:/a");
-
- logger.debug("flatten: layer:/a -> main:/a");
-
- desc = fService.lookup(-1, "main:/a/"+fileLower);
- assertNotNull(desc);
- assertEquals("main:/a/"+fileUpper, desc.getPath());
-
- desc = fService.lookup(-1, "main:/a/"+fileUpper);
- assertNotNull(desc);
- assertEquals("main:/a/"+fileUpper, desc.getPath());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- throw e;
- }
- }
-
- public void testRename3() throws Exception
- {
- try
- {
- logger.debug("created 2 stores: main, layer");
-
- fService.createDirectory("main:/", "a");
- fService.createDirectory("main:/a", "b");
- fService.createDirectory("main:/a/b", "c");
-
- logger.debug("created: main:/a/b/c");
-
- fService.createLayeredDirectory("main:/a", "layer:/", "a");
-
- logger.debug("created: layer:/a -> main:/a");
-
- List diffs = fSyncService.compare(-1, "layer:/a", -1, "main:/a", null);
- assertEquals(0, diffs.size());
-
- AVMNodeDescriptor desc = fService.lookup(-1, "main:/a/b");
- assertNotNull(desc);
- assertEquals("main:/a/b", desc.getPath());
-
- desc = fService.lookup(-1, "main:/a/B");
- assertNotNull(desc);
- assertEquals("main:/a/b", desc.getPath());
-
- desc = fService.lookup(-1, "layer:/a/b");
- assertNotNull(desc);
- assertEquals("layer:/a/b", desc.getPath());
-
- fService.rename("layer:/a/", "b", "layer:/a", "B");
-
- logger.debug("rename: layer:/a/b -> layer:/a/B");
-
- desc = fService.lookup(-1, "main:/a/b");
- assertNotNull(desc);
- assertEquals("main:/a/b", desc.getPath());
-
- desc = fService.lookup(-1, "layer:/a/B");
- assertNotNull(desc);
- assertEquals("layer:/a/B", desc.getPath());
-
- desc = fService.lookup(-1, "layer:/a/b");
- assertNotNull(desc);
- assertEquals("layer:/a/B", desc.getPath());
-
- diffs = fSyncService.compare(-1, "layer:/a", -1, "main:/a", null);
- assertEquals("[layer:/a/B[-1] > main:/a/B[-1]]", diffs.toString());
-
- fSyncService.update(diffs, null, false, false, false, false, null, null);
-
- logger.debug("update: layer:/a/B -> main:/a/B");
-
- diffs = fSyncService.compare(-1, "layer:/a", -1, "main:/a", null);
- assertEquals(0, diffs.size());
-
- fSyncService.flatten("layer:/a", "main:/a");
-
- logger.debug("flatten: layer:/a -> main:/a");
-
- desc = fService.lookup(-1, "main:/a/b");
- assertNotNull(desc);
- assertEquals("main:/a/B", desc.getPath());
-
- desc = fService.lookup(-1, "main:/a/B");
- assertNotNull(desc);
- assertEquals("main:/a/B", desc.getPath());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- throw e;
- }
- }
-
-
- /**
- * Test file properties update ...
- */
- public void testUpdateFileTitleAndDescription() throws Exception
- {
- try
- {
- fService.createLayeredDirectory("main:/", "layer:/", "layer");
- fService.createDirectory("layer:/layer", "b");
- fService.createFile("layer:/layer/b", "foo").close();
-
- List diffs = fSyncService.compare(-1, "layer:/layer", -1, "main:/", null);
- assertEquals("[layer:/layer/b[-1] > main:/b[-1]]", diffs.toString());
-
- fService.createSnapshot("layer", null, null);
- fSyncService.update(diffs, null, false, false, false, false, null, null);
- fService.createSnapshot("main", null, null);
-
- diffs = fSyncService.compare(-1, "layer:/layer", -1, "main:/", null);
- assertEquals(0, diffs.size());
-
- fSyncService.flatten("layer:/layer", "main:/");
-
- assertEquals(0, fService.getNodeProperties(-1, "main:/b/foo").size());
- assertEquals(0, fService.getNodeProperties(-1, "layer:/layer/b/foo").size());
-
- Map properties = new HashMap();
- properties.put(ContentModel.PROP_TITLE, new PropertyValue(DataTypeDefinition.TEXT, "foo title"));
- properties.put(ContentModel.PROP_DESCRIPTION, new PropertyValue(DataTypeDefinition.TEXT, "foo descrip"));
- fService.setNodeProperties("layer:/layer/b/foo", properties);
-
- diffs = fSyncService.compare(-1, "layer:/layer", -1, "main:/", null);
- assertEquals("[layer:/layer/b/foo[-1] > main:/b/foo[-1]]", diffs.toString());
-
- fService.createSnapshot("layer", null, null);
- fSyncService.update(diffs, null, false, false, false, false, null, null);
- fService.createSnapshot("main", null, null);
-
- diffs = fSyncService.compare(-1, "layer:/layer", -1, "main:/", null);
- assertEquals(0, diffs.size());
-
- fSyncService.flatten("layer:/layer", "main:/");
-
- assertEquals(2, fService.getNodeProperties(-1, "main:/b/foo").size());
-
- assertEquals("foo title", fService.getNodeProperty(-1, "main:/b/foo", ContentModel.PROP_TITLE).getStringValue());
- assertEquals("foo descrip", fService.getNodeProperty(-1, "main:/b/foo", ContentModel.PROP_DESCRIPTION).getStringValue());
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- /**
- * Test directory properties update ...
- */
- public void testUpdateDirectoryTitleAndDescription() throws Exception
- {
- try
- {
- fService.createLayeredDirectory("main:/", "layer:/", "layer");
- fService.createDirectory("layer:/layer", "b");
- fService.createFile("layer:/layer/b", "foo").close();
-
- List diffs = fSyncService.compare(-1, "layer:/layer", -1, "main:/", null);
- assertEquals("[layer:/layer/b[-1] > main:/b[-1]]", diffs.toString());
-
- fService.createSnapshot("layer", null, null);
- fSyncService.update(diffs, null, false, false, false, false, null, null);
- fService.createSnapshot("main", null, null);
-
- diffs = fSyncService.compare(-1, "layer:/layer", -1, "main:/", null);
- assertEquals(0, diffs.size());
-
- fSyncService.flatten("layer:/layer", "main:/");
-
- assertEquals(0, fService.getNodeProperties(-1, "main:/b").size());
- assertEquals(0, fService.getNodeProperties(-1, "layer:/layer/b").size());
-
- Map properties = new HashMap();
- properties.put(ContentModel.PROP_TITLE, new PropertyValue(DataTypeDefinition.TEXT, "b title"));
- properties.put(ContentModel.PROP_DESCRIPTION, new PropertyValue(DataTypeDefinition.TEXT, "b descrip"));
- fService.setNodeProperties("layer:/layer/b", properties);
-
- assertEquals(0, fService.getNodeProperties(-1, "main:/b").size());
- assertEquals(2, fService.getNodeProperties(-1, "layer:/layer/b").size());
-
- diffs = fSyncService.compare(-1, "layer:/layer", -1, "main:/", null);
- assertEquals("[layer:/layer/b[-1] > main:/b[-1]]", diffs.toString());
-
- fService.createSnapshot("layer", null, null);
- fSyncService.update(diffs, null, false, false, false, false, null, null);
- fService.createSnapshot("main", null, null);
-
- assertEquals(2, fService.getNodeProperties(-1, "main:/b").size());
- assertEquals(2, fService.getNodeProperties(-1, "layer:/layer/b").size());
-
- diffs = fSyncService.compare(-1, "layer:/layer", -1, "main:/", null);
- assertEquals(0, diffs.size());
-
- fSyncService.flatten("layer:/layer", "main:/");
-
- assertEquals(2, fService.getNodeProperties(-1, "main:/b").size());
- assertEquals(2, fService.getNodeProperties(-1, "layer:/layer/b").size());
-
- assertEquals("b title", fService.getNodeProperty(-1, "main:/b", ContentModel.PROP_TITLE).getStringValue());
- assertEquals("b descrip", fService.getNodeProperty(-1, "main:/b", ContentModel.PROP_DESCRIPTION).getStringValue());
-
- fService.setNodeProperty("layer:/layer/b", ContentModel.PROP_TITLE, new PropertyValue(DataTypeDefinition.TEXT, "b title2"));
- fService.setNodeProperty("layer:/layer/b", ContentModel.PROP_DESCRIPTION, new PropertyValue(DataTypeDefinition.TEXT, "b descrip2"));
-
- diffs = fSyncService.compare(-1, "layer:/layer", -1, "main:/", null);
- assertEquals("[layer:/layer/b[-1] > main:/b[-1]]", diffs.toString());
-
- fService.createSnapshot("layer", null, null);
- fSyncService.update(diffs, null, false, false, false, false, null, null);
- fService.createSnapshot("main", null, null);
-
- diffs = fSyncService.compare(-1, "layer:/layer", -1, "main:/", null);
- assertEquals(0, diffs.size());
-
- fSyncService.flatten("layer:/layer", "main:/");
-
- assertEquals(2, fService.getNodeProperties(-1, "main:/b").size());
- assertEquals(2, fService.getNodeProperties(-1, "layer:/layer/b").size());
-
- assertEquals("b title2", fService.getNodeProperty(-1, "main:/b", ContentModel.PROP_TITLE).getStringValue());
- assertEquals("b descrip2", fService.getNodeProperty(-1, "main:/b", ContentModel.PROP_DESCRIPTION).getStringValue());
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- public void testSimpleUpdateLF1() throws Exception
- {
- try
- {
- List snapshots = fService.getStoreVersions("main");
- assertEquals(1, snapshots.size());
- assertEquals(0, snapshots.get(0).getVersionID());
-
- snapshots = fService.getStoreVersions("layer");
- assertEquals(1, snapshots.size());
- assertEquals(0, snapshots.get(0).getVersionID());
-
- fService.createDirectory("main:/", "a");
- fService.createDirectory("layer:/", "a");
-
- logger.debug("created 2 plain dirs: main:/a, layer:/a");
-
- fService.createFile("main:/a", "foo");
-
- assertEquals(1, fService.lookup(-1, "main:/a/foo").getVersionID());
-
- PrintStream out = new PrintStream(fService.getFileOutputStream("main:/a/foo"));
- out.println("I am main:/a/foo");
- out.close();
-
- AVMNodeDescriptor node = fService.lookup(-1, "main:/a/foo");
- assertEquals(1, node.getVersionID());
- List history = fService.getHistory(node, -1);
- assertEquals(0, history.size());
-
- fService.createSnapshot("main", null, null);
-
- snapshots = fService.getStoreVersions("main");
- assertEquals(2, snapshots.size());
- assertEquals(1, snapshots.get(snapshots.size()-1).getVersionID());
-
- snapshots = fService.getStoreVersions("layer");
- assertEquals(1, snapshots.size());
- assertEquals(0, snapshots.get(0).getVersionID());
-
- assertEquals(1, fService.lookup(-1, "main:/a/foo").getVersionID());
- assertEquals(1, fService.lookup(1, "main:/a/foo").getVersionID());
-
- logger.debug("created plain file: main:/a/foo");
-
- fService.createLayeredFile("main:/a/foo", "layer:/a", "foo");
-
- assertEquals(1, fService.lookup(-1, "layer:/a/foo").getVersionID());
-
- BufferedReader reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "layer:/a/foo")));
- String line = reader.readLine();
- reader.close();
- assertEquals("I am main:/a/foo", line);
-
- node = fService.lookup(-1, "layer:/a/foo");
- assertEquals(1, node.getVersionID());
-
- history = fService.getHistory(node, -1);
- assertEquals(0, history.size());
-
- fService.createSnapshot("layer", null, null);
-
- snapshots = fService.getStoreVersions("main");
- assertEquals(2, snapshots.size());
- assertEquals(1, snapshots.get(snapshots.size()-1).getVersionID());
-
- snapshots = fService.getStoreVersions("layer");
- assertEquals(2, snapshots.size());
- assertEquals(1, snapshots.get(snapshots.size()-1).getVersionID());
-
- assertEquals(1, fService.lookup(-1, "layer:/a/foo").getVersionID());
- assertEquals(1, fService.lookup(1, "layer:/a/foo").getVersionID());
-
- List diffs = fSyncService.compare(-1, "layer:/a", -1, "main:/a", null);
- assertEquals(0, diffs.size());
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "layer:/a/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am main:/a/foo", line);
-
- logger.debug("created layered file: layer:/a/foo -> main:/a/foo");
-
- out = new PrintStream(fService.getFileOutputStream("layer:/a/foo"));
- out.println("I am layer:/a/foo");
- out.close();
-
- logger.debug("modified file: layer:/a/foo");
-
- assertEquals(2, fService.lookup(-1, "layer:/a/foo").getVersionID());
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/a/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am main:/a/foo", line);
-
- diffs = fSyncService.compare(-1, "layer:/a", -1, "main:/a", null);
- assertEquals(1, diffs.size());
-
- // TODO - review behaviour
- assertEquals("[layer:/a/foo[-1] > main:/a/foo[-1]]", diffs.toString());
- fSyncService.update(diffs, null, false, false, false, false, "one", "one");
-
- // update will implicitly snapshot (src and dst)
- snapshots = fService.getStoreVersions("main");
- assertEquals(3, snapshots.size());
- assertEquals(2, snapshots.get(snapshots.size()-1).getVersionID());
-
- snapshots = fService.getStoreVersions("layer");
- assertEquals(3, snapshots.size());
- assertEquals(2, snapshots.get(snapshots.size()-1).getVersionID());
-
- node = fService.lookup(-1, "layer:/a/foo");
- assertEquals(2, node.getVersionID());
- history = fService.getHistory(node, -1);
-
- assertEquals(1, history.size());
- assertEquals(1, history.get(0).getVersionID());
-
- assertEquals(1, fService.lookup(1, "layer:/a/foo").getVersionID());
- assertEquals(2, fService.lookup(2, "layer:/a/foo").getVersionID());
-
- logger.debug("submitted/updated file: layer:/a/foo -> main:/a/foo");
-
- fSyncService.flatten("layer:/a", "main:/a");
-
- logger.debug("flatten dir: layer:/a -> main:/a");
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "layer:/a/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am layer:/a/foo", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/a/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am layer:/a/foo", line);
-
- snapshots = fService.getStoreVersions("main");
- assertEquals(3, snapshots.size());
- assertEquals(2, snapshots.get(snapshots.size()-1).getVersionID());
-
- snapshots = fService.getStoreVersions("layer");
- assertEquals(3, snapshots.size());
- assertEquals(2, snapshots.get(snapshots.size()-1).getVersionID());
-
- recursiveList("main");
- recursiveList("layer");
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- public void testSimpleUpdateLF2() throws Exception
- {
- try
- {
- fService.createStore("mainA");
- fService.createStore("mainB");
- fService.createStore("mainB--layer");
-
- List snapshots = fService.getStoreVersions("mainA");
- assertEquals(1, snapshots.size());
- assertEquals(0, snapshots.get(0).getVersionID());
-
- snapshots = fService.getStoreVersions("mainB");
- assertEquals(1, snapshots.size());
- assertEquals(0, snapshots.get(0).getVersionID());
-
- snapshots = fService.getStoreVersions("mainB--layer");
- assertEquals(1, snapshots.size());
- assertEquals(0, snapshots.get(0).getVersionID());
-
- logger.debug("created 3 stores: mainA, mainB, mainB-layer");
-
- fService.createDirectory("mainA:/", "a");
- fService.createDirectory("mainB:/", "a");
-
- logger.debug("created 2 plain dirs: mainA:/a, mainB:/a");
-
- fService.createLayeredDirectory("mainB:/a", "mainB--layer:/", "a");
-
- logger.debug("created layered dir: mainB--layer:/a -> mainB:/a");
-
- // note: unlike WCM, edit staging directly (ie. don't bother with mainA--layer for now)
- fService.createFile("mainA:/a", "foo");
-
- assertEquals(1, fService.lookup(-1, "mainA:/a/foo").getVersionID());
- assertNull(fService.lookup(-1, "mainB:/a/foo"));
- assertNull(fService.lookup(-1, "mainB--layer:/a/foo"));
-
- PrintStream out = new PrintStream(fService.getFileOutputStream("mainA:/a/foo"));
- out.println("I am mainA:/a/foo");
- out.close();
-
- logger.debug("created plain file: mainA:/a/foo");
-
- fService.createSnapshot("mainA", null, null);
-
- assertEquals(1, fService.lookup(-1, "mainA:/a/foo").getVersionID());
- assertNull(fService.lookup(-1, "mainB:/a/foo"));
- assertNull(fService.lookup(-1, "mainB--layer:/a/foo"));
-
- snapshots = fService.getStoreVersions("mainA");
- assertEquals(2, snapshots.size());
- assertEquals(1, snapshots.get(snapshots.size()-1).getVersionID());
-
- logger.debug("created snapshot: mainA");
-
- // note: WCM does not expose layered file (between web project staging sandboxes)
- fService.createLayeredFile("mainA:/a/foo", "mainB:/a", "foo");
-
- assertEquals(1, fService.lookup(-1, "mainA:/a/foo").getVersionID());
- assertEquals(1, fService.lookup(-1, "mainB:/a/foo").getVersionID());
- assertEquals(1, fService.lookup(-1, "mainB--layer:/a/foo").getVersionID());
-
- BufferedReader reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB--layer:/a/foo")));
- String line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/foo", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB:/a/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/foo", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainA:/a/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/foo", line);
-
- logger.debug("created layered file: mainB:/a/foo -> mainA:/a/foo");
-
- // modify file in user's sandbox
- out = new PrintStream(fService.getFileOutputStream("mainB--layer:/a/foo"));
- out.println("I am mainB--layer:/a/foo");
- out.close();
-
- assertEquals(1, fService.lookup(-1, "mainA:/a/foo").getVersionID());
- assertEquals(1, fService.lookup(-1, "mainB:/a/foo").getVersionID());
- assertEquals(2, fService.lookup(-1, "mainB--layer:/a/foo").getVersionID());
-
- logger.debug("modified file: mainB--layer:/a/foo");
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB--layer:/a/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainB--layer:/a/foo", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB:/a/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/foo", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainA:/a/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/foo", line);
-
- List diffs = fSyncService.compare(-1, "mainB--layer:/a", -1, "mainB:/a", null);
- assertEquals(1, diffs.size());
-
- // TODO - review behaviour
- assertEquals("[mainB--layer:/a/foo[-1] > mainB:/a/foo[-1]]", diffs.toString());
- fSyncService.update(diffs, null, false, false, false, false, "one", "one");
-
- fSyncService.flatten("mainB--layer:/a", "mainB:/a");
-
- assertEquals(1, fService.lookup(-1, "mainA:/a/foo").getVersionID());
- assertEquals(2, fService.lookup(-1, "mainB:/a/foo").getVersionID());
- assertEquals(2, fService.lookup(-1, "mainB--layer:/a/foo").getVersionID());
-
- snapshots = fService.getStoreVersions("mainB--layer");
- assertEquals(2, snapshots.size());
- assertEquals(1, snapshots.get(snapshots.size()-1).getVersionID());
-
- snapshots = fService.getStoreVersions("mainB");
- assertEquals(3, snapshots.size());
- assertEquals(2, snapshots.get(snapshots.size()-1).getVersionID());
-
- logger.debug("submit/update file: mainB--layer:/a/foo -> mainB:/a/foo");
-
- fSyncService.flatten("mainB--layer:/a", "mainB:/a");
-
- logger.debug("flatten dir: mainB--layer:/a/foo -> mainB:/a/foo");
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB--layer:/a/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainB--layer:/a/foo", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB:/a/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainB--layer:/a/foo", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainA:/a/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/foo", line);
-
- 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 testSimpleUpdateLF3() throws Exception
- {
- try
- {
- fService.createStore("mainA");
- fService.createStore("mainB");
- fService.createStore("mainB--layer");
-
- List snapshots = fService.getStoreVersions("mainA");
- assertEquals(1, snapshots.size());
- assertEquals(0, snapshots.get(0).getVersionID());
-
- snapshots = fService.getStoreVersions("mainB");
- assertEquals(1, snapshots.size());
- assertEquals(0, snapshots.get(0).getVersionID());
-
- snapshots = fService.getStoreVersions("mainB--layer");
- assertEquals(1, snapshots.size());
- assertEquals(0, snapshots.get(0).getVersionID());
-
- logger.debug("created 3 stores: mainA, mainB, mainB-layer");
-
- fService.createDirectory("mainA:/", "a");
- fService.createDirectory("mainB:/", "a");
-
- logger.debug("created 2 plain dirs: mainA:/a, mainB:/a");
-
- fService.createLayeredDirectory("mainB:/a", "mainB--layer:/", "a");
-
- logger.debug("created layered dir: mainB--layer:/a -> mainB:/a");
-
- // note: unlike WCM, edit staging directly (ie. don't bother with mainA--layer for now)
- fService.createFile("mainA:/a", "foo");
-
- assertEquals(1, fService.lookup(-1, "mainA:/a/foo").getVersionID());
- assertNull(fService.lookup(-1, "mainB:/a/foo"));
- assertNull(fService.lookup(-1, "mainB--layer:/a/foo"));
-
- PrintStream out = new PrintStream(fService.getFileOutputStream("mainA:/a/foo"));
- out.println("I am mainA:/a/foo");
- out.close();
-
- logger.debug("created plain file: mainA:/a/foo");
-
- fService.createSnapshot("mainA", null, null);
-
- assertEquals(1, fService.lookup(-1, "mainA:/a/foo").getVersionID());
- assertNull(fService.lookup(-1, "mainB:/a/foo"));
- assertNull(fService.lookup(-1, "mainB--layer:/a/foo"));
-
- snapshots = fService.getStoreVersions("mainA");
- assertEquals(2, snapshots.size());
- assertEquals(1, snapshots.get(snapshots.size()-1).getVersionID());
-
- logger.debug("created snapshot: mainA");
-
- // note: WCM does not expose layered file (between web project staging sandboxes)
- fService.createLayeredFile("mainA:/a/foo", "mainB:/a", "foo");
-
- assertEquals(1, fService.lookup(-1, "mainA:/a/foo").getVersionID());
- assertEquals(1, fService.lookup(-1, "mainB:/a/foo").getVersionID());
-
- AVMNodeDescriptor foo = fService.lookup(-1, "mainB--layer:/a/foo");
- assertEquals(1, foo.getVersionID());
- assertTrue(foo.isLayeredFile());
-
- BufferedReader reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB--layer:/a/foo")));
- String line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/foo", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB:/a/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/foo", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainA:/a/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/foo", line);
-
- logger.debug("created layered file: mainB:/a/foo -> mainA:/a/foo");
-
- // add dir in user's sandbox
- fService.createDirectory("mainB--layer:/a", "b");
-
- assertEquals(1, fService.lookup(-1, "mainA:/a/foo").getVersionID());
- assertEquals(1, fService.lookup(-1, "mainB:/a/foo").getVersionID());
- assertEquals(1, fService.lookup(-1, "mainB--layer:/a/b").getVersionID());
-
- foo = fService.lookup(-1, "mainB--layer:/a/foo");
- assertEquals(1, foo.getVersionID());
- assertTrue(foo.isLayeredFile());
-
- logger.debug("created dir: mainB--layer:/a/b");
-
- List diffs = fSyncService.compare(-1, "mainB--layer:/a", -1, "mainB:/a", null);
- assertEquals(1, diffs.size());
-
- foo = fService.lookup(-1, "mainB--layer:/a/foo");
- assertTrue(foo.isLayeredFile());
-
- assertEquals("[mainB--layer:/a/b[-1] > mainB:/a/b[-1]]", diffs.toString());
- fSyncService.update(diffs, null, false, false, false, false, "one", "one");
-
- foo = fService.lookup(-1, "mainB--layer:/a/foo");
- assertTrue(foo.isLayeredFile());
-
- fSyncService.flatten("mainB--layer:/a", "mainB:/a");
-
- foo = fService.lookup(-1, "mainB--layer:/a/foo");
- assertTrue(foo.isLayeredFile());
-
- assertEquals(1, fService.lookup(-1, "mainA:/a/foo").getVersionID());
- assertEquals(2, fService.lookup(-1, "mainB:/a/foo").getVersionID());
- assertEquals(2, fService.lookup(-1, "mainB--layer:/a/foo").getVersionID());
-
- snapshots = fService.getStoreVersions("mainB--layer");
- assertEquals(2, snapshots.size());
- assertEquals(1, snapshots.get(snapshots.size()-1).getVersionID());
-
- snapshots = fService.getStoreVersions("mainB");
- assertEquals(3, snapshots.size());
- assertEquals(2, snapshots.get(snapshots.size()-1).getVersionID());
-
- logger.debug("submitted dir: mainB--layer:/a/b -> mainB:/a/b");
-
- foo = fService.lookup(-1, "mainB--layer:/a/foo");
- assertEquals(2, foo.getVersionID());
- assertTrue(foo.isLayeredFile());
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainA:/a/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/foo", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB:/a/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/foo", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB--layer:/a/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/foo", line);
-
- 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 testLayeredFolder1() throws Exception
- {
- try
- {
- fService.createStore("mainA");
- fService.createStore("mainB");
-
- fService.createDirectory("mainA:/", "a");
- fService.createDirectory("mainA:/a", "b");
-
- fService.createDirectory("mainB:/", "a");
-
- fService.createStore("mainB--layer");
-
- fService.createLayeredDirectory("mainB:/a", "mainB--layer:/", "a");
-
- // note: short-cut - created directly in "staging" area (don't bother with sandbox mainA--layer for now)
- fService.createFile("mainA:/a/b", "foo");
-
- PrintStream out = new PrintStream(fService.getFileOutputStream("mainA:/a/b/foo"));
- out.println("I am mainA:/a/b/foo");
- out.close();
-
- logger.debug("created file: mainA:/a/b/foo");
-
- // 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");
-
- fService.createSnapshot("mainA", null, null);
- fService.createSnapshot("mainB", null, null);
-
- assertTrue(fService.lookup(-1, "mainB--layer:/a/b").isLayeredDirectory());
-
- logger.debug("created layered directory: mainB:/a/b -> mainA:/a/b");
-
- fService.createDirectory("mainB--layer:/a", "c");
-
- fService.createSnapshot("mainB--layer", null, null);
-
- logger.debug("created dir: mainB--layer:/a/c");
-
- List diffs = fSyncService.compare(-1, "mainB--layer:/a", -1, "mainB:/a", null);
- assertEquals(1, diffs.size());
- assertEquals("[mainB--layer:/a/c[-1] > mainB:/a/c[-1]]", diffs.toString());
-
- fSyncService.update(diffs, null, false, false, false, false, "one", "one");
- fSyncService.flatten("mainB--layer:/a", "mainB:/a");
-
- logger.debug("updated: created dir: mainB:/a/c");
-
- assertTrue(fService.lookup(-1, "mainB--layer:/a/b").isLayeredDirectory());
-
- fService.createDirectory("mainB--layer:/a/b", "c");
-
- assertTrue(fService.lookup(-1, "mainB--layer:/a/b").isLayeredDirectory());
-
- fService.createSnapshot("mainB--layer", null, null);
-
- logger.debug("created dir: mainB--layer:/a/b/c");
-
- 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");
- fSyncService.flatten("mainB--layer:/a", "mainB:/a");
-
- logger.debug("updated: created dir: mainB:/a/b/c");
-
- assertTrue(fService.lookup(-1, "mainB--layer:/a/b").isLayeredDirectory());
-
- 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 testLayeredFolder2() throws Exception
- {
- try
- {
- fService.createStore("mainA");
- fService.createStore("mainB");
-
- fService.createDirectory("mainA:/", "a");
- fService.createDirectory("mainA:/a", "b");
-
- fService.createDirectory("mainB:/", "a");
-
- fService.createStore("mainB--layer");
-
- List snapshots = fService.getStoreVersions("mainA");
- assertEquals(1, snapshots.size());
- assertEquals(0, snapshots.get(0).getVersionID());
-
- snapshots = fService.getStoreVersions("mainB");
- assertEquals(1, snapshots.size());
- assertEquals(0, snapshots.get(0).getVersionID());
-
- snapshots = fService.getStoreVersions("mainB--layer");
- assertEquals(1, snapshots.size());
- assertEquals(0, snapshots.get(0).getVersionID());
-
- fService.createLayeredDirectory("mainB:/a", "mainB--layer:/", "a");
-
- // note: short-cut - created directly in "staging" area (don't bother with sandbox mainA--layer for now)
- fService.createFile("mainA:/a/b", "foo");
-
- PrintStream out = new PrintStream(fService.getFileOutputStream("mainA:/a/b/foo"));
- out.println("I am mainA:/a/b/foo");
- out.close();
-
- logger.debug("created file: mainA:/a/b/foo");
-
- // 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.createFile("mainB--layer:/a/b", "bar");
-
- out = new PrintStream(fService.getFileOutputStream("mainB--layer:/a/b/bar"));
- out.println("I am mainB--layer:/a/b/bar");
- out.close();
-
- logger.debug("created file: mainB--layer:/a/b/bar");
-
- List 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());
-
- snapshots = fService.getStoreVersions("mainB");
- assertEquals(1, snapshots.size());
-
- fSyncService.update(diffs, null, false, false, false, false, "one", "one");
-
- snapshots = fService.getStoreVersions("mainB");
- assertEquals(3, snapshots.size());
-
- fSyncService.flatten("mainB--layer:/a", "mainB:/a");
-
- logger.debug("updated: created file: mainB:/a/b/bar");
-
- snapshots = fService.getStoreVersions("mainB");
- assertEquals(3, snapshots.size());
- assertEquals(2, snapshots.get(snapshots.size()-1).getVersionID());
-
- // note: short-cut - created directly in "staging" area (don't bother with sandbox mainA--layer for now)
- fService.createFile("mainA:/a/b", "baz");
-
- out = new PrintStream(fService.getFileOutputStream("mainA:/a/b/baz"));
- out.println("I am mainA:/a/b/baz");
- out.close();
-
- logger.debug("created file: mainA:/a/b/baz");
-
- fService.createSnapshot("mainB", "two", "two");
-
- logger.debug("snapshot: mainB");
-
- snapshots = fService.getStoreVersions("mainB");
- assertEquals(4, snapshots.size());
- assertEquals(3, snapshots.get(snapshots.size()-1).getVersionID());
-
- // ETHREEOH-3340
- diffs = fSyncService.compare(2, "mainB:/a", 3, "mainB:/a", null);
- assertEquals(1, diffs.size());
- assertEquals("[mainB:/a/b/baz[2] < mainB:/a/b/baz[3]]", diffs.toString());
-
- logger.debug("list mainB [2]");
-
- recursiveList("mainB", 2);
-
- logger.debug("list mainB [3]");
-
- recursiveList("mainB", 3);
-
- 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 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 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
- {
- logger.debug("start: testLayeredFolder4");
-
- fService.createStore("mainA");
- fService.createStore("mainB");
- fService.createStore("mainB--layer");
-
- logger.debug("created stores: mainA, mainB and mainB--layer");
-
- recursiveList("mainA");
- recursiveList("mainB");
- recursiveList("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");
-
- recursiveList("mainA");
- recursiveList("mainB");
- recursiveList("mainB--layer");
-
- fService.createLayeredDirectory("mainB:/a", "mainB--layer:/", "a");
-
- logger.debug("created layered directory: mainB--layer:/a -> mainB:/a");
-
- 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.createDirectory("mainB--layer:/a/b/c", "d");
-
- logger.debug("created directory: mainB--layer:/a/b/c/d");
-
- recursiveList("mainA");
- recursiveList("mainB");
- recursiveList("mainB--layer");
-
- List 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");
-
- recursiveList("mainA");
- recursiveList("mainB");
- recursiveList("mainB--layer");
-
- fSyncService.flatten("mainB--layer:/a", "mainB:/a");
-
- logger.debug("flattened: mainB--layer:/a to mainB:/a");
-
- recursiveList("mainA");
- recursiveList("mainB");
- recursiveList("mainB--layer");
-
- 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");
-
- recursiveList("mainA");
- recursiveList("mainB");
- recursiveList("mainB--layer");
-
- fService.createStore("mainB--workflow1");
-
- logger.debug("created store: mainB--workflow1");
-
- recursiveList("mainA");
- recursiveList("mainB");
- recursiveList("mainB--layer");
- recursiveList("mainB--workflow1");
-
- fService.createLayeredDirectory("mainB:/a", "mainB--workflow1:/", "a");
-
- logger.debug("created layered dir: mainB--workflow1:/a -> mainB:/a");
-
- recursiveList("mainA");
- recursiveList("mainB");
- recursiveList("mainB--layer");
- recursiveList("mainB--workflow1");
-
- diffs = fSyncService.compare(-1, "mainB--workflow1:/a", -1, "mainB:/a", null);
- assertEquals(0, diffs.size());
-
- diffs = new ArrayList(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");
-
- recursiveList("mainA");
- recursiveList("mainB");
- recursiveList("mainB--layer");
- recursiveList("mainB--workflow1");
-
- 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");
-
- logger.debug("updated: added file: mainB:/a/b/c/d/foo");
-
- recursiveList("mainA");
- recursiveList("mainB");
- recursiveList("mainB--layer");
- recursiveList("mainB--workflow1");
-
- fSyncService.flatten("mainB--workflow1:/a", "mainB:/a");
-
- logger.debug("flattened: added file: mainB:/a/b/c/d/foo");
-
- recursiveList("mainA");
- recursiveList("mainB");
- recursiveList("mainB--layer");
- recursiveList("mainB--workflow1");
-
- 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());
-
- logger.debug("finish: testLayeredFolder4");
- }
- 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
- {
- fService.createStore("mainA");
- fService.createStore("mainB");
-
- fService.createDirectory("mainA:/", "a");
- fService.createDirectory("mainA:/a", "b");
-
- fService.createDirectory("mainB:/", "a");
-
- fService.createStore("mainB--layer");
-
- fService.createLayeredDirectory("mainB:/a", "mainB--layer:/", "a");
-
- // note: short-cut - created directly in "staging" area (don't bother with sandbox mainA--layer for now)
- fService.createFile("mainA:/a/b", "foo");
-
- PrintStream out = new PrintStream(fService.getFileOutputStream("mainA:/a/b/foo"));
- out.println("I am mainA:/a/b/foo");
- out.close();
-
- logger.debug("created file: mainA:/a/b/foo");
-
- // 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");
-
- fService.createSnapshot("mainA", null, null);
- fService.createSnapshot("mainB", null, null);
-
- logger.debug("created layered directory: mainB:/a/b -> mainA:/a/b");
-
- BufferedReader reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB--layer:/a/b/foo")));
- String line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/b/foo", line);
-
- out = new PrintStream(fService.getFileOutputStream("mainB--layer:/a/b/foo"));
- out.println("I am mainB--layer:/a/b/foo");
- out.close();
-
- fService.createSnapshot("mainB--layer", null, null);
-
- logger.debug("updated file: mainB--layer:/a/b/foo");
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainA:/a/b/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/b/foo", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB:/a/b/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/b/foo", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB--layer:/a/b/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainB--layer:/a/b/foo", line);
-
- List diffs = fSyncService.compare(-1, "mainB--layer:/a", -1, "mainB:/a", null);
- assertEquals(1, diffs.size());
- assertEquals("[mainB--layer:/a/b/foo[-1] > mainB:/a/b/foo[-1]]", diffs.toString());
-
- fSyncService.update(diffs, null, false, false, false, false, "one", "one");
- fSyncService.flatten("mainB--layer:/a", "mainB:/a");
-
- logger.debug("updated: created file: mainB:/a/b/foo");
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB:/a/b/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainB--layer:/a/b/foo", line);
-
- // delete file - note: short-cut - removed directly from "staging" area (don't bother with sandbox mainA--layer for now)
- fService.removeNode("mainA:/a/b", "foo");
- fService.createSnapshot("mainA", null, null);
-
- logger.debug("removed file & snapshot: mainA:/a/b/foo");
-
- // ETHREEOH-2297
- fService.removeNode("mainB--layer:/a/b", "foo");
- fService.createSnapshot("mainB--layer", null, null);
-
- diffs = fSyncService.compare(-1, "mainB--layer:/a", -1, "mainB:/a", null);
- assertEquals(1, diffs.size());
- assertEquals("[mainB--layer:/a/b/foo[-1] > mainB:/a/b/foo[-1]]", diffs.toString());
-
- fSyncService.update(diffs, null, false, false, false, false, "one", "one");
- fSyncService.flatten("mainB--layer:/a", "mainB:/a");
-
- fService.createSnapshot("mainB", null, null);
-
- logger.debug("updated: removed file: mainB:/a/b/foo");
-
- 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 testLayeredFolderDelete2() throws Exception
- {
- try
- {
- fService.createStore("mainA");
- fService.createStore("mainB");
-
- fService.createDirectory("mainA:/", "a");
- fService.createDirectory("mainA:/a", "b");
-
- fService.createDirectory("mainB:/", "a");
-
- fService.createStore("mainB--layer");
-
- fService.createLayeredDirectory("mainB:/a", "mainB--layer:/", "a");
-
- // note: short-cut - created directly in "staging" area (don't bother with sandbox mainA--layer for now)
- fService.createFile("mainA:/a/b", "foo");
-
- PrintStream out = new PrintStream(fService.getFileOutputStream("mainA:/a/b/foo"));
- out.println("I am mainA:/a/b/foo");
- out.close();
-
- logger.debug("created file: mainA:/a/b/foo");
-
- // 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");
-
- fService.createSnapshot("mainA", null, null);
- fService.createSnapshot("mainB", null, null);
-
- logger.debug("created layered directory: mainB:/a/b -> mainA:/a/b");
-
- BufferedReader reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB--layer:/a/b/foo")));
- String line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/b/foo", line);
-
- out = new PrintStream(fService.getFileOutputStream("mainB--layer:/a/b/foo"));
- out.println("I am mainB--layer:/a/b/foo");
- out.close();
-
- fService.createSnapshot("mainB--layer", null, null);
-
- logger.debug("updated file: mainB--layer:/a/b/foo");
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainA:/a/b/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/b/foo", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB:/a/b/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/b/foo", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB--layer:/a/b/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainB--layer:/a/b/foo", line);
-
- List diffs = fSyncService.compare(-1, "mainB--layer:/a", -1, "mainB:/a", null);
- assertEquals(1, diffs.size());
- assertEquals("[mainB--layer:/a/b/foo[-1] > mainB:/a/b/foo[-1]]", diffs.toString());
-
- fSyncService.update(diffs, null, false, false, false, false, "one", "one");
- fSyncService.flatten("mainB--layer:/a", "mainB:/a");
-
- logger.debug("updated: created file: mainB:/a/b/foo");
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB:/a/b/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainB--layer:/a/b/foo", line);
-
- // delete folder - note: short-cut - remove directly from "staging" area (don't bother with sandbox mainA--layer for now)
- fService.removeNode("mainA:/a", "b");
- fService.createSnapshot("mainA", null, null);
-
- logger.debug("removed folder & snapshot: mainA:/a/b");
-
- fService.removeNode("mainB--layer:/a/b", "foo");
- fService.createSnapshot("mainB--layer", null, null);
-
- logger.debug("removed file & snapshot: mainB--layer:/a/b/foo");
-
- diffs = fSyncService.compare(-1, "mainB--layer:/a", -1, "mainB:/a", null);
- assertEquals(1, diffs.size());
- assertEquals("[mainB--layer:/a/b/foo[-1] > mainB:/a/b/foo[-1]]", diffs.toString());
-
- fSyncService.update(diffs, null, false, false, false, false, "one", "one");
- fSyncService.flatten("mainB--layer:/a", "mainB:/a");
-
- logger.debug("updated & flattened: removed file: mainB:/a/b/foo");
-
- 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 testLayeredFolderDelete3() throws Exception
- {
- try
- {
- fService.createStore("mainA");
- fService.createStore("mainB");
-
- fService.createDirectory("mainA:/", "a");
- fService.createDirectory("mainA:/a", "b");
-
- fService.createDirectory("mainB:/", "a");
-
- fService.createStore("mainB--layer");
-
- fService.createLayeredDirectory("mainB:/a", "mainB--layer:/", "a");
-
- // note: short-cut - created directly in "staging" area (don't bother with sandbox mainA--layer for now)
- fService.createFile("mainA:/a/b", "foo");
-
- PrintStream out = new PrintStream(fService.getFileOutputStream("mainA:/a/b/foo"));
- out.println("I am mainA:/a/b/foo");
- out.close();
-
- logger.debug("created file: mainA:/a/b/foo");
-
- // 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");
-
- fService.createSnapshot("mainA", null, null);
- fService.createSnapshot("mainB", null, null);
-
- logger.debug("created layered directory: mainB:/a/b -> mainA:/a/b");
-
- BufferedReader reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB--layer:/a/b/foo")));
- String line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/b/foo", line);
-
- out = new PrintStream(fService.getFileOutputStream("mainB--layer:/a/b/foo"));
- out.println("I am mainB--layer:/a/b/foo");
- out.close();
-
- logger.debug("updated file: mainB--layer:/a/b/foo");
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainA:/a/b/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/b/foo", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB:/a/b/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/b/foo", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB--layer:/a/b/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainB--layer:/a/b/foo", line);
-
- List diffs = fSyncService.compare(-1, "mainB--layer:/a", -1, "mainB:/a", null);
- assertEquals(1, diffs.size());
- assertEquals("[mainB--layer:/a/b/foo[-1] > mainB:/a/b/foo[-1]]", diffs.toString());
-
- fSyncService.update(diffs, null, false, false, false, false, "one", "one");
- fSyncService.flatten("mainB--layer:/a", "mainB:/a");
-
- logger.debug("updated: created file: mainB:/a/b/foo");
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB:/a/b/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainB--layer:/a/b/foo", line);
-
- // delete folder - note: short-cut - remove directly from "staging" area (don't bother with sandbox mainA--layer for now)
- fService.removeNode("mainA:/a", "b");
- fService.createSnapshot("mainA", null, null);
-
- logger.debug("removed folder & snapshot: mainA:/a/b");
-
- fService.createFile("mainB--layer:/a/b", "bar");
-
- out = new PrintStream(fService.getFileOutputStream("mainB--layer:/a/b/bar"));
- out.println("I am mainB--layer:/a/b/bar");
- out.close();
-
- logger.debug("created file: mainB--layer:/a/b/bar");
-
- 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());
-
- fSyncService.update(diffs, null, false, false, false, false, "two", "two");
- fSyncService.flatten("mainB--layer:/a", "mainB:/a");
-
- logger.debug("updated & flattened: created file: mainB:/a/b/bar");
-
- 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 testLayeredFolderDelete4() throws Exception
- {
- try
- {
- fService.createStore("mainA");
- fService.createStore("mainB");
-
- fService.createDirectory("mainA:/", "a");
- fService.createDirectory("mainA:/a", "b");
-
- fService.createDirectory("mainB:/", "a");
-
- fService.createStore("mainB--layer");
-
- fService.createLayeredDirectory("mainB:/a", "mainB--layer:/", "a");
-
- // note: short-cut - created directly in "staging" area (don't bother with sandbox mainA--layer for now)
- fService.createFile("mainA:/a/b", "foo");
-
- PrintStream out = new PrintStream(fService.getFileOutputStream("mainA:/a/b/foo"));
- out.println("I am mainA:/a/b/foo");
- out.close();
-
- logger.debug("created file: mainA:/a/b/foo");
-
- // 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");
-
- fService.createSnapshot("mainA", null, null);
- fService.createSnapshot("mainB", null, null);
-
- logger.debug("created layered directory: mainB:/a/b -> mainA:/a/b");
-
- BufferedReader reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB--layer:/a/b/foo")));
- String line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/b/foo", line);
-
- out = new PrintStream(fService.getFileOutputStream("mainB--layer:/a/b/foo"));
- out.println("I am mainB--layer:/a/b/foo");
- out.close();
-
- logger.debug("updated file: mainB--layer:/a/b/foo");
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainA:/a/b/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/b/foo", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB:/a/b/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/b/foo", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB--layer:/a/b/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainB--layer:/a/b/foo", line);
-
- List diffs = fSyncService.compare(-1, "mainB--layer:/a", -1, "mainB:/a", null);
- assertEquals(1, diffs.size());
- assertEquals("[mainB--layer:/a/b/foo[-1] > mainB:/a/b/foo[-1]]", diffs.toString());
-
- fSyncService.update(diffs, null, false, false, false, false, "one", "one");
- fSyncService.flatten("mainB--layer:/a", "mainB:/a");
-
- logger.debug("updated & flattened: updated file: mainB:/a/b/foo");
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB:/a/b/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainB--layer:/a/b/foo", line);
-
- // delete folder - note: short-cut - remove directly from "staging" area (don't bother with sandbox mainA--layer for now)
- fService.removeNode("mainA:/a", "b");
- fService.createSnapshot("mainA", null, null);
-
- logger.debug("removed folder & snapshot: mainA:/a/b");
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB--layer:/a/b/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainB--layer:/a/b/foo", line);
-
- out = new PrintStream(fService.getFileOutputStream("mainB--layer:/a/b/foo"));
- out.println("I am mainB--layer:/a/b/foo V2");
- out.close();
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB--layer:/a/b/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainB--layer:/a/b/foo V2", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB:/a/b/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainB--layer:/a/b/foo", line);
-
- logger.debug("updated file: mainB--layer:/a/b/foo");
-
- diffs = fSyncService.compare(-1, "mainB--layer:/a", -1, "mainB:/a", null);
- assertEquals(1, diffs.size());
- assertEquals("[mainB--layer:/a/b/foo[-1] > mainB:/a/b/foo[-1]]", diffs.toString());
-
- fSyncService.update(diffs, null, false, false, false, false, "two", "two");
- fSyncService.flatten("mainB--layer:/a", "mainB:/a");
-
- logger.debug("updated & flattened: updated file: mainB:/a/b/foo");
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB:/a/b/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainB--layer:/a/b/foo V2", line);
-
- 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 testLayeredFileDeleteFile1() throws Exception
- {
- try
- {
- fService.createStore("mainA");
- fService.createStore("mainB");
- fService.createStore("mainB--layer");
-
- logger.debug("created 3 stores: mainA, mainB, mainB--layer");
-
- fService.createDirectory("mainA:/", "a");
- fService.createDirectory("mainB:/", "a");
-
- logger.debug("created 2 plain dirs: mainA:/a and mainB:/a");
-
- fService.createLayeredDirectory("mainB:/a", "mainB--layer:/", "a");
-
- logger.debug("created layered dir: mainB--layer:/a -> mainB:/a");
-
- // note: short-cut - created directly in "staging" area (don't bother with sandbox mainA--layer for now)
- fService.createFile("mainA:/a", "foo");
-
- PrintStream out = new PrintStream(fService.getFileOutputStream("mainA:/a/foo"));
- out.println("I am mainA:/a/foo");
- out.close();
-
- logger.debug("created file: mainA:/a/foo");
-
- // create equivalent of WCM layered folder between web project staging sandboxes (mainB:/a/b pointing to ,mainA:/a/b)
- fService.createLayeredFile("mainA:/a/foo", "mainB:/a", "foo");
-
- logger.debug("created layered file: mainB:/a/foo -> mainA:/a/foo");
-
- fService.createSnapshot("mainA", null, null);
- fService.createSnapshot("mainB", null, null);
-
- logger.debug("created 2 snapshots: mainA and mainB");
-
- BufferedReader reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB--layer:/a/foo")));
- String line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/foo", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB:/a/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/foo", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainA:/a/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/foo", line);
-
- List diffs = fSyncService.compare(-1, "mainB--layer:/a", -1, "mainB:/a", null);
- assertEquals(0, diffs.size());
-
- fService.removeNode("mainB--layer:/a", "foo");
- fService.createSnapshot("mainB--layer", null, null);
-
- logger.debug("removed file & snapshot: mainB--layer:/a/foo");
-
- diffs = fSyncService.compare(-1, "mainB--layer:/a", -1, "mainB:/a", null);
- assertEquals("[mainB--layer:/a/foo[-1] > mainB:/a/foo[-1]]", diffs.toString());
-
- /*
- // For testing ALF-4800 (testLayeredFileDelete1 / testLayeredFileDelete2 - error in dispatchUpdate)
- // In addition to sleep below, increase frequency of OrphanReaper (eg. set startDelay/repeatInterval to 2000/500 msecs)
- logger.debug("start sleep");
- Thread.sleep(30000);
- logger.debug("finish sleep");
- */
-
- // ETHREEOH-2844
- fSyncService.update(diffs, null, false, false, false, false, "one", "one");
- fSyncService.flatten("mainB--layer:/a", "mainB:/a");
-
- logger.debug("updated & flattened: removed file: mainB:/a/foo");
-
- 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 testLayeredFileDeleteFile2() throws Exception
- {
- try
- {
- fService.createStore("mainA");
- fService.createStore("mainB");
- fService.createStore("mainB--layer");
-
- logger.debug("created 3 stores: mainA, mainB, mainB--layer");
-
- fService.createDirectory("mainA:/", "a");
- fService.createDirectory("mainB:/", "a");
-
- logger.debug("created 2 plain dirs: mainA:/a and mainB:/a");
-
- fService.createLayeredDirectory("mainB:/a", "mainB--layer:/", "a");
-
- logger.debug("created layered dir: mainB--layer:/a -> mainB:/a");
-
- // note: short-cut - created directly in "staging" area (don't bother with sandbox mainA--layer for now)
- fService.createFile("mainA:/a", "foo");
-
- PrintStream out = new PrintStream(fService.getFileOutputStream("mainA:/a/foo"));
- out.println("I am mainA:/a/foo");
- out.close();
-
- logger.debug("created file: mainA:/a/foo");
-
- // create equivalent of WCM layered folder between web project staging sandboxes (mainB:/a/b pointing to ,mainA:/a/b)
- fService.createLayeredFile("mainA:/a/foo", "mainB:/a", "foo");
-
- logger.debug("created layered file: mainB:/a/foo -> mainA:/a/foo");
-
- fService.createSnapshot("mainA", null, null);
- fService.createSnapshot("mainB", null, null);
-
- logger.debug("created 2 snapshots: mainA and mainB");
-
- BufferedReader reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB--layer:/a/foo")));
- String line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/foo", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB:/a/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/foo", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainA:/a/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/foo", line);
-
- List diffs = fSyncService.compare(-1, "mainB--layer:/a", -1, "mainB:/a", null);
- assertEquals(0, diffs.size());
-
- // note: short-cut - removed directly from "staging" area (don't bother with sandbox mainA--layer for now)
- fService.removeNode("mainA:/a", "foo");
- fService.createSnapshot("mainA", null, null);
-
- logger.debug("removed file & snapshot: mainA:/a/foo");
-
- try
- {
- fService.getFileInputStream(-1, "mainA:/a/foo");
- fail("Unexpected");
- }
- catch (AVMNotFoundException nfe)
- {
- // expected
- }
-
- try
- {
- fService.getFileInputStream(-1, "mainB:/a/foo");
- fail("Unexpected");
- }
- catch (AVMNotFoundException nfe)
- {
- // expected
- }
-
- try
- {
- fService.getFileInputStream(-1, "mainB--layer:/a/foo");
- fail("Unexpected");
- }
- catch (AVMNotFoundException nfe)
- {
- // expected
- }
-
- fService.removeNode("mainB--layer:/a", "foo");
- fService.createSnapshot("mainB--layer", null, null);
-
- logger.debug("removed file & snapshot: mainB--layer:/a/foo");
-
- diffs = fSyncService.compare(-1, "mainB--layer:/a", -1, "mainB:/a", null);
- assertEquals("[mainB--layer:/a/foo[-1] > mainB:/a/foo[-1]]", diffs.toString());
-
- /*
- // For testing ALF-4800 (testLayeredFileDelete1 / testLayeredFileDelete2 - error in dispatchUpdate)
- // In addition to sleep below, increase frequency of OrphanReaper (eg. set startDelay/repeatInterval to 2000/500 msecs)
- logger.debug("start sleep");
- Thread.sleep(30000);
- logger.debug("finish sleep");
- */
-
- // ETHREEOH-2829
- fSyncService.update(diffs, null, false, false, false, false, "one", "one");
- fSyncService.flatten("mainB--layer:/a", "mainB:/a");
-
- logger.debug("updated & flattened: removed file: mainB:/a/foo");
-
- 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 testLayeredFileDeleteFile3() throws Exception
- {
- try
- {
- fService.createStore("mainB");
- fService.createStore("mainB--layer");
-
- logger.debug("created 2 stores: mainB, mainB--layer");
-
- fService.createDirectory("mainB:/", "a");
-
- logger.debug("created plain dir: mainB:/a");
-
- fService.createLayeredDirectory("mainB:/a", "mainB--layer:/", "a");
-
- logger.debug("created layered dir: mainB--layer:/a -> mainB:/a");
-
- // create equivalent of WCM layered file between web project staging sandboxes (mainB:/a/b/foo pointing to mainA:/a/b/foo)
- fService.createLayeredFile("mainA:/a/foo", "mainB:/a", "foo"); // note: unbacked/stale here ... even store does not exist !!
-
- logger.debug("created layered file: mainB:/a/foo -> mainA:/a/foo");
-
- List diffs = fSyncService.compare(-1, "mainB--layer:/a", -1, "mainB:/a", null);
- assertEquals(0, diffs.size());
-
- // create file
- fService.createFile("mainB--layer:/a", "bar");
-
- logger.debug("created file: mainB--layer:/a/bar");
-
- diffs = fSyncService.compare(-1, "mainB--layer:/a", -1, "mainB:/a", null);
- assertEquals("[mainB--layer:/a/bar[-1] > mainB:/a/bar[-1]]", diffs.toString());
-
- fSyncService.update(diffs, null, false, false, false, false, "one", "one");
-
- logger.debug("updated: created file: mainB:/a/bar");
-
- fSyncService.flatten("mainB--layer:/a", "mainB:/a");
-
- logger.debug("flattened: created file: mainB:/a/bar");
-
- // delete layered file (from mainB--layer)
- fService.removeNode("mainB--layer:/a", "foo");
- fService.createSnapshot("mainB--layer", null, null);
-
- logger.debug("removed file & snapshot: mainB--layer:/a/foo");
-
- diffs = fSyncService.compare(-1, "mainB--layer:/a", -1, "mainB:/a", null);
- assertEquals("[mainB--layer:/a/foo[-1] > mainB:/a/foo[-1]]", diffs.toString());
-
- fService.createStore("mainB--workflow1");
-
- logger.debug("created store: mainB--workflow1");
-
- recursiveList("mainB--workflow1");
-
- fService.createLayeredDirectory("mainB:/a", "mainB--workflow1:/", "a");
-
- logger.debug("created layered dir: mainB--workflow1:/a -> mainB:/a");
-
- recursiveList("mainB");
- recursiveList("mainB--layer");
- recursiveList("mainB--workflow1");
-
- diffs = fSyncService.compare(-1, "mainB--workflow1:/a", -1, "mainB:/a", null);
- assertEquals(0, diffs.size());
-
- diffs = new ArrayList(1);
- diffs.add(new AVMDifference(-1, "mainB--layer:/a/foo", -1, "mainB--workflow1:/a/foo", AVMDifference.NEWER));
-
- // ETHREEOH-2868
- fSyncService.update(diffs, null, false, false, false, false, null, null);
-
- logger.debug("updated: removed file: mainB--workflow1:/a/foo");
-
- recursiveList("mainB");
- recursiveList("mainB--layer");
- recursiveList("mainB--workflow1");
-
- diffs = fSyncService.compare(-1, "mainB--workflow1:/a", -1, "mainB:/a", null);
- assertEquals("[mainB--workflow1:/a/foo[-1] > mainB:/a/foo[-1]]", diffs.toString());
-
- fSyncService.update(diffs, null, false, false, true, true, "one", "one");
- fSyncService.flatten("mainB--workflow1:/a", "mainB:/a");
-
- logger.debug("updated & flattened: removed file: mainB:/a/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());
-
- fSyncService.update(diffs, null, true, true, false, false, null, null);
- fSyncService.flatten("mainB--layer:/a", "mainB--workflow1:/a");
-
- recursiveList("mainB");
- recursiveList("mainB--layer");
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- finally
- {
- fService.purgeStore("mainB");
- fService.purgeStore("mainB--layer");
- if (fService.getStore("mainB--workflow1") != null) { fService.purgeStore("mainB--workflow1"); }
- }
- }
-
- public void testLayeredFileDeleteFile4() throws Exception
- {
- try
- {
- fService.createStore("mainA");
- fService.createStore("mainB");
- fService.createStore("mainB--layer");
-
- logger.debug("created 3 stores: mainA, mainB, mainB--layer");
-
- fService.createDirectory("mainA:/", "a");
- fService.createDirectory("mainB:/", "a");
-
- logger.debug("created 2 plain dirs: mainA:/a and mainB:/a");
-
- fService.createSnapshot("mainA", null, null);
- fService.createSnapshot("mainB", null, null);
-
- logger.debug("created 2 snapshots: mainA and mainB");
-
- fService.createLayeredDirectory("mainB:/a", "mainB--layer:/", "a");
-
- logger.debug("created layered dir: mainB--layer:/a -> mainB:/a");
-
- // note: short-cut - created directly in "staging" areas (don't bother with sandbox mainA--layer or mainB--layer for now)
- fService.createDirectory("mainA:/a", "b");
- fService.createDirectory("mainB:/a", "b");
-
- logger.debug("created directories: mainA:/a/b & mainB:/a/b");
-
- fService.createFile("mainA:/a/b", "foo");
-
- PrintStream out = new PrintStream(fService.getFileOutputStream("mainA:/a/b/foo"));
- out.println("I am mainA:/a/b/foo");
- out.close();
-
- logger.debug("created file: mainA:/a/b/foo");
-
- // create equivalent of WCM layered file between web project staging sandboxes (mainB:/a/b/foo pointing to mainA:/a/b/foo)
- fService.createLayeredFile("mainA:/a/b/foo", "mainB:/a/b", "foo");
-
- logger.debug("created layered file: mainB:/a/b/foo -> mainA:/a/b/foo");
-
- BufferedReader reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB--layer:/a/b/foo")));
- String line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/b/foo", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB:/a/b/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/b/foo", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainA:/a/b/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/b/foo", line);
-
- List diffs = fSyncService.compare(-1, "mainB--layer:/a/b", -1, "mainB:/a/b", null);
- assertEquals(0, diffs.size());
-
- // create file
- fService.createFile("mainB--layer:/a/b", "bar");
-
- logger.debug("created file: mainB--layer:/a/b/bar");
-
- diffs = fSyncService.compare(-1, "mainB--layer:/a/b", -1, "mainB:/a/b", null);
- assertEquals("[mainB--layer:/a/b/bar[-1] > mainB:/a/b/bar[-1]]", diffs.toString());
-
- fSyncService.update(diffs, null, false, false, false, false, "one", "one");
- fSyncService.flatten("mainB--layer:/a/b", "mainB:/a/b");
-
- logger.debug("updated & flattened: created file: mainB:/a/b/bar");
-
- // delete layered file (from mainB--layer)
- fService.removeNode("mainB--layer:/a/b", "foo");
- fService.createSnapshot("mainB--layer", null, null);
-
- logger.debug("removed file & snapshot: mainB--layer:/a/b/foo");
-
- diffs = fSyncService.compare(-1, "mainB--layer:/a/b", -1, "mainB:/a/b", null);
- assertEquals("[mainB--layer:/a/b/foo[-1] > mainB:/a/b/foo[-1]]", diffs.toString());
-
- fService.createStore("mainB--workflow1");
-
- fService.createLayeredDirectory("mainB:/a", "mainB--workflow1:/", "a");
-
- logger.debug("created layered dir: mainB--workflow1:/a -> mainB:/a");
-
- recursiveList("mainA");
- recursiveList("mainB");
- recursiveList("mainB--layer");
- recursiveList("mainB--workflow1");
-
- diffs = fSyncService.compare(-1, "mainB--workflow1:/a/b", -1, "mainB:/a/b", null);
- assertEquals(0, diffs.size());
-
- diffs = new ArrayList(1);
- diffs.add(new AVMDifference(-1, "mainB--layer:/a/b/foo", -1, "mainB--workflow1:/a/b/foo", AVMDifference.NEWER));
-
- // ETHREEOH-2868
- fSyncService.update(diffs, null, false, false, false, false, null, null);
-
- logger.debug("updated: removed file: mainB--workflow1:/a/b/foo");
-
- recursiveList("mainA");
- recursiveList("mainB");
- recursiveList("mainB--layer");
- recursiveList("mainB--workflow1");
-
- diffs = fSyncService.compare(-1, "mainB--workflow1:/a/b", -1, "mainB:/a/b", null);
- assertEquals("[mainB--workflow1:/a/b/foo[-1] > mainB:/a/b/foo[-1]]", diffs.toString());
-
- fSyncService.update(diffs, null, false, false, true, true, "one", "one");
- fSyncService.flatten("mainB--workflow1:/a/b", "mainB:/a/b");
-
- logger.debug("updated & flattened: removed file: mainB:/a/b/foo");
-
- diffs = fSyncService.compare(-1, "mainB--workflow1:/a/b", -1, "mainB:/a/b", null);
- assertEquals(0, diffs.size());
-
- diffs = fSyncService.compare(-1, "mainB--workflow1:/a/b", -1, "mainB--layer:/a/b", null);
- assertEquals(0, diffs.size());
-
- fSyncService.update(diffs, null, true, true, false, false, null, null);
- fSyncService.flatten("mainB--layer:/a/b", "mainB--workflow1:/a/b");
-
- 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"); }
- }
- }
-
- // ALF-1948
- public void testDeleteLD5() throws Exception
- {
- try
- {
- fService.createStore("mainB");
- fService.createStore("mainB--layer");
- fService.createDirectory("mainB:/", "a");
- fService.createSnapshot("mainB", null, null);
-
- SortedMap directoryListing = fService.getDirectoryListing(-1, "mainB:/a");
- assertTrue(directoryListing.isEmpty());
-
- fService.createLayeredDirectory("mainB:/a", "mainB--layer:/", "a");
-
- fService.createFile("mainB--layer:/a", "testfile.txt");
- fService.createDirectory("mainB--layer:/a", "testfolder");
- fService.createSnapshot("mainB--layer", null, null);
-
- List diffs = fSyncService.compare(-1, "mainB--layer:/a", -1, "mainB:/a", null);
- assertEquals(2, diffs.size());
- assertEquals("[mainB--layer:/a/testfile.txt[-1] > mainB:/a/testfile.txt[-1], mainB--layer:/a/testfolder[-1] > mainB:/a/testfolder[-1]]", diffs.toString());
-
- fService.removeNode("mainB--layer:/a", "testfile.txt");
- fService.createSnapshot("mainB--layer", null, null);
- diffs = fSyncService.compare(-1, "mainB--layer:/a", -1, "mainB:/a", null);
- assertEquals(1, diffs.size());
- assertEquals("[mainB--layer:/a/testfolder[-1] > mainB:/a/testfolder[-1]]", diffs.toString());
-
- fService.removeNode("mainB--layer:/a", "testfolder");
- fService.createSnapshot("mainB--layer", null, null);
- diffs = fSyncService.compare(-1, "mainB--layer:/a", -1, "mainB:/a", null);
- assertEquals(0, diffs.size());
-
- directoryListing = fService.getDirectoryListing(-1, "mainB--layer:/a");
- assertTrue(directoryListing.isEmpty());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- throw e;
- }
- finally
- {
- fService.purgeStore("mainB");
- fService.purgeStore("mainB--layer");
- }
- }
-
- // ALF-1948
- public void testDeleteLD6() throws Exception
- {
- try
- {
- fService.createStore("mainB");
- fService.createStore("mainB--layer");
- fService.createDirectory("mainB:/", "a");
- fService.createSnapshot("mainB", null, null);
-
- SortedMap directoryListing = fService.getDirectoryListing(-1, "mainB:/a");
- assertTrue(directoryListing.isEmpty());
-
- fService.createLayeredDirectory("mainB:/a", "mainB--layer:/", "a");
-
- performDeletion(100);
- fSyncService.resetLayer("mainB--layer:/a");
- performDeletion(500);
- fSyncService.resetLayer("mainB--layer:/a");
- performDeletion(500);
- fSyncService.resetLayer("mainB--layer:/a");
- performDeletion(1000);
- fSyncService.resetLayer("mainB--layer:/a");
- performDeletion(2000);
- fSyncService.resetLayer("mainB--layer:/a");
- }
- catch (Exception e)
- {
- e.printStackTrace();
- throw e;
- }
- finally
- {
- fService.purgeStore("mainB");
- fService.purgeStore("mainB--layer");
- }
- }
-
- private void performDeletion(int objectsAmount)
- {
- SortedMap directoryListing;
- String timestamp = String.valueOf(System.currentTimeMillis());
- for (int i = 0; i < objectsAmount; i++)
- {
- String commonPart = "-" + timestamp + "-" + i;
- fService.createFile("mainB--layer:/a", ("testfile" + commonPart + ".txt"));
- fService.createDirectory("mainB--layer:/a", ("testfolder" + commonPart));
- }
- fService.createSnapshot("mainB--layer", null, null);
-
- List compare = fSyncService.compare(-1, "mainB:/a", -1, "mainB--layer:/a", null);
- assertEquals(2 * objectsAmount, compare.size());
-
- long time = System.currentTimeMillis();
- for (int i = 0; i < objectsAmount; i++)
- {
- String commonPart = "-" + timestamp + "-" + i;
- fService.removeNode("mainB--layer:/a", ("testfile" + commonPart + ".txt"));
- fService.removeNode("mainB--layer:/a", ("testfolder" + commonPart));
- }
- fService.createSnapshot("mainB--layer", null, null);
- logger.info("Time spent on deletion of " + compare.size() + " objects is " + (System.currentTimeMillis() - time));
-
- directoryListing = fService.getDirectoryListing(-1, "mainB--layer:/a");
- assertTrue(directoryListing.isEmpty());
- }
-
- protected void recursiveContents(String path)
- {
- String contentsStr = recursiveContents(path, -1, true);
- if (logger.isDebugEnabled())
- {
- logger.debug(contentsStr);
- }
- }
-
- /**
- * Get the recursive contents of the given path and version.
- * @param path
- * @param version
- * @return A string representation of the contents.
- */
- protected String recursiveContents(String path, int version, boolean followLinks)
- {
- String val = recursiveList(path, version, 0, followLinks);
- return val.substring(val.indexOf('\n'));
- }
-
- protected void recursiveList(String store)
- {
- recursiveList(store, -1);
- }
-
- protected void recursiveList(String store, int version)
- {
- String list = recursiveList(store, version, true);
- if (logger.isDebugEnabled())
- {
- logger.debug("\n\n"+store+":"+"\n"+list+"\n");
- }
- }
-
- /**
- * Helper to write a recursive listing of an AVMStore at a given version.
- * @param repoName The name of the AVMStore.
- * @param version The version to look under.
- */
- protected String recursiveList(String repoName, int version, boolean followLinks)
- {
- return recursiveList(repoName + ":/", version, 0, followLinks);
- }
-
- /**
- * Recursive list the given path.
- * @param path The path.
- * @param version The version.
- * @param indent The current indent level.
- */
- protected String recursiveList(String path, int version, int indent, boolean followLinks)
- {
- StringBuilder builder = new StringBuilder();
- for (int i = 0; i < indent; i++)
- {
- builder.append(' ');
- }
- builder.append(path.substring(path.lastIndexOf('/') + 1));
- builder.append(' ');
- AVMNodeDescriptor desc = fService.lookup(version, path, true);
- builder.append(desc.toString());
-
- List ancs = fService.getHistory(desc, -1);
- for (AVMNodeDescriptor anc : ancs)
- {
- builder.append("--->").append(anc.toString());
- }
-
- builder.append('\n');
- if (desc.getType() == AVMNodeType.PLAIN_DIRECTORY ||
- (desc.getType() == AVMNodeType.LAYERED_DIRECTORY && followLinks))
- {
- String basename = path.endsWith("/") ? path : path + "/";
- Map listing = fService.getDirectoryListing(version, path);
- for (String name : listing.keySet())
- {
- if (logger.isTraceEnabled()) { logger.trace(name); }
- builder.append(recursiveList(basename + name, version, indent + 2, followLinks));
- }
- List deletedList = fService.getDeleted(version, path);
- for (String name : deletedList)
- {
- if (logger.isTraceEnabled()) { logger.trace(name); }
- builder.append(recursiveList(basename + name, version, indent + 2, followLinks));
- }
- }
- return builder.toString();
- }
-
- /**
- * Setup a basic tree.
- */
- protected void setupBasicTree()
- throws IOException
- {
- fService.createDirectory("main:/", "a");
- fService.createDirectory("main:/a", "b");
- fService.createDirectory("main:/a/b", "c");
- fService.createDirectory("main:/", "d");
- fService.createDirectory("main:/d", "e");
- fService.createDirectory("main:/d/e", "f");
-
-
- OutputStream out = fService.createFile("main:/a/b/c", "foo");
- byte [] buff = "I am main:/a/b/c/foo".getBytes();
- out.write(buff);
- out.close();
-
- /*
- fService.createFile("main:/a/b/c", "foo").close();
- ContentWriter writer = fService.getContentWriter("main:/a/b/c/foo");
- writer.setEncoding("UTF-8");
- writer.setMimetype(MimetypeMap.MIMETYPE_TEXT_PLAIN);
- writer.putContent("I am main:/a/b/c/foo");
- */
-
- out = fService.createFile("main:/a/b/c", "bar");
- buff = "I am main:/a/b/c/bar".getBytes();
- out.write(buff);
- out.close();
-
- /*
- fService.createFile("main:/a/b/c", "bar").close();
- writer = fService.getContentWriter("main:/a/b/c/bar");
- // Force a conversion
- writer.setEncoding("UTF-16");
- writer.setMimetype(MimetypeMap.MIMETYPE_TEXT_PLAIN);
- writer.putContent("I am main:/a/b/c/bar");
- */
-
- fService.createSnapshot("main", null, null);
- }
-}
diff --git a/source/test-java/org/alfresco/repo/avm/AVMServicePerfTest.java b/source/test-java/org/alfresco/repo/avm/AVMServicePerfTest.java
deleted file mode 100644
index 5a7451a62a..0000000000
--- a/source/test-java/org/alfresco/repo/avm/AVMServicePerfTest.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright (C) 2005-2010 Alfresco Software Limited.
- *
- * This file is part of Alfresco
- *
- * Alfresco is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Alfresco is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Alfresco. If not, see . */
-
-package org.alfresco.repo.avm;
-
-import java.io.PrintStream;
-
-import org.alfresco.test_category.LegacyCategory;
-import org.junit.experimental.categories.Category;
-
-/**
- * Performance test(s).
- * @author britt
- */
-@Category(LegacyCategory.class)
-public class AVMServicePerfTest extends AVMServiceTestBase
-{
- public void testSetup() throws Exception
- {
- super.testSetup();
- }
-
- public void testAdd100x10a() throws Throwable
- {
- add(100, 10);
- }
-
- /*
- public void xtestAdd100x10b() throws Throwable
- {
- add(100, 10);
- }
-
- public void xtestAdd100x10c() throws Throwable
- {
- add(100, 10);
- }
-
- public void xtestAdd100x10d() throws Throwable
- {
- add(100, 10);
- }
-
- public void xtestAdd500x2e() throws Throwable
- {
- add(500, 2);
- }
-
- public void xtestAdd500x4g() throws Throwable
- {
- add(500, 4);
- }
- */
-
- /**
- * Test adding 100 files to each of 10 directories.
- */
- private void add(int fileCnt, int dirCnt) throws Throwable
- {
- try
- {
- if ((dirCnt < 1) || (dirCnt > 10))
- {
- throw new Exception("Invalid ("+dirCnt+") - currently supports between 1 and 10 directories");
- }
-
- String [] dirs = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j" };
- for (int j = 0; j < dirCnt; j++)
- {
- String dir = dirs[j];
- fService.createDirectory("main:/", dir);
- String ndir = "main:/" + dir;
- fService.createDirectory(ndir, dir);
- ndir = ndir + "/" + dir;
- for (int i = 0; i < fileCnt; i++)
- {
- PrintStream out = new PrintStream(fService.createFile(ndir, "file" + i));
- out.println("I am " + ndir + "/file" + i);
-
- //System.out.println(ndir + "/file" + i);
-
- out.close();
- }
- fService.createSnapshot("main", null, null);
- }
-
- // System.out.println(recursiveList("main", -1));
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-}
\ No newline at end of file
diff --git a/source/test-java/org/alfresco/repo/avm/AVMServicePermissionsTest.java b/source/test-java/org/alfresco/repo/avm/AVMServicePermissionsTest.java
deleted file mode 100644
index d2cbfd4bc4..0000000000
--- a/source/test-java/org/alfresco/repo/avm/AVMServicePermissionsTest.java
+++ /dev/null
@@ -1,4093 +0,0 @@
-/*
- * Copyright (C) 2005-2010 Alfresco Software Limited.
- *
- * This file is part of Alfresco
- *
- * Alfresco is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Alfresco is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Alfresco. If not, see .
- */
-
-package org.alfresco.repo.avm;
-
-import java.io.IOException;
-import java.io.Serializable;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.transaction.UserTransaction;
-
-import junit.framework.TestCase;
-
-import org.alfresco.config.JNDIConstants;
-import org.alfresco.model.ContentModel;
-import org.alfresco.repo.domain.permissions.AccessControlListDAO;
-import org.alfresco.repo.domain.permissions.Acl;
-import org.alfresco.repo.domain.permissions.AclDAO;
-import org.alfresco.repo.security.authentication.AuthenticationComponent;
-import org.alfresco.repo.security.authentication.AuthenticationUtil;
-import org.alfresco.repo.security.authentication.MutableAuthenticationDao;
-import org.alfresco.repo.security.permissions.PermissionReference;
-import org.alfresco.repo.security.permissions.PermissionServiceSPI;
-import org.alfresco.repo.security.permissions.impl.ModelDAO;
-import org.alfresco.service.ServiceRegistry;
-import org.alfresco.service.cmr.avm.AVMNodeDescriptor;
-import org.alfresco.service.cmr.avm.AVMService;
-import org.alfresco.service.cmr.avmsync.AVMDifference;
-import org.alfresco.service.cmr.avmsync.AVMSyncService;
-import org.alfresco.service.cmr.dictionary.DictionaryService;
-import org.alfresco.service.cmr.repository.ContentReader;
-import org.alfresco.service.cmr.repository.ContentService;
-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.cmr.security.AccessPermission;
-import org.alfresco.service.cmr.security.AccessStatus;
-import org.alfresco.service.cmr.security.AuthorityService;
-import org.alfresco.service.cmr.security.MutableAuthenticationService;
-import org.alfresco.service.cmr.security.PermissionService;
-import org.alfresco.service.cmr.security.PersonService;
-import org.alfresco.service.namespace.NamespacePrefixResolver;
-import org.alfresco.service.namespace.NamespaceService;
-import org.alfresco.service.namespace.QName;
-import org.alfresco.service.transaction.TransactionService;
-import org.alfresco.test_category.LegacyCategory;
-import org.junit.experimental.categories.Category;
-import org.springframework.context.ApplicationContext;
-import org.springframework.orm.hibernate3.LocalSessionFactoryBean;
-
-/**
- * Specifically test AVM permissions with the updated ACL schema
- *
- * @author andyh
- */
-@Category(LegacyCategory.class)
-public class AVMServicePermissionsTest extends TestCase
-{
- private static ApplicationContext applicationContext = AVMTestSuite.getContext();
-
- protected NodeService nodeService;
-
- protected DictionaryService dictionaryService;
-
- protected PermissionServiceSPI permissionService;
-
- protected MutableAuthenticationService authenticationService;
-
- private MutableAuthenticationDao authenticationDAO;
-
- protected LocalSessionFactoryBean sessionFactory;
-
- protected NodeRef rootNodeRef;
-
- protected NamespacePrefixResolver namespacePrefixResolver;
-
- protected ServiceRegistry serviceRegistry;
-
- protected NodeRef systemNodeRef;
-
- protected AuthenticationComponent authenticationComponent;
-
- protected ModelDAO permissionModelDAO;
-
- protected PersonService personService;
-
- protected AuthorityService authorityService;
-
- private AclDAO aclDaoComponent;
-
- private UserTransaction testTX;
-
- private TransactionService transactionService;
-
- private AVMService avmService;
-
- private AccessControlListDAO avmACLDAO;
-
- private AVMNodeDAO avmNodeDAO;
-
- private AVMSyncService avmSyncService;
-
- private ContentService contentService;
-
- public AVMServicePermissionsTest()
- {
- super();
- }
-
- @Override
- protected void setUp() throws Exception
- {
- avmNodeDAO = (AVMNodeDAO) applicationContext.getBean("avmNodeDAO");
-
- avmACLDAO = (AccessControlListDAO) applicationContext.getBean("avmNodeACLDAO");
-
- aclDaoComponent = (AclDAO) applicationContext.getBean("aclDAO");
- avmService = (AVMService) applicationContext.getBean("avmService");
- avmSyncService = (AVMSyncService) applicationContext.getBean("AVMSyncService");
-
- nodeService = (NodeService) applicationContext.getBean("nodeService");
- dictionaryService = (DictionaryService) applicationContext.getBean(ServiceRegistry.DICTIONARY_SERVICE.getLocalName());
- permissionService = (PermissionServiceSPI) applicationContext.getBean("permissionService");
- namespacePrefixResolver = (NamespacePrefixResolver) applicationContext.getBean(ServiceRegistry.NAMESPACE_SERVICE.getLocalName());
- authenticationService = (MutableAuthenticationService) applicationContext.getBean("authenticationService");
- authenticationComponent = (AuthenticationComponent) applicationContext.getBean("authenticationComponent");
- serviceRegistry = (ServiceRegistry) applicationContext.getBean(ServiceRegistry.SERVICE_REGISTRY);
- permissionModelDAO = (ModelDAO) applicationContext.getBean("permissionsModelDAO");
- personService = (PersonService) applicationContext.getBean("personService");
- authorityService = (AuthorityService) applicationContext.getBean("authorityService");
- contentService = (ContentService) applicationContext.getBean("contentService");
-
- authenticationComponent.setCurrentUser(authenticationComponent.getSystemUserName());
- authenticationDAO = (MutableAuthenticationDao) applicationContext.getBean("authenticationDao");
- transactionService = (TransactionService) applicationContext.getBean("transactionComponent");
-
- testTX = transactionService.getUserTransaction();
- testTX.begin();
- this.authenticationComponent.setSystemUserAsCurrentUser();
-
- StoreRef storeRef = nodeService.createStore(StoreRef.PROTOCOL_WORKSPACE, "Test_" + System.nanoTime());
- rootNodeRef = nodeService.getRootNode(storeRef);
-
- QName children = ContentModel.ASSOC_CHILDREN;
- QName system = QName.createQName(NamespaceService.SYSTEM_MODEL_1_0_URI, "system");
- QName container = ContentModel.TYPE_CONTAINER;
- QName types = QName.createQName(NamespaceService.SYSTEM_MODEL_1_0_URI, "people");
-
- systemNodeRef = nodeService.createNode(rootNodeRef, children, system, container).getChildRef();
- NodeRef typesNodeRef = nodeService.createNode(systemNodeRef, children, types, container).getChildRef();
- Map props = createPersonProperties("andy");
- nodeService.createNode(typesNodeRef, children, ContentModel.TYPE_PERSON, container, props).getChildRef();
- props = createPersonProperties("lemur");
- nodeService.createNode(typesNodeRef, children, ContentModel.TYPE_PERSON, container, props).getChildRef();
-
- // create an authentication object e.g. the user
- if (authenticationDAO.userExists("andy"))
- {
- authenticationService.deleteAuthentication("andy");
- }
- authenticationService.createAuthentication("andy", "andy".toCharArray());
-
- if (authenticationDAO.userExists("lemur"))
- {
- authenticationService.deleteAuthentication("lemur");
- }
- authenticationService.createAuthentication("lemur", "lemur".toCharArray());
-
- if (authenticationDAO.userExists(AuthenticationUtil.getAdminUserName()))
- {
- authenticationService.deleteAuthentication(AuthenticationUtil.getAdminUserName());
- }
- authenticationService.createAuthentication(AuthenticationUtil.getAdminUserName(), "admin".toCharArray());
-
- if (authenticationDAO.userExists("manager"))
- {
- authenticationService.deleteAuthentication("manager");
- }
- authenticationService.createAuthentication("manager", "manager".toCharArray());
-
- if (authenticationDAO.userExists("publisher"))
- {
- authenticationService.deleteAuthentication("publisher");
- }
- authenticationService.createAuthentication("publisher", "publisher".toCharArray());
-
- if (authenticationDAO.userExists("contributor"))
- {
- authenticationService.deleteAuthentication("contributor");
- }
- authenticationService.createAuthentication("contributor", "contributor".toCharArray());
-
- if (authenticationDAO.userExists("reviewer"))
- {
- authenticationService.deleteAuthentication("reviewer");
- }
- authenticationService.createAuthentication("reviewer", "reviewer".toCharArray());
-
- authenticationComponent.clearCurrentSecurityContext();
-
- removeStore("main");
- }
-
- @Override
- protected void tearDown() throws Exception
- {
-
- try
- {
- testTX.commit();
- }
- catch (Throwable t)
- {
- t.printStackTrace();
- }
- finally
- {
- AuthenticationUtil.clearCurrentSecurityContext();
- super.tearDown();
- }
- }
-
- protected void runAs(String userName)
- {
- authenticationService.authenticate(userName, userName.toCharArray());
- assertNotNull(authenticationService.getCurrentUserName());
- // for(GrantedAuthority authority : woof.getAuthorities())
- // {
- // System.out.println("Auth = "+authority.getAuthority());
- // }
-
- }
-
- private Map createPersonProperties(String userName)
- {
- HashMap properties = new HashMap();
- properties.put(ContentModel.PROP_USERNAME, userName);
- return properties;
- }
-
- protected PermissionReference getPermission(String permission)
- {
- return permissionModelDAO.getPermissionReference(null, permission);
- }
-
- private void buildBaseStructure(String base) throws IOException
- {
- avmService.createStore(base);
- avmService.createDirectory(base + ":/", "base");
- avmService.createDirectory(base + ":/base", "d-a");
- avmService.createDirectory(base + ":/base/d-a", "d-aa");
- avmService.createDirectory(base + ":/base/d-a", "d-ab");
- avmService.createDirectory(base + ":/base/d-a", "d-ac");
- avmService.createFile(base + ":/base/d-a", "f-aa").close();
- avmService.createDirectory(base + ":/base", "d-b");
- avmService.createDirectory(base + ":/base/d-b", "d-ba");
- avmService.createDirectory(base + ":/base/d-b", "d-bb");
- avmService.createDirectory(base + ":/base/d-b", "d-bc");
- avmService.createFile(base + ":/base/d-b", "f-ba").close();
- avmService.createDirectory(base + ":/base", "d-c");
- avmService.createDirectory(base + ":/base/d-c", "d-ca");
- avmService.createDirectory(base + ":/base/d-c", "d-cb");
- avmService.createDirectory(base + ":/base/d-c", "d-cc");
- avmService.createFile(base + ":/base/d-c", "f-ca").close();
- avmService.createFile(base + ":/base", "f-a").close();
-
- avmService.createDirectory(base + ":/base", "d-d");
- avmService.createLayeredDirectory(base + ":/base/d-a", base + ":/base/d-d", "layer-d-a");
- avmService.createLayeredDirectory(base + ":/base/d-b", base + ":/base/d-d", "layer-d-b");
- avmService.createLayeredDirectory(base + ":/base/d-c", base + ":/base/d-d", "layer-d-c");
- avmService.createLayeredFile(base + ":/base/f-a", base + ":/base/d-d", "layer-fa");
-
- avmService.createLayeredDirectory(base + ":/base", base + ":/", "layer");
-
- String layeredStore1 = base + "-layer-base";
- avmService.createStore(layeredStore1);
- avmService.createLayeredDirectory(base + ":/base", layeredStore1 + ":/", "layer-to-base");
-
- String layeredStore2 = base + "-layer-a";
- avmService.createStore(layeredStore2);
- avmService.createLayeredDirectory(base + ":/base/d-a", layeredStore2 + ":/", "layer-to-d-a");
-
- String layeredStore3 = base + "-layer-b";
- avmService.createStore(layeredStore3);
- avmService.createLayeredDirectory(base + ":/base/d-b", layeredStore3 + ":/", "layer-to-d-b");
-
- String layeredStore4 = base + "-layer-c";
- avmService.createStore(layeredStore4);
- avmService.createLayeredDirectory(base + ":/base/d-c", layeredStore4 + ":/", "layer-to-d-c");
-
- String layeredStore5 = base + "-layer-d";
- avmService.createStore(layeredStore5);
- avmService.createLayeredDirectory(base + ":/base/d-d", layeredStore5 + ":/", "layer-to-d-d");
-
- String layeredStore6 = base + "-layer-layer-base";
- avmService.createStore(layeredStore6);
- avmService.createLayeredDirectory(layeredStore1 + ":/layer-to-base", layeredStore6 + ":/", "layer-to-layer-to-base");
-
- String layeredStore7 = base + "-layer-layer-layer-base";
- avmService.createStore(layeredStore7);
- avmService.createLayeredDirectory(layeredStore6 + ":/layer-to-layer-to-base", layeredStore7 + ":/", "layer-to-layer-to-layer-to-base");
- }
-
- private boolean checkPermission(String user, String path, String permission, boolean allowed)
- {
- String curentUser = AuthenticationUtil.getRunAsUser();
- try
- {
- runAs(user);
- AVMNodeDescriptor desc = avmService.lookup(-1, path);
- AVMNode node = avmNodeDAO.getByID(desc.getId());
- NodeRef nodeRef = AVMNodeConverter.ToNodeRef(-1, path);
- AVMStore store = AVMDAOs.Instance().fAVMStoreDAO.getByName(nodeRef.getStoreRef().getIdentifier());
- boolean can = AVMRepository.GetInstance().can(store, node, permission, AVMRepository.GetInstance().lookup(-1, path, false).getDirectlyContained());
- return allowed ? can : !can;
- }
- finally
- {
- runAs(curentUser);
- }
- }
-
- private boolean checkCanPerformance(String user, String path, String permission, boolean allowed, int count)
- {
- String curentUser = AuthenticationUtil.getRunAsUser();
- try
- {
- runAs(user);
- AVMNodeDescriptor desc = avmService.lookup(-1, path);
- AVMNode node = avmNodeDAO.getByID(desc.getId());
- NodeRef nodeRef = AVMNodeConverter.ToNodeRef(-1, path);
- AVMStore store = AVMDAOs.Instance().fAVMStoreDAO.getByName(nodeRef.getStoreRef().getIdentifier());
- boolean can = AVMRepository.GetInstance().can(store, node, permission, AVMRepository.GetInstance().lookup(-1, path, false).getDirectlyContained());
- long start = System.nanoTime();
- for (int i = 0; i < count; i++)
- {
- can = AVMRepository.GetInstance().can(null, node, permission, AVMRepository.GetInstance().lookup(-1, path, false).getDirectlyContained());
- }
- long end = System.nanoTime();
- System.out.println("Can in " + ((end - start) / 10e9f / count));
- System.out.println("Can per second " + (1 / ((end - start) / 10e9f / count)));
- return allowed ? can : !can;
- }
- finally
- {
- runAs(curentUser);
- }
- }
-
- private boolean checkHasPermissionsPerformance(String user, String path, String permission, boolean allowed, int count)
- {
- String curentUser = AuthenticationUtil.getRunAsUser();
- try
- {
- runAs(user);
- NodeRef nodeRef = AVMNodeConverter.ToNodeRef(-1, path);
- boolean can = permissionService.hasPermission(nodeRef, permission) == AccessStatus.ALLOWED;
- long start = System.nanoTime();
- for (int i = 0; i < count; i++)
- {
- can = permissionService.hasPermission(nodeRef, permission) == AccessStatus.ALLOWED;
- }
- long end = System.nanoTime();
- System.out.println("Has Permission in " + ((end - start) / 10e9f / count));
- System.out.println("Has Permission per second " + (1 / ((end - start) / 10e9f / count)));
- return allowed ? can : !can;
- }
- finally
- {
- runAs(curentUser);
- }
- }
-
- public boolean checkHasPermission(String user, NodeRef nodeRef, String permission, boolean allowed)
- {
- String curentUser = AuthenticationUtil.getRunAsUser();
- try
- {
- runAs(user);
- boolean can = permissionService.hasPermission(nodeRef, permission) == AccessStatus.ALLOWED;
- return allowed ? can : !can;
- }
- finally
- {
- runAs(curentUser);
- }
- }
-
- public void testSetup() throws Exception
- {
- // test setUp & tearDown
- }
-
-
- public void test_ETWOTWO_457_NPE1() throws Exception
- {
- try
- {
- // run as system (null)
- authenticationService.clearCurrentSecurityContext();
-
- avmService.createStore("main");
- avmService.createDirectory("main:/", "a");
-
- // java.lang.NullPointerException - at org.alfresco.service.cmr.security.AuthorityType.getAuthorityType(AuthorityType.java:254)
- Set perms = permissionService.getPermissions(AVMNodeConverter.ToNodeRef(-1, "main:/a"));
- for (AccessPermission permission : perms)
- {
- System.out.println(permission);
- }
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- finally
- {
- avmService.purgeStore("main");
- }
- }
-
- public void test_ETWOTWO_457_NPE2() throws Exception
- {
- try
- {
- // run as admin
- authenticationService.authenticate("admin", "admin".toCharArray());
-
- avmService.createStore("main");
- avmService.createDirectory("main:/", "a");
-
- Set perms = permissionService.getPermissions(AVMNodeConverter.ToNodeRef(-1, "main:/a"));
- for (AccessPermission permission : perms)
- {
- System.out.println(permission);
- }
-
- // java.lang.NullPointerException - at org.alfresco.repo.domain.hibernate.AbstractPermissionsDaoComponentImpl.deletePermission(AbstractPermissionsDaoComponentImpl.java:383)
- permissionService.deletePermission(AVMNodeConverter.ToNodeRef(-1, "main:/a"), PermissionService.ADMINISTRATOR_AUTHORITY, PermissionService.ALL_PERMISSIONS);
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- finally
- {
- avmService.purgeStore("main");
- }
- }
-
- public void test_ETWOTWO_457_NPE3() throws Exception
- {
- try
- {
- // run as system (null)
- authenticationService.clearCurrentSecurityContext();
- authenticationComponent.setSystemUserAsCurrentUser();
-
- avmService.createStore("main");
- avmService.createFile("main:/", "foo").close();
-
- permissionService.setPermission(AVMNodeConverter.ToNodeRef(-1, "main:/").getStoreRef(), PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true);
-
- // java.lang.NullPointerException - at org.alfresco.repo.security.permissions.impl.PermissionServiceImpl.hasPermission(PermissionServiceImpl.java:494)
- ContentReader cr = contentService.getReader(AVMNodeConverter.ToNodeRef(-1, "main:/foo"), ContentModel.PROP_CONTENT);
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- finally
- {
- avmService.purgeStore("main");
- }
- }
-
-
- public void testStoreAcls() throws Exception
- {
- runAs(AuthenticationUtil.getAdminUserName());
- String storeName = "PermissionsTest-" + getName() + "-" + (new Date().getTime());
- try
- {
- buildBaseStructure(storeName);
-
- AVMNodeDescriptor nodeDesc = avmService.lookup(-1, storeName + ":/base");
- NodeRef nodeRef = AVMNodeConverter.ToNodeRef(-1, nodeDesc.getPath());
- permissionService.setPermission(nodeRef, PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true);
-
- assertTrue(checkPermission("andy", storeName + ":/base", PermissionService.ALL_PERMISSIONS, true));
- assertTrue(checkHasPermission("andy", nodeRef, PermissionService.ALL_PERMISSIONS, true));
- assertTrue(checkPermission("lemur", storeName + ":/base", PermissionService.ALL_PERMISSIONS, true));
- assertTrue(checkHasPermission("lemur", nodeRef, PermissionService.ALL_PERMISSIONS, true));
- assertTrue(checkPermission(AuthenticationUtil.getAdminUserName(), storeName + ":/base", PermissionService.ALL_PERMISSIONS, true));
- assertTrue(checkHasPermission(AuthenticationUtil.getAdminUserName(), nodeRef, PermissionService.ALL_PERMISSIONS, true));
-
- permissionService.setPermission(nodeRef.getStoreRef(), "andy", PermissionService.ALL_PERMISSIONS, true);
-
- assertTrue(checkPermission("andy", storeName + ":/base", PermissionService.ALL_PERMISSIONS, true));
- assertTrue(checkHasPermission("andy", nodeRef, PermissionService.ALL_PERMISSIONS, true));
- assertTrue(checkPermission("lemur", storeName + ":/base", PermissionService.ALL_PERMISSIONS, false));
- assertTrue(checkHasPermission("lemur", nodeRef, PermissionService.ALL_PERMISSIONS, false));
- assertTrue(checkPermission(AuthenticationUtil.getAdminUserName(), storeName + ":/base", PermissionService.ALL_PERMISSIONS, true));
- assertTrue(checkHasPermission(AuthenticationUtil.getAdminUserName(), nodeRef, PermissionService.ALL_PERMISSIONS, true));
-
- permissionService.deletePermission(nodeRef.getStoreRef(), "andy", PermissionService.ALL_PERMISSIONS);
-
- assertTrue(checkPermission("andy", storeName + ":/base", PermissionService.ALL_PERMISSIONS, false));
- assertTrue(checkHasPermission("andy", nodeRef, PermissionService.ALL_PERMISSIONS, false));
- assertTrue(checkPermission("lemur", storeName + ":/base", PermissionService.ALL_PERMISSIONS, false));
- assertTrue(checkHasPermission("lemur", nodeRef, PermissionService.ALL_PERMISSIONS, false));
- assertTrue(checkPermission(AuthenticationUtil.getAdminUserName(), storeName + ":/base", PermissionService.ALL_PERMISSIONS, true));
- assertTrue(checkHasPermission(AuthenticationUtil.getAdminUserName(), nodeRef, PermissionService.ALL_PERMISSIONS, true));
-
- permissionService.deletePermissions(nodeRef.getStoreRef());
-
- assertTrue(checkPermission("andy", storeName + ":/base", PermissionService.ALL_PERMISSIONS, true));
- assertTrue(checkHasPermission("andy", nodeRef, PermissionService.ALL_PERMISSIONS, true));
- assertTrue(checkPermission("lemur", storeName + ":/base", PermissionService.ALL_PERMISSIONS, true));
- assertTrue(checkHasPermission("lemur", nodeRef, PermissionService.ALL_PERMISSIONS, true));
- assertTrue(checkPermission(AuthenticationUtil.getAdminUserName(), storeName + ":/base", PermissionService.ALL_PERMISSIONS, true));
- assertTrue(checkHasPermission(AuthenticationUtil.getAdminUserName(), nodeRef, PermissionService.ALL_PERMISSIONS, true));
-
- permissionService.setPermission(nodeRef.getStoreRef(), "andy", PermissionService.ALL_PERMISSIONS, true);
- assertTrue(checkHasPermission("andy", nodeRef, PermissionService.ALL_PERMISSIONS, true));
- permissionService.setPermission(nodeRef.getStoreRef(), "andy", PermissionService.READ, true);
- permissionService.setPermission(nodeRef.getStoreRef(), "lemur", PermissionService.ALL_PERMISSIONS, true);
-
- assertTrue(checkPermission("andy", storeName + ":/base", PermissionService.ALL_PERMISSIONS, true));
- assertTrue(checkHasPermission("andy", nodeRef, PermissionService.ALL_PERMISSIONS, true));
- assertTrue(checkPermission("lemur", storeName + ":/base", PermissionService.ALL_PERMISSIONS, true));
- assertTrue(checkHasPermission("lemur", nodeRef, PermissionService.ALL_PERMISSIONS, true));
- assertTrue(checkPermission(AuthenticationUtil.getAdminUserName(), storeName + ":/base", PermissionService.ALL_PERMISSIONS, true));
- assertTrue(checkHasPermission(AuthenticationUtil.getAdminUserName(), nodeRef, PermissionService.ALL_PERMISSIONS, true));
- assertEquals(permissionService.getAllSetPermissions(nodeRef.getStoreRef()).size(), 3);
-
- permissionService.clearPermission(nodeRef.getStoreRef(), "andy");
-
- assertTrue(checkPermission("andy", storeName + ":/base", PermissionService.ALL_PERMISSIONS, false));
- assertTrue(checkHasPermission("andy", nodeRef, PermissionService.ALL_PERMISSIONS, false));
- assertTrue(checkPermission("lemur", storeName + ":/base", PermissionService.ALL_PERMISSIONS, true));
- assertTrue(checkHasPermission("lemur", nodeRef, PermissionService.ALL_PERMISSIONS, true));
- assertTrue(checkPermission(AuthenticationUtil.getAdminUserName(), storeName + ":/base", PermissionService.ALL_PERMISSIONS, true));
- assertTrue(checkHasPermission(AuthenticationUtil.getAdminUserName(), nodeRef, PermissionService.ALL_PERMISSIONS, true));
- assertEquals(permissionService.getAllSetPermissions(nodeRef.getStoreRef()).size(), 1);
-
- permissionService.clearPermission(nodeRef.getStoreRef(), "lemur");
-
- assertTrue(checkPermission("andy", storeName + ":/base", PermissionService.ALL_PERMISSIONS, false));
- assertTrue(checkHasPermission("andy", nodeRef, PermissionService.ALL_PERMISSIONS, false));
- assertTrue(checkPermission("lemur", storeName + ":/base", PermissionService.ALL_PERMISSIONS, false));
- assertTrue(checkHasPermission("lemur", nodeRef, PermissionService.ALL_PERMISSIONS, false));
- assertTrue(checkPermission(AuthenticationUtil.getAdminUserName(), storeName + ":/base", PermissionService.ALL_PERMISSIONS, true));
- assertTrue(checkHasPermission(AuthenticationUtil.getAdminUserName(), nodeRef, PermissionService.ALL_PERMISSIONS, true));
-
- }
- finally
- {
- removeStore(storeName);
- removeStore(storeName + "-layer-base");
- removeStore(storeName + "-layer-a");
- removeStore(storeName + "-layer-b");
- removeStore(storeName + "-layer-c");
- removeStore(storeName + "-layer-d");
- removeStore(storeName + "-layer-layer-base");
- removeStore(storeName + "-layer-layer-layer-base");
-
- //System.out.println(avmService.getStores());
- }
-
- }
-
- public void testSimpleUpdate() throws Throwable
- {
- runAs(AuthenticationUtil.getAdminUserName());
- String storeName = "PermissionsTest-" + getName() + "-" + (new Date().getTime());
- try
- {
- buildBaseStructure(storeName);
- avmService.createDirectory(storeName + "-layer-base:/layer-to-base", "update-dir");
- avmService.createFile(storeName + "-layer-base:/layer-to-base/update-dir", "update-file").close();
-
- AVMNodeDescriptor desc = avmService.lookup(-1, storeName + "-layer-base:/layer-to-base");
- AVMNode node = avmNodeDAO.getByID(desc.getId());
- Acl acl = node.getAcl();
- assertNotNull(acl);
- acl = aclDaoComponent.getAcl(aclDaoComponent.getInheritedAccessControlList(acl.getId()));
- assertNotNull(acl);
-
- desc = avmService.lookup(-1, storeName + "-layer-base:/layer-to-base/update-dir");
- node = avmNodeDAO.getByID(desc.getId());
- Acl dirAcl = node.getAcl();
- assertNotNull(dirAcl);
- assertEquals(acl.getId(), dirAcl.getId());
-
- desc = avmService.lookup(-1, storeName + "-layer-base:/layer-to-base/update-dir/update-file");
- node = avmNodeDAO.getByID(desc.getId());
- Acl fileAcl = node.getAcl();
- assertNotNull(fileAcl);
- assertEquals(acl.getId(), fileAcl.getId());
-
- avmService.createSnapshot(storeName, "store", "store");
- avmService.createSnapshot(storeName + "-layer-base", "store", "store");
-
- List diffs = avmSyncService.compare(-1, storeName + "-layer-base:/layer-to-base", -1, storeName + ":/base", null);
- assertEquals(1, diffs.size());
- assertEquals("[" + storeName + "-layer-base:/layer-to-base/update-dir[-1] > " + storeName + ":/base/update-dir[-1]]", diffs.toString());
- avmSyncService.update(diffs, null, false, false, false, false, "A", "A");
-
- desc = avmService.lookup(-1, storeName + ":/base/update-dir");
- node = avmNodeDAO.getByID(desc.getId());
- dirAcl = node.getAcl();
- assertNull(dirAcl);
-
- desc = avmService.lookup(-1, storeName + ":/base/update-dir/update-file");
- node = avmNodeDAO.getByID(desc.getId());
- fileAcl = node.getAcl();
- assertNull(fileAcl);
-
- desc = avmService.lookup(-1, storeName + "-layer-base:/layer-to-base/update-dir");
- node = avmNodeDAO.getByID(desc.getId());
- dirAcl = node.getAcl();
- assertNotNull(dirAcl);
- assertEquals(acl.getId(), dirAcl.getId());
-
- desc = avmService.lookup(-1, storeName + "-layer-base:/layer-to-base/update-dir/update-file");
- node = avmNodeDAO.getByID(desc.getId());
- fileAcl = node.getAcl();
- assertNull(fileAcl);
- }
- catch (Throwable t)
- {
- t.printStackTrace();
- throw t;
- }
- finally
- {
- removeStore(storeName);
- removeStore(storeName + "-layer-base");
- removeStore(storeName + "-layer-a");
- removeStore(storeName + "-layer-b");
- removeStore(storeName + "-layer-c");
- removeStore(storeName + "-layer-d");
- removeStore(storeName + "-layer-layer-base");
- removeStore(storeName + "-layer-layer-layer-base");
- }
- }
-
- public void testUpdateWithPermissions() throws Exception
- {
- runAs(AuthenticationUtil.getAdminUserName());
- String storeName = "PermissionsTest-" + getName() + "-" + (new Date().getTime());
- try
- {
- buildBaseStructure(storeName);
-
- AVMNodeDescriptor nodeDesc = avmService.lookup(-1, storeName + ":/base");
- NodeRef nodeRef = AVMNodeConverter.ToNodeRef(-1, nodeDesc.getPath());
- permissionService.setPermission(nodeRef, PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true);
- Long baseAcl = avmNodeDAO.getByID(nodeDesc.getId()).getAcl().getId();
- Long inheritedBaseAcl = aclDaoComponent.getInheritedAccessControlList(baseAcl);
-
- avmService.createDirectory(storeName + "-layer-base:/layer-to-base", "update-dir");
- avmService.createFile(storeName + "-layer-base:/layer-to-base/update-dir", "update-file").close();
-
- AVMNodeDescriptor desc = avmService.lookup(-1, storeName + "-layer-base:/layer-to-base");
- AVMNode node = avmNodeDAO.getByID(desc.getId());
- Acl acl = node.getAcl();
- assertNotNull(acl);
- acl = aclDaoComponent.getAcl(aclDaoComponent.getInheritedAccessControlList(acl.getId()));
- assertNotNull(acl);
-
- desc = avmService.lookup(-1, storeName + "-layer-base:/layer-to-base/update-dir");
- node = avmNodeDAO.getByID(desc.getId());
- Acl dirAcl = node.getAcl();
- assertNotNull(dirAcl);
- assertEquals(acl.getId(), dirAcl.getId());
-
- desc = avmService.lookup(-1, storeName + "-layer-base:/layer-to-base/update-dir/update-file");
- node = avmNodeDAO.getByID(desc.getId());
- Acl fileAcl = node.getAcl();
- assertNotNull(fileAcl);
- assertEquals(acl.getId(), fileAcl.getId());
-
- avmService.createSnapshot(storeName, "store", "store");
- avmService.createSnapshot(storeName + "-layer-base", "store", "store");
-
- List diffs = avmSyncService.compare(-1, storeName + "-layer-base:/layer-to-base", -1, storeName + ":/base", null);
- assertEquals(1, diffs.size());
- assertEquals("[" + storeName + "-layer-base:/layer-to-base/update-dir[-1] > " + storeName + ":/base/update-dir[-1]]", diffs.toString());
- avmSyncService.update(diffs, null, false, false, false, false, "A", "A");
-
- desc = avmService.lookup(-1, storeName + ":/base/update-dir");
- node = avmNodeDAO.getByID(desc.getId());
- dirAcl = node.getAcl();
- assertNotNull(dirAcl);
- assertEquals(inheritedBaseAcl, dirAcl.getId());
-
- desc = avmService.lookup(-1, storeName + ":/base/update-dir/update-file");
- node = avmNodeDAO.getByID(desc.getId());
- fileAcl = node.getAcl();
- assertNotNull(fileAcl);
- assertEquals(inheritedBaseAcl, fileAcl.getId());
-
- desc = avmService.lookup(-1, storeName + "-layer-base:/layer-to-base/update-dir");
- node = avmNodeDAO.getByID(desc.getId());
- dirAcl = node.getAcl();
- assertNotNull(dirAcl);
- assertEquals(acl.getId(), dirAcl.getId());
-
- desc = avmService.lookup(-1, storeName + "-layer-base:/layer-to-base/update-dir/update-file");
- node = avmNodeDAO.getByID(desc.getId());
- fileAcl = node.getAcl();
- assertNotNull(fileAcl);
- assertEquals(inheritedBaseAcl, fileAcl.getId());
- }
- finally
- {
- removeStore(storeName);
- removeStore(storeName + "-layer-base");
- removeStore(storeName + "-layer-a");
- removeStore(storeName + "-layer-b");
- removeStore(storeName + "-layer-c");
- removeStore(storeName + "-layer-d");
- removeStore(storeName + "-layer-layer-base");
- removeStore(storeName + "-layer-layer-layer-base");
- }
- }
-
- public void testComplexStore_AlterInheritance() throws IOException
- {
- runAs(AuthenticationUtil.getAdminUserName());
- String storeName = "PermissionsTest-" + getName() + "-" + (new Date().getTime());
- try
- {
- buildBaseStructure(storeName);
-
- checkHeadPermissionNotSetForPath(storeName + ":/base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-base:/layer-to-base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-a:/layer-to-d-a", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-b:/layer-to-d-b", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-c:/layer-to-d-c", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-d:/layer-to-d-d", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-layer-base:/layer-to-layer-to-base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true,
- null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-layer-layer-base:/layer-to-layer-to-layer-to-base", PermissionService.ALL_AUTHORITIES,
- PermissionService.ALL_PERMISSIONS, true, null);
-
- AVMNodeDescriptor desc = avmService.lookup(-1, storeName + "-layer-base:/layer-to-base");
- NodeRef nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true);
-
- assertTrue(checkPermission(AuthenticationUtil.getAdminUserName(), storeName + ":/base", PermissionService.READ, true));
- assertTrue(checkPermission(AuthenticationUtil.getAdminUserName(), storeName + "-layer-base:/layer-to-base", PermissionService.READ, true));
- assertTrue(checkPermission(AuthenticationUtil.getAdminUserName(), storeName + "-layer-base:/layer-to-base", PermissionService.ALL_PERMISSIONS, true));
- // True as unset defaults to allow
- assertTrue(checkPermission("lemur", storeName + ":/base", PermissionService.READ, true));
- assertTrue(checkPermission("lemur", storeName + "-layer-base:/layer-to-base", PermissionService.READ, true));
- assertTrue(checkPermission("lemur", storeName + "-layer-base:/layer-to-base", PermissionService.ALL_PERMISSIONS, true));
-
- desc = avmService.lookup(-1, storeName + ":/base");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true);
- permissionService.deletePermission(nodeRef, PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS);
-
- assertTrue(checkPermission(AuthenticationUtil.getAdminUserName(), storeName + ":/base", PermissionService.READ, true));
- assertTrue(checkPermission(AuthenticationUtil.getAdminUserName(), storeName + "-layer-base:/layer-to-base", PermissionService.READ, true));
- assertTrue(checkPermission(AuthenticationUtil.getAdminUserName(), storeName + "-layer-base:/layer-to-base", PermissionService.ALL_PERMISSIONS, true));
- // True as unset defaults to allow
- assertTrue(checkPermission("lemur", storeName + ":/base", PermissionService.READ, false));
- assertTrue(checkPermission("lemur", storeName + "-layer-base:/layer-to-base", PermissionService.READ, true));
- assertTrue(checkPermission("lemur", storeName + "-layer-base:/layer-to-base", PermissionService.ALL_PERMISSIONS, true));
-
- // performance
-
- checkCanPerformance("lemur", storeName + ":/base", PermissionService.READ, false, 10000);
- checkHasPermissionsPerformance("lemur", storeName + ":/base", PermissionService.READ, false, 10000);
-
- String[] excludeL = new String[] { storeName + "-layer-base:/layer-to-base/d-d/layer-d-a" };
- String[] excludeLL = new String[] { storeName + "-layer-layer-base:/layer-to-layer-to-base/d-d/layer-d-a" };
- String[] excludeLLL = new String[] { storeName + "-layer-layer-layer-base:/layer-to-layer-to-layer-to-base/d-d/layer-d-a" };
-
- checkHeadPermissionNotSetForPath(storeName + ":/base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-base:/layer-to-base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, excludeL);
- checkHeadPermissionNotSetForPath(storeName + "-layer-a:/layer-to-d-a", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-b:/layer-to-d-b", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-c:/layer-to-d-c", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-d:/layer-to-d-d", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-layer-base:/layer-to-layer-to-base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true,
- excludeLL);
- checkHeadPermissionForPath(storeName + "-layer-layer-layer-base:/layer-to-layer-to-layer-to-base", PermissionService.ALL_AUTHORITIES,
- PermissionService.ALL_PERMISSIONS, true, excludeLLL);
-
- desc = avmService.lookup(-1, storeName + "-layer-base:/layer-to-base/d-a");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setInheritParentPermissions(nodeRef, false);
-
- String[] excludeL2 = new String[] { storeName + "-layer-base:/layer-to-base/d-d/layer-d-a", storeName + "-layer-base:/layer-to-base/d-a" };
- String[] excludeLL2 = new String[] { storeName + "-layer-layer-base:/layer-to-layer-to-base/d-d/layer-d-a", storeName + "-layer-layer-base:/layer-to-layer-to-base/d-a" };
- String[] excludeLLL2 = new String[] { storeName + "-layer-layer-layer-base:/layer-to-layer-to-layer-to-base/d-d/layer-d-a",
- storeName + "-layer-layer-layer-base:/layer-to-layer-to-layer-to-base/d-a" };
-
- checkHeadPermissionNotSetForPath(storeName + ":/base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-base:/layer-to-base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, excludeL2);
- checkHeadPermissionNotSetForPath(storeName + "-layer-base:/layer-to-base/d-a", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-a:/layer-to-d-a", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-b:/layer-to-d-b", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-c:/layer-to-d-c", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-d:/layer-to-d-d", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-layer-base:/layer-to-layer-to-base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true,
- excludeLL2);
- checkHeadPermissionForPath(storeName + "-layer-layer-layer-base:/layer-to-layer-to-layer-to-base", PermissionService.ALL_AUTHORITIES,
- PermissionService.ALL_PERMISSIONS, true, excludeLLL2);
-
- desc = avmService.lookup(-1, storeName + "-layer-base:/layer-to-base/d-a");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setInheritParentPermissions(nodeRef, true);
-
- checkHeadPermissionNotSetForPath(storeName + ":/base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-base:/layer-to-base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, excludeL);
- checkHeadPermissionNotSetForPath(storeName + "-layer-a:/layer-to-d-a", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-b:/layer-to-d-b", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-c:/layer-to-d-c", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-d:/layer-to-d-d", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-layer-base:/layer-to-layer-to-base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true,
- excludeLL);
- checkHeadPermissionForPath(storeName + "-layer-layer-layer-base:/layer-to-layer-to-layer-to-base", PermissionService.ALL_AUTHORITIES,
- PermissionService.ALL_PERMISSIONS, true, excludeLLL);
-
- }
- finally
- {
- removeStore(storeName);
- removeStore(storeName + "-layer-base");
- removeStore(storeName + "-layer-a");
- removeStore(storeName + "-layer-b");
- removeStore(storeName + "-layer-c");
- removeStore(storeName + "-layer-d");
- removeStore(storeName + "-layer-layer-base");
- removeStore(storeName + "-layer-layer-layer-base");
- }
- }
-
- public void testComplexStore_AddPermissionsToMiddle() throws IOException
- {
- runAs(AuthenticationUtil.getAdminUserName());
- String storeName = "PermissionsTest-" + getName() + "-" + (new Date().getTime());
- try
- {
- buildBaseStructure(storeName);
-
- checkHeadPermissionNotSetForPath(storeName + ":/base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-base:/layer-to-base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-a:/layer-to-d-a", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-b:/layer-to-d-b", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-c:/layer-to-d-c", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-d:/layer-to-d-d", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-layer-base:/layer-to-layer-to-base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true,
- null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-layer-layer-base:/layer-to-layer-to-layer-to-base", PermissionService.ALL_AUTHORITIES,
- PermissionService.ALL_PERMISSIONS, true, null);
-
- AVMNodeDescriptor desc = avmService.lookup(-1, storeName + "-layer-a:/layer-to-d-a");
- NodeRef nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true);
-
- checkHeadPermissionNotSetForPath(storeName + ":/base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-base:/layer-to-base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-a:/layer-to-d-a", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-b:/layer-to-d-b", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-c:/layer-to-d-c", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-d:/layer-to-d-d", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-layer-base:/layer-to-layer-to-base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true,
- null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-layer-layer-base:/layer-to-layer-to-layer-to-base", PermissionService.ALL_AUTHORITIES,
- PermissionService.ALL_PERMISSIONS, true, null);
-
- desc = avmService.lookup(-1, storeName + "-layer-base:/layer-to-base");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
-
- // debugPermissions(storeName + ":/base");
- // debugPermissions(storeName + "-layer-base:/layer-to-base");
- //
- // Acl acl = avmACLDAO.getAccessControlList(nodeRef);
- // List nodes = aclDaoComponent.getAvmNodesByACL(acl.getId());
- // for (Long id : nodes)
- // {
- // AVMNodeDescriptor layerDesc = new AVMNodeDescriptor(null, null, 0, null, null, null, 0, 0, 0, id, null,
- // 0, null, 0, false, 0, false, 0, 0);
- // List> paths = avmService.getHeadPaths(layerDesc);
- // for(Pair path : paths)
- // {
- // NodeRef testRef = AVMNodeConverter.ToNodeRef(-1, path.getSecond());
- // System.out.println("--> "+id +" "+path.getSecond()+ " "+path.getFirst()+ "
- // "+avmACLDAO.getAccessControlList(testRef));
- // }
- // }
-
- permissionService.setPermission(nodeRef, "loon", PermissionService.ALL_PERMISSIONS, true);
-
- // debugPermissions(storeName + ":/base");
- // debugPermissions(storeName + "-layer-base:/layer-to-base");
- //
- // acl = avmACLDAO.getAccessControlList(nodeRef);
- // nodes = aclDaoComponent.getAvmNodesByACL(acl.getId());
- // for (Long id : nodes)
- // {
- // AVMNodeDescriptor layerDesc = new AVMNodeDescriptor(null, null, 0, null, null, null, 0, 0, 0, id, null,
- // 0, null, 0, false, 0, false, 0, 0);
- // List> paths = avmService.getHeadPaths(layerDesc);
- // for(Pair path : paths)
- // {
- // NodeRef testRef = AVMNodeConverter.ToNodeRef(-1, path.getSecond());
- // System.out.println("--> "+id +" "+path.getSecond()+ " "+path.getFirst()+ "
- // "+avmACLDAO.getAccessControlList(testRef));
- // }
- // }
- //
-
- checkHeadPermissionNotSetForPath(storeName + ":/base", "loon", PermissionService.ALL_PERMISSIONS, true, null);
- String[] excludeL = new String[] { storeName + "-layer-base:/layer-to-base/d-d/layer-d-a" };
- checkHeadPermissionForPath(storeName + "-layer-base:/layer-to-base", "loon", PermissionService.ALL_PERMISSIONS, true, excludeL);
- checkHeadPermissionNotSetForPath(storeName + "-layer-a:/layer-to-d-a", "loon", PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-b:/layer-to-d-b", "loon", PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-c:/layer-to-d-c", "loon", PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-d:/layer-to-d-d", "loon", PermissionService.ALL_PERMISSIONS, true, null);
- String[] excludeLL = new String[] { storeName + "-layer-layer-base:/layer-to-layer-to-base/d-d/layer-d-a" };
- checkHeadPermissionForPath(storeName + "-layer-layer-base:/layer-to-layer-to-base", "loon", PermissionService.ALL_PERMISSIONS, true, excludeLL);
- String[] excludeLLL = new String[] { storeName + "-layer-layer-layer-base:/layer-to-layer-to-layer-to-base/d-d/layer-d-a" };
- checkHeadPermissionForPath(storeName + "-layer-layer-layer-base:/layer-to-layer-to-layer-to-base", "loon", PermissionService.ALL_PERMISSIONS, true, excludeLLL);
-
- desc = avmService.lookup(-1, storeName + "-layer-base:/layer-to-base");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "monkey", PermissionService.ALL_PERMISSIONS, true);
-
- debugPermissions(storeName + ":/base");
- debugPermissions(storeName + "-layer-base:/layer-to-base");
-
- // acl = avmACLDAO.getAccessControlList(nodeRef);
- // nodes = aclDaoComponent.getAvmNodesByACL(acl.getId());
- // for (Long id : nodes)
- // {
- // // need to fix up inheritance as is has changed
- // AVMNodeDescriptor layerDesc = new AVMNodeDescriptor(null, null, 0, null, null, null, 0, 0, 0, id, null,
- // 0, null, 0, false, 0, false, 0, 0);
- // List> paths = avmService.getHeadPaths(layerDesc);
- // for(Pair path : paths)
- // {
- // NodeRef testRef = AVMNodeConverter.ToNodeRef(-1, path.getSecond());
- // System.out.println("--> "+id +" "+path.getSecond()+ " "+path.getFirst()+ "
- // "+avmACLDAO.getAccessControlList(testRef));
- // }
- // }
-
- checkHeadPermissionNotSetForPath(storeName + ":/base", "monkey", PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-base:/layer-to-base", "monkey", PermissionService.ALL_PERMISSIONS, true, excludeL);
- checkHeadPermissionNotSetForPath(storeName + "-layer-a:/layer-to-d-a", "monkey", PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-b:/layer-to-d-b", "monkey", PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-c:/layer-to-d-c", "monkey", PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-d:/layer-to-d-d", "monkey", PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-layer-base:/layer-to-layer-to-base", "monkey", PermissionService.ALL_PERMISSIONS, true, excludeLL);
- checkHeadPermissionForPath(storeName + "-layer-layer-layer-base:/layer-to-layer-to-layer-to-base", "monkey", PermissionService.ALL_PERMISSIONS, true, excludeLLL);
-
- debugPermissions(storeName + ":/base");
- debugPermissions(storeName + "-layer-base:/layer-to-base");
-
- // acl = avmACLDAO.getAccessControlList(nodeRef);
- // nodes = aclDaoComponent.getAvmNodesByACL(acl.getId());
- // for (Long id : nodes)
- // {
- // // need to fix up inheritance as is has changed
- // AVMNodeDescriptor layerDesc = new AVMNodeDescriptor(null, null, 0, null, null, null, 0, 0, 0, id, null,
- // 0, null, 0, false, 0, false, 0, 0);
- // List> paths = avmService.getHeadPaths(layerDesc);
- // for(Pair path : paths)
- // {
- // NodeRef testRef = AVMNodeConverter.ToNodeRef(-1, path.getSecond());
- // System.out.println("--> "+id +" "+path.getSecond()+ " "+path.getFirst()+ "
- // "+avmACLDAO.getAccessControlList(testRef));
- // }
- // }
- //
- desc = avmService.lookup(-1, storeName + ":/base");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "base", PermissionService.ALL_PERMISSIONS, true);
-
- debugPermissions(storeName + ":/base");
- debugPermissions(storeName + "-layer-base:/layer-to-base");
- checkHeadPermissionForPath(storeName + ":/base", "base", PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-base:/layer-to-base", "base", PermissionService.ALL_PERMISSIONS, true, excludeL);
- checkHeadPermissionNotSetForPath(storeName + "-layer-a:/layer-to-d-a", "base", PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-b:/layer-to-d-b", "base", PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-c:/layer-to-d-c", "base", PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-d:/layer-to-d-d", "base", PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-layer-base:/layer-to-layer-to-base", "base", PermissionService.ALL_PERMISSIONS, true, excludeLL);
- checkHeadPermissionNotSetForPath(storeName + "-layer-layer-layer-base:/layer-to-layer-to-layer-to-base", "base", PermissionService.ALL_PERMISSIONS, true, excludeLLL);
-
- }
- finally
- {
- removeStore(storeName);
- removeStore(storeName + "-layer-base");
- removeStore(storeName + "-layer-a");
- removeStore(storeName + "-layer-b");
- removeStore(storeName + "-layer-c");
- removeStore(storeName + "-layer-d");
- removeStore(storeName + "-layer-layer-base");
- removeStore(storeName + "-layer-layer-layer-base");
- }
- }
-
- public void testComplexStore_AddPermissionsToBottom() throws IOException
- {
- runAs(AuthenticationUtil.getAdminUserName());
- String storeName = "PermissionsTest-" + getName() + "-" + (new Date().getTime());
- try
- {
- buildBaseStructure(storeName);
-
- checkHeadPermissionNotSetForPath(storeName + ":/base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-base:/layer-to-base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-a:/layer-to-d-a", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-b:/layer-to-d-b", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-c:/layer-to-d-c", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-d:/layer-to-d-d", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-layer-base:/layer-to-layer-to-base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true,
- null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-layer-layer-base:/layer-to-layer-to-layer-to-base", PermissionService.ALL_AUTHORITIES,
- PermissionService.ALL_PERMISSIONS, true, null);
-
- AVMNodeDescriptor desc = avmService.lookup(-1, storeName + ":/base");
- NodeRef nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true);
-
- checkHeadPermissionForPath(storeName + ":/base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-base:/layer-to-base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-a:/layer-to-d-a", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-b:/layer-to-d-b", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-c:/layer-to-d-c", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-d:/layer-to-d-d", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-layer-base:/layer-to-layer-to-base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-layer-layer-base:/layer-to-layer-to-layer-to-base", PermissionService.ALL_AUTHORITIES,
- PermissionService.ALL_PERMISSIONS, true, null);
-
- permissionService.setPermission(nodeRef, "squid", PermissionService.ALL_PERMISSIONS, true);
-
- checkHeadPermissionForPath(storeName + ":/base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-base:/layer-to-base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-a:/layer-to-d-a", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-b:/layer-to-d-b", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-c:/layer-to-d-c", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-d:/layer-to-d-d", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-layer-base:/layer-to-layer-to-base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-layer-layer-base:/layer-to-layer-to-layer-to-base", PermissionService.ALL_AUTHORITIES,
- PermissionService.ALL_PERMISSIONS, true, null);
-
- checkHeadPermissionForPath(storeName + ":/base", "squid", PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-base:/layer-to-base", "squid", PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-a:/layer-to-d-a", "squid", PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-b:/layer-to-d-b", "squid", PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-c:/layer-to-d-c", "squid", PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-d:/layer-to-d-d", "squid", PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-layer-base:/layer-to-layer-to-base", "squid", PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-layer-layer-base:/layer-to-layer-to-layer-to-base", "squid", PermissionService.ALL_PERMISSIONS, true, null);
-
- permissionService.deletePermission(nodeRef, PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS);
-
- checkHeadPermissionNotSetForPath(storeName + ":/base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-base:/layer-to-base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-a:/layer-to-d-a", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-b:/layer-to-d-b", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-c:/layer-to-d-c", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-d:/layer-to-d-d", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-layer-base:/layer-to-layer-to-base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true,
- null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-layer-layer-base:/layer-to-layer-to-layer-to-base", PermissionService.ALL_AUTHORITIES,
- PermissionService.ALL_PERMISSIONS, true, null);
-
- permissionService.setPermission(nodeRef, "me", PermissionService.ALL_PERMISSIONS, true);
-
- checkHeadPermissionNotSetForPath(storeName + ":/base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-base:/layer-to-base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-a:/layer-to-d-a", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-b:/layer-to-d-b", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-c:/layer-to-d-c", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-d:/layer-to-d-d", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-layer-base:/layer-to-layer-to-base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true,
- null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-layer-layer-base:/layer-to-layer-to-layer-to-base", PermissionService.ALL_AUTHORITIES,
- PermissionService.ALL_PERMISSIONS, true, null);
-
- checkHeadPermissionForPath(storeName + ":/base", "me", PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-base:/layer-to-base", "me", PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-a:/layer-to-d-a", "me", PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-b:/layer-to-d-b", "me", PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-c:/layer-to-d-c", "me", PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-d:/layer-to-d-d", "me", PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-layer-base:/layer-to-layer-to-base", "me", PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-layer-layer-base:/layer-to-layer-to-layer-to-base", "me", PermissionService.ALL_PERMISSIONS, true, null);
-
- desc = avmService.lookup(-1, storeName + ":/base/d-a");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "lemon", PermissionService.READ, true);
-
- checkHeadPermissionNotSetForPath(storeName + ":/base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-base:/layer-to-base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-a:/layer-to-d-a", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-b:/layer-to-d-b", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-c:/layer-to-d-c", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-d:/layer-to-d-d", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-layer-base:/layer-to-layer-to-base", PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true,
- null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-layer-layer-base:/layer-to-layer-to-layer-to-base", PermissionService.ALL_AUTHORITIES,
- PermissionService.ALL_PERMISSIONS, true, null);
-
- checkHeadPermissionForPath(storeName + ":/base", "me", PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-base:/layer-to-base", "me", PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-a:/layer-to-d-a", "me", PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-b:/layer-to-d-b", "me", PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-c:/layer-to-d-c", "me", PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-d:/layer-to-d-d", "me", PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-layer-base:/layer-to-layer-to-base", "me", PermissionService.ALL_PERMISSIONS, true, null);
- checkHeadPermissionForPath(storeName + "-layer-layer-layer-base:/layer-to-layer-to-layer-to-base", "me", PermissionService.ALL_PERMISSIONS, true, null);
-
- checkHeadPermissionForPath(storeName + ":/base/d-a", "lemon", PermissionService.READ, true, null);
- checkHeadPermissionNotSetForPath(storeName + ":/base/d-b", "lemon", PermissionService.READ, true, null);
- checkHeadPermissionNotSetForPath(storeName + ":/base/d-c", "lemon", PermissionService.READ, true, null);
- checkHeadPermissionForPath(storeName + ":/base/d-d/layer-d-a", "lemon", PermissionService.READ, true, null);
- checkHeadPermissionNotSetForPath(storeName + ":/base/d-d/layer-d-b", "lemon", PermissionService.READ, true, null);
- checkHeadPermissionNotSetForPath(storeName + ":/base/d-d/layer-d-c", "lemon", PermissionService.READ, true, null);
- checkHeadPermissionForPath(storeName + "-layer-base:/layer-to-base/d-a", "lemon", PermissionService.READ, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-base:/layer-to-base/d-b", "lemon", PermissionService.READ, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-base:/layer-to-base/d-c", "lemon", PermissionService.READ, true, null);
- checkHeadPermissionForPath(storeName + "-layer-base:/layer-to-base/d-d/layer-d-a", "lemon", PermissionService.READ, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-base:/layer-to-base/d-d/layer-d-b", "lemon", PermissionService.READ, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-base:/layer-to-base/d-d/layer-d-c", "lemon", PermissionService.READ, true, null);
-
- checkHeadPermissionForPath(storeName + "-layer-a:/layer-to-d-a", "lemon", PermissionService.READ, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-b:/layer-to-d-b", "lemon", PermissionService.READ, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-c:/layer-to-d-c", "lemon", PermissionService.READ, true, null);
- checkHeadPermissionForPath(storeName + "-layer-d:/layer-to-d-d/layer-d-a", "lemon", PermissionService.READ, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-d:/layer-to-d-d/layer-d-b", "lemon", PermissionService.READ, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-d:/layer-to-d-d/layer-d-c", "lemon", PermissionService.READ, true, null);
-
- checkHeadPermissionForPath(storeName + "-layer-layer-base:/layer-to-layer-to-base/d-a", "lemon", PermissionService.READ, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-layer-base:/layer-to-layer-to-base/d-b", "lemon", PermissionService.READ, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-layer-base:/layer-to-layer-to-base/d-c", "lemon", PermissionService.READ, true, null);
- checkHeadPermissionForPath(storeName + "-layer-layer-base:/layer-to-layer-to-base/d-d/layer-d-a", "lemon", PermissionService.READ, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-layer-base:/layer-to-layer-to-base/d-d/layer-d-b", "lemon", PermissionService.READ, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-layer-base:/layer-to-layer-to-base/d-d/layer-d-c", "lemon", PermissionService.READ, true, null);
-
- checkHeadPermissionForPath(storeName + "-layer-layer-layer-base:/layer-to-layer-to-layer-to-base/d-a", "lemon", PermissionService.READ, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-layer-layer-base:/layer-to-layer-to-layer-to-base/d-b", "lemon", PermissionService.READ, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-layer-layer-base:/layer-to-layer-to-layer-to-base/d-c", "lemon", PermissionService.READ, true, null);
- checkHeadPermissionForPath(storeName + "-layer-layer-layer-base:/layer-to-layer-to-layer-to-base/d-d/layer-d-a", "lemon", PermissionService.READ, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-layer-layer-base:/layer-to-layer-to-layer-to-base/d-d/layer-d-b", "lemon", PermissionService.READ, true, null);
- checkHeadPermissionNotSetForPath(storeName + "-layer-layer-layer-base:/layer-to-layer-to-layer-to-base/d-d/layer-d-c", "lemon", PermissionService.READ, true, null);
- }
- finally
- {
- removeStore(storeName);
- removeStore(storeName + "-layer-base");
- removeStore(storeName + "-layer-a");
- removeStore(storeName + "-layer-b");
- removeStore(storeName + "-layer-c");
- removeStore(storeName + "-layer-d");
- removeStore(storeName + "-layer-layer-base");
- removeStore(storeName + "-layer-layer-layer-base");
- }
-
- }
-
- /*
- * create directories & file in main
- * set file permission in layer
- * update back to main
- * flatten
- */
- public void testSimpleFilePermissionDiff() throws Throwable
- {
- runAs(AuthenticationUtil.getAdminUserName());
-
- String prefix = "PermissionsTest-" + getName() + "-" + (new Date().getTime());
- String baseStore = prefix+"-main";
- String layeredStore = prefix+"-layer";
-
- try
- {
- System.out.println("create store: " + baseStore);
- avmService.createStore(baseStore);
-
- // create directories and file in main
- System.out.println("create D: " + baseStore + ":/base");
- avmService.createDirectory(baseStore + ":/", "base");
- System.out.println("create D: " + baseStore + ":/base/d-a");
- avmService.createDirectory(baseStore + ":/base", "d-a");
- System.out.println("create F: " + baseStore + ":/base/d-a/f-aa");
- avmService.createFile(baseStore + ":/base/d-a", "f-aa").close();
-
- AVMNodeDescriptor baseNodeDesc = avmService.lookup(-1, baseStore + ":/base/d-a/f-aa");
- checkHeadPermissionNotSet(baseNodeDesc, "andy", PermissionService.DELETE, true);
-
- System.out.println("create store: " + layeredStore);
- avmService.createStore(layeredStore);
-
- System.out.println("create LD: " + layeredStore + ":/layer-to-base -> " + baseStore + ":/base");
- avmService.createLayeredDirectory(baseStore + ":/base", layeredStore + ":/", "layer-to-base");
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- List diffs = avmSyncService.compare(-1, layeredStore + ":/layer-to-base", -1, baseStore + ":/base", null);
- assertEquals(0, diffs.size());
-
- AVMNodeDescriptor layeredNodeDesc = avmService.lookup(-1, layeredStore + ":/layer-to-base/d-a/f-aa");
- NodeRef layeredNodeRef = AVMNodeConverter.ToNodeRef(-1, layeredNodeDesc.getPath());
-
- // set DELETE permission on file in layer
- System.out.println("set P (DELETE): " + layeredStore + ":/layer-to-base/d-a/f-aa");
- checkHeadPermissionNotSet(layeredNodeDesc, "andy", PermissionService.DELETE, true);
- permissionService.setPermission(layeredNodeRef, "andy", PermissionService.DELETE, true);
- checkHeadPermission(layeredNodeDesc, "andy", PermissionService.DELETE, true);
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- diffs = avmSyncService.compare(-1, layeredStore + ":/layer-to-base", -1, baseStore + ":/base", null);
- assertEquals("["+layeredStore+":/layer-to-base/d-a/f-aa[-1] > "+baseStore+":/base/d-a/f-aa[-1]]", diffs.toString());
- assertEquals(1, diffs.size());
-
- baseNodeDesc = avmService.lookup(-1, baseStore + ":/base/d-a/f-aa");
- checkHeadPermissionNotSet(baseNodeDesc, "andy", PermissionService.DELETE, true);
-
- // update main from layer
- System.out.println("update: main from layer");
- avmSyncService.update(diffs, null, false, false, false, false, null, null);
-
- baseNodeDesc = avmService.lookup(-1, baseStore + ":/base/d-a/f-aa");
- checkHeadPermission(baseNodeDesc, "andy", PermissionService.DELETE, true);
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- diffs = avmSyncService.compare(-1, layeredStore + ":/layer-to-base", -1, baseStore + ":/base", null);
- assertEquals(0, diffs.size());
-
- // flatten
- System.out.println("flatten: layer to main");
- avmSyncService.flatten(layeredStore + ":/layer-to-base", baseStore + ":/base");
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- diffs = avmSyncService.compare(-1, layeredStore + ":/layer-to-base", -1, baseStore + ":/base", null);
- assertEquals(0, diffs.size());
-
- // check that the DELETE permission is still set in main & layer
- baseNodeDesc = avmService.lookup(-1, baseStore + ":/base/d-a/f-aa");
- checkHeadPermission(baseNodeDesc, "andy", PermissionService.DELETE, true);
-
- layeredNodeDesc = avmService.lookup(-1, layeredStore + ":/layer-to-base/d-a/f-aa");
- checkHeadPermission(layeredNodeDesc, "andy", PermissionService.DELETE, true);
-
- // check that file in layer is the same as the one from main
- assertEquals(baseNodeDesc, layeredNodeDesc);
- }
- catch (Throwable t)
- {
- t.printStackTrace();
- throw t;
- }
- finally
- {
- removeStore(baseStore);
- removeStore(layeredStore);
- }
- }
-
- /*
- * create directory in main
- * set directory permission in main
- */
- public void testSimpleDirectoryPermissionDiff0() throws Throwable
- {
- runAs(AuthenticationUtil.getAdminUserName());
-
- String prefix = "PermissionsTest-" + getName() + "-" + (new Date().getTime());
- String baseStore = prefix+"-main";
- String layeredStore = prefix+"-layer";
-
- try
- {
- System.out.println("create store: " + baseStore);
- avmService.createStore(baseStore);
-
- // create directory in main
- System.out.println("create D: " + baseStore + ":/d-a");
- avmService.createDirectory(baseStore + ":/", "d-a");
-
- AVMNodeDescriptor baseNodeDesc = avmService.lookup(-1, baseStore + ":/d-a");
- checkHeadPermissionNotSet(baseNodeDesc, "andy", PermissionService.DELETE, true);
-
- System.out.println("create store: " + layeredStore);
- avmService.createStore(layeredStore);
-
- System.out.println("create LD: " + layeredStore + ":/layer -> " + baseStore + ":/");
- avmService.createLayeredDirectory(baseStore + ":/", layeredStore + ":/", "layer");
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- List diffs = avmSyncService.compare(-1, layeredStore + ":/layer", -1, baseStore + ":/", null);
- assertEquals(0, diffs.size());
-
- baseNodeDesc = avmService.lookup(-1, baseStore + ":/d-a");
- NodeRef baseNodeRef = AVMNodeConverter.ToNodeRef(-1, baseNodeDesc.getPath());
-
- // set DELETE permission on directory in main
- System.out.println("set P (DELETE): " + baseStore + ":/d-a");
- checkHeadPermissionNotSet(baseNodeDesc, "andy", PermissionService.DELETE, true);
- permissionService.setPermission(baseNodeRef, "andy", PermissionService.DELETE, true);
- checkHeadPermission(baseNodeDesc, "andy", PermissionService.DELETE, true);
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- diffs = avmSyncService.compare(-1, layeredStore + ":/layer", -1, baseStore + ":/", null);
- assertEquals(0, diffs.size());
-
- // update main from layer - NOOP
- System.out.println("update: main from layer");
- avmSyncService.update(diffs, null, false, false, false, false, null, null);
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- diffs = avmSyncService.compare(-1, layeredStore + ":/layer", -1, baseStore + ":/", null);
- assertEquals(0, diffs.size());
-
- // flatten - NOOP
- System.out.println("flatten: layer to main");
- avmSyncService.flatten(layeredStore + ":/layer", baseStore + ":/");
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- diffs = avmSyncService.compare(-1, layeredStore + ":/layer", -1, baseStore + ":/", null);
- assertEquals(0, diffs.size());
-
- // check that the DELETE permission is still set in main (and appears in layer)
- baseNodeDesc = avmService.lookup(-1, baseStore + ":/d-a");
- checkHeadPermission(baseNodeDesc, "andy", PermissionService.DELETE, true);
-
- AVMNodeDescriptor layeredNodeDesc = avmService.lookup(-1, layeredStore + ":/layer/d-a");
- checkHeadPermission(layeredNodeDesc, "andy", PermissionService.DELETE, true);
-
- // check that directory in layer is the same as the one from main
- assertEquals(baseNodeDesc, layeredNodeDesc);
- }
- catch (Throwable t)
- {
- t.printStackTrace();
- throw t;
- }
- finally
- {
- removeStore(baseStore);
- removeStore(layeredStore);
- }
- }
-
- /*
- * create directory in main
- * set directory permission in layer
- * update back to main
- * flatten
- */
- public void testSimpleDirectoryPermissionDiff1() throws Throwable
- {
- runAs(AuthenticationUtil.getAdminUserName());
-
- String prefix = "PermissionsTest-" + getName() + "-" + (new Date().getTime());
- String baseStore = prefix+"-main";
- String layeredStore = prefix+"-layer";
-
- try
- {
- System.out.println("create store: " + baseStore);
- avmService.createStore(baseStore);
-
- // create directory in main
- System.out.println("create D: " + baseStore + ":/d-a");
- avmService.createDirectory(baseStore + ":/", "d-a");
-
- AVMNodeDescriptor baseNodeDesc = avmService.lookup(-1, baseStore + ":/d-a");
- checkHeadPermissionNotSet(baseNodeDesc, "andy", PermissionService.DELETE, true);
-
- System.out.println("create store: " + layeredStore);
- avmService.createStore(layeredStore);
-
- System.out.println("create LD: " + layeredStore + ":/layer -> " + baseStore + ":/");
- avmService.createLayeredDirectory(baseStore + ":/", layeredStore + ":/", "layer");
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- List diffs = avmSyncService.compare(-1, layeredStore + ":/layer", -1, baseStore + ":/", null);
- assertEquals(0, diffs.size());
-
- AVMNodeDescriptor layeredNodeDesc = avmService.lookup(-1, layeredStore + ":/layer/d-a");
- NodeRef layeredNodeRef = AVMNodeConverter.ToNodeRef(-1, layeredNodeDesc.getPath());
-
- // set DELETE permission on directory in layer
- System.out.println("set P (DELETE): " + layeredStore + ":/layer/d-a");
- checkHeadPermissionNotSet(layeredNodeDesc, "andy", PermissionService.DELETE, true);
- permissionService.setPermission(layeredNodeRef, "andy", PermissionService.DELETE, true);
- checkHeadPermission(layeredNodeDesc, "andy", PermissionService.DELETE, true);
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- diffs = avmSyncService.compare(-1, layeredStore + ":/layer", -1, baseStore + ":/", null);
- assertEquals("["+layeredStore+":/layer/d-a[-1] > "+baseStore+":/d-a[-1]]", diffs.toString());
- assertEquals(1, diffs.size());
-
- baseNodeDesc = avmService.lookup(-1, baseStore + ":/d-a");
- checkHeadPermissionNotSet(baseNodeDesc, "andy", PermissionService.DELETE, true);
-
- // update main from layer
- System.out.println("update: main from layer");
- avmSyncService.update(diffs, null, false, false, false, false, null, null);
-
- baseNodeDesc = avmService.lookup(-1, baseStore + ":/d-a");
- checkHeadPermission(baseNodeDesc, "andy", PermissionService.DELETE, true);
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- diffs = avmSyncService.compare(-1, layeredStore + ":/layer", -1, baseStore + ":/", null);
- assertEquals(0, diffs.size());
-
- // flatten
- System.out.println("flatten: layer to main");
- avmSyncService.flatten(layeredStore + ":/layer", baseStore + ":/");
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- diffs = avmSyncService.compare(-1, layeredStore + ":/layer", -1, baseStore + ":/", null);
- assertEquals(0, diffs.size());
-
- // check that the DELETE permission is still set in main (and appears in layer)
- baseNodeDesc = avmService.lookup(-1, baseStore + ":/d-a");
- checkHeadPermission(baseNodeDesc, "andy", PermissionService.DELETE, true);
-
- layeredNodeDesc = avmService.lookup(-1, layeredStore + ":/layer/d-a");
- checkHeadPermission(layeredNodeDesc, "andy", PermissionService.DELETE, true);
-
- // check that directory in layer is the same as the one from main
- assertEquals(baseNodeDesc, layeredNodeDesc);
- }
- catch (Throwable t)
- {
- t.printStackTrace();
- throw t;
- }
- finally
- {
- removeStore(baseStore);
- removeStore(layeredStore);
- }
- }
-
- /*
- * create directory in layer
- * set directory permission in layer
- * update back to main
- * flatten
- */
- public void testSimpleDirectoryPermissionDiff2() throws Throwable
- {
- runAs(AuthenticationUtil.getAdminUserName());
-
- String prefix = "PermissionsTest-" + getName() + "-" + (new Date().getTime());
- String baseStore = prefix+"-main";
- String layeredStore = prefix+"-layer";
-
- try
- {
- System.out.println("create store: " + baseStore);
- avmService.createStore(baseStore);
-
- System.out.println("create store: " + layeredStore);
- avmService.createStore(layeredStore);
-
- System.out.println("create LD: " + layeredStore + ":/layer -> " + baseStore + ":/");
- avmService.createLayeredDirectory(baseStore + ":/", layeredStore + ":/", "layer");
-
- // create directory in layer
- System.out.println("create D: " + layeredStore + ":/layer/d-a");
- avmService.createDirectory(layeredStore + ":/layer", "d-a");
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- AVMNodeDescriptor layeredNodeDesc = avmService.lookup(-1, layeredStore + ":/layer/d-a");
- AVMNodeDescriptor baseNodeDesc = avmService.lookup(-1, baseStore + ":/d-a");
- NodeRef layeredNodeRef = AVMNodeConverter.ToNodeRef(-1, layeredNodeDesc.getPath());
-
- // set DELETE permission on directory in layer
- System.out.println("set P (DELETE): " + layeredStore + ":/layer/d-a");
- checkHeadPermissionNotSet(layeredNodeDesc, "andy", PermissionService.DELETE, true);
- permissionService.setPermission(layeredNodeRef, "andy", PermissionService.DELETE, true);
- checkHeadPermission(layeredNodeDesc, "andy", PermissionService.DELETE, true);
-
- List diffs = avmSyncService.compare(-1, layeredStore + ":/layer", -1, baseStore + ":/", null);
- assertEquals("["+layeredStore+":/layer/d-a[-1] > "+baseStore+":/d-a[-1]]", diffs.toString());
- assertEquals(1, diffs.size());
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- // update main from layer
- System.out.println("update: main from layer");
- avmSyncService.update(diffs, null, false, false, false, false, null, null);
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- diffs = avmSyncService.compare(-1, layeredStore + ":/layer", -1, baseStore + ":/", null);
- assertEquals(0, diffs.size());
-
- // check that the DELETE permission is now set in main
- baseNodeDesc = avmService.lookup(-1, baseStore + ":/d-a");
- checkHeadPermission(baseNodeDesc, "andy", PermissionService.DELETE, true);
-
- layeredNodeDesc = avmService.lookup(-1, layeredStore + ":/layer/d-a");
- layeredNodeRef = AVMNodeConverter.ToNodeRef(-1, layeredNodeDesc.getPath());
-
- // flatten
- System.out.println("flatten: layer to main");
- avmSyncService.flatten(layeredStore + ":/layer", baseStore + ":/");
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- diffs = avmSyncService.compare(-1, layeredStore + ":/layer", -1, baseStore + ":/", null);
- assertEquals(0, diffs.size());
-
- // check that the DELETE permission is still set in main (and appears in layer)
- baseNodeDesc = avmService.lookup(-1, baseStore + ":/d-a");
- checkHeadPermission(baseNodeDesc, "andy", PermissionService.DELETE, true);
-
- layeredNodeDesc = avmService.lookup(-1, layeredStore + ":/layer/d-a");
- checkHeadPermission(layeredNodeDesc, "andy", PermissionService.DELETE, true);
-
- // check that directory in layer is the same as the one from main
- assertEquals(baseNodeDesc, layeredNodeDesc);
- }
- catch (Throwable t)
- {
- t.printStackTrace();
- throw t;
- }
- finally
- {
- removeStore(baseStore);
- removeStore(layeredStore);
- }
- }
-
- /*
- * create directory in layer
- * set directory permission in layer
- * update back to main
- * flatten
- * set another directory permission in layer
- * update back to main
- * flatten
- */
- public void testSimpleDirectoryPermissionDiff3() throws Throwable
- {
- runAs(AuthenticationUtil.getAdminUserName());
-
- String prefix = "PermissionsTest-" + getName() + "-" + (new Date().getTime());
- String baseStore = prefix+"-main";
- String layeredStore = prefix+"-layer";
-
- try
- {
- System.out.println("create store: " + baseStore);
- avmService.createStore(baseStore);
-
- System.out.println("create store: " + layeredStore);
- avmService.createStore(layeredStore);
-
- System.out.println("create LD: " + layeredStore + ":/layer -> " + baseStore + ":/");
- avmService.createLayeredDirectory(baseStore + ":/", layeredStore + ":/", "layer");
-
- // create directory in layer
- System.out.println("create D: " + layeredStore + ":/layer/d-a");
- avmService.createDirectory(layeredStore + ":/layer", "d-a");
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- AVMNodeDescriptor layeredNodeDesc = avmService.lookup(-1, layeredStore + ":/layer/d-a");
- AVMNodeDescriptor baseNodeDesc = avmService.lookup(-1, baseStore + ":/d-a");
- NodeRef layeredNodeRef = AVMNodeConverter.ToNodeRef(-1, layeredNodeDesc.getPath());
-
- // set DELETE permission on directory in layer
- System.out.println("set P (DELETE): " + layeredStore + ":/layer/d-a");
- checkHeadPermissionNotSet(layeredNodeDesc, "andy", PermissionService.DELETE, true);
- permissionService.setPermission(layeredNodeRef, "andy", PermissionService.DELETE, true);
- checkHeadPermission(layeredNodeDesc, "andy", PermissionService.DELETE, true);
-
- List diffs = avmSyncService.compare(-1, layeredStore + ":/layer", -1, baseStore + ":/", null);
- assertEquals("["+layeredStore+":/layer/d-a[-1] > "+baseStore+":/d-a[-1]]", diffs.toString());
- assertEquals(1, diffs.size());
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- // update main from layer
- System.out.println("update: main from layer");
- avmSyncService.update(diffs, null, false, false, false, false, null, null);
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- diffs = avmSyncService.compare(-1, layeredStore + ":/layer", -1, baseStore + ":/", null);
- assertEquals(0, diffs.size());
-
- // check that the DELETE permission is now set in main
- baseNodeDesc = avmService.lookup(-1, baseStore + ":/d-a");
- checkHeadPermission(baseNodeDesc, "andy", PermissionService.DELETE, true);
-
- // flatten
- System.out.println("flatten: layer to main");
- avmSyncService.flatten(layeredStore + ":/layer", baseStore + ":/");
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- diffs = avmSyncService.compare(-1, layeredStore + ":/layer", -1, baseStore + ":/", null);
- assertEquals(0, diffs.size());
-
- // check that the DELETE permission is still set in main (and appears in layer)
- baseNodeDesc = avmService.lookup(-1, baseStore + ":/d-a");
- checkHeadPermission(baseNodeDesc, "andy", PermissionService.DELETE, true);
-
- layeredNodeDesc = avmService.lookup(-1, layeredStore + ":/layer/d-a");
- checkHeadPermission(layeredNodeDesc, "andy", PermissionService.DELETE, true);
-
- // check that directory in layer is the same as the one from main
- layeredNodeDesc = avmService.lookup(-1, layeredStore + ":/layer/d-a");
- assertEquals(baseNodeDesc, layeredNodeDesc);
-
- // repeat with another directory permission
-
- // set WRITE directory permission in layer
- System.out.println("set P (WRITE): " + layeredStore + ":/layer/d-a");
- checkHeadPermissionNotSet(layeredNodeDesc, "andy", PermissionService.WRITE, true);
- permissionService.setPermission(layeredNodeRef, "andy", PermissionService.WRITE, true);
- checkHeadPermission(layeredNodeDesc, "andy", PermissionService.WRITE, true);
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- diffs = avmSyncService.compare(-1, layeredStore + ":/layer", -1, baseStore + ":/", null);
- assertEquals("["+layeredStore+":/layer/d-a[-1] > "+baseStore+":/d-a[-1]]", diffs.toString());
- assertEquals(1, diffs.size());
-
- // update main from layer
- System.out.println("update: main from layer");
- avmSyncService.update(diffs, null, false, false, false, false, null, null);
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- // check that the WRITE permission is now set in main
- baseNodeDesc = avmService.lookup(-1, baseStore + ":/d-a");
- checkHeadPermission(baseNodeDesc, "andy", PermissionService.WRITE, true);
-
- // flatten
- System.out.println("flatten: layer to main");
- avmSyncService.flatten(layeredStore + ":/layer", baseStore + ":/");
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- diffs = avmSyncService.compare(-1, layeredStore + ":/layer", -1, baseStore + ":/", null);
- assertEquals(0, diffs.size());
-
- // check that the WRITE and DELETE permissions are still set in main (and appears in layer)
- baseNodeDesc = avmService.lookup(-1, baseStore + ":/d-a");
- checkHeadPermission(baseNodeDesc, "andy", PermissionService.DELETE, true);
- checkHeadPermission(baseNodeDesc, "andy", PermissionService.WRITE, true);
-
- layeredNodeDesc = avmService.lookup(-1, layeredStore + ":/layer/d-a");
- checkHeadPermission(layeredNodeDesc, "andy", PermissionService.DELETE, true);
- checkHeadPermission(layeredNodeDesc, "andy", PermissionService.WRITE, true);
-
- // check that directory in layer is the same as the one from main
- assertEquals(baseNodeDesc, layeredNodeDesc);
- }
- catch (Throwable t)
- {
- t.printStackTrace();
- throw t;
- }
- finally
- {
- removeStore(baseStore);
- removeStore(layeredStore);
- }
- }
-
- /*
- * create directory in layer
- * set directory permission in layer
- * snapshot layer, update back to main, snapshot main
- * create file in layer
- * snapshot layer, update back to main, snapshot main
- * flatten
- * set another directory permission in layer
- * snapshot layer, update back to main, snapshot main
- * flatten
- */
- public void testSimpleDirectoryPermissionDiff4() throws Throwable
- {
- runAs(AuthenticationUtil.getAdminUserName());
-
- String prefix = "PermissionsTest-" + getName() + "-" + (new Date().getTime());
- String baseStore = prefix+"-main";
- String layeredStore = prefix+"-layer";
-
- try
- {
- System.out.println("create store: " + baseStore);
- avmService.createStore(baseStore);
-
- System.out.println("create store: " + layeredStore);
- avmService.createStore(layeredStore);
-
- System.out.println("create LD: " + layeredStore + ":/layer -> " + baseStore + ":/");
- avmService.createLayeredDirectory(baseStore + ":/", layeredStore + ":/", "layer");
-
- // create directory in layer
- System.out.println("create D: " + layeredStore + ":/layer/d-a");
- avmService.createDirectory(layeredStore + ":/layer", "d-a");
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- AVMNodeDescriptor layeredNodeDesc = avmService.lookup(-1, layeredStore + ":/layer/d-a");
- AVMNodeDescriptor baseNodeDesc = avmService.lookup(-1, baseStore + ":/d-a");
- NodeRef layeredNodeRef = AVMNodeConverter.ToNodeRef(-1, layeredNodeDesc.getPath());
-
- // set DELETE permission on directory in layer
- System.out.println("set P (DELETE): " + layeredStore + ":/layer/d-a");
- checkHeadPermissionNotSet(layeredNodeDesc, "andy", PermissionService.DELETE, true);
- permissionService.setPermission(layeredNodeRef, "andy", PermissionService.DELETE, true);
- checkHeadPermission(layeredNodeDesc, "andy", PermissionService.DELETE, true);
-
- List diffs = avmSyncService.compare(-1, layeredStore + ":/layer", -1, baseStore + ":/", null);
- assertEquals("["+layeredStore+":/layer/d-a[-1] > "+baseStore+":/d-a[-1]]", diffs.toString());
- assertEquals(1, diffs.size());
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- // snapshot layer, update main from layer, snapshot main
- System.out.println("snapshot: layer");
- avmService.createSnapshot(layeredStore, null, null);
- System.out.println("update: main from layer");
- avmSyncService.update(diffs, null, false, false, false, false, null, null);
- System.out.println("snapshot: main");
- avmService.createSnapshot(baseStore, null, null);
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- diffs = avmSyncService.compare(-1, layeredStore + ":/layer", -1, baseStore + ":/", null);
- assertEquals(0, diffs.size());
-
- // check that the DELETE permission is now set in main
- baseNodeDesc = avmService.lookup(-1, baseStore + ":/d-a");
- checkHeadPermission(baseNodeDesc, "andy", PermissionService.DELETE, true);
-
- // create file in layer
- System.out.println("create F: " + layeredStore + ":/layer/d-a/f-aa");
- avmService.createFile(layeredStore + ":/layer/d-a", "f-aa").close();
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- diffs = avmSyncService.compare(-1, layeredStore + ":/layer", -1, baseStore + ":/", null);
- assertEquals("["+layeredStore+":/layer/d-a/f-aa[-1] > "+baseStore+":/d-a/f-aa[-1]]", diffs.toString());
- assertEquals(1, diffs.size());
-
- // snapshot layer, update main from layer, snapshot main
- System.out.println("snapshot: layer");
- avmService.createSnapshot(layeredStore, null, null);
- System.out.println("update: main from layer");
- avmSyncService.update(diffs, null, false, false, false, false, null, null);
- System.out.println("snapshot: main");
- avmService.createSnapshot(baseStore, null, null);
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- // flatten
- System.out.println("flatten: layer to main");
- avmSyncService.flatten(layeredStore + ":/layer", baseStore + ":/");
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- diffs = avmSyncService.compare(-1, layeredStore + ":/layer", -1, baseStore + ":/", null);
- assertEquals(0, diffs.size());
-
- // check that the DELETE permission is still set in main (and appears in layer)
- baseNodeDesc = avmService.lookup(-1, baseStore + ":/d-a");
- checkHeadPermission(baseNodeDesc, "andy", PermissionService.DELETE, true);
-
- layeredNodeDesc = avmService.lookup(-1, layeredStore + ":/layer/d-a");
- checkHeadPermission(layeredNodeDesc, "andy", PermissionService.DELETE, true);
-
- // check that directory in layer is the same as the one from main
- layeredNodeDesc = avmService.lookup(-1, layeredStore + ":/layer/d-a");
- assertEquals(baseNodeDesc, layeredNodeDesc);
-
- // set another directory permission
-
- // set WRITE directory permission in layer
- System.out.println("set P (WRITE): " + layeredStore + ":/layer/d-a");
- checkHeadPermissionNotSet(layeredNodeDesc, "andy", PermissionService.WRITE, true);
- permissionService.setPermission(layeredNodeRef, "andy", PermissionService.WRITE, true);
- checkHeadPermission(layeredNodeDesc, "andy", PermissionService.WRITE, true);
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- diffs = avmSyncService.compare(-1, layeredStore + ":/layer", -1, baseStore + ":/", null);
- assertEquals("["+layeredStore+":/layer/d-a[-1] > "+baseStore+":/d-a[-1]]", diffs.toString());
- assertEquals(1, diffs.size());
-
- // snapshot layer, update main from layer, snapshot main
- System.out.println("snapshot: layer");
- avmService.createSnapshot(layeredStore, null, null);
- System.out.println("update: main from layer");
- avmSyncService.update(diffs, null, false, false, false, false, null, null);
- System.out.println("snapshot: main");
- avmService.createSnapshot(baseStore, null, null);
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- // check that the WRITE permission is now set in main
- baseNodeDesc = avmService.lookup(-1, baseStore + ":/d-a");
- checkHeadPermission(baseNodeDesc, "andy", PermissionService.WRITE, true);
-
- // flatten
- System.out.println("flatten: layer to main");
- avmSyncService.flatten(layeredStore + ":/layer", baseStore + ":/");
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- diffs = avmSyncService.compare(-1, layeredStore + ":/layer", -1, baseStore + ":/", null);
- assertEquals(0, diffs.size());
-
- // check that the WRITE and DELETE permissions are still set in main (and appears in layer)
- baseNodeDesc = avmService.lookup(-1, baseStore + ":/d-a");
- checkHeadPermission(baseNodeDesc, "andy", PermissionService.DELETE, true);
- checkHeadPermission(baseNodeDesc, "andy", PermissionService.WRITE, true);
-
- layeredNodeDesc = avmService.lookup(-1, layeredStore + ":/layer/d-a");
- checkHeadPermission(layeredNodeDesc, "andy", PermissionService.DELETE, true);
- checkHeadPermission(layeredNodeDesc, "andy", PermissionService.WRITE, true);
-
- // check that directory in layer is the same as the one from main
- assertEquals(baseNodeDesc, layeredNodeDesc);
- }
- catch (Throwable t)
- {
- t.printStackTrace();
- throw t;
- }
- finally
- {
- removeStore(baseStore);
- removeStore(layeredStore);
- }
- }
-
- /*
- * create directory in layer
- * set two directory permissions in layer
- * snapshot layer, update back to main, snapshot main
- * flatten
- * remove one of the directory permissions in layer
- * snapshot layer, update back to main, snapshot main
- * flatten
- */
- public void testSimpleDirectoryPermissionDiff5() throws Throwable
- {
- runAs(AuthenticationUtil.getAdminUserName());
-
- String prefix = "PermissionsTest-" + getName() + "-" + (new Date().getTime());
- String baseStore = prefix+"-main";
- String layeredStore = prefix+"-layer";
-
- try
- {
- System.out.println("create store: " + baseStore);
- avmService.createStore(baseStore);
-
- System.out.println("create store: " + layeredStore);
- avmService.createStore(layeredStore);
-
- System.out.println("create LD: " + layeredStore + ":/layer -> " + baseStore + ":/");
- avmService.createLayeredDirectory(baseStore + ":/", layeredStore + ":/", "layer");
-
- // create directory in layer
- System.out.println("create D: " + layeredStore + ":/layer/d-a");
- avmService.createDirectory(layeredStore + ":/layer", "d-a");
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- AVMNodeDescriptor layeredNodeDesc = avmService.lookup(-1, layeredStore + ":/layer/d-a");
- AVMNodeDescriptor baseNodeDesc = avmService.lookup(-1, baseStore + ":/d-a");
- NodeRef layeredNodeRef = AVMNodeConverter.ToNodeRef(-1, layeredNodeDesc.getPath());
-
- // set DELETE permission on directory in layer
- System.out.println("set P (DELETE): " + layeredStore + ":/layer/d-a");
- checkHeadPermissionNotSet(layeredNodeDesc, "andy", PermissionService.DELETE, true);
- permissionService.setPermission(layeredNodeRef, "andy", PermissionService.DELETE, true);
- checkHeadPermission(layeredNodeDesc, "andy", PermissionService.DELETE, true);
-
- // set WRITE permission on directory in layer
- System.out.println("set P (WRITE): " + layeredStore + ":/layer/d-a");
- checkHeadPermissionNotSet(layeredNodeDesc, "andy", PermissionService.WRITE, true);
- permissionService.setPermission(layeredNodeRef, "andy", PermissionService.WRITE, true);
- checkHeadPermission(layeredNodeDesc, "andy", PermissionService.WRITE, true);
-
- List diffs = avmSyncService.compare(-1, layeredStore + ":/layer", -1, baseStore + ":/", null);
- assertEquals("["+layeredStore+":/layer/d-a[-1] > "+baseStore+":/d-a[-1]]", diffs.toString());
- assertEquals(1, diffs.size());
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- // snapshot layer, update main from layer, snapshot main
- System.out.println("snapshot: layer");
- avmService.createSnapshot(layeredStore, null, null);
- System.out.println("update: main from layer");
- avmSyncService.update(diffs, null, false, false, false, false, null, null);
- System.out.println("snapshot: main");
- avmService.createSnapshot(baseStore, null, null);
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- // flatten
- System.out.println("flatten: layer to main");
- avmSyncService.flatten(layeredStore + ":/layer", baseStore + ":/");
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- diffs = avmSyncService.compare(-1, layeredStore + ":/layer", -1, baseStore + ":/", null);
- assertEquals(0, diffs.size());
-
- // check that the WRITE and DELETE permissions are still set in main (and appears in layer)
- baseNodeDesc = avmService.lookup(-1, baseStore + ":/d-a");
- checkHeadPermission(baseNodeDesc, "andy", PermissionService.DELETE, true);
- checkHeadPermission(baseNodeDesc, "andy", PermissionService.WRITE, true);
-
- layeredNodeDesc = avmService.lookup(-1, layeredStore + ":/layer/d-a");
- checkHeadPermission(layeredNodeDesc, "andy", PermissionService.DELETE, true);
- checkHeadPermission(layeredNodeDesc, "andy", PermissionService.WRITE, true);
-
- // check that directory in layer is the same as the one from main
- assertEquals(baseNodeDesc, layeredNodeDesc);
-
- // remove one of the directory permissions
-
- // delete DELETE directory permission in layer
- System.out.println("delete P (DELETE): " + layeredStore + ":/layer/d-a");
- checkHeadPermission(layeredNodeDesc, "andy", PermissionService.DELETE, true);
- permissionService.deletePermission(layeredNodeRef, "andy", PermissionService.DELETE);
- checkHeadPermissionNotSet(layeredNodeDesc, "andy", PermissionService.DELETE, true);
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- diffs = avmSyncService.compare(-1, layeredStore + ":/layer", -1, baseStore + ":/", null);
- assertEquals("["+layeredStore+":/layer/d-a[-1] > "+baseStore+":/d-a[-1]]", diffs.toString());
- assertEquals(1, diffs.size());
-
- // snapshot layer, update main from layer, snapshot main
- System.out.println("snapshot: layer");
- avmService.createSnapshot(layeredStore, null, null);
- System.out.println("update: main from layer");
- avmSyncService.update(diffs, null, false, false, false, false, null, null);
- System.out.println("snapshot: main");
- avmService.createSnapshot(baseStore, null, null);
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- // check that the DELETE permission is no longer set in main
- baseNodeDesc = avmService.lookup(-1, baseStore + ":/d-a");
- checkHeadPermissionNotSet(baseNodeDesc, "andy", PermissionService.DELETE, true);
-
- // flatten
- System.out.println("flatten: layer to main");
- avmSyncService.flatten(layeredStore + ":/layer", baseStore + ":/");
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- diffs = avmSyncService.compare(-1, layeredStore + ":/layer", -1, baseStore + ":/", null);
- assertEquals(0, diffs.size());
-
- // check that the WRITE permission is still set in main (and appears in layer)
- // check that the DELETE permission is not set in main (or layer)
- baseNodeDesc = avmService.lookup(-1, baseStore + ":/d-a");
- checkHeadPermission(baseNodeDesc, "andy", PermissionService.WRITE, true);
- checkHeadPermissionNotSet(baseNodeDesc, "andy", PermissionService.DELETE, true);
-
- layeredNodeDesc = avmService.lookup(-1, layeredStore + ":/layer/d-a");
- checkHeadPermission(layeredNodeDesc, "andy", PermissionService.WRITE, true);
- checkHeadPermissionNotSet(layeredNodeDesc, "andy", PermissionService.DELETE, true);
-
- // check that directory in layer is the same as the one from main
- assertEquals(baseNodeDesc, layeredNodeDesc);
- }
- catch (Throwable t)
- {
- t.printStackTrace();
- throw t;
- }
- finally
- {
- removeStore(baseStore);
- removeStore(layeredStore);
- }
- }
-
- /*
- * create directory in layer
- * set two directory permissions in layer
- * snapshot layer, update back to main, snapshot main
- * flatten
- * remove one of the existing directory permissions in layer
- * set a different directory permission in layer
- * snapshot layer, update back to main, snapshot main
- * flatten
- */
- public void testSimpleDirectoryPermissionDiff6() throws Throwable
- {
- runAs(AuthenticationUtil.getAdminUserName());
-
- String prefix = "PermissionsTest-" + getName() + "-" + (new Date().getTime());
- String baseStore = prefix+"-main";
- String layeredStore = prefix+"-layer";
-
- try
- {
- System.out.println("create store: " + baseStore);
- avmService.createStore(baseStore);
-
- System.out.println("create store: " + layeredStore);
- avmService.createStore(layeredStore);
-
- System.out.println("create LD: " + layeredStore + ":/layer -> " + baseStore + ":/");
- avmService.createLayeredDirectory(baseStore + ":/", layeredStore + ":/", "layer");
-
- // create directory in layer
- System.out.println("create D: " + layeredStore + ":/layer/d-a");
- avmService.createDirectory(layeredStore + ":/layer", "d-a");
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- AVMNodeDescriptor layeredNodeDesc = avmService.lookup(-1, layeredStore + ":/layer/d-a");
- AVMNodeDescriptor baseNodeDesc = avmService.lookup(-1, baseStore + ":/d-a");
- NodeRef layeredNodeRef = AVMNodeConverter.ToNodeRef(-1, layeredNodeDesc.getPath());
-
- // set DELETE permission on directory in layer
- System.out.println("set P (DELETE): " + layeredStore + ":/layer/d-a");
- checkHeadPermissionNotSet(layeredNodeDesc, "andy", PermissionService.DELETE, true);
- permissionService.setPermission(layeredNodeRef, "andy", PermissionService.DELETE, true);
- checkHeadPermission(layeredNodeDesc, "andy", PermissionService.DELETE, true);
-
- // set WRITE permission on directory in layer
- System.out.println("set P (WRITE): " + layeredStore + ":/layer/d-a");
- checkHeadPermissionNotSet(layeredNodeDesc, "andy", PermissionService.WRITE, true);
- permissionService.setPermission(layeredNodeRef, "andy", PermissionService.WRITE, true);
- checkHeadPermission(layeredNodeDesc, "andy", PermissionService.WRITE, true);
-
- List diffs = avmSyncService.compare(-1, layeredStore + ":/layer", -1, baseStore + ":/", null);
- assertEquals("["+layeredStore+":/layer/d-a[-1] > "+baseStore+":/d-a[-1]]", diffs.toString());
- assertEquals(1, diffs.size());
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- // snapshot layer, update main from layer, snapshot main
- System.out.println("snapshot: layer");
- avmService.createSnapshot(layeredStore, null, null);
- System.out.println("update: main from layer");
- avmSyncService.update(diffs, null, false, false, false, false, null, null);
- System.out.println("snapshot: main");
- avmService.createSnapshot(baseStore, null, null);
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- // flatten
- System.out.println("flatten: layer to main");
- avmSyncService.flatten(layeredStore + ":/layer", baseStore + ":/");
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- diffs = avmSyncService.compare(-1, layeredStore + ":/layer", -1, baseStore + ":/", null);
- assertEquals(0, diffs.size());
-
- // check that the WRITE and DELETE permissions are still set in main (and appears in layer)
- baseNodeDesc = avmService.lookup(-1, baseStore + ":/d-a");
- checkHeadPermission(baseNodeDesc, "andy", PermissionService.DELETE, true);
- checkHeadPermission(baseNodeDesc, "andy", PermissionService.WRITE, true);
-
- layeredNodeDesc = avmService.lookup(-1, layeredStore + ":/layer/d-a");
- checkHeadPermission(layeredNodeDesc, "andy", PermissionService.DELETE, true);
- checkHeadPermission(layeredNodeDesc, "andy", PermissionService.WRITE, true);
-
- // check that directory in layer is the same as the one from main
- assertEquals(baseNodeDesc, layeredNodeDesc);
-
- // remove one of the directory permissions
-
- // delete DELETE directory permission in layer
- System.out.println("delete P (DELETE): " + layeredStore + ":/layer/d-a");
- checkHeadPermission(layeredNodeDesc, "andy", PermissionService.DELETE, true);
- permissionService.deletePermission(layeredNodeRef, "andy", PermissionService.DELETE);
- checkHeadPermissionNotSet(layeredNodeDesc, "andy", PermissionService.DELETE, true);
-
- // set READ permission on directory in layer
- System.out.println("set P (READ): " + layeredStore + ":/layer/d-a");
- checkHeadPermissionNotSet(layeredNodeDesc, "andy", PermissionService.READ, true);
- permissionService.setPermission(layeredNodeRef, "andy", PermissionService.READ, true);
- checkHeadPermission(layeredNodeDesc, "andy", PermissionService.READ, true);
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- diffs = avmSyncService.compare(-1, layeredStore + ":/layer", -1, baseStore + ":/", null);
- assertEquals("["+layeredStore+":/layer/d-a[-1] > "+baseStore+":/d-a[-1]]", diffs.toString());
- assertEquals(1, diffs.size());
-
- // snapshot layer, update main from layer, snapshot main
- System.out.println("snapshot: layer");
- avmService.createSnapshot(layeredStore, null, null);
- System.out.println("update: main from layer");
- avmSyncService.update(diffs, null, false, false, false, false, null, null);
- System.out.println("snapshot: main");
- avmService.createSnapshot(baseStore, null, null);
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- // check that the DELETE permission is no longer set in main
- // check that the READ permission is now set in main
- baseNodeDesc = avmService.lookup(-1, baseStore + ":/d-a");
- checkHeadPermissionNotSet(baseNodeDesc, "andy", PermissionService.DELETE, true);
- checkHeadPermission(baseNodeDesc, "andy", PermissionService.READ, true);
-
- // flatten
- System.out.println("flatten: layer to main");
- avmSyncService.flatten(layeredStore + ":/layer", baseStore + ":/");
-
- recursiveList(baseStore);
- recursiveList(layeredStore);
-
- diffs = avmSyncService.compare(-1, layeredStore + ":/layer", -1, baseStore + ":/", null);
- assertEquals(0, diffs.size());
-
- // check that the WRITE & READ permissions are set in main (and appear in layer)
- // check that the DELETE permission is not set in main (or layer)
- baseNodeDesc = avmService.lookup(-1, baseStore + ":/d-a");
- checkHeadPermission(baseNodeDesc, "andy", PermissionService.WRITE, true);
- checkHeadPermission(baseNodeDesc, "andy", PermissionService.READ, true);
- checkHeadPermissionNotSet(baseNodeDesc, "andy", PermissionService.DELETE, true);
-
- layeredNodeDesc = avmService.lookup(-1, layeredStore + ":/layer/d-a");
- checkHeadPermission(layeredNodeDesc, "andy", PermissionService.WRITE, true);
- checkHeadPermission(layeredNodeDesc, "andy", PermissionService.WRITE, true);
- checkHeadPermissionNotSet(layeredNodeDesc, "andy", PermissionService.DELETE, true);
-
- // check that directory in layer is the same as the one from main
- assertEquals(baseNodeDesc, layeredNodeDesc);
- }
- catch (Throwable t)
- {
- t.printStackTrace();
- throw t;
- }
- finally
- {
- removeStore(baseStore);
- removeStore(layeredStore);
- }
- }
-
- private void checkHeadPermissionForPath(String path, String authority, String permission, boolean allow, String[] excludes)
- {
- AVMNodeDescriptor desc = avmService.lookup(-1, path);
- checkHeadPermission(desc, authority, permission, allow);
- if (desc.isDirectory())
- {
- Map children = avmService.getDirectoryListing(desc);
- for (String child : children.keySet())
- {
- String newPath = path + "/" + child;
- if (excludes != null)
- {
- for (String exclude : excludes)
- {
- if (newPath.startsWith(exclude))
- {
- return;
- }
- }
- }
- checkHeadPermissionForPath(newPath, authority, permission, allow, excludes);
- }
- }
- }
-
- private void checkHeadPermissionNotSetForPath(String path, String authority, String permission, boolean allow, String[] excludes)
- {
- AVMNodeDescriptor desc = avmService.lookup(-1, path);
- checkHeadPermissionNotSet(desc, authority, permission, allow);
- if (desc.isDirectory())
- {
- Map children = avmService.getDirectoryListing(desc);
- for (String child : children.keySet())
- {
- String newPath = path + "/" + child;
- if (excludes != null)
- {
- for (String exclude : excludes)
- {
- if (newPath.startsWith(exclude))
- {
- return;
- }
- }
- }
- checkHeadPermissionNotSetForPath(newPath, authority, permission, allow, excludes);
- }
- }
- }
-
- private void checkHeadPermission(AVMNodeDescriptor desc, String authority, String permission, boolean allow)
- {
- NodeRef nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- Set set = permissionService.getAllSetPermissions(nodeRef);
- for (AccessPermission p : set)
- {
- if (p.getAuthority().equals(authority))
- {
- if (p.getPermission().equals(permission))
- {
- // debugPermissions(desc.getPath());
- return;
- }
- }
- }
- debugPermissions(desc.getPath());
- fail("Permisssions not found at " + desc.getPath());
- // System.err.println("Permisssions not found at "+desc.getPath());
- }
-
- private void checkHeadPermissionNotSet(AVMNodeDescriptor desc, String authority, String permission, boolean allow)
- {
- NodeRef nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- Set set = permissionService.getAllSetPermissions(nodeRef);
- for (AccessPermission p : set)
- {
- if (p.getAuthority().equals(authority))
- {
- if (p.getPermission().equals(permission))
- {
- debugPermissions(desc.getPath());
- fail("Permisssions found at " + desc.getPath());
- }
- }
- }
- // debugPermissions(desc.getPath());
- // fail("Permisssions not found at "+desc.getPath());
- // System.err.println("Permisssions not found at "+desc.getPath());
- }
-
- public void testRedirectLayeredDirectory() throws IOException
- {
- runAs(AuthenticationUtil.getAdminUserName());
- String storeName = "PermissionsTest-" + getName() + "-" + (new Date().getTime());
- try
- {
- avmService.createStore(storeName);
- avmService.createDirectory(storeName + ":/", "www");
- avmService.createDirectory(storeName + ":/www", "avm-web-apps");
- avmService.createFile(storeName + ":/www", "dog").close();
- avmService.createDirectory(storeName + ":/www/avm-web-apps", "ROOT");
- avmService.createFile(storeName + ":/www/avm-web-apps", "cat").close();
-
- AVMNodeDescriptor desc = avmService.lookup(-1, storeName + ":/www");
- NodeRef nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, PermissionService.ALL_AUTHORITIES, PermissionService.READ, true);
- assertTrue(checkPermission("lemur", storeName + ":/www", PermissionService.READ, true));
- assertTrue(checkPermission("manager", storeName + ":/www", PermissionService.READ, true));
- assertTrue(checkPermission("publisher", storeName + ":/www", PermissionService.READ, true));
- assertTrue(checkPermission("contributor", storeName + ":/www", PermissionService.READ, true));
- assertTrue(checkPermission("reviewer", storeName + ":/www", PermissionService.READ, true));
- assertTrue(checkPermission("lemur", storeName + ":/www", "Coordinator", false));
- assertTrue(checkPermission("manager", storeName + ":/www", "Coordinator", false));
- assertTrue(checkPermission("publisher", storeName + ":/www", "Coordinator", false));
- assertTrue(checkPermission("contributor", storeName + ":/www", "Coordinator", false));
- assertTrue(checkPermission("reviewer", storeName + ":/www", "Coordinator", false));
- assertTrue(checkPermission("lemur", storeName + ":/www", "Collaborator", false));
- assertTrue(checkPermission("manager", storeName + ":/www", "Collaborator", false));
- assertTrue(checkPermission("publisher", storeName + ":/www", "Collaborator", false));
- assertTrue(checkPermission("contributor", storeName + ":/www", "Collaborator", false));
- assertTrue(checkPermission("reviewer", storeName + ":/www", "Collaborator", false));
- assertTrue(checkPermission("lemur", storeName + ":/www", "Contributor", false));
- assertTrue(checkPermission("manager", storeName + ":/www", "Contributor", false));
- assertTrue(checkPermission("publisher", storeName + ":/www", "Contributor", false));
- assertTrue(checkPermission("contributor", storeName + ":/www", "Contributor", false));
- assertTrue(checkPermission("reviewer", storeName + ":/www", "Contributor", false));
- assertTrue(checkPermission("lemur", storeName + ":/www", "Editor", false));
- assertTrue(checkPermission("manager", storeName + ":/www", "Editor", false));
- assertTrue(checkPermission("publisher", storeName + ":/www", "Editor", false));
- assertTrue(checkPermission("contributor", storeName + ":/www", "Editor", false));
- assertTrue(checkPermission("reviewer", storeName + ":/www", "Editor", false));
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "manager", "ContentManager", true);
- assertTrue(checkPermission("lemur", storeName + ":/www/avm-web-apps", PermissionService.READ, true));
- assertTrue(checkPermission("manager", storeName + ":/www/avm-web-apps", PermissionService.READ, true));
- assertTrue(checkPermission("publisher", storeName + ":/www/avm-web-apps", PermissionService.READ, true));
- assertTrue(checkPermission("contributor", storeName + ":/www/avm-web-apps", PermissionService.READ, true));
- assertTrue(checkPermission("reviewer", storeName + ":/www/avm-web-apps", PermissionService.READ, true));
- assertTrue(checkPermission("lemur", storeName + ":/www/avm-web-apps", "ContentManager", false));
- assertTrue(checkPermission("manager", storeName + ":/www/avm-web-apps", "ContentManager", true));
- assertTrue(checkPermission("publisher", storeName + ":/www/avm-web-apps", "ContentManager", false));
- assertTrue(checkPermission("contributor", storeName + ":/www/avm-web-apps", "ContentManager", false));
- assertTrue(checkPermission("reviewer", storeName + ":/www/avm-web-apps", "ContentManager", false));
- assertTrue(checkPermission("lemur", storeName + ":/www/avm-web-apps", "ContentPublisher", false));
- assertTrue(checkPermission("manager", storeName + ":/www/avm-web-apps", "ContentPublisher", true));
- assertTrue(checkPermission("publisher", storeName + ":/www/avm-web-apps", "ContentPublisher", false));
- assertTrue(checkPermission("contributor", storeName + ":/www/avm-web-apps", "ContentPublisher", false));
- assertTrue(checkPermission("reviewer", storeName + ":/www/avm-web-apps", "ContentPublisher", false));
- assertTrue(checkPermission("lemur", storeName + ":/www/avm-web-apps", "ContentContributor", false));
- assertTrue(checkPermission("manager", storeName + ":/www/avm-web-apps", "ContentContributor", true));
- assertTrue(checkPermission("publisher", storeName + ":/www/avm-web-apps", "ContentContributor", false));
- assertTrue(checkPermission("contributor", storeName + ":/www/avm-web-apps", "ContentContributor", false));
- assertTrue(checkPermission("reviewer", storeName + ":/www/avm-web-apps", "ContentContributor", false));
- assertTrue(checkPermission("lemur", storeName + ":/www/avm-web-apps", "ContentReviewer", false));
- assertTrue(checkPermission("manager", storeName + ":/www/avm-web-apps", "ContentReviewer", true));
- assertTrue(checkPermission("publisher", storeName + ":/www/avm-web-apps", "ContentReviewer", false));
- assertTrue(checkPermission("contributor", storeName + ":/www/avm-web-apps", "ContentReviewer", false));
- assertTrue(checkPermission("reviewer", storeName + ":/www/avm-web-apps", "ContentReviewer", false));
- desc = avmService.lookup(-1, storeName + ":/www/dog");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "publisher", "Collaborator", true);
- assertTrue(checkPermission("lemur", storeName + ":/www/dog", PermissionService.READ, true));
- assertTrue(checkPermission("manager", storeName + ":/www/dog", PermissionService.READ, true));
- assertTrue(checkPermission("publisher", storeName + ":/www/dog", PermissionService.READ, true));
- assertTrue(checkPermission("contributor", storeName + ":/www/dog", PermissionService.READ, true));
- assertTrue(checkPermission("reviewer", storeName + ":/www/dog", PermissionService.READ, true));
- assertTrue(checkPermission("lemur", storeName + ":/www/dog", "Coordinator", false));
- assertTrue(checkPermission("manager", storeName + ":/www/dog", "Coordinator", false));
- assertTrue(checkPermission("publisher", storeName + ":/www/dog", "Coordinator", false));
- assertTrue(checkPermission("contributor", storeName + ":/www/dog", "Coordinator", false));
- assertTrue(checkPermission("reviewer", storeName + ":/www/dog", "Coordinator", false));
- assertTrue(checkPermission("lemur", storeName + ":/www/dog", "Collaborator", false));
- assertTrue(checkPermission("manager", storeName + ":/www/dog", "Collaborator", false));
- assertTrue(checkPermission("publisher", storeName + ":/www/dog", "Collaborator", true));
- assertTrue(checkPermission("contributor", storeName + ":/www/dog", "Collaborator", false));
- assertTrue(checkPermission("reviewer", storeName + ":/www/dog", "Collaborator", false));
- assertTrue(checkPermission("lemur", storeName + ":/www/dog", "Contributor", false));
- assertTrue(checkPermission("manager", storeName + ":/www/dog", "Contributor", false));
- assertTrue(checkPermission("publisher", storeName + ":/www/dog", "Contributor", true));
- assertTrue(checkPermission("contributor", storeName + ":/www/dog", "Contributor", false));
- assertTrue(checkPermission("reviewer", storeName + ":/www/dog", "Contributor", false));
- assertTrue(checkPermission("lemur", storeName + ":/www/dog", "Editor", false));
- assertTrue(checkPermission("manager", storeName + ":/www/dog", "Editor", false));
- assertTrue(checkPermission("publisher", storeName + ":/www/dog", "Editor", true));
- assertTrue(checkPermission("contributor", storeName + ":/www/dog", "Editor", false));
- assertTrue(checkPermission("reviewer", storeName + ":/www/dog", "Editor", false));
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "contributor", "Coordinator", true);
- assertTrue(checkPermission("lemur", storeName + ":/www/avm-web-apps/ROOT", PermissionService.READ, true));
- assertTrue(checkPermission("manager", storeName + ":/www/avm-web-apps/ROOT", PermissionService.READ, true));
- assertTrue(checkPermission("publisher", storeName + ":/www/avm-web-apps/ROOT", PermissionService.READ, true));
- assertTrue(checkPermission("contributor", storeName + ":/www/avm-web-apps/ROOT", PermissionService.READ, true));
- assertTrue(checkPermission("reviewer", storeName + ":/www/avm-web-apps/ROOT", PermissionService.READ, true));
- assertTrue(checkPermission("lemur", storeName + ":/www/avm-web-apps/ROOT", "Coordinator", false));
- assertTrue(checkPermission("manager", storeName + ":/www/avm-web-apps/ROOT", "Coordinator", true));
- assertTrue(checkPermission("publisher", storeName + ":/www/avm-web-apps/ROOT", "Coordinator", false));
- assertTrue(checkPermission("contributor", storeName + ":/www/avm-web-apps/ROOT", "Coordinator", true));
- assertTrue(checkPermission("reviewer", storeName + ":/www/avm-web-apps/ROOT", "Coordinator", false));
- assertTrue(checkPermission("lemur", storeName + ":/www/avm-web-apps/ROOT", "Collaborator", false));
- assertTrue(checkPermission("manager", storeName + ":/www/avm-web-apps/ROOT", "Collaborator", true));
- assertTrue(checkPermission("publisher", storeName + ":/www/avm-web-apps/ROOT", "Collaborator", false));
- assertTrue(checkPermission("contributor", storeName + ":/www/avm-web-apps/ROOT", "Collaborator", true));
- assertTrue(checkPermission("reviewer", storeName + ":/www/avm-web-apps/ROOT", "Collaborator", false));
- assertTrue(checkPermission("lemur", storeName + ":/www/avm-web-apps/ROOT", "Contributor", false));
- assertTrue(checkPermission("manager", storeName + ":/www/avm-web-apps/ROOT", "Contributor", true));
- assertTrue(checkPermission("publisher", storeName + ":/www/avm-web-apps/ROOT", "Contributor", false));
- assertTrue(checkPermission("contributor", storeName + ":/www/avm-web-apps/ROOT", "Contributor", true));
- assertTrue(checkPermission("reviewer", storeName + ":/www/avm-web-apps/ROOT", "Contributor", false));
- assertTrue(checkPermission("lemur", storeName + ":/www/avm-web-apps/ROOT", "Editor", false));
- assertTrue(checkPermission("manager", storeName + ":/www/avm-web-apps/ROOT", "Editor", true));
- assertTrue(checkPermission("publisher", storeName + ":/www/avm-web-apps/ROOT", "Editor", false));
- assertTrue(checkPermission("contributor", storeName + ":/www/avm-web-apps/ROOT", "Editor", true));
- assertTrue(checkPermission("reviewer", storeName + ":/www/avm-web-apps/ROOT", "Editor", false));
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/cat");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "reviewer", "Editor", true);
- assertTrue(checkPermission("lemur", storeName + ":/www/avm-web-apps/cat", PermissionService.READ, true));
- assertTrue(checkPermission("manager", storeName + ":/www/avm-web-apps/cat", PermissionService.READ, true));
- assertTrue(checkPermission("publisher", storeName + ":/www/avm-web-apps/cat", PermissionService.READ, true));
- assertTrue(checkPermission("contributor", storeName + ":/www/avm-web-apps/cat", PermissionService.READ, true));
- assertTrue(checkPermission("reviewer", storeName + ":/www/avm-web-apps/cat", PermissionService.READ, true));
- assertTrue(checkPermission("lemur", storeName + ":/www/avm-web-apps/cat", "Coordinator", false));
- assertTrue(checkPermission("manager", storeName + ":/www/avm-web-apps/cat", "Coordinator", true));
- assertTrue(checkPermission("publisher", storeName + ":/www/avm-web-apps/cat", "Coordinator", false));
- assertTrue(checkPermission("contributor", storeName + ":/www/avm-web-apps/cat", "Coordinator", false));
- assertTrue(checkPermission("reviewer", storeName + ":/www/avm-web-apps/cat", "Coordinator", false));
- assertTrue(checkPermission("lemur", storeName + ":/www/avm-web-apps/cat", "Collaborator", false));
- assertTrue(checkPermission("manager", storeName + ":/www/avm-web-apps/cat", "Collaborator", true));
- assertTrue(checkPermission("publisher", storeName + ":/www/avm-web-apps/cat", "Collaborator", false));
- assertTrue(checkPermission("contributor", storeName + ":/www/avm-web-apps/cat", "Collaborator", false));
- assertTrue(checkPermission("reviewer", storeName + ":/www/avm-web-apps/cat", "Collaborator", false));
- assertTrue(checkPermission("lemur", storeName + ":/www/avm-web-apps/cat", "Contributor", false));
- assertTrue(checkPermission("manager", storeName + ":/www/avm-web-apps/cat", "Contributor", true));
- assertTrue(checkPermission("publisher", storeName + ":/www/avm-web-apps/cat", "Contributor", false));
- assertTrue(checkPermission("contributor", storeName + ":/www/avm-web-apps/cat", "Contributor", false));
- assertTrue(checkPermission("reviewer", storeName + ":/www/avm-web-apps/cat", "Contributor", false));
- assertTrue(checkPermission("lemur", storeName + ":/www/avm-web-apps/cat", "Editor", false));
- assertTrue(checkPermission("manager", storeName + ":/www/avm-web-apps/cat", "Editor", true));
- assertTrue(checkPermission("publisher", storeName + ":/www/avm-web-apps/cat", "Editor", false));
- assertTrue(checkPermission("contributor", storeName + ":/www/avm-web-apps/cat", "Editor", false));
- assertTrue(checkPermission("reviewer", storeName + ":/www/avm-web-apps/cat", "Editor", true));
-
- avmService.createSnapshot(storeName, null, null);
- avmService.createLayeredDirectory(storeName + ":/www", storeName + ":/", "layer");
-
- desc = avmService.lookup(-1, storeName + ":/layer");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 1);
- desc = avmService.lookup(-1, storeName + ":/layer/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 2);
- desc = avmService.lookup(-1, storeName + ":/layer/dog");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 2);
- desc = avmService.lookup(-1, storeName + ":/layer/avm-web-apps/ROOT");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 3);
- desc = avmService.lookup(-1, storeName + ":/layer/avm-web-apps/cat");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 3);
-
- avmService.retargetLayeredDirectory(storeName + ":/layer", storeName + ":/www/avm-web-apps");
-
- desc = avmService.lookup(-1, storeName + ":/layer");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 2);
- desc = avmService.lookup(-1, storeName + ":/layer/ROOT");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 3);
- desc = avmService.lookup(-1, storeName + ":/layer/cat");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 3);
-
- avmService.retargetLayeredDirectory(storeName + ":/layer", storeName + ":/www");
-
- desc = avmService.lookup(-1, storeName + ":/layer");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 1);
- desc = avmService.lookup(-1, storeName + ":/layer/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 2);
- desc = avmService.lookup(-1, storeName + ":/layer/dog");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 2);
- desc = avmService.lookup(-1, storeName + ":/layer/avm-web-apps/ROOT");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 3);
- desc = avmService.lookup(-1, storeName + ":/layer/avm-web-apps/cat");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 3);
-
- desc = avmService.lookup(-1, storeName + ":/layer");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "monkey", PermissionService.READ, true);
- avmService.createDirectory(storeName + ":/layer", "l-d");
- desc = avmService.lookup(-1, storeName + ":/layer/l-d");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "directory-monkey", PermissionService.READ, true);
- avmService.createFile(storeName + ":/layer", "l-f").close();
- desc = avmService.lookup(-1, storeName + ":/layer/l-f");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "file-monkey", PermissionService.READ, true);
-
- desc = avmService.lookup(-1, storeName + ":/layer");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 2);
- desc = avmService.lookup(-1, storeName + ":/layer/l-d");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 3);
- desc = avmService.lookup(-1, storeName + ":/layer/l-f");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 3);
- desc = avmService.lookup(-1, storeName + ":/layer/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 3);
- desc = avmService.lookup(-1, storeName + ":/layer/dog");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 3);
- desc = avmService.lookup(-1, storeName + ":/layer/avm-web-apps/ROOT");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 4);
- desc = avmService.lookup(-1, storeName + ":/layer/avm-web-apps/cat");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 4);
- debugPermissions(storeName + ":/layer/avm-web-apps/cat");
-
- // As we have set permissions on this node it has done COW and now defined its own permissions.
- // Changing the target does not change the permissions just the content and locations
- // Some underlying nodes have not been COWed - and so pick up underlygin changes
- // - it is only layer and its direct children that will now hace fixed permissions.
- // Joy all round
-
- // Note copy on writed nodes will move taking context.... so cat appears in two places
- // / over layed as cat .... and also as avm-web-apps from the previous copy on write and then move ....
-
- avmService.retargetLayeredDirectory(storeName + ":/layer", storeName + ":/www/avm-web-apps");
-
- desc = avmService.lookup(-1, storeName + ":/layer");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 2);
- desc = avmService.lookup(-1, storeName + ":/layer/l-d");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 3);
- desc = avmService.lookup(-1, storeName + ":/layer/l-f");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 3);
- desc = avmService.lookup(-1, storeName + ":/layer/ROOT");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 4);
- desc = avmService.lookup(-1, storeName + ":/layer/cat");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 3);
- desc = avmService.lookup(-1, storeName + ":/layer/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 3);
- desc = avmService.lookup(-1, storeName + ":/layer/avm-web-apps/ROOT");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 4);
- desc = avmService.lookup(-1, storeName + ":/layer/avm-web-apps/cat");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 4);
-
- avmService.retargetLayeredDirectory(storeName + ":/layer", storeName + ":/www");
-
- desc = avmService.lookup(-1, storeName + ":/layer");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 2);
- desc = avmService.lookup(-1, storeName + ":/layer/l-d");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 3);
- desc = avmService.lookup(-1, storeName + ":/layer/l-f");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 3);
- desc = avmService.lookup(-1, storeName + ":/layer/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 3);
- desc = avmService.lookup(-1, storeName + ":/layer/dog");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 3);
- desc = avmService.lookup(-1, storeName + ":/layer/avm-web-apps/ROOT");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 4);
- desc = avmService.lookup(-1, storeName + ":/layer/avm-web-apps/cat");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 4);
-
- }
- finally
- {
- removeStore(storeName);
- }
- }
-
- public void testCopy()
- {
- runAs(AuthenticationUtil.getAdminUserName());
- String storeName = "PermissionsTest-" + getName() + "-" + (new Date().getTime());
- try
- {
- avmService.createStore(storeName);
- avmService.createDirectory(storeName + ":/", "www");
- avmService.createDirectory(storeName + ":/www", "avm-web-apps");
- avmService.createDirectory(storeName + ":/www/avm-web-apps", "ROOT");
- AVMNodeDescriptor desc = avmService.lookup(-1, storeName + ":/www");
- NodeRef nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- Map s1 = avmService.createSnapshot(storeName, null, null);
- desc = avmService.lookup(-1, storeName + ":/www");
- permissionService.setPermission(nodeRef, PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true);
- Map s2 = avmService.createSnapshot(storeName, null, null);
- desc = avmService.lookup(-1, storeName + ":/www");
- permissionService.setPermission(nodeRef, "manager", "ContentManager", true);
- Map s3 = avmService.createSnapshot(storeName, null, null);
- desc = avmService.lookup(-1, storeName + ":/www");
- permissionService.setPermission(nodeRef, "publisher", "ContentPublisher", true);
- Map s4 = avmService.createSnapshot(storeName, null, null);
- desc = avmService.lookup(-1, storeName + ":/www");
- permissionService.setPermission(nodeRef, "contributor", "ContentContributor", true);
- Map s5 = avmService.createSnapshot(storeName, null, null);
- desc = avmService.lookup(-1, storeName + ":/www");
- permissionService.setPermission(nodeRef, "reviewer", "ContentReviewer", true);
- Map s6 = avmService.createSnapshot(storeName, null, null);
- desc = avmService.lookup(-1, storeName + ":/www");
-
- avmService.copy(-1, storeName + ":/www", storeName + ":/", "head");
- desc = avmService.lookup(-1, storeName + ":/head");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
- desc = avmService.lookup(-1, storeName + ":/head/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
-
- avmService.copy(s1.get(storeName), storeName + ":/www", storeName + ":/", "s1");
- desc = avmService.lookup(-1, storeName + ":/s1");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 0);
- desc = avmService.lookup(-1, storeName + ":/s1/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 0);
-
- avmService.copy(s2.get(storeName), storeName + ":/www", storeName + ":/", "s2");
- desc = avmService.lookup(-1, storeName + ":/s2");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 1);
- desc = avmService.lookup(-1, storeName + ":/s2/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 1);
-
- avmService.copy(s3.get(storeName), storeName + ":/www", storeName + ":/", "s3");
- desc = avmService.lookup(-1, storeName + ":/s3");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 2);
- desc = avmService.lookup(-1, storeName + ":/s3/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 2);
-
- avmService.copy(s4.get(storeName), storeName + ":/www", storeName + ":/", "s4");
- desc = avmService.lookup(-1, storeName + ":/s4");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 3);
- desc = avmService.lookup(-1, storeName + ":/s4/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 3);
-
- avmService.copy(s5.get(storeName), storeName + ":/www", storeName + ":/", "s5");
- desc = avmService.lookup(-1, storeName + ":/s5");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 4);
- desc = avmService.lookup(-1, storeName + ":/s5/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 4);
-
- avmService.copy(s6.get(storeName), storeName + ":/www", storeName + ":/", "s6");
- desc = avmService.lookup(-1, storeName + ":/s6");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
- desc = avmService.lookup(-1, storeName + ":/s6/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
-
- desc = avmService.lookup(-1, storeName + ":/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "monkey", "ContentReviewer", true);
-
- avmService.copy(s6.get(storeName), storeName + ":/www", storeName + ":/", "s6");
- desc = avmService.lookup(-1, storeName + ":/s6");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
- desc = avmService.lookup(-1, storeName + ":/s6/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
-
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "monkey", "ContentReviewer", true);
-
- avmService.copy(s6.get(storeName), storeName + ":/www", storeName + ":/", "s6");
- desc = avmService.lookup(-1, storeName + ":/s6");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
- desc = avmService.lookup(-1, storeName + ":/s6/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
-
- }
- finally
- {
- removeStore(storeName);
- }
- }
-
- public void testBranches()
- {
- runAs(AuthenticationUtil.getAdminUserName());
- String storeName = "PermissionsTest-" + getName() + "-" + (new Date().getTime());
- try
- {
- avmService.createStore(storeName);
- avmService.createDirectory(storeName + ":/", "www");
- avmService.createDirectory(storeName + ":/www", "avm-web-apps");
- avmService.createDirectory(storeName + ":/www/avm-web-apps", "ROOT");
- AVMNodeDescriptor desc = avmService.lookup(-1, storeName + ":/www");
- NodeRef nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- Map s1 = avmService.createSnapshot(storeName, null, null);
- desc = avmService.lookup(-1, storeName + ":/www");
- permissionService.setPermission(nodeRef, PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true);
- Map s2 = avmService.createSnapshot(storeName, null, null);
- desc = avmService.lookup(-1, storeName + ":/www");
- permissionService.setPermission(nodeRef, "manager", "ContentManager", true);
- Map s3 = avmService.createSnapshot(storeName, null, null);
- desc = avmService.lookup(-1, storeName + ":/www");
- permissionService.setPermission(nodeRef, "publisher", "ContentPublisher", true);
- Map s4 = avmService.createSnapshot(storeName, null, null);
- desc = avmService.lookup(-1, storeName + ":/www");
- permissionService.setPermission(nodeRef, "contributor", "ContentContributor", true);
- Map s5 = avmService.createSnapshot(storeName, null, null);
- desc = avmService.lookup(-1, storeName + ":/www");
- permissionService.setPermission(nodeRef, "reviewer", "ContentReviewer", true);
- Map s6 = avmService.createSnapshot(storeName, null, null);
- desc = avmService.lookup(-1, storeName + ":/www");
-
- avmService.createBranch(-1, storeName + ":/www", storeName + ":/", "head");
- desc = avmService.lookup(-1, storeName + ":/head");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
- desc = avmService.lookup(-1, storeName + ":/head/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
-
- avmService.createBranch(s1.get(storeName), storeName + ":/www", storeName + ":/", "s1");
- desc = avmService.lookup(-1, storeName + ":/s1");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 0);
- desc = avmService.lookup(-1, storeName + ":/s1/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 0);
-
- avmService.createBranch(s2.get(storeName), storeName + ":/www", storeName + ":/", "s2");
- desc = avmService.lookup(-1, storeName + ":/s2");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 1);
- desc = avmService.lookup(-1, storeName + ":/s2/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 1);
-
- avmService.createBranch(s3.get(storeName), storeName + ":/www", storeName + ":/", "s3");
- desc = avmService.lookup(-1, storeName + ":/s3");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 2);
- desc = avmService.lookup(-1, storeName + ":/s3/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 2);
-
- avmService.createBranch(s4.get(storeName), storeName + ":/www", storeName + ":/", "s4");
- desc = avmService.lookup(-1, storeName + ":/s4");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 3);
- desc = avmService.lookup(-1, storeName + ":/s4/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 3);
-
- avmService.createBranch(s5.get(storeName), storeName + ":/www", storeName + ":/", "s5");
- desc = avmService.lookup(-1, storeName + ":/s5");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 4);
- desc = avmService.lookup(-1, storeName + ":/s5/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 4);
-
- avmService.createBranch(s6.get(storeName), storeName + ":/www", storeName + ":/", "s6");
- desc = avmService.lookup(-1, storeName + ":/s6");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
- desc = avmService.lookup(-1, storeName + ":/s6/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
-
- desc = avmService.lookup(-1, storeName + ":/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "monkey", "ContentReviewer", true);
-
- avmService.createBranch(s6.get(storeName), storeName + ":/www", storeName + ":/", "s6");
- desc = avmService.lookup(-1, storeName + ":/s6");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
- desc = avmService.lookup(-1, storeName + ":/s6/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
-
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "monkey", "ContentReviewer", true);
-
- avmService.createBranch(s6.get(storeName), storeName + ":/www", storeName + ":/", "s6");
- desc = avmService.lookup(-1, storeName + ":/s6");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
- desc = avmService.lookup(-1, storeName + ":/s6/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
-
- }
- finally
- {
- removeStore(storeName);
- }
- }
-
- @SuppressWarnings("unused")
- public void testWCMStyleTemplateAsBranch()
- {
- runAs(AuthenticationUtil.getAdminUserName());
- String storeName = "PermissionsTest-" + getName() + "-" + (new Date().getTime());
- String branchName = storeName + "-Branch";
- try
- {
- avmService.createStore(storeName);
- avmService.createDirectory(storeName + ":/", "www");
- avmService.createDirectory(storeName + ":/www", "avm-web-apps");
- avmService.createDirectory(storeName + ":/www/avm-web-apps", "ROOT");
- AVMNodeDescriptor desc = avmService.lookup(-1, storeName + ":/www");
- NodeRef nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- Map s1 = avmService.createSnapshot(storeName, null, null);
- desc = avmService.lookup(-1, storeName + ":/www");
- permissionService.setPermission(nodeRef, PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true);
- Map s2 = avmService.createSnapshot(storeName, null, null);
- desc = avmService.lookup(-1, storeName + ":/www");
- permissionService.setPermission(nodeRef, "manager", "ContentManager", true);
- Map s3 = avmService.createSnapshot(storeName, null, null);
- desc = avmService.lookup(-1, storeName + ":/www");
- permissionService.setPermission(nodeRef, "publisher", "ContentPublisher", true);
- Map s4 = avmService.createSnapshot(storeName, null, null);
- desc = avmService.lookup(-1, storeName + ":/www");
- permissionService.setPermission(nodeRef, "contributor", "ContentContributor", true);
- Map s5 = avmService.createSnapshot(storeName, null, null);
- desc = avmService.lookup(-1, storeName + ":/www");
- permissionService.setPermission(nodeRef, "reviewer", "ContentReviewer", true);
- Map s6 = avmService.createSnapshot(storeName, null, null);
- desc = avmService.lookup(-1, storeName + ":/www");
-
- desc = avmService.lookup(-1, storeName + ":/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
-
- avmService.createStore(branchName);
- avmService.createBranch(-1, storeName + ":/www", branchName + ":/", "www");
- avmService.createSnapshot(branchName, null, null);
-
-
- desc = avmService.lookup(-1, branchName + ":/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
- desc = avmService.lookup(-1, branchName + ":/www/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
-
-
- // Check the branch remains unchanged when the template is changed
-
- debugPermissions(storeName + ":/www");
- debugPermissions(branchName + ":/www");
- debugPermissions(branchName + ":/www/avm-web-apps");
-
- desc = avmService.lookup(-1, storeName + ":/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "template", "ContentReviewer", true);
-
- desc = avmService.lookup(-1, branchName + ":/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
- desc = avmService.lookup(-1, branchName + ":/www/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
-
- debugPermissions(storeName + ":/www");
- debugPermissions(branchName + ":/www");
- debugPermissions(branchName + ":/www/avm-web-apps");
-
- desc = avmService.lookup(-1, branchName + ":/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "new", "ContentReviewer", true);
-
- desc = avmService.lookup(-1, branchName + ":/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 6);
- desc = avmService.lookup(-1, branchName + ":/www/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- debugPermissions(storeName + ":/www");
- debugPermissions(branchName + ":/www");
- debugPermissions(branchName + ":/www/avm-web-apps");
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 6);
-
-
- }
- finally
- {
- removeStore(storeName);
- removeStore(branchName);
- }
- }
-
- /*
- * Test the basic permission model where
- */
- public void testSimpleExternalLayer() throws Exception
- {
- runAs(AuthenticationUtil.getAdminUserName());
- String storeName = "PermissionsTest-" + getName() + "-" + (new Date().getTime());
- try
- {
- avmService.createStore(storeName);
- avmService.createDirectory(storeName + ":/", "www");
- avmService.createDirectory(storeName + ":/www", "avm-web-apps");
- avmService.createDirectory(storeName + ":/www/avm-web-apps", "ROOT");
- AVMNodeDescriptor desc = avmService.lookup(-1, storeName + ":/www");
- NodeRef nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true);
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 1);
- Long definingId = avmACLDAO.getAccessControlList(nodeRef).getId();
- String definingGuid = aclDaoComponent.getAccessControlListProperties(definingId).getAclId();
-
- permissionService.setPermission(nodeRef, "manager", "ContentManager", true);
- permissionService.setPermission(nodeRef, "publisher", "ContentPublisher", true);
- permissionService.setPermission(nodeRef, "contributor", "ContentContributor", true);
- permissionService.setPermission(nodeRef, "reviewer", "ContentReviewer", true);
-
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
- assertEquals(definingId, avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(definingId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(definingId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- avmService.createDirectory(storeName + ":/www/avm-web-apps/ROOT", "directory");
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT/directory");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(definingId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- avmService.createFile(storeName + ":/www/avm-web-apps/ROOT", "file").close();
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT/file");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(definingId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- // simple layer
-
- avmService.createSnapshot(storeName, null, null);
- avmService.createStore(storeName + "-a-");
- avmService.createLayeredDirectory(storeName + ":/www", storeName + "-a-:/", "www");
- avmService.createSnapshot(storeName, null, null);
- avmService.createSnapshot(storeName + "-a-", null, null);
-
- desc = avmService.lookup(-1, storeName + "-a-:/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
-
- desc = avmService.lookup(-1, storeName + "-a-:/www/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(definingId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + "-a-:/www/avm-web-apps/ROOT");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(definingId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + "-a-:/www/avm-web-apps/ROOT/directory");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(definingId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + "-a-:/www/avm-web-apps/ROOT/file");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(definingId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- // Add permissions beneath and check they appear up
- // Check version has not moved and the id is the same as they are in the same TX and will not have COWed
-
- desc = avmService.lookup(-1, storeName + ":/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
-
- // debugPermissionsut.println("BEFORE:");
- // debugPermissions(storeName + ":/");
- // debugPermissions(storeName + ":/www");
- // debugPermissions(storeName + ":/www/avm-web-apps");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT/file");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT/directory");
- // debugPermissions(storeName + "-a-:/");
- // debugPermissions(storeName + "-a-:/www");
- // debugPermissions(storeName + "-a-:/www/avm-web-apps");
- // debugPermissions(storeName + "-a-:/www/avm-web-apps/ROOT");
- // debugPermissions(storeName + "-a-:/www/avm-web-apps/ROOT/file");
- // debugPermissions(storeName + "-a-:/www/avm-web-apps/ROOT/directory");
-
- testTX.commit();
- testTX = transactionService.getUserTransaction();
- testTX.begin();
-
- permissionService.setPermission(nodeRef, "andy", "ContentReviewer", true);
-
- // System.out.println("AFTER:");
- // debugPermissions(storeName + ":/");
- // debugPermissions(storeName + ":/www");
- // debugPermissions(storeName + ":/www/avm-web-apps");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT/file");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT/directory");
- // debugPermissions(storeName + "-a-:/");
- // debugPermissions(storeName + "-a-:/www");
- // debugPermissions(storeName + "-a-:/www/avm-web-apps");
- // debugPermissions(storeName + "-a-:/www/avm-web-apps/ROOT");
- // debugPermissions(storeName + "-a-:/www/avm-web-apps/ROOT/file");
- // debugPermissions(storeName + "-a-:/www/avm-web-apps/ROOT/directory");
-
- Long newId = avmACLDAO.getAccessControlList(nodeRef).getId();
- assertFalse(newId.equals(definingId));
- assertEquals(definingGuid, aclDaoComponent.getAccessControlListProperties(newId).getAclId());
- assertEquals(aclDaoComponent.getAccessControlListProperties(definingId).getAclVersion().longValue() + 1, aclDaoComponent.getAccessControlListProperties(newId)
- .getAclVersion().longValue());
-
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 6);
- assertEquals(newId, avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 6);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(newId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 6);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(newId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT/directory");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 6);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(newId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT/file");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 6);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(newId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + "-a-:/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 6);
-
- desc = avmService.lookup(-1, storeName + "-a-:/www/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 6);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(newId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + "-a-:/www/avm-web-apps/ROOT");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 6);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(newId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + "-a-:/www/avm-web-apps/ROOT/directory");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 6);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(newId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + "-a-:/www/avm-web-apps/ROOT/file");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 6);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(newId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- // Add permissions to the layer
-
- desc = avmService.lookup(-1, storeName + "-a-:/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "bob", "ContentReviewer", true);
-
- desc = avmService.lookup(-1, storeName + ":/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 6);
- assertEquals(newId, avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 6);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(newId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 6);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(newId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT/directory");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 6);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(newId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT/file");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 6);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(newId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + "-a-:/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 7);
- newId = avmACLDAO.getAccessControlList(nodeRef).getId();
-
- desc = avmService.lookup(-1, storeName + "-a-:/www/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 7);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(newId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + "-a-:/www/avm-web-apps/ROOT");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 7);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(newId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + "-a-:/www/avm-web-apps/ROOT/directory");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 7);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(newId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + "-a-:/www/avm-web-apps/ROOT/file");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 7);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(newId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- }
- finally
- {
- removeStore(storeName);
- removeStore(storeName + "-a-");
-
- }
- }
-
- // Comment-out for now due to intermittent failure: expected:<6> but was:<7>
- public void x_testSimpleInternalLayer() throws IOException
- {
- runAs(AuthenticationUtil.getAdminUserName());
- String storeName = "PermissionsTest-" + getName() + "-" + (new Date().getTime());
- try
- {
- avmService.createStore(storeName);
- avmService.createDirectory(storeName + ":/", "www");
- avmService.createDirectory(storeName + ":/www", "avm-web-apps");
- avmService.createDirectory(storeName + ":/www/avm-web-apps", "ROOT");
- AVMNodeDescriptor desc = avmService.lookup(-1, storeName + ":/www");
- NodeRef nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true);
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 1);
- Long definingId = avmACLDAO.getAccessControlList(nodeRef).getId();
- String definingGuid = aclDaoComponent.getAccessControlListProperties(definingId).getAclId();
-
- permissionService.setPermission(nodeRef, "manager", "ContentManager", true);
- permissionService.setPermission(nodeRef, "publisher", "ContentPublisher", true);
- permissionService.setPermission(nodeRef, "contributor", "ContentContributor", true);
- permissionService.setPermission(nodeRef, "reviewer", "ContentReviewer", true);
-
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
- assertEquals(definingId, avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(definingId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(definingId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- avmService.createDirectory(storeName + ":/www/avm-web-apps/ROOT", "directory");
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT/directory");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(definingId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- avmService.createFile(storeName + ":/www/avm-web-apps/ROOT", "file").close();
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT/file");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(definingId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- // simple layer
-
- avmService.createSnapshot(storeName, null, null);
-
- avmService.createLayeredDirectory(storeName + ":/www", storeName + ":/", "layer");
- avmService.createSnapshot(storeName, null, null);
- avmService.createSnapshot(storeName, null, null);
-
- desc = avmService.lookup(-1, storeName + ":/layer");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
-
- desc = avmService.lookup(-1, storeName + ":/layer/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(definingId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + ":/layer/avm-web-apps/ROOT");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(definingId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + ":/layer/avm-web-apps/ROOT/directory");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(definingId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + ":/layer/avm-web-apps/ROOT/file");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(definingId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- // Add permissions beneath and check they appear up
- // Check version has not moved and the id is the same as they are in the same TX and will not have COWed
-
- desc = avmService.lookup(-1, storeName + ":/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
-
- // System.out.println("BEFORE:");
- // debugPermissions(storeName + ":/");
- // debugPermissions(storeName + ":/www");
- // debugPermissions(storeName + ":/www/avm-web-apps");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT/file");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT/directory");
- // debugPermissions(storeName + ":/");
- // debugPermissions(storeName + ":/layer");
- // debugPermissions(storeName + ":/layer/avm-web-apps");
- // debugPermissions(storeName + ":/layer/avm-web-apps/ROOT");
- // debugPermissions(storeName + ":/layer/avm-web-apps/ROOT/file");
- // debugPermissions(storeName + ":/layer/avm-web-apps/ROOT/directory");
-
- permissionService.setPermission(nodeRef, "andy", "ContentReviewer", true);
-
- // System.out.println("AFTER:");
- // debugPermissions(storeName + ":/");
- // debugPermissions(storeName + ":/www");
- // debugPermissions(storeName + ":/www/avm-web-apps");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT/file");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT/directory");
- // debugPermissions(storeName + ":/");
- // debugPermissions(storeName + ":/layer");
- // debugPermissions(storeName + ":/layer/avm-web-apps");
- // debugPermissions(storeName + ":/layer/avm-web-apps/ROOT");
- // debugPermissions(storeName + ":/layer/avm-web-apps/ROOT/file");
- // debugPermissions(storeName + ":/layer/avm-web-apps/ROOT/directory");
-
- Long newId = avmACLDAO.getAccessControlList(nodeRef).getId();
- assertFalse(newId.equals(definingId));
- assertEquals(definingGuid, aclDaoComponent.getAccessControlListProperties(newId).getAclId());
- assertEquals(aclDaoComponent.getAccessControlListProperties(definingId).getAclVersion().longValue() + 1, aclDaoComponent.getAccessControlListProperties(newId)
- .getAclVersion().longValue());
-
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 6);
- assertEquals(newId, avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 6);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(newId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 6);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(newId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT/directory");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 6);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(newId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT/file");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 6);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(newId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + ":/layer");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 6);
-
- desc = avmService.lookup(-1, storeName + ":/layer/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 6);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(newId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + ":/layer/avm-web-apps/ROOT");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 6);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(newId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + ":/layer/avm-web-apps/ROOT/directory");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 6);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(newId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + ":/layer/avm-web-apps/ROOT/file");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 6);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(newId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- // Add permissions to the layer
-
- desc = avmService.lookup(-1, storeName + ":/layer");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "bob", "ContentReviewer", true);
-
- desc = avmService.lookup(-1, storeName + ":/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 6);
- assertEquals(newId, avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 6);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(newId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 6);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(newId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT/directory");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 6);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(newId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT/file");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 6);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(newId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + ":/layer");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 7);
- newId = avmACLDAO.getAccessControlList(nodeRef).getId();
-
- desc = avmService.lookup(-1, storeName + ":/layer/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 7);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(newId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + ":/layer/avm-web-apps/ROOT");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 7);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(newId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + ":/layer/avm-web-apps/ROOT/directory");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 7);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(newId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- desc = avmService.lookup(-1, storeName + ":/layer/avm-web-apps/ROOT/file");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 7);
- assertEquals(aclDaoComponent.getInheritedAccessControlList(newId), avmACLDAO.getAccessControlList(nodeRef).getId());
-
- }
- finally
- {
- removeStore(storeName);
- }
- }
-
- private void debugPermissions(String path)
- {
- AVMNodeDescriptor desc = avmService.lookup(-1, path);
- NodeRef nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- Acl acl = avmACLDAO.getAccessControlList(nodeRef);
- System.out.println(path);
- System.out.println("\t => Ind="
- + desc.getIndirection() + ",Deleted=" + desc.isDeleted() + ",LD=" + desc.isLayeredDirectory() + ",LF=" + desc.isLayeredFile() + ",PD=" + desc.isPlainDirectory()
- + ",PF=" + desc.isPlainFile() + ",Primary=" + desc.isPrimary());
- System.out.println("\t => " + acl);
- }
-
- public void testMutationsWithSimpleLayers() throws IOException
- {
- runAs(AuthenticationUtil.getAdminUserName());
- String storeName = "PermissionsTest-" + getName() + "-" + (new Date().getTime());
- try
- {
- avmService.createStore(storeName);
- avmService.createDirectory(storeName + ":/", "www");
- avmService.createDirectory(storeName + ":/www", "avm-web-apps");
- avmService.createDirectory(storeName + ":/www/avm-web-apps", "ROOT");
-
- AVMNodeDescriptor desc = avmService.lookup(-1, storeName + ":/www");
- NodeRef nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
-
- // debugPermissions(storeName + ":/");
- // /debugPermissions(storeName + ":/www");
- // debugPermissions(storeName + ":/www/avm-web-apps");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT");
- permissionService.setPermission(nodeRef, PermissionService.ALL_AUTHORITIES, PermissionService.ALL_PERMISSIONS, true);
- // debugPermissions(storeName + ":/");
- // debugPermissions(storeName + ":/www");
- // debugPermissions(storeName + ":/www/avm-web-apps");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT");
- permissionService.setPermission(nodeRef, "manager", "ContentManager", true);
- // debugPermissions(storeName + ":/");
- // debugPermissions(storeName + ":/www");
- // debugPermissions(storeName + ":/www/avm-web-apps");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT");
- permissionService.setPermission(nodeRef, "publisher", "ContentPublisher", true);
- // debugPermissions(storeName + ":/");
- // debugPermissions(storeName + ":/www");
- // debugPermissions(storeName + ":/www/avm-web-apps");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT");
- permissionService.setPermission(nodeRef, "contributor", "ContentContributor", true);
- // debugPermissions(storeName + ":/");
- // debugPermissions(storeName + ":/www");
- // debugPermissions(storeName + ":/www/avm-web-apps");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT");
- permissionService.setPermission(nodeRef, "reviewer", "ContentReviewer", true);
- // debugPermissions(storeName + ":/");
- // debugPermissions(storeName + ":/www");
- // debugPermissions(storeName + ":/www/avm-web-apps");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT");
-
- avmService.createSnapshot(storeName, null, null);
-
- // System.out.println("Snapshot");
- // debugPermissions(storeName + ":/");
- // debugPermissions(storeName + ":/www");
- // debugPermissions(storeName + ":/www/avm-web-apps");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT");
-
- avmService.createStore(storeName + "-a-");
- avmService.createLayeredDirectory(storeName + ":/www", storeName + "-a-:/", "www");
-
- // System.out.println("Layered");
- // debugPermissions(storeName + ":/");
- // debugPermissions(storeName + ":/www");
- // debugPermissions(storeName + ":/www/avm-web-apps");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT");
-
- avmService.createDirectory(storeName + ":/www/avm-web-apps/ROOT", "directory");
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT/directory");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- // System.out.println("New Dir");
- // debugPermissions(storeName + ":/");
- // debugPermissions(storeName + ":/www");
- // debugPermissions(storeName + ":/www/avm-web-apps");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT/directory");
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
-
- avmService.createDirectory(storeName + "-a-:/www/avm-web-apps/ROOT", "directory2");
- desc = avmService.lookup(-1, storeName + "-a-:/www/avm-web-apps/ROOT/directory2");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 5);
-
- desc = avmService.lookup(-1, storeName + ":/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- // System.out.println("Before Andy");
- // debugPermissions(storeName + ":/");
- // debugPermissions(storeName + ":/www");
- // debugPermissions(storeName + ":/www/avm-web-apps");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT/directory");
- permissionService.setPermission(nodeRef, "andy", "ContentReviewer", true);
- // System.out.println("Before Lemur");
- // debugPermissions(storeName + ":/");
- // debugPermissions(storeName + ":/www");
- // debugPermissions(storeName + ":/www/avm-web-apps");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT/directory");
- permissionService.setPermission(nodeRef, "lemur", "ContentReviewer", true);
- // System.out.println("After");
- // debugPermissions(storeName + ":/");
- // debugPermissions(storeName + ":/www");
- // debugPermissions(storeName + ":/www/avm-web-apps");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT");
-
- desc = avmService.lookup(-1, storeName + "-a-:/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "bob", "ContentReviewer", true);
- permissionService.setPermission(nodeRef, "jim", "ContentReviewer", true);
- permissionService.setPermission(nodeRef, "dave", "ContentReviewer", true);
-
- avmService.createFile(storeName + ":/www/avm-web-apps/ROOT", "file").close();
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT/file");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- // TODO: Check this
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 7);
-
- avmService.createFile(storeName + "-a-:/www/avm-web-apps/ROOT", "file2").close();
- desc = avmService.lookup(-1, storeName + "-a-:/www/avm-web-apps/ROOT/file2");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 10);
-
- }
- finally
- {
- removeStore(storeName);
- removeStore(storeName + "-a-");
- }
- }
-
- public void testRenamePlainDirectory()
- {
- runAs(AuthenticationUtil.getAdminUserName());
- String storeName = "PermissionsTest-" + getName() + "-" + (new Date().getTime());
- try
- {
- AVMNodeDescriptor desc;
- NodeRef nodeRef;
-
- avmService.createStore(storeName);
-
- avmService.createDirectory(storeName + ":/", "www");
- desc = avmService.lookup(-1, storeName + ":/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "one", PermissionService.ALL_PERMISSIONS, true);
- // System.out.println("After One");
- // debugPermissions(storeName + ":/");
- // debugPermissions(storeName + ":/www");
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 1);
-
- avmService.createDirectory(storeName + ":/www", "avm-web-apps");
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "two", PermissionService.ALL_PERMISSIONS, true);
- // System.out.println("After Two");
- // debugPermissions(storeName + ":/");
- // debugPermissions(storeName + ":/www");
- // debugPermissions(storeName + ":/www/avm-web-apps");
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 2);
- desc = avmService.lookup(-1, storeName + ":/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 1);
-
- avmService.createDirectory(storeName + ":/www/avm-web-apps", "ROOT");
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "three", PermissionService.ALL_PERMISSIONS, true);
- // System.out.println("After Three");
- // debugPermissions(storeName + ":/");
- // debugPermissions(storeName + ":/www");
- // debugPermissions(storeName + ":/www/avm-web-apps");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT");
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 3);
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 2);
- desc = avmService.lookup(-1, storeName + ":/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 1);
-
- avmService.createDirectory(storeName + ":/www/avm-web-apps/ROOT", "test");
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT/test");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "four", PermissionService.ALL_PERMISSIONS, true);
- // System.out.println("After Four");
- // debugPermissions(storeName + ":/");
- // debugPermissions(storeName + ":/www");
- // debugPermissions(storeName + ":/www/avm-web-apps");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT/test");
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 4);
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 3);
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 2);
- desc = avmService.lookup(-1, storeName + ":/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 1);
-
- avmService.rename(storeName + ":/www/avm-web-apps/ROOT", "test", storeName + ":/www/avm-web-apps/ROOT", "lemon");
- // System.out.println("After Rename to lemon");
- // debugPermissions(storeName + ":/");
- // debugPermissions(storeName + ":/www");
- // debugPermissions(storeName + ":/www/avm-web-apps");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT/lemon");
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT/lemon");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 4);
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 3);
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 2);
- desc = avmService.lookup(-1, storeName + ":/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 1);
-
- avmService.rename(storeName + ":/www/avm-web-apps/ROOT", "lemon", storeName + ":/www/avm-web-apps", "orange");
- // System.out.println("After move up and rename 1");
- // debugPermissions(storeName + ":/");
- // debugPermissions(storeName + ":/www");
- // debugPermissions(storeName + ":/www/avm-web-apps");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT");
- // debugPermissions(storeName + ":/www/avm-web-apps/orange");
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/orange");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 3);
-
- avmService.rename(storeName + ":/www/avm-web-apps", "orange", storeName + ":/www", "blue");
- // System.out.println("After move up and rename 2");
- // debugPermissions(storeName + ":/");
- // debugPermissions(storeName + ":/www");
- // debugPermissions(storeName + ":/www/avm-web-apps");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT");
- // debugPermissions(storeName + ":/www/blue");
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/orange");
- desc = avmService.lookup(-1, storeName + ":/www/blue");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 2);
-
- }
- finally
- {
- removeStore(storeName);
- }
- }
-
- public void testRenamePlainFile() throws IOException
- {
- runAs(AuthenticationUtil.getAdminUserName());
- String storeName = "PermissionsTest-" + getName() + "-" + (new Date().getTime());
- try
- {
- AVMNodeDescriptor desc;
- NodeRef nodeRef;
-
- avmService.createStore(storeName);
-
- avmService.createDirectory(storeName + ":/", "www");
- desc = avmService.lookup(-1, storeName + ":/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "one", PermissionService.ALL_PERMISSIONS, true);
- // System.out.println("After One");
- // debugPermissions(storeName + ":/");
- // debugPermissions(storeName + ":/www");
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 1);
-
- avmService.createDirectory(storeName + ":/www", "avm-web-apps");
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "two", PermissionService.ALL_PERMISSIONS, true);
- // System.out.println("After Two");
- // debugPermissions(storeName + ":/");
- // debugPermissions(storeName + ":/www");
- // debugPermissions(storeName + ":/www/avm-web-apps");
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 2);
- desc = avmService.lookup(-1, storeName + ":/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 1);
-
- avmService.createDirectory(storeName + ":/www/avm-web-apps", "ROOT");
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "three", PermissionService.ALL_PERMISSIONS, true);
- // System.out.println("After Three");
- // debugPermissions(storeName + ":/");
- // debugPermissions(storeName + ":/www");
- // debugPermissions(storeName + ":/www/avm-web-apps");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT");
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 3);
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 2);
- desc = avmService.lookup(-1, storeName + ":/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 1);
-
- avmService.createFile(storeName + ":/www/avm-web-apps/ROOT", "test").close();
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT/test");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "four", PermissionService.ALL_PERMISSIONS, true);
- // System.out.println("After Four");
- // debugPermissions(storeName + ":/");
- // debugPermissions(storeName + ":/www");
- // debugPermissions(storeName + ":/www/avm-web-apps");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT/test");
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 4);
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 3);
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 2);
- desc = avmService.lookup(-1, storeName + ":/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 1);
-
- avmService.rename(storeName + ":/www/avm-web-apps/ROOT", "test", storeName + ":/www/avm-web-apps/ROOT", "lemon");
- // System.out.println("After Rename to lemon");
- // debugPermissions(storeName + ":/");
- // debugPermissions(storeName + ":/www");
- // debugPermissions(storeName + ":/www/avm-web-apps");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT/lemon");
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT/lemon");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 4);
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 3);
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 2);
- desc = avmService.lookup(-1, storeName + ":/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 1);
-
- avmService.rename(storeName + ":/www/avm-web-apps/ROOT", "lemon", storeName + ":/www/avm-web-apps", "orange");
- // System.out.println("After move up and rename 1");
- // debugPermissions(storeName + ":/");
- // debugPermissions(storeName + ":/www");
- // debugPermissions(storeName + ":/www/avm-web-apps");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT");
- // debugPermissions(storeName + ":/www/avm-web-apps/orange");
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/orange");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 3);
-
- avmService.rename(storeName + ":/www/avm-web-apps", "orange", storeName + ":/www", "blue");
- // System.out.println("After move up and rename 2");
- // debugPermissions(storeName + ":/");
- // debugPermissions(storeName + ":/www");
- // debugPermissions(storeName + ":/www/avm-web-apps");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT");
- // debugPermissions(storeName + ":/www/blue");
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/orange");
- desc = avmService.lookup(-1, storeName + ":/www/blue");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 2);
- }
- finally
- {
- removeStore(storeName);
- }
- }
-
- public void testRenamePlainDirectoryIntoLayer()
- {
- runAs(AuthenticationUtil.getAdminUserName());
- String storeName = "PermissionsTest-" + getName() + "-" + (new Date().getTime());
- try
- {
- AVMNodeDescriptor desc;
- NodeRef nodeRef;
-
- avmService.createStore(storeName);
-
- avmService.createDirectory(storeName + ":/", "www");
- desc = avmService.lookup(-1, storeName + ":/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "one", PermissionService.ALL_PERMISSIONS, true);
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 1);
-
- avmService.createDirectory(storeName + ":/www", "avm-web-apps");
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "two", PermissionService.ALL_PERMISSIONS, true);
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 2);
- desc = avmService.lookup(-1, storeName + ":/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 1);
-
- avmService.createDirectory(storeName + ":/www/avm-web-apps", "ROOT");
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "three", PermissionService.ALL_PERMISSIONS, true);
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 3);
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 2);
- desc = avmService.lookup(-1, storeName + ":/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 1);
-
- avmService.createDirectory(storeName + ":/www/avm-web-apps/ROOT", "test");
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT/test");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "four", PermissionService.ALL_PERMISSIONS, true);
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 4);
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 3);
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 2);
- desc = avmService.lookup(-1, storeName + ":/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 1);
-
- avmService.createSnapshot(storeName, null, null);
- avmService.createStore(storeName + "-a-");
- avmService.createLayeredDirectory(storeName + ":/www", storeName + "-a-:/", "www");
-
- avmService.rename(storeName + "-a-:/www/avm-web-apps/ROOT", "test", storeName + "-a-:/www/avm-web-apps/ROOT", "banana");
- // System.out.println("In Source");
- // debugPermissions(storeName + ":/");
- // debugPermissions(storeName + ":/www");
- // debugPermissions(storeName + ":/www/avm-web-apps");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT/test");
- // System.out.println("In Layer");
- // debugPermissions(storeName + "-a-:/");
- // debugPermissions(storeName + "-a-:/www");
- // debugPermissions(storeName + "-a-:/www/avm-web-apps");
- // debugPermissions(storeName + "-a-:/www/avm-web-apps/ROOT");
- // debugPermissions(storeName + "-a-:/www/avm-web-apps/ROOT/banana");
- }
- finally
- {
- removeStore(storeName);
- removeStore(storeName + "-a-");
- }
- }
-
- public void testRenamePlainFileIntoLayer() throws IOException
- {
- runAs(AuthenticationUtil.getAdminUserName());
- String storeName = "PermissionsTest-" + getName() + "-" + (new Date().getTime());
- try
- {
- AVMNodeDescriptor desc;
- NodeRef nodeRef;
-
- avmService.createStore(storeName);
-
- avmService.createDirectory(storeName + ":/", "www");
- desc = avmService.lookup(-1, storeName + ":/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "one", PermissionService.ALL_PERMISSIONS, true);
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 1);
-
- avmService.createDirectory(storeName + ":/www", "avm-web-apps");
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "two", PermissionService.ALL_PERMISSIONS, true);
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 2);
- desc = avmService.lookup(-1, storeName + ":/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 1);
-
- avmService.createDirectory(storeName + ":/www/avm-web-apps", "ROOT");
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "three", PermissionService.ALL_PERMISSIONS, true);
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 3);
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 2);
- desc = avmService.lookup(-1, storeName + ":/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 1);
-
- avmService.createFile(storeName + ":/www/avm-web-apps/ROOT", "test").close();
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT/test");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- permissionService.setPermission(nodeRef, "four", PermissionService.ALL_PERMISSIONS, true);
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 4);
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps/ROOT");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 3);
- desc = avmService.lookup(-1, storeName + ":/www/avm-web-apps");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 2);
- desc = avmService.lookup(-1, storeName + ":/www");
- nodeRef = AVMNodeConverter.ToNodeRef(-1, desc.getPath());
- assertEquals(permissionService.getSetPermissions(nodeRef).getPermissionEntries().size(), 1);
-
- avmService.createSnapshot(storeName, null, null);
- avmService.createStore(storeName + "-a-");
- avmService.createLayeredDirectory(storeName + ":/www", storeName + "-a-:/", "www");
-
- avmService.rename(storeName + "-a-:/www/avm-web-apps/ROOT", "test", storeName + "-a-:/www/avm-web-apps/ROOT", "banana");
- // System.out.println("File In Source");
- // debugPermissions(storeName + ":/");
- // debugPermissions(storeName + ":/www");
- // debugPermissions(storeName + ":/www/avm-web-apps");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT");
- // debugPermissions(storeName + ":/www/avm-web-apps/ROOT/test");
- // System.out.println("File In Layer");
- // debugPermissions(storeName + "-a-:/");
- // debugPermissions(storeName + "-a-:/www");
- // debugPermissions(storeName + "-a-:/www/avm-web-apps");
- // debugPermissions(storeName + "-a-:/www/avm-web-apps/ROOT");
- // debugPermissions(storeName + "-a-:/www/avm-web-apps/ROOT/banana");
- }
- finally
- {
- removeStore(storeName);
- removeStore(storeName + "-a-");
- }
- }
-
- /**
- * Helper to write a recursive listing of latest version of an AVMStore.
- * @param repoName The name of the AVMStore.
- */
- protected void recursiveList(String store)
- {
- String list = recursiveList(store, -1, true);
- System.out.println(store+":");
- System.out.println(list);
- }
-
- /**
- * Helper to write a recursive listing of an AVMStore at a given version.
- * @param repoName The name of the AVMStore.
- * @param version The version to look under.
- */
- protected String recursiveList(String repoName, int version, boolean followLinks)
- {
- return recursiveList(repoName + ":/", version, 0, followLinks);
- }
-
- /**
- * Recursive list the given path.
- * @param path The path.
- * @param version The version.
- * @param indent The current indent level.
- */
- protected String recursiveList(String path, int version, int indent, boolean followLinks)
- {
- StringBuilder builder = new StringBuilder();
- for (int i = 0; i < indent; i++)
- {
- builder.append(' ');
- }
- builder.append(path.substring(path.lastIndexOf('/') + 1));
- builder.append(' ');
- AVMNodeDescriptor desc = avmService.lookup(version, path, true);
- builder.append(desc.toString());
- builder.append(" - ");
-
- AVMNode layeredNode = avmNodeDAO.getByID(desc.getId());
- Acl acl = layeredNode.getAcl();
- builder.append(acl);
-
- builder.append('\n');
- if (desc.getType() == AVMNodeType.PLAIN_DIRECTORY ||
- (desc.getType() == AVMNodeType.LAYERED_DIRECTORY && followLinks))
- {
- String basename = path.endsWith("/") ? path : path + "/";
- Map listing = avmService.getDirectoryListing(version, path);
- for (String name : listing.keySet())
- {
- builder.append(recursiveList(basename + name, version, indent + 2, followLinks));
- }
- }
- return builder.toString();
- }
-
-
- private static final String FILE_NAME = "fileForExport";
- private static final String ROOT = "ROOT";
-
- private void createStagingWithSnapshots(String storeName) throws IOException
- {
- removeStore(storeName);
-
- avmService.createStore(storeName);
- assertNotNull(avmService.getStore(storeName));
-
- avmService.createDirectory(storeName + ":/", JNDIConstants.DIR_DEFAULT_WWW);
- avmService.createSnapshot(storeName, "first", "first");
- assertNotNull(avmService.lookup(-1, storeName + ":/" + JNDIConstants.DIR_DEFAULT_WWW));
- avmService.createDirectory(storeName + ":/" + JNDIConstants.DIR_DEFAULT_WWW, JNDIConstants.DIR_DEFAULT_APPBASE);
- avmService.createSnapshot(storeName, "second", "second");
- assertNotNull(avmService.lookup(-1, storeName + ":/" + JNDIConstants.DIR_DEFAULT_WWW + "/" + JNDIConstants.DIR_DEFAULT_APPBASE));
- avmService.createDirectory(storeName + ":/" + JNDIConstants.DIR_DEFAULT_WWW + "/" + JNDIConstants.DIR_DEFAULT_APPBASE, ROOT);
- avmService.createSnapshot(storeName, "third", "third");
- assertNotNull(avmService.lookup(-1, storeName + ":/" + JNDIConstants.DIR_DEFAULT_WWW + "/" + JNDIConstants.DIR_DEFAULT_APPBASE + "/" + ROOT));
- avmService.createFile(storeName + ":/" + JNDIConstants.DIR_DEFAULT_WWW + "/" + JNDIConstants.DIR_DEFAULT_APPBASE + "/" + ROOT, FILE_NAME).close();
- avmService.createSnapshot(storeName, "fourth", "fourth");
- assertNotNull(avmService.lookup(-1, storeName + ":/" + JNDIConstants.DIR_DEFAULT_WWW + "/" + JNDIConstants.DIR_DEFAULT_APPBASE + "/" + ROOT + "/" + FILE_NAME));
-
- }
-
- private void removeStore(String storeName)
- {
- if (avmService.getStore(storeName) != null)
- {
- avmService.purgeStore(storeName);
- }
- assertNull(avmService.getStore(storeName));
- }
-
- public void testSetInheritParentPermissions() throws Exception
- {
- runAs(AuthenticationUtil.getAdminUserName());
- String storeName = "PermissionsTest-" + getName() + "-" + (new Date().getTime());
- try
- {
- createStagingWithSnapshots(storeName);
-
- AVMNodeDescriptor nodeDescriptor = avmService.lookup(-1, storeName + ":/" + JNDIConstants.DIR_DEFAULT_WWW + "/" + JNDIConstants.DIR_DEFAULT_APPBASE + "/" + ROOT + "/"
- + FILE_NAME);
- assertNotNull(nodeDescriptor);
- NodeRef nodeRef = AVMNodeConverter.ToNodeRef(-1, nodeDescriptor.getPath());
- assertNotNull(nodeRef);
-
- permissionService.setInheritParentPermissions(nodeRef, false);
- assertFalse(permissionService.getInheritParentPermissions(nodeRef));
- permissionService.setInheritParentPermissions(nodeRef, true);
- assertTrue(permissionService.getInheritParentPermissions(nodeRef));
- }
- catch (Exception e)
- {
- e.printStackTrace();
- throw e;
- }
- finally
- {
- removeStore(storeName);
- }
- }
-}
diff --git a/source/test-java/org/alfresco/repo/avm/AVMServiceRemoteSystemTest.java b/source/test-java/org/alfresco/repo/avm/AVMServiceRemoteSystemTest.java
deleted file mode 100644
index 48f281b2ce..0000000000
--- a/source/test-java/org/alfresco/repo/avm/AVMServiceRemoteSystemTest.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2005-2010 Alfresco Software Limited.
- *
- * This file is part of Alfresco
- *
- * Alfresco is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Alfresco is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Alfresco. If not, see . */
-
-package org.alfresco.repo.avm;
-
-import org.alfresco.repo.remote.ClientTicketHolder;
-import org.alfresco.service.cmr.avmsync.AVMSyncService;
-import org.alfresco.service.cmr.remote.AVMRemote;
-import org.alfresco.service.cmr.security.AuthenticationService;
-import org.alfresco.test_category.LegacyCategory;
-import org.alfresco.util.NameMatcher;
-import org.junit.experimental.categories.Category;
-import org.springframework.context.support.FileSystemXmlApplicationContext;
-
-/**
- * Remote system tests of AVM (AVMSyncService & AVMService) - requires running repo
- */
-@Category(LegacyCategory.class)
-public class AVMServiceRemoteSystemTest extends AVMServiceLocalTest
-{
- private final static String ADMIN_UN = "admin";
- private final static String ADMIN_PW = "admin";
-
- @Override
- protected void setUp() throws Exception
- {
- if (fContext == null)
- {
- // remote (non-embedded) test setup
- fContext = new FileSystemXmlApplicationContext("config/alfresco/remote-avm-test-context.xml");
- fService = (AVMRemote)fContext.getBean("avmRemote");
- fSyncService = (AVMSyncService)fContext.getBean("avmSyncService");
- excluder = (NameMatcher) fContext.getBean("globalPathExcluder");
-
- AuthenticationService authService = (AuthenticationService)fContext.getBean("authenticationService");
- authService.authenticate(ADMIN_UN, ADMIN_PW.toCharArray());
- String ticket = authService.getCurrentTicket();
- ((ClientTicketHolder)fContext.getBean("clientTicketHolder")).setTicket(ticket);
- }
-
- super.setUp();
- }
-}
diff --git a/source/test-java/org/alfresco/repo/avm/AVMServiceTest.java b/source/test-java/org/alfresco/repo/avm/AVMServiceTest.java
deleted file mode 100644
index 5591503e29..0000000000
--- a/source/test-java/org/alfresco/repo/avm/AVMServiceTest.java
+++ /dev/null
@@ -1,6772 +0,0 @@
-/*
- * Copyright (C) 2005-2012 Alfresco Software Limited.
- *
- * This file is part of Alfresco
- *
- * Alfresco is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Alfresco is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Alfresco. If not, see .
- */
-
-package org.alfresco.repo.avm;
-
-import java.io.BufferedReader;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.PrintStream;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeMap;
-
-import org.alfresco.config.JNDIConstants;
-import org.alfresco.model.ContentModel;
-import org.alfresco.model.WCMModel;
-import org.alfresco.repo.action.ActionImpl;
-import org.alfresco.repo.avm.actions.AVMRevertListAction;
-import org.alfresco.repo.avm.actions.AVMRevertStoreAction;
-import org.alfresco.repo.avm.actions.AVMRevertToVersionAction;
-import org.alfresco.repo.avm.actions.AVMUndoSandboxListAction;
-import org.alfresco.repo.avm.actions.SimpleAVMPromoteAction;
-import org.alfresco.repo.avm.actions.SimpleAVMSubmitAction;
-import org.alfresco.repo.avm.util.BulkLoader;
-import org.alfresco.repo.content.MimetypeMap;
-import org.alfresco.repo.domain.PropertyValue;
-import org.alfresco.repo.search.impl.lucene.AbstractLuceneQueryParser;
-import org.alfresco.repo.security.authentication.AuthenticationUtil;
-import org.alfresco.repo.transaction.RetryingTransactionHelper;
-import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
-import org.alfresco.service.cmr.avm.AVMBadArgumentException;
-import org.alfresco.service.cmr.avm.AVMCycleException;
-import org.alfresco.service.cmr.avm.AVMException;
-import org.alfresco.service.cmr.avm.AVMExistsException;
-import org.alfresco.service.cmr.avm.AVMNodeDescriptor;
-import org.alfresco.service.cmr.avm.AVMNotFoundException;
-import org.alfresco.service.cmr.avm.AVMService;
-import org.alfresco.service.cmr.avm.AVMStoreDescriptor;
-import org.alfresco.service.cmr.avm.LayeringDescriptor;
-import org.alfresco.service.cmr.avm.VersionDescriptor;
-import org.alfresco.service.cmr.avmsync.AVMDifference;
-import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
-import org.alfresco.service.cmr.model.FileFolderService;
-import org.alfresco.service.cmr.remote.RepoRemote;
-import org.alfresco.service.cmr.repository.ContentData;
-import org.alfresco.service.cmr.repository.ContentWriter;
-import org.alfresco.service.cmr.repository.CrossRepositoryCopyService;
-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.cmr.search.ResultSet;
-import org.alfresco.service.cmr.search.ResultSetRow;
-import org.alfresco.service.cmr.search.SearchService;
-import org.alfresco.service.cmr.security.AccessPermission;
-import org.alfresco.service.cmr.security.PermissionService;
-import org.alfresco.service.namespace.NamespaceService;
-import org.alfresco.service.namespace.QName;
-import org.alfresco.service.transaction.TransactionService;
-import org.alfresco.test_category.LegacyCategory;
-import org.alfresco.util.GUID;
-import org.alfresco.util.Pair;
-import org.alfresco.util.SearchLanguageConversion;
-import org.alfresco.wcm.sandbox.SandboxConstants;
-import org.junit.experimental.categories.Category;
-
-/**
- * Big test of AVM behavior.
- *
- * @author britt
- */
-@Category(LegacyCategory.class)
-public class AVMServiceTest extends AVMServiceTestBase
-{
- public void testSetup() throws Exception
- {
- super.testSetup();
- }
-
- public void testSetupAndQueriesAgainstBasicTree() throws Exception
- {
- setupBasicTree();
- runQueriesAgainstBasicTree("main");
- }
-
- public void testDiffOrder() throws IOException
- {
- try
- {
- fService.createStore("Bottom");
- fService.createStore("Top");
-
- fService.createDirectory("Bottom:/", "www");
- fService.createLayeredDirectory("Bottom:/www", "Top:/", "www");
-
- fService.createFile("Bottom:/www", "newInBottom").close();
- fService.createSnapshot("Bottom", null, null);
- fService.createFile("Top:/www", "newInTop").close();
- fService.createSnapshot("Top", null, null);
- fService.createFile("Bottom:/www", "file").close();
- fService.createSnapshot("Bottom", null, null);
- fService.forceCopy("Top:/www/file");
- fService.createSnapshot("Top", null, null);
- fService.forceCopy("Bottom:/www/file");
- fService.createSnapshot("Bottom", null, null);
-
-
- List diffs = fSyncService.compare(-1, "Top:/", -1, "Bottom:/", null);
- assertEquals(
- 2, diffs.size());
- Collections.sort(diffs);
- AVMDifference last = null;
- for(AVMDifference current : diffs)
- {
- if(last != null)
- {
- assert(last.getOrderValue() < current.getOrderValue());
- }
- last = current;
- }
-
- diffs.add(new AVMDifference(1, null, -1, null, 0));
- diffs.add(new AVMDifference(1, null, -1, null, 1));
- diffs.add(new AVMDifference(1, null, -1, null, 2));
- diffs.add(new AVMDifference(1, null, -1, null, 3));
- diffs.add(new AVMDifference(1, null, -1, null, 4));
- diffs.add(new AVMDifference(1, null, -1, null, 5));
- diffs.add(new AVMDifference(1, null, -1, null, 6));
-
- Collections.sort(diffs);
- last = null;
- for(AVMDifference current : diffs)
- {
- if(last != null)
- {
- assert(last.getOrderValue() < current.getOrderValue());
- }
- last = current;
- }
- }
- finally
- {
- fService.purgeStore("Bottom");
- fService.purgeStore("Top");
- }
-
- }
-
- private enum DiffActionEnum
- {
- CREATION, MODIFICATION, DELETION, DELETION_AND_MODIFICATION
- }
-
- /**
- * Test is related to ALF-4098
- *
- * @throws Exception
- */
- public void testDiffOfNewItems() throws Exception
- {
- try
- {
- performeDiffTesting(DiffActionEnum.CREATION);
- }
- finally
- {
- fService.purgeStore("testStore");
- fService.purgeStore("submitStore");
- }
- }
-
- /**
- * Test is related to ALF-4098
- *
- * @throws Exception
- */
- public void testDiffOfModifiedItems() throws Exception
- {
- try
- {
- performeDiffTesting(DiffActionEnum.MODIFICATION);
- }
- finally
- {
- fService.purgeStore("testStore");
- fService.purgeStore("submitStore");
- }
- }
-
- /**
- * Test is related to ALF-4098
- *
- * @throws Exception
- */
- public void testDiffOfDeletedItems() throws Exception
- {
- try
- {
- performeDiffTesting(DiffActionEnum.DELETION);
- }
- finally
- {
- fService.purgeStore("testStore");
- fService.purgeStore("submitStore");
- }
- }
-
- public void testDiffOfDeletedItemsInModifiedDirectory() throws Exception
- {
- try
- {
- performeDiffTesting(DiffActionEnum.DELETION_AND_MODIFICATION);
- }
- finally
- {
- fService.purgeStore("testStore");
- fService.purgeStore("submitStore");
- }
- }
-
- private void performeDiffTesting(DiffActionEnum action) throws IOException
- {
- fService.createStore("testStore");
- fService.createStore("submitStore");
-
- fService.createDirectory("submitStore:/", "root");
- fService.createLayeredDirectory("submitStore:/root", "testStore:/", "root");
- fService.createSnapshot("testStore", null, null);
-
- fService.createDirectory("testStore:/root", "test");
-
- for (int i = 0; i < 10; i++)
- {
- fService.createFile("testStore:/root/test", ("testFileN" + i + ".txt")).close();
- }
-
- List diffs = fSyncService.compare(-1, "testStore:/root/", -1, "submitStore:/root/", null);
- if (DiffActionEnum.CREATION != action)
- {
- fSyncService.update(diffs, null, true, true, false, true, null, null);
- fSyncService.flatten("testStore:/root/", "submitStore:/root/");
- diffs = fSyncService.compare(-1, "testStore:/root/", -1, "submitStore:/root/", null);
- }
-
- List actual = fSyncService.compare(-1, "testStore:/root/", -1, "submitStore:/root/", null, true);
-
- if (DiffActionEnum.CREATION == action)
- {
- assertEquals(11, actual.size());
-
- assertEquals(1, diffs.size());
- List newDiff = fSyncService.compare(-1, "testStore:/root/", -1, "submitStore:/root/", null, false);
- assertEquals(diffs.toString(), newDiff.toString());
- }
- else
- {
- assertEquals(0, actual.size());
- assertEquals(0, diffs.size());
- }
-
- String parentPath = "testStore:/root/test/";
- if (DiffActionEnum.CREATION == action)
- {
- fService.createDirectory(parentPath, "inner");
- parentPath += "inner/";
- }
-
- int start = (DiffActionEnum.DELETION == action) ? (1) : (0);
- int incrementingStep = start + 1;
-
- for (int i = start; i < 10; i += incrementingStep)
- {
- String name = "testFileN" + i + ".txt";
- String path = parentPath + name;
-
- switch (action)
- {
- case CREATION:
- {
- fService.createFile(parentPath, name).close();
- break;
- }
- case MODIFICATION:
- {
- fService.setNodeProperty(path, WCMModel.PROP_REVERTED_ID, new PropertyValue(WCMModel.PROP_REVERTED_ID, null));
- break;
- }
- default:
- {
- fService.removeNode(path);
- }
- }
- }
-
- int actualModificationsCount = (DiffActionEnum.DELETION == action) ? (5) : ((DiffActionEnum.CREATION == action) ? (22) : (10));
- int diffModificationsCount = (DiffActionEnum.DELETION == action) ? (5) : ((DiffActionEnum.CREATION == action) ? (1) : (10));
-
- actual = fSyncService.compare(-1, "testStore:/root", -1, "submitStore:/root", null, true);
- diffs = fSyncService.compare(-1, "testStore:/root", -1, "submitStore:/root", null);
-
- assertEquals(actualModificationsCount, actual.size());
- assertEquals(diffModificationsCount, diffs.size());
-
- if (DiffActionEnum.CREATION != action)
- {
- assertDiffsList(AVMDifference.NEWER, diffs);
- assertEquals(diffs.toString(), actual.toString());
- }
-
- if (DiffActionEnum.CREATION != action)
- {
- if (DiffActionEnum.DELETION == action)
- {
- fService.removeNode("testStore:/root/test");
- }
- else
- {
- fService.setNodeProperty("testStore:/root/test", WCMModel.PROP_REVERTED_ID, new PropertyValue(WCMModel.PROP_REVERTED_ID, null));
- }
-
- actual = fSyncService.compare(-1, "testStore:/root/", -1, "submitStore:/root/", null, true);
- diffs = fSyncService.compare(-1, "testStore:/root/", -1, "submitStore:/root/", null);
-
- actualModificationsCount = (DiffActionEnum.DELETION == action) ? (1) : (actualModificationsCount + 1);
-
- assertEquals(actualModificationsCount, actual.size());
- assertEquals(1, diffs.size());
-
- assertDiffsList(AVMDifference.NEWER, actual);
- assertDiffsList(AVMDifference.NEWER, diffs);
- }
- }
-
- private void assertDiffsList(int expectedCode, List actual)
- {
- for (AVMDifference diff : actual)
- {
- assertNotNull(diff);
- assertTrue(diff.isValid());
- assertEquals(expectedCode, diff.getDifferenceCode());
- }
- }
-
- public void test_ETWOTWO_570() throws Exception
- {
- // Check that read-write methods are properly intercepted
- RetryingTransactionCallback readOnlyCallback = new RetryingTransactionCallback()
- {
- public Object execute() throws Throwable
- {
- String storeName = "StagingArea" + "-" + getName() + "-" + System.currentTimeMillis();
- fService.createStore(storeName);
- fService.purgeStore(storeName);
- return null;
- }
- };
- fTransactionService.getRetryingTransactionHelper().doInTransaction(readOnlyCallback, false, true);
- }
-
- public void test_WCM_949() throws Exception
- {
- try
- {
- fService.createStore("StagingArea");
- fService.createStore("SandBox");
-
- fService.createDirectory("StagingArea:/", "www");
- fService.createLayeredDirectory("StagingArea:/www", "SandBox:/", "www");
-
- fService.createDirectory("SandBox:/www", "TestFolder");
- fService.createFile("SandBox:/www/TestFolder", "test1").close();
-
- List diffs = fSyncService.compare(-1, "SandBox:/www", -1, "StagingArea:/www", null);
- assertEquals(1, diffs.size());
- assertEquals("[SandBox:/www/TestFolder[-1] > StagingArea:/www/TestFolder[-1]]", diffs.toString());
- fSyncService.update(diffs, null, true, true, false, false, "one", "one");
- fSyncService.flatten("SandBox:/www", "StagingArea:/www");
-
- StoreRef storeRef = AVMNodeConverter.ToStoreRef("StagingArea");
- SearchService searchService = fIndexerAndSearcher.getSearcher(storeRef, true);
- ResultSet results = searchService.query(storeRef, "lucene", "@cm\\:name:test1");
- assertEquals(1, results.length());
- results.close();
-
- fService.removeNode("SandBox:/www/TestFolder");
-
- diffs = fSyncService.compare(-1, "SandBox:/www", -1, "StagingArea:/www", null);
- assertEquals(1, diffs.size());
- assertEquals("[SandBox:/www/TestFolder[-1] > StagingArea:/www/TestFolder[-1]]", diffs.toString());
- fSyncService.update(diffs, null, true, true, false, false, "one", "one");
- fSyncService.flatten("SandBox:/www", "StagingArea:/www");
-
- results = searchService.query(storeRef, "lucene", "@cm\\:name:test1");
- assertEquals(0, results.length());
- results.close();
-
- fService.createDirectory("SandBox:/www", "TestFolder");
- fService.createFile("SandBox:/www/TestFolder", "test1").close();
-
- diffs = fSyncService.compare(-1, "SandBox:/www", -1, "StagingArea:/www", null);
- assertEquals(1, diffs.size());
- assertEquals("[SandBox:/www/TestFolder[-1] > StagingArea:/www/TestFolder[-1]]", diffs.toString());
- fSyncService.update(diffs, null, true, true, false, false, "one", "one");
- fSyncService.flatten("SandBox:/www", "StagingArea:/www");
-
- results = searchService.query(storeRef, "lucene", "@cm\\:name:test1");
- assertEquals(1, results.length());
- results.close();
- }
- finally
- {
- fService.purgeStore("StagingArea");
- fService.purgeStore("SandBox");
- }
-
- }
-
- public void testPathEncoding() throws Throwable
- {
- try
- {
- setupBasicTree();
- fService.createFile("main:/", "2007").close();
- fService.createFile("main:/", "meep meep").close();
- fService.createDirectory("main:/", "my space");
- fService.createFile("main:/my space", "my file").close();
- fService.createDirectory("main:/", "2001");
- fService.createFile("main:/2001", "2002").close();
- fService.createSnapshot("main", null, null);
-
- StoreRef storeRef = AVMNodeConverter.ToStoreRef("main");
- SearchService searchService = fIndexerAndSearcher.getSearcher(storeRef, true);
- ResultSet results = searchService.query(storeRef, "lucene", "PATH:\"/meep_x0020_meep\"");
- assertEquals(1, results.length());
- System.out.println(results.getNodeRef(0));
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/_x0032_007\"");
- assertEquals(1, results.length());
- System.out.println(results.getNodeRef(0));
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/my_x0020_space/my_x0020_file\"");
- assertEquals(1, results.length());
- System.out.println(results.getNodeRef(0));
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/_x0032_001/_x0032_002\"");
- assertEquals(1, results.length());
- System.out.println(results.getNodeRef(0));
- results.close();
- }
- catch (Exception e)
- {
- e.printStackTrace();
- throw e;
- }
- }
-
- public void testSpacesInStoreNames() throws Exception
- {
- try
- {
- fService.createStore("I have spaces");
- fService.createFile("I have spaces:/", "in my name.txt").close();
- assertNotNull(fService.lookup(-1, "I have spaces:/in my name.txt"));
- }
- catch (Exception e)
- {
- e.printStackTrace();
- throw e;
- }
- finally
- {
- fService.purgeStore("I have spaces");
- }
- }
-
- public void testHeadPathsInLayers() throws Exception
- {
- try
- {
- setupBasicTree();
- fService.createStore("user");
- fService.createLayeredDirectory("main:/a", "user:/", "a");
- fService.createStore("sandbox");
- fService.createLayeredDirectory("main:/a", "sandbox:/", "a");
- fService.createDirectory("user:/a/b", "newdir");
- fService.createFile("user:/a/b/newdir", "bibble.txt").close();
- List diffs = fSyncService.compare(-1, "user:/a", -1, "sandbox:/a", null);
- assertEquals(1, diffs.size());
- assertEquals("[user:/a/b/newdir[-1] > sandbox:/a/b/newdir[-1]]", diffs.toString());
- fSyncService.update(diffs, null, false, false, false, false, null, null);
- AVMNodeDescriptor dir = fService.lookup(-1, "user:/a/b/newdir");
- List> paths = fService.getHeadPaths(dir);
- System.out.println(paths);
- AVMNodeDescriptor file = fService.lookup(-1, "user:/a/b/newdir/bibble.txt");
- paths = fService.getHeadPaths(file);
- System.out.println(paths);
- }
- catch (Exception e)
- {
- e.printStackTrace();
- throw e;
- }
- finally
- {
- fService.purgeStore("user");
- fService.purgeStore("sandbox");
- }
- }
-
-
- /**
- * Test version by date lookup.
- */
- public void testVersionByDate() throws Exception
- {
- try
- {
- ArrayList times = new ArrayList();
- BulkLoader loader = new BulkLoader();
- loader.setAvmService(fService);
-
- assertEquals(1, fService.getStoreVersions("main").size());
-
- loader.recursiveLoad(getSourceFolder()+"/org/alfresco/repo/avm/actions", "main:/");
-
- long time = System.currentTimeMillis();
- times.add(time);
- while(! (System.currentTimeMillis() > time)) { }
-
- assertEquals(1, fService.createSnapshot("main", null, null).get("main").intValue());
-
- loader.recursiveLoad(getSourceFolder()+"/org/alfresco/repo/avm/ibatis", "main:/");
-
- time = System.currentTimeMillis();
- times.add(time);
- while(! (System.currentTimeMillis() > time)) { }
-
- assertEquals(2, fService.createSnapshot("main", null, null).get("main").intValue());
-
- loader.recursiveLoad(getSourceFolder()+"/org/alfresco/repo/avm/locking", "main:/");
-
- time = System.currentTimeMillis();
- times.add(time);
- while(! (System.currentTimeMillis() > time)) { }
-
- assertEquals(3, fService.createSnapshot("main", null, null).get("main").intValue());
-
- assertEquals(4, fService.getStoreVersions("main").size());
-
- assertEquals(1, fService.getStoreVersions("main", null, new Date(times.get(0))).size());
- assertEquals(3, fService.getStoreVersions("main", new Date(times.get(0)), null).size());
- assertEquals(2, fService.getStoreVersions("main", new Date(times.get(1)), new Date(System.currentTimeMillis())).size());
-
- // TO
- assertEquals(1, fService.getStoreVersionsTo("main", 0).size());
- assertEquals(0, fService.getStoreVersionsTo("main", 0).get(0).getVersionID());
- assertEquals(2, fService.getStoreVersionsTo("main", 1).size());
- assertEquals(0, fService.getStoreVersionsTo("main", 1).get(0).getVersionID());
- assertEquals(1, fService.getStoreVersionsTo("main", 1).get(1).getVersionID());
- assertEquals(3, fService.getStoreVersionsTo("main", 2).size());
- assertEquals(0, fService.getStoreVersionsTo("main", 2).get(0).getVersionID());
- assertEquals(1, fService.getStoreVersionsTo("main", 2).get(1).getVersionID());
- assertEquals(2, fService.getStoreVersionsTo("main", 2).get(2).getVersionID());
- assertEquals(4, fService.getStoreVersionsTo("main", 3).size());
- assertEquals(0, fService.getStoreVersionsTo("main", 3).get(0).getVersionID());
- assertEquals(1, fService.getStoreVersionsTo("main", 3).get(1).getVersionID());
- assertEquals(2, fService.getStoreVersionsTo("main", 3).get(2).getVersionID());
- assertEquals(3, fService.getStoreVersionsTo("main", 3).get(3).getVersionID());
-
- // FROM
-
- assertEquals(4, fService.getStoreVersionsFrom("main", 0).size());
- assertEquals(0, fService.getStoreVersionsFrom("main", 0).get(0).getVersionID());
- assertEquals(1, fService.getStoreVersionsFrom("main", 0).get(1).getVersionID());
- assertEquals(2, fService.getStoreVersionsFrom("main", 0).get(2).getVersionID());
- assertEquals(3, fService.getStoreVersionsFrom("main", 0).get(3).getVersionID());
- assertEquals(3, fService.getStoreVersionsFrom("main", 1).size());
- assertEquals(1, fService.getStoreVersionsFrom("main", 1).get(0).getVersionID());
- assertEquals(2, fService.getStoreVersionsFrom("main", 1).get(1).getVersionID());
- assertEquals(3, fService.getStoreVersionsFrom("main", 1).get(2).getVersionID());
- assertEquals(2, fService.getStoreVersionsFrom("main", 2).size());
- assertEquals(2, fService.getStoreVersionsFrom("main", 2).get(0).getVersionID());
- assertEquals(3, fService.getStoreVersionsFrom("main", 2).get(1).getVersionID());
- assertEquals(1, fService.getStoreVersionsFrom("main", 3).size());
- assertEquals(3, fService.getStoreVersionsFrom("main", 3).get(0).getVersionID());
- assertEquals(0, fService.getStoreVersionsFrom("main", 4).size());
-
- // BETWEEN
-
- assertEquals(1, fService.getStoreVersionsBetween("main", 0, 0).size());
- assertEquals(0, fService.getStoreVersionsBetween("main", 0, 0).get(0).getVersionID());
- assertEquals(1, fService.getStoreVersionsBetween("main", 1, 1).size());
- assertEquals(1, fService.getStoreVersionsBetween("main", 1, 1).get(0).getVersionID());
- assertEquals(1, fService.getStoreVersionsBetween("main", 2, 2).size());
- assertEquals(2, fService.getStoreVersionsBetween("main", 2, 2).get(0).getVersionID());
- assertEquals(1, fService.getStoreVersionsBetween("main", 3, 3).size());
- assertEquals(3, fService.getStoreVersionsBetween("main", 3, 3).get(0).getVersionID());
- assertEquals(0, fService.getStoreVersionsBetween("main", 4, 4).size());
-
-
- assertEquals(2, fService.getStoreVersionsBetween("main", 1, 2).size());
- assertEquals(1, fService.getStoreVersionsBetween("main", 1, 2).get(0).getVersionID());
- assertEquals(2, fService.getStoreVersionsBetween("main", 1, 2).get(1).getVersionID());
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- /**
- * Test (node) properties.
- */
- public void testProperties() throws Exception
- {
- try
- {
- setupBasicTree();
-
- StoreRef storeRef = AVMNodeConverter.ToStoreRef("main");
- SearchService searchService = fIndexerAndSearcher.getSearcher(storeRef, true);
- ResultSet results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@{silly.uri}SillyProperty") + ":\"Silly\"");
- assertEquals(0, results.length());
- results.close();
-
- QName name = QName.createQName("silly.uri", "SillyProperty");
- PropertyValue value = new PropertyValue(DataTypeDefinition.TEXT, "Silly Property Value");
- fService.setNodeProperty("main:/a/b/c/foo", name, value);
- fService.createSnapshot("main", null, null);
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@{silly.uri}SillyProperty") + ":\"Silly\"");
- assertEquals(1, results.length());
- results.close();
- PropertyValue returned = fService.getNodeProperty(-1, "main:/a/b/c/foo", name);
- assertEquals(value.toString(), returned.toString());
- Map props = fService.getNodeProperties(-1, "main:/a/b/c/foo");
- assertEquals(1, props.size());
- assertEquals(value.toString(), props.get(name).toString());
-
- props = new HashMap();
- QName n1 = QName.createQName("silly.uri", "Prop1");
- PropertyValue p1 = new PropertyValue(DataTypeDefinition.DATETIME, new Date(System.currentTimeMillis()));
- props.put(n1, p1);
- QName n2 = QName.createQName("silly.uri", "Prop2");
- PropertyValue p2 = new PropertyValue(DataTypeDefinition.TEXT, "A String Property.");
- props.put(n2, p2);
- QName n3 = QName.createQName("silly.uri", "Prop3");
- PropertyValue p3 = new PropertyValue(DataTypeDefinition.INT, 42);
- props.put(n3, p3);
- QName n4 = QName.createQName("silly.uri", "Prop4");
- PropertyValue p4 = new PropertyValue(null, new Boolean(false));
- props.put(n4, p4);
- QName n5 = QName.createQName("silly.uri", "Prop5");
- List strList = new ArrayList(2);
- strList.add("hello");
- strList.add("world");
- PropertyValue p5 = new PropertyValue(DataTypeDefinition.TEXT, (Serializable)strList);
- props.put(n5, p5);
- fService.setNodeProperties("main:/a/b/c/bar", props);
- fService.createSnapshot("main", null, null);
- props = fService.getNodeProperties(-1, "main:/a/b/c/bar");
- assertEquals(5, props.size());
- assertEquals(p1.toString(), props.get(n1).toString());
- assertEquals(p2.toString(), props.get(n2).toString());
- assertEquals(p3.toString(), props.get(n3).toString());
- assertEquals(p4.toString(), props.get(n4).toString());
- assertEquals(p5.toString(), props.get(n5).toString());
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@{silly.uri}Prop1") + ":\"" + props.get(n1).getStringValue() + "\"");
- assertEquals(1, results.length());
- results.close();
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@{silly.uri}Prop2") + ":\"" + props.get(n2).getStringValue() + "\"");
- assertEquals(1, results.length());
- results.close();
-
- props = new HashMap();
- n1 = QName.createQName("silly.uri", "Prop1");
- p1 = new PropertyValue(DataTypeDefinition.DATETIME, new Date(System.currentTimeMillis()));
- props.put(n1, p1);
- n2 = QName.createQName("silly.uri", "Prop2");
- p2 = new PropertyValue(DataTypeDefinition.TEXT, "A String Property - updated.");
- props.put(n2, p2);
- n3 = QName.createQName("silly.uri", "Prop3");
- p3 = new PropertyValue(DataTypeDefinition.INT, -42);
- props.put(n3, p3);
- n4 = QName.createQName("silly.uri", "Prop4");
- p4 = new PropertyValue(null, new Boolean(true));
- props.put(n4, p4);
- n5 = QName.createQName("silly.uri", "Prop5");
- strList = new ArrayList(2);
- strList.add("goodbye");
- strList.add("world");
- p5 = new PropertyValue(DataTypeDefinition.TEXT, (Serializable)strList);
- props.put(n5, p5);
- fService.setNodeProperties("main:/a/b/c/bar", props);
- fService.createSnapshot("main", null, null);
- props = fService.getNodeProperties(-1, "main:/a/b/c/bar");
- assertEquals(5, props.size());
- assertEquals(p1.toString(), props.get(n1).toString());
- assertEquals(p2.toString(), props.get(n2).toString());
- assertEquals(p3.toString(), props.get(n3).toString());
- assertEquals(p4.toString(), props.get(n4).toString());
- assertEquals(p5.toString(), props.get(n5).toString());
-
- fService.deleteNodeProperty("main:/a/b/c/bar", n1);
- fService.createSnapshot("main", null, null);
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@{silly.uri}Prop1") + ":\"" + props.get(n1).getStringValue() + "\"");
- assertEquals(0, results.length());
- results.close();
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@{silly.uri}Prop2") + ":\"" + props.get(n2).getStringValue() + "\"");
- assertEquals(1, results.length());
- results.close();
-
- props = fService.getNodeProperties(-1, "main:/a/b/c/bar");
- assertEquals(4, props.size());
- assertEquals(p2.toString(), props.get(n2).toString());
- assertEquals(p3.toString(), props.get(n3).toString());
- assertEquals(p4.toString(), props.get(n4).toString());
- assertEquals(p5.toString(), props.get(n5).toString());
- fService.deleteNodeProperties("main:/a/b/c/bar");
- fService.createSnapshot("main", null, null);
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@{silly.uri}Prop1") + ":\"" + p1.getStringValue() + "\"");
- assertEquals(0, results.length());
- results.close();
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@{silly.uri}Prop2") + ":\"" + props.get(n2).getStringValue() + "\"");
- assertEquals(0, results.length());
- results.close();
-
- props = fService.getNodeProperties(-1, "main:/a/b/c/bar");
- assertEquals(0, props.size());
-
- fService.removeNode("main:/a/b/c/foo");
- assertEquals(1, fService.getNodeProperties(-1, "main:/a/b/c/foo").size());
- fService.setNodeProperty("main:/a/b/c/foo", QName.createQName("silly.uri", "Prop1"), new PropertyValue(null, 42));
- assertEquals(2, fService.getNodeProperties(-1, "main:/a/b/c/foo").size());
-
- fService.createSnapshot("main", null, null);
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@{silly.uri}Prop1") + ":\"" + p1.getStringValue() + "\"");
- assertEquals(0, results.length());
- results.close();
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@{silly.uri}Prop2") + ":\"" + p2.getStringValue() + "\"");
- assertEquals(0, results.length());
- results.close();
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- /**
- * Test getStoreVersionRootPaths().
- */
- public void testGetStoreVersionRootPaths() throws Exception
- {
- try
- {
- setupBasicTree();
- AVMNodeDescriptor desc = fService.lookup(-1, "main:/a/b/c/foo");
- List paths = fService.getPathsInStoreVersion(desc, "main", 1);
- assertEquals(1, paths.size());
- assertEquals("main:/a/b/c/foo", paths.get(0));
- fService.getFileOutputStream("main:/a/b/c/foo").close();
- fService.createSnapshot("main", null, null);
- fService.getFileOutputStream("main:/a/b/c/foo").close();
- fService.createSnapshot("main", null, null);
- fService.getFileOutputStream("main:/a/b/c/foo").close();
- fService.createSnapshot("main", null, null);
- fService.getFileOutputStream("main:/a/b/c/foo").close();
- fService.createSnapshot("main", null, null);
- fService.getFileOutputStream("main:/a/b/c/foo").close();
- fService.createSnapshot("main", null, null);
- fService.getFileOutputStream("main:/a/b/c/foo").close();
- fService.createSnapshot("main", null, null);
- fService.getFileOutputStream("main:/a/b/c/foo").close();
- fService.createSnapshot("main", null, null);
- fService.getFileOutputStream("main:/a/b/c/foo").close();
- fService.createSnapshot("main", null, null);
- paths = fService.getPathsInStoreVersion(desc, "main", 1);
- assertEquals(1, paths.size());
- assertEquals("main:/a/b/c/foo", paths.get(0));
- }
- catch (Exception e)
- {
- e.printStackTrace();
- throw e;
- }
- }
-
- public void testForceCopyDeleted() throws Exception
- {
- try
- {
- setupBasicTree();
- fService.removeNode("main:/a/b/c/foo");
- fService.createSnapshot("main", null, null);
- AVMNodeDescriptor desc = fService.forceCopy("main:/a/b/c/foo");
- assertTrue(desc.isDeleted());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- throw e;
- }
- }
-
- public void testLayerSnapshots() throws Exception
- {
- try
- {
- // Layers are not yet indexed
- setupBasicTree();
- assertEquals(1, fService.createSnapshot("main", null, null).get("main").intValue());
- runQueriesAgainstBasicTree("main");
- fService.createStore("layer");
- fService.createLayeredDirectory("main:/a", "layer:/", "a");
- fService.createSnapshot("layer", null, null);
- runQueriesAgainstBasicTree("main");
- fService.createFile("main:/a", "Xander").close();
- fService.createSnapshot("layer", null, null);
-
- assertEquals(2, fService.lookup(2, "layer:/a").getIndirectionVersion());
- Map listing =fService.getDirectoryListing(2, "layer:/");
- assertEquals(1, listing.size());
- assertEquals(2, listing.values().iterator().next().getIndirectionVersion());
- assertEquals(fService.lookup(2, "main:/a/Xander").getId(), fService.lookup(2, "layer:/a/Xander").getId());
-
- assertNull(fService.lookup(1, "layer:/a/Xander"));
- listing = fService.getDirectoryListing(1, "layer:/");
- assertEquals(1, listing.size());
- assertEquals(1, listing.values().iterator().next().getIndirectionVersion());
-
- assertEquals(-1, fService.lookup(-1, "layer:/a").getIndirectionVersion());
- listing = fService.getDirectoryListing(-1, "layer:/");
- assertEquals(1, listing.size());
- assertEquals(-1, listing.values().iterator().next().getIndirectionVersion());
- assertEquals(fService.lookup(-1, "main:/a/Xander").getId(), fService.lookup(-1, "layer:/a/Xander").getId());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- throw e;
- }
- finally
- {
- fService.purgeStore("layer");
- }
- }
-
- public void testBranchLayerSnapshot() throws Exception
- {
- try
- {
- // layers are not yet indexed
- setupBasicTree();
- fService.createStore("layer");
- fService.createDirectory("layer:/", "root");
- fService.createLayeredDirectory("main:/a", "layer:/root", "layer");
- fService.createSnapshot("layer", null, null);
- fService.createFile("main:/a", "dummy").close();
- fService.createFile("layer:/root/layer", "pygmy").close();
- fService.createSnapshot("layer", null, null);
- fService.createStore("branch");
- fService.createBranch(1, "layer:/root", "branch:/", "branch");
- fService.createSnapshot("branch", null, null);
- fService.getFileOutputStream("main:/a/b/c/foo").close();
- System.out.println("main 1");
- System.out.println(recursiveList("main", 1, true));
- System.out.println("branch 1");
- System.out.println(recursiveList("branch", 1, true));
- assertEquals(fService.lookup(1, "main:/a/b/c/foo").getId(), fService.lookup(1, "branch:/branch/layer/b/c/foo").getId());
- System.out.println("main -1");
- System.out.println(recursiveList("main", -1, true));
- System.out.println("branch -1");
- System.out.println(recursiveList("branch", -1, true));
- assertEquals(fService.lookup(-1, "main:/a/b/c/foo").getId(), fService.lookup(-1, "branch:/branch/layer/b/c/foo").getId());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- throw e;
- }
- finally
- {
- fService.purgeStore("layer");
- fService.purgeStore("branch");
- }
- }
-
- /**
- * Test Deployment.
- */
-/*
- public void testDeployment() throws Exception
- {
- try
- {
- final DeploymentService depService = (DeploymentService) fContext.getBean("DeploymentService");
- NameMatcher matcher = (NameMatcher) fContext.getBean("globalPathExcluder");
- setupBasicTree();
- fService.addAspect("main:/a", ContentModel.ASPECT_REFERENCEABLE);
- fService.addAspect("main:/a/b", ContentModel.ASPECT_REFERENCEABLE);
- fService.addAspect("main:/a/b/c", ContentModel.ASPECT_REFERENCEABLE);
- fService.addAspect("main:/a/b/c/foo", ContentModel.ASPECT_REFERENCEABLE);
- fService.addAspect("main:/a/b/c/bar", ContentModel.ASPECT_REFERENCEABLE);
- fService.createFile("main:/a/b", "snarl.bak").close();
- // TestDeploymentCallback callback = new TestDeploymentCallback();
- fService.createStore("target");
- DeploymentReport report = depService.deployDifference(-1, "main:/a", "localhost", 50500, "admin", "admin", "target:/a", matcher, false, false, false, null);
- assertNull(fService.lookup(-1, "target:/a/b/snarl.bak"));
- runQueriesAgainstBasicTreeWithAOnly("target");
- System.out.println(report);
- ActionService actionService = depService.getRemoteActionService("localhost", 50500, "admin", "admin");
- Map params = new HashMap();
- params.put("property", ContentModel.PROP_ADDRESSEE);
- params.put("value", "Santa Claus");
- assertEquals(fService.lookup(-1, "main:/a/b/c/foo").getGuid(), fService.lookup(-1, "target:/a/b/c/foo").getGuid());
- assertEquals(fService.lookup(-1, "main:/a/b/c/bar").getGuid(), fService.lookup(-1, "target:/a/b/c/bar").getGuid());
- NodeRef nodeRef = AVMNodeConverter.ToNodeRef(-1, "target:/a/b/c/foo");
- Action action = new ActionImpl(nodeRef, "set-property-value", "set-property-value", params);
- actionService.executeAction(action, nodeRef, false, false);
- assertEquals("Santa Claus", fService.getNodeProperty(-1, "target:/a/b/c/foo", ContentModel.PROP_ADDRESSEE).getStringValue());
- ContentData srcCD = fService.getContentDataForRead(-1, "main:/a/b/c/bar");
- ContentData dstCD = fService.getContentDataForRead(-1, "target:/a/b/c/bar");
- assertEquals(srcCD.getMimetype(), dstCD.getMimetype());
- fService.createFile("main:/a/b", "biz").close();
- report = depService.deployDifference(-1, "main:/a", "localhost", 50500, "admin", "admin", "target:/a", matcher, false, false, true, null);
- // Nothing was done
- runQueriesAgainstBasicTreeWithAOnly("target");
- System.out.println(report);
- System.out.println(recursiveList("target", -1, true));
- assertNull(fService.lookup(-1, "target:/a/b/biz"));
- report = depService.deployDifference(-1, "main:/a", "localhost", 50500, "admin", "admin", "target:/a", matcher, false, false, false, null);
- System.out.println(report);
- runQueriesForCreateAndDeploy("target");
- assertEquals(fService.lookup(-1, "main:/a/b/biz").getGuid(), fService.lookup(-1, "target:/a/b/biz").getGuid());
- fService.removeNode("main:/a/b/c/foo");
- fService.createFile("main:/a/b/c", "Foo").close();
- ContentWriter writer = fService.getContentWriter("main:/a/b/c/Foo");
- writer.setEncoding("UTF-8");
- writer.setMimetype(MimetypeMap.MIMETYPE_TEXT_PLAIN);
- writer.putContent("I am main:/a/b/c/foo");
- report = depService.deployDifference(-1, "main:/a", "localhost", 50500, "admin", "admin", "target:/a", matcher, false, false, false, null);
- System.out.println(report);
- assertEquals(DeploymentEvent.Type.UPDATED, report.iterator().next().getType());
- fService.removeNode("main:/a/b/c/foo");
- report = depService.deployDifference(-1, "main:/a", "localhost", 50500, "admin", "admin", "target:/a", matcher, false, true, false, null);
- runQueriesForCreateAndDeploy("target");
- System.out.println(report);
- assertNotNull(fService.lookup(-1, "target:/a/b/c/foo"));
- report = depService.deployDifference(-1, "main:/a", "localhost", 50500, "admin", "admin", "target:/a", matcher, false, false, false, null);
- System.out.println(report);
- runQueriesForRemoveAndDelpoy("target");
- assertNull(fService.lookup(-1, "target:/a/b/c/foo"));
- fService.removeNode("main:/a/b/c/bar");
- fService.createDirectory("main:/a/b/c", "bar");
- report = depService.deployDifference(-1, "main:/a", "localhost", 50500, "admin", "admin", "target:/a", matcher, false, false, false, null);
- System.out.println(report);
- runQueriesForRemoveFileAndCreateDirectoryAndDeploy("target");
- report = depService.deployDifference(-1, "main:/a", "localhost", 50500, "admin", "admin", "target:/a", matcher, false, false, false, null);
- depService.deployDifference(-1, "main:/a", "localhost", 50500, "admin", "admin", "target2:/wiggly/diggly", matcher, true, false, false, null);
- System.out.println(report);
- fService.createStore("source");
- RetryingTransactionHelper.RetryingTransactionCallback cb = new RetryingTransactionHelper.RetryingTransactionCallback()
- {
- public Object execute() throws Exception
- {
- BulkLoader loader = new BulkLoader();
- loader.setAvmService(fService);
- loader.recursiveLoad(getSourceFolder()+"/org/alfresco/repo/avm", "source:/");
- return null;
- }
- };
- RetryingTransactionHelper helper = (RetryingTransactionHelper) fContext.getBean("retryingTransactionHelper");
- helper.doInTransaction(cb);
- fService.createStore("dest");
- depService.deployDifference(-1, "source:/avm", "localhost", 50500, "admin", "admin", "dest:/avm", null, true, false, false, null);
- Runnable runner = new Runnable()
- {
- public void run()
- {
- depService.deployDifference(-1, "source:/avm", "localhost", 50500, "admin", "admin", "dest:/avm", null, true, false, false, null);
- }
- };
- Thread thread = new Thread(runner);
- thread.start();
- thread.join();
- report = depService.deployDifference(-1, "source:/avm", "localhost", 50500, "admin", "admin", "dest:/avm", null, true, false, false, null);
- System.out.println(report);
- assertEquals("", report.toString());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- throw e;
- }
- }
-*/
- protected void runQueriesForCreateAndDeploy(String store) throws Exception
- {
- StoreRef storeRef = AVMNodeConverter.ToStoreRef(store);
-
- // Text index
- SearchService searchService = fIndexerAndSearcher.getSearcher(AVMNodeConverter.ToStoreRef(store), true);
- ResultSet results = searchService.query(storeRef, "lucene", "TEXT:\"I am main\"");
- assertEquals(2, results.length());
- results.close();
-
- // Basic properties
-
- // Note "a" is a stop word and therefore not findable ...
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_NAME) + ":\"foo\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_NAME) + ":foo");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_NAME) + ":biz");
- assertEquals(1, results.length());
- results.close();
-
- // TODO: Fix auth in AVMDiskDriver and more??
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_CREATOR) + ":admin");
- assertEquals(7, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_MODIFIER) + ":admin");
- assertEquals(7, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_OWNER) + ":admin");
- assertEquals(7, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_NODE_UUID) + ":unknown");
- assertEquals(7, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_STORE_PROTOCOL) + ":avm");
- assertEquals(7, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_STORE_IDENTIFIER) + ":" + store);
- assertEquals(7, results.length());
- results.close();
-
- // Basic paths
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b/biz\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b/c\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b/c/foo\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b/c/bar\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d\"");
- assertEquals(0, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d/e\"");
- assertEquals(0, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d/e/f\"");
- assertEquals(0, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"//.\"");
- assertEquals(7, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"//*\"");
- assertEquals(6, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a//.\"");
- assertEquals(6, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a//*\"");
- assertEquals(5, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/*\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b/*\"");
- assertEquals(2, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"//c/*\"");
- assertEquals(2, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*/*\"");
- assertEquals(2, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*/*/*\"");
- assertEquals(2, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*/*/*/*\"");
- assertEquals(0, results.length());
- results.close();
- }
-
- protected void runQueriesForRemoveAndDelpoy(String store)
- {
- StoreRef storeRef = AVMNodeConverter.ToStoreRef(store);
-
- // Text index
- SearchService searchService = fIndexerAndSearcher.getSearcher(AVMNodeConverter.ToStoreRef(store), true);
- ResultSet results = searchService.query(storeRef, "lucene", "TEXT:\"I am main\"");
- assertEquals(1, results.length());
- results.close();
-
- // Basic properties
-
- // Note "a" is a stop word and therefore not findable ...
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_NAME) + ":\"foo\"");
- assertEquals(0, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_NAME) + ":foo");
- assertEquals(0, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_NAME) + ":biz");
- assertEquals(1, results.length());
- results.close();
-
- // TODO: Fix auth in AVMDiskDriver and more??
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_CREATOR) + ":admin");
- assertEquals(6, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_MODIFIER) + ":admin");
- assertEquals(6, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_OWNER) + ":admin");
- assertEquals(6, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_NODE_UUID) + ":unknown");
- assertEquals(6, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_STORE_PROTOCOL) + ":avm");
- assertEquals(6, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_STORE_IDENTIFIER) + ":" + store);
- assertEquals(6, results.length());
- results.close();
-
- // Basic paths
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b/biz\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b/c\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b/c/foo\"");
- assertEquals(0, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b/c/bar\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d\"");
- assertEquals(0, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d/e\"");
- assertEquals(0, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d/e/f\"");
- assertEquals(0, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"//.\"");
- assertEquals(6, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"//*\"");
- assertEquals(5, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a//.\"");
- assertEquals(5, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a//*\"");
- assertEquals(4, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/*\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b/*\"");
- assertEquals(2, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"//c/*\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*/*\"");
- assertEquals(2, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*/*/*\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*/*/*/*\"");
- assertEquals(0, results.length());
- results.close();
- }
-
- protected void runQueriesForRemoveFileAndCreateDirectoryAndDeploy(String store)
- {
- StoreRef storeRef = AVMNodeConverter.ToStoreRef(store);
-
- // Text index
- SearchService searchService = fIndexerAndSearcher.getSearcher(AVMNodeConverter.ToStoreRef(store), true);
- ResultSet results = searchService.query(storeRef, "lucene", "TEXT:\"I am main\"");
- assertEquals(0, results.length());
- results.close();
-
- // Basic properties
-
- // Note "a" is a stop word and therefore not findable ...
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_NAME) + ":\"foo\"");
- assertEquals(0, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_NAME) + ":\"bar\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_NAME) + ":foo");
- assertEquals(0, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_NAME) + ":biz");
- assertEquals(1, results.length());
- results.close();
-
- // TODO: Fix auth in AVMDiskDriver and more??
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_CREATOR) + ":admin");
- assertEquals(6, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_MODIFIER) + ":admin");
- assertEquals(6, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_OWNER) + ":admin");
- assertEquals(6, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_NODE_UUID) + ":unknown");
- assertEquals(6, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_STORE_PROTOCOL) + ":avm");
- assertEquals(6, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_STORE_IDENTIFIER) + ":" + store);
- assertEquals(6, results.length());
- results.close();
-
- // Basic paths
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b/biz\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b/c\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b/c/foo\"");
- assertEquals(0, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b/c/bar\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d\"");
- assertEquals(0, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d/e\"");
- assertEquals(0, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d/e/f\"");
- assertEquals(0, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"//.\"");
- assertEquals(6, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"//*\"");
- assertEquals(5, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a//.\"");
- assertEquals(5, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a//*\"");
- assertEquals(4, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/*\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b/*\"");
- assertEquals(2, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"//c/*\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*/*\"");
- assertEquals(2, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*/*/*\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*/*/*/*\"");
- assertEquals(0, results.length());
- results.close();
- }
-
- /**
- * Test of GUIDs on AVM Nodes.
- */
- public void testGuids() throws Exception
- {
- try
- {
- setupBasicTree();
- System.out.println(fService.lookup(-1, "main:/a/b/c/foo").getGuid());
- String guid = GUID.generate();
- fService.setGuid("main:/a/b/c/foo", guid);
- assertEquals(guid, fService.lookup(-1, "main:/a/b/c/foo").getGuid());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- throw e;
- }
- }
-
- /**
- * Test the revert to version action.
- */
- public void testRevertToVersionAction() throws Exception
- {
- try
- {
- setupBasicTree();
-
- ContentWriter writer = fService.getContentWriter("main:/a/b/c/foo", true);
- writer.setEncoding("UTF-8");
- writer.setMimetype(MimetypeMap.MIMETYPE_TEXT_PLAIN);
- writer.putContent("I am main:/a/b/c/foo V1");
- fService.createSnapshot("main", "v1", null);
-
- writer = fService.getContentWriter("main:/a/b/c/foo", true);
- writer.setEncoding("UTF-8");
- writer.setMimetype(MimetypeMap.MIMETYPE_TEXT_PLAIN);
- writer.putContent("I am main:/a/b/c/foo V2");
- fService.createSnapshot("main", "v2", null);
-
- writer = fService.getContentWriter("main:/a/b/c/foo", true);
- writer.setEncoding("UTF-8");
- writer.setMimetype(MimetypeMap.MIMETYPE_TEXT_PLAIN);
- writer.putContent("I am main:/a/b/c/foo V3");
- fService.createSnapshot("main", "v3", null);
-
- writer = fService.getContentWriter("main:/a/b/c/foo", true);
- writer.setEncoding("UTF-8");
- writer.setMimetype(MimetypeMap.MIMETYPE_TEXT_PLAIN);
- writer.putContent("I am main:/a/b/c/foo V4");
- fService.createSnapshot("main", "v4", null);
-
- writer = fService.getContentWriter("main:/a/b/c/foo", true);
- writer.setEncoding("UTF-8");
- writer.setMimetype(MimetypeMap.MIMETYPE_TEXT_PLAIN);
- writer.putContent("I am main:/a/b/c/foo V5");
- fService.createSnapshot("main", "v5", null);
-
- writer = fService.getContentWriter("main:/a/b/c/foo", true);
- writer.setEncoding("UTF-8");
- writer.setMimetype(MimetypeMap.MIMETYPE_TEXT_PLAIN);
- writer.putContent("I am main:/a/b/c/foo HEAD");
-
- StoreRef storeRef = AVMNodeConverter.ToStoreRef("main");
-
- SearchService searchService = fIndexerAndSearcher.getSearcher(storeRef, true);
-
- ResultSet results = searchService.query(storeRef, "lucene", "TEXT:\"HEAD\"");
- assertEquals(0, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "TEXT:\"V5\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "TEXT:\"V2\"");
- assertEquals(0, results.length());
- results.close();
-
- AVMNodeDescriptor desc = fService.lookup(-1, "main:/a/b/c/foo");
- List history = fService.getHistory(desc, 100);
- AVMNodeDescriptor toRevert = history.get(3);
-
- final ActionImpl action = new ActionImpl(null, GUID.generate(), AVMRevertToVersionAction.NAME);
- action.setParameterValue(AVMRevertToVersionAction.TOREVERT, toRevert);
- final AVMRevertToVersionAction revert = (AVMRevertToVersionAction) fContext.getBean("avm-revert-to-version");
- class TxnWork implements RetryingTransactionCallback
- {
- public Object execute() throws Exception
- {
- // note: including implicit snapshot
- revert.execute(action, AVMNodeConverter.ToNodeRef(-1, "main:/a/b/c/foo"));
- return null;
- }
- };
-
- TransactionService transactionService = (TransactionService) fContext.getBean("transactionService");
- transactionService.getRetryingTransactionHelper().doInTransaction(new TxnWork());
-
- results = searchService.query(storeRef, "lucene", "TEXT:\"HEAD\"");
- assertEquals(0, results.length());
- results.close();
- results = searchService.query(storeRef, "lucene", "TEXT:\"V5\"");
- assertEquals(0, results.length());
- results.close();
- results = searchService.query(storeRef, "lucene", "TEXT:\"V2\"");
- assertEquals(1, results.length());
- results.close();
- }
- catch (Exception e)
- {
- e.printStackTrace();
- throw e;
- }
- }
-
- /**
- * Test version numbering.
- */
- public void testVersionNumbering() throws Exception
- {
- try
- {
- setupBasicTree();
- AVMNodeDescriptor desc = fService.lookup(-1, "main:/a/b/c/foo");
- assertEquals(1, desc.getVersionID());
- fService.getFileOutputStream("main:/a/b/c/foo").close();
- desc = fService.lookup(-1, "main:/a/b/c/foo");
- assertEquals(2, desc.getVersionID());
- desc = fService.lookup(-1, "main:/a/b");
- assertEquals(2, desc.getVersionID());
- fService.createSnapshot("main", null, null);
- fService.createLayeredDirectory("main:/a", "main:/", "layer");
- fService.createSnapshot("main", null, null);
- fService.getFileOutputStream("main:/layer/b/c/bar").close();
- desc = fService.lookup(-1, "main:/layer/b/c/bar");
- assertEquals(2, desc.getVersionID());
- desc = fService.lookup(-1, "main:/layer/b/c");
- assertEquals(3, desc.getVersionID());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- throw e;
- }
- }
-
- /**
- * Test relinking of nodes to history.
- */
- public void testHistoryRelink() throws Exception
- {
- try
- {
- setupBasicTree();
- fService.createStore("branch");
- fService.createBranch(-1, "main:/a", "branch:/", "a");
- fService.removeNode("branch:/a/b/c/foo");
- List diffs = fSyncService.compare(-1, "branch:/a", -1, "main:/a", null);
- assertEquals(1, diffs.size());
- assertEquals(AVMDifference.NEWER, diffs.get(0).getDifferenceCode());
- assertEquals("[branch:/a/b/c/foo[-1] > main:/a/b/c/foo[-1]]", diffs.toString());
- fService.createFile("branch:/a/b/c", "foo").close();
- diffs = fSyncService.compare(-1, "branch:/a", -1, "main:/a", null);
- assertEquals(1, diffs.size());
- assertEquals(AVMDifference.NEWER, diffs.get(0).getDifferenceCode());
- assertEquals("[branch:/a/b/c/foo[-1] > main:/a/b/c/foo[-1]]", diffs.toString());
- fSyncService.update(diffs, null, false, false, false, false, null, null);
- fService.removeNode("branch:/a/b/c/bar");
- fService.createFile("branch:/a/b/c", "pismo").close();
- fService.rename("branch:/a/b/c", "pismo", "branch:/a/b/c", "bar");
- diffs = fSyncService.compare(-1, "branch:/a", -1, "main:/a", null);
- assertEquals(1, diffs.size());
- assertEquals(AVMDifference.NEWER, diffs.get(0).getDifferenceCode());
- assertEquals("[branch:/a/b/c/bar[-1] > main:/a/b/c/bar[-1]]", diffs.toString());
- }
- catch (Exception e)
- {
- e.printStackTrace();
- throw e;
- }
- finally
- {
- fService.purgeStore("branch");
- }
- }
-
- /**
- * Test renaming a store.
- */
- public void testRenameStore() throws Exception
- {
- try
- {
- setupBasicTree();
- assertNotNull(fService.lookup(-1, "main:/a/b"));
- fService.renameStore("main", "foo");
- assertNotNull(fService.getStore("foo"));
- assertNotNull(fService.lookup(-1, "foo:/a/b"));
- runQueriesAgainstBasicTree("foo");
- }
- catch (Exception e)
- {
- e.printStackTrace();
- throw e;
- }
- finally
- {
- fService.purgeStore("foo");
- }
- }
-
- /**
- * Test copy.
- */
- public void testCopy() throws Exception
- {
- try
- {
- setupBasicTree();
- // Copy a file.
- fService.copy(-1, "main:/a/b/c/foo", "main:/d", "fooCopy");
- AVMNodeDescriptor desc = fService.lookup(-1, "main:/d/fooCopy");
- assertTrue(desc.isFile());
- fService.createSnapshot("main", null, null);
- runQueriesAgainstBasicTreePlusFileCopy("main");
-
- // Copy a whole tree
- fService.copy(-1, "main:/a", "main:/d/e", "aCopy");
- desc = fService.lookup(-1, "main:/d/e/aCopy");
- assertTrue(desc.isDirectory());
- desc = fService.lookup(-1, "main:/a/b/c/bar");
- AVMNodeDescriptor desc2 = fService.lookup(-1, "main:/d/e/aCopy/b/c/bar");
- assertTrue(desc2.isFile());
- assertEquals(desc.getLength(), desc2.getLength());
- fService.createSnapshot("main", null, null);
- runQueriesAgainstBasicTreePlusFileCopyAndDirectoryCopy("main");
-
- // Check that it rejects infinite copies.
- try
- {
- fService.copy(-1, "main:/", "main://d/e", "illegal");
- fail();
- }
- catch (AVMException ae)
- {
- // This is a success.
- }
-
- StoreRef storeRef = AVMNodeConverter.ToStoreRef("main");
- SearchService searchService = fIndexerAndSearcher.getSearcher(storeRef, true);
- ResultSet results = searchService.query(storeRef, "lucene", "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_NAME.toString()) + ":\"guest\"");
- assertEquals(0, results.length());
- results.close();
-
- CrossRepositoryCopyService copyService = (CrossRepositoryCopyService) fContext.getBean("CrossRepositoryCopyService");
- RepoRemote remoteService = (RepoRemote) fContext.getBean("RepoRemoteService");
- Pair toCopy = remoteService.lookup(remoteService.getRoot(), "Guest Home");
- copyService.copy(toCopy.getFirst(), AVMNodeConverter.ToNodeRef(-1, "main:/"), "Guest Home");
- desc = fService.lookup(-1, "main:/Guest Home");
- assertTrue(desc.isDirectory());
- System.out.println(this.recursiveList("main", -1, true));
-
- fService.createSnapshot("main", null, null);
- searchService = fIndexerAndSearcher.getSearcher(storeRef, true);
- results = searchService.query(storeRef, "lucene", "@" + SearchLanguageConversion.escapeLuceneQuery(ContentModel.PROP_NAME.toString()) + ":\"guest\"");
- assertEquals(1, results.length());
- results.close();
-
- StoreRef spacesStore = new StoreRef("workspace", "SpacesStore");
-
- searchService = fIndexerAndSearcher.getSearcher(spacesStore, true);
- results = searchService.query(spacesStore, "lucene", "PATH:\"//.\"");
- int count = results.length();
- results.close();
-
- copyService.copy(AVMNodeConverter.ToNodeRef(-1, "main:/a"), toCopy.getFirst(), "a");
- Pair theCopy = remoteService.lookup(toCopy.getFirst(), "a");
- assertTrue(theCopy.getSecond());
-
- results = searchService.query(spacesStore, "lucene", "PATH:\"//.\"");
- assertEquals(count + 5, results.length());
- results.close();
-
- results = searchService.query(spacesStore, "lucene", "PATH:\"//.\"");
- assertEquals(count + 5, results.length());
- results.close();
-
- results = searchService.query(spacesStore, "lucene", "@cm\\:name:foo");
- assertEquals(1, results.length());
- results.close();
-
- remoteService.removeNode(theCopy.getFirst());
-
- results = searchService.query(spacesStore, "lucene", "PATH:\"//.\"");
- assertEquals(count, results.length());
- results.close();
-
- }
- catch (Exception e)
- {
- e.printStackTrace();
- throw e;
- }
- }
-
- public void testCopy_ALF_835() throws Exception
- {
- try
- {
- fService.createStore("mainA");
-
- fService.createDirectory("mainA:/", "a");
- fService.createDirectory("mainA:/a", "www");
-
- AVMNodeDescriptor desc = fService.lookup(-1, "mainA:/a/www");
- assertTrue(desc.isDirectory());
-
- desc = fService.lookup(-1, "mainA:/a/www/www");
- assertNull(desc);
-
- // copy empty directory into itself
- fService.copy(-1, "mainA:/a/www", "mainA:/a/www", "www");
-
- desc = fService.lookup(-1, "mainA:/a/www/www");
- assertTrue(desc.isDirectory());
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- finally
- {
- fService.purgeStore("mainA");
- }
- }
-
- protected void runQueriesAgainstBasicTreePlusFileCopy(String store)
- {
- StoreRef storeRef = AVMNodeConverter.ToStoreRef(store);
-
- // Text index
- SearchService searchService = fIndexerAndSearcher.getSearcher(storeRef, true);
- ResultSet results = searchService.query(storeRef, "lucene", "TEXT:\"I am main\"");
- assertEquals(3, results.length());
- results.close();
-
- // Basic properties
-
- // Note "a" is a stop word and therefore not findable ...
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_NAME) + ":\"foo\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_NAME) + ":foo");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_NAME) + ":\"fooCopy\"");
- assertEquals(1, results.length());
- results.close();
-
- // TODO: Fix auth in AVMDiskDriver and more??
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_CREATOR) + ":admin");
- assertEquals(10, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_MODIFIER) + ":admin");
- assertEquals(10, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_OWNER) + ":admin");
- assertEquals(10, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_NODE_UUID) + ":unknown");
- assertEquals(10, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_STORE_PROTOCOL) + ":avm");
- assertEquals(10, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_STORE_IDENTIFIER) + ":" + store);
- assertEquals(10, results.length());
- results.close();
-
- // Basic paths
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b/c\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b/c/foo\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b/c/bar\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d/fooCopy\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d/e\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d/e/f\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"//.\"");
- assertEquals(10, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"//*\"");
- assertEquals(9, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a//.\"");
- assertEquals(5, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a//*\"");
- assertEquals(4, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/*\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"//c/*\"");
- assertEquals(2, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*\"");
- assertEquals(2, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*\"");
- assertEquals(3, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*/*\"");
- assertEquals(2, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*/*/*\"");
- assertEquals(2, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*/*/*/*\"");
- assertEquals(0, results.length());
- results.close();
- }
-
- protected void runQueriesAgainstBasicTreePlusFileCopyAndDirectoryCopy(String store)
- {
- StoreRef storeRef = AVMNodeConverter.ToStoreRef(store);
-
- // Text index
- SearchService searchService = fIndexerAndSearcher.getSearcher(storeRef, true);
- ResultSet results = searchService.query(storeRef, "lucene", "TEXT:\"I am main\"");
- assertEquals(5, results.length());
- results.close();
-
- // Basic properties
-
- // Note "a" is a stop word and therefore not findable ...
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_NAME) + ":\"foo\"");
- assertEquals(2, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_NAME) + ":foo");
- assertEquals(2, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_NAME) + ":\"fooCopy\"");
- assertEquals(1, results.length());
- results.close();
-
- // TODO: Fix auth in AVMDiskDriver and more??
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_CREATOR) + ":admin");
- assertEquals(15, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_MODIFIER) + ":admin");
- assertEquals(15, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_OWNER) + ":admin");
- assertEquals(15, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_NODE_UUID) + ":unknown");
- assertEquals(15, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_STORE_PROTOCOL) + ":avm");
- assertEquals(15, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_STORE_IDENTIFIER) + ":" + store);
- assertEquals(15, results.length());
- results.close();
-
- // Basic paths
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b/c\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b/c/foo\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b/c/bar\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d/fooCopy\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d/e\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d/e/f\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d/e/aCopy\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d/e/aCopy/b\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d/e/aCopy/b/c\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d/e/aCopy/b/c/foo\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d/e/aCopy/b/c/bar\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"//.\"");
- assertEquals(15, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"//*\"");
- assertEquals(14, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a//.\"");
- assertEquals(5, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a//*\"");
- assertEquals(4, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/*\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"//c/*\"");
- assertEquals(4, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*\"");
- assertEquals(2, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*\"");
- assertEquals(3, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*/*\"");
- assertEquals(3, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*/*/*\"");
- assertEquals(3, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*/*/*/*\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*/*/*/*/*\"");
- assertEquals(2, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*/*/*/*/*/*\"");
- assertEquals(0, results.length());
- results.close();
- }
-
- /**
- * Test cyclic behaviour (when creating layered directories)
- */
- public void testCircularLayering() throws Exception
- {
- try
- {
- fService.createLayeredDirectory("main:/c", "main:/", "b"); // note: unbacked
-
- fService.createLayeredDirectory("main:/b", "main:/", "c");
- fail();
- }
- catch (AVMCycleException e)
- {
- // expected
- }
-
- try
- {
- fService.createDirectory("main:/", "a");
- fService.createDirectory("main:/a", "b");
-
- fService.createLayeredDirectory("main:/a", "main:/a/b", "c");
- fail();
- }
- catch (AVMCycleException e)
- {
- // expected
- }
-
- try
- {
- fService.createStore("a");
- fService.createStore("b");
-
- fService.createDirectory("a:/", "a");
-
- fService.createDirectory("b:/", "a");
- fService.createLayeredDirectory("a:/a/b", "b:/a", "b"); // note: unbacked
-
- fService.createLayeredDirectory("b:/a/b", "a:/a", "b");
- fail();
- }
- catch (AVMCycleException e)
- {
- // expected
- }
- finally
- {
- fService.purgeStore("a");
- fService.purgeStore("b");
- }
-
- try
- {
- fService.createStore("test1");
- fService.createStore("test2");
-
- fService.createDirectory("test1:/", "test1folder");
- fService.createDirectory("test2:/", "test2folder");
-
- fService.createLayeredDirectory("test2:/test2folder", "test1:/test1folder", "test2");
-
- fService.createLayeredDirectory("test1:/test1folder", "test2:/test2folder", "test1");
- fail();
- }
- catch (AVMCycleException e)
- {
- // expected
- }
- finally
- {
- fService.purgeStore("test1");
- fService.purgeStore("test2");
- }
-
- try
- {
- fService.createStore("a");
- fService.createStore("b");
- fService.createStore("c");
-
- fService.createDirectory("a:/", "a");
-
- fService.createDirectory("b:/", "a");
- fService.createLayeredDirectory("a:/a/b", "b:/a", "b"); // note: unbacked
-
- fService.createDirectory("c:/", "a");
- fService.createLayeredDirectory("b:/a/b", "c:/a", "b");
-
- fService.createLayeredDirectory("c:/a/b", "a:/a", "b");
- fail();
- }
- catch (AVMCycleException e)
- {
- // expected
- }
- finally
- {
- fService.purgeStore("a");
- fService.purgeStore("b");
- fService.purgeStore("c");
- }
-
- try
- {
- fService.createStore("a");
- fService.createStore("b");
-
- fService.createDirectory("a:/", "a");
- fService.createDirectory("a:/a", "b");
-
- fService.createDirectory("b:/", "a");
- fService.createLayeredDirectory("a:/a", "b:/a", "b");
-
- fService.createLayeredDirectory("b:/a", "a:/a/b", "c");
- fail();
- }
- catch (AVMCycleException e)
- {
- // expected
- }
- finally
- {
- fService.purgeStore("a");
- fService.purgeStore("b");
- }
- }
-
- /**
- * Test getting all paths for a node.
- */
- public void testGetPaths() throws Exception
- {
- try
- {
- setupBasicTree();
- fService.createBranch(-1, "main:/a", "main:/", "abranch");
- fService.createSnapshot("main", null, null);
- fService.createBranch(-1, "main:/a/b", "main:/", "bbranch");
- List> paths = fService.getPaths(fService.lookup(-1, "main:/a/b/c/foo"));
- for (Pair path : paths)
- {
- System.out.println(path.getFirst() + " " + path.getSecond());
- }
- paths = fService.getHeadPaths(fService.lookup(-1, "main:/a/b/c/foo"));
- System.out.println("------------------------------");
- for (Pair path : paths)
- {
- System.out.println(path.getFirst() + " " + path.getSecond());
- }
- paths = fService.getPathsInStoreHead(fService.lookup(-1, "main:/a/b/c/foo"), "main");
- System.out.println("------------------------------");
- for (Pair path : paths)
- {
- System.out.println(path.getFirst() + " " + path.getSecond());
- }
- assertNotNull(fService.getAPath(fService.lookup(-1, "main:/a/b/c/foo")));
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- /**
- * Test getIndirection.
- */
- public void testGetIndirection() throws Exception
- {
- try
- {
- setupBasicTree();
- fService.createStore("layer");
- fService.createLayeredDirectory("main:/a", "layer:/", "layer");
- fService.createFile("layer:/layer/b", "figs").close();
- assertEquals("main:/a", fService.getIndirectionPath(-1, "layer:/layer"));
- assertEquals("main:/a/b", fService.getIndirectionPath(-1, "layer:/layer/b"));
- assertEquals("main:/a/b/c", fService.getIndirectionPath(-1, "layer:/layer/b/c"));
- assertEquals("main:/a/b/c/foo", fService.getIndirectionPath(-1, "layer:/layer/b/c/foo"));
- fService.createLayeredDirectory("main:/d", "layer:/layer/b", "dlayer");
- assertEquals("main:/d", fService.getIndirectionPath(-1, "layer:/layer/b/dlayer"));
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- finally
- {
- fService.purgeStore("layer");
- }
- }
-
- /**
- * Test the revert list action.
- *
- * @deprecated
- */
- public void testRevertListAction() throws Exception
- {
- try
- {
- setupBasicTree();
- fService.createStore("area");
- fService.createLayeredDirectory("main:/a", "area:/", "a");
- fService.getFileOutputStream("area:/a/b/c/foo").close();
- List diffs = fSyncService.compare(-1, "area:/a", -1, "main:/a", null);
- assertEquals(1, diffs.size());
- assertEquals("[area:/a/b/c/foo[-1] > main:/a/b/c/foo[-1]]", diffs.toString());
- fSyncService.update(diffs, null, false, false, false, false, null, null);
- fService.getFileOutputStream("area:/a/b/c/bar").close();
- diffs = fSyncService.compare(-1, "area:/a", -1, "main:/a", null);
- assertEquals(1, diffs.size());
- assertEquals("[area:/a/b/c/bar[-1] > main:/a/b/c/bar[-1]]", diffs.toString());
- final ActionImpl action = new ActionImpl(null, GUID.generate(), AVMRevertListAction.NAME);
- List paths = new ArrayList();
- paths.add("area:/a/b");
- action.setParameterValue(AVMRevertListAction.PARAM_VERSION, fService.getLatestSnapshotID("area"));
- action.setParameterValue(AVMRevertListAction.PARAM_NODE_LIST, (Serializable) paths);
- final AVMRevertListAction revert = (AVMRevertListAction) fContext.getBean("avm-revert-list");
- class TxnWork implements RetryingTransactionCallback
- {
- public Object execute() throws Exception
- {
- revert.execute(action, null);
- return null;
- }
- }
- ;
- TransactionService transactionService = (TransactionService) fContext.getBean("transactionService");
- transactionService.getRetryingTransactionHelper().doInTransaction(new TxnWork());
-
- diffs = fSyncService.compare(-1, "area:/a", -1, "main:/a", null);
- assertEquals(0, diffs.size());
- System.out.println(recursiveList("area", -1, true));
- System.out.println(recursiveList("main", -1, true));
- }
- catch (Exception e)
- {
- e.printStackTrace();
- throw e;
- }
- finally
- {
- fService.purgeStore("area");
- }
- }
-
- /**
- * Test the revert store action.
- *
- * @deprecated see org.alfresco.wcm.actions.WCMSandboxRevertSnapshotAction or org.alfresco.wcm.SandboxService.revertSnapshot
- */
- public void testRevertStoreAction() throws Exception
- {
- try
- {
- setupBasicTree();
-
- fService.createStore("area");
- fService.createLayeredDirectory("main:/a", "area:/", "a");
-
- fService.getFileOutputStream("area:/a/b/c/foo").close();
-
- List diffs = fSyncService.compare(-1, "area:/a", -1, "main:/a", null);
- assertEquals(1, diffs.size());
- assertEquals("[area:/a/b/c/foo[-1] > main:/a/b/c/foo[-1]]", diffs.toString());
-
- fSyncService.update(diffs, null, false, false, false, false, null, null);
-
- diffs = fSyncService.compare(-1, "area:/a", -1, "main:/a", null);
- assertEquals(0, diffs.size());
-
- fService.getFileOutputStream("area:/a/b/c/bar").close();
-
- diffs = fSyncService.compare(-1, "area:/a", -1, "main:/a", null);
- assertEquals(1, diffs.size());
- assertEquals("[area:/a/b/c/bar[-1] > main:/a/b/c/bar[-1]]", diffs.toString());
-
- final ActionImpl action = new ActionImpl(null, GUID.generate(), AVMRevertStoreAction.NAME);
- action.setParameterValue(AVMRevertStoreAction.PARAM_VERSION, fService.getLatestSnapshotID("area"));
-
- final AVMRevertStoreAction revert = (AVMRevertStoreAction)fContext.getBean("avm-revert-store");
-
- class TxnWork implements RetryingTransactionCallback
- {
- public Object execute() throws Exception
- {
- revert.execute(action, AVMNodeConverter.ToNodeRef(-1, "area:/"));
- return null;
- }
- };
-
- TransactionService transactionService = (TransactionService) fContext.getBean("transactionService");
- transactionService.getRetryingTransactionHelper().doInTransaction(new TxnWork());
-
- diffs = fSyncService.compare(-1, "area:/a", -1, "main:/a", null);
- assertEquals(0, diffs.size());
-
- System.out.println(recursiveList("area", -1, true));
- System.out.println(recursiveList("main", -1, true));
- }
- catch (Exception e)
- {
- e.printStackTrace();
- throw e;
- }
- finally
- {
- fService.purgeStore("area");
- }
- }
-
- /**
- * Test the undo list action.
- *
- * @deprecated see org.alfresco.wcm.actions.WCMSandboxUndoAction or org.alfresco.wcm.SandboxService.revertList
- */
- public void testUndoListAction() throws Exception
- {
- try
- {
- setupBasicTree();
- fService.createStore("area");
- fService.createLayeredDirectory("main:/a", "area:/", "a");
- fService.getFileOutputStream("area:/a/b/c/foo").close();
- List diffs = fSyncService.compare(-1, "area:/a", -1, "main:/a", null);
- assertEquals(1, diffs.size());
- assertEquals("[area:/a/b/c/foo[-1] > main:/a/b/c/foo[-1]]", diffs.toString());
- fSyncService.update(diffs, null, false, false, false, false, null, null);
- fService.getFileOutputStream("area:/a/b/c/bar").close();
- diffs = fSyncService.compare(-1, "area:/a", -1, "main:/a", null);
- assertEquals(1, diffs.size());
- assertEquals("[area:/a/b/c/bar[-1] > main:/a/b/c/bar[-1]]", diffs.toString());
- final ActionImpl action = new ActionImpl(null, GUID.generate(), AVMUndoSandboxListAction.NAME);
- List> versionPaths = new ArrayList>();
- versionPaths.add(new Pair(-1, "area:/a/b/c/bar"));
- action.setParameterValue(AVMUndoSandboxListAction.PARAM_NODE_LIST, (Serializable) versionPaths);
- final AVMUndoSandboxListAction revert = (AVMUndoSandboxListAction) fContext.getBean("avm-undo-list");
- class TxnWork implements RetryingTransactionCallback
- {
- public Object execute() throws Exception
- {
- revert.execute(action, null);
- return null;
- }
- }
- ;
- TransactionService transactionService = (TransactionService) fContext.getBean("transactionService");
- transactionService.getRetryingTransactionHelper().doInTransaction(new TxnWork());
-
- diffs = fSyncService.compare(-1, "area:/a", -1, "main:/a", null);
- assertEquals(0, diffs.size());
- System.out.println(recursiveList("area", -1, true));
- System.out.println(recursiveList("main", -1, true));
- }
- catch (Exception e)
- {
- e.printStackTrace();
- throw e;
- }
- finally
- {
- fService.purgeStore("area");
- }
- }
-
- /**
- * Test the promote action.
- *
- * @deprecated
- */
- public void testPromoteAction() throws Exception
- {
- try
- {
- setupBasicTree();
- fService.createDirectory("main:/", JNDIConstants.DIR_DEFAULT_WWW);
- fService.rename("main:/", "a", "main:/" + JNDIConstants.DIR_DEFAULT_WWW, "a");
- fService.rename("main:/", "d", "main:/" + JNDIConstants.DIR_DEFAULT_WWW, "d");
- fService.createSnapshot("main", null, null);
- fService.createStore("source");
- fService.createLayeredDirectory("main:/" + JNDIConstants.DIR_DEFAULT_WWW, "source:/", JNDIConstants.DIR_DEFAULT_WWW);
- fService.getFileOutputStream("source:/" + JNDIConstants.DIR_DEFAULT_WWW + "/a/b/c/foo").close();
- final ActionImpl action = new ActionImpl(AVMNodeConverter.ToNodeRef(-1, "source:/" + JNDIConstants.DIR_DEFAULT_WWW + "/a"), GUID.generate(),
- SimpleAVMPromoteAction.NAME);
- action.setParameterValue(SimpleAVMPromoteAction.PARAM_TARGET_STORE, "main");
- final SimpleAVMPromoteAction promote = (SimpleAVMPromoteAction) fContext.getBean("simple-avm-promote");
- class TxnWork implements RetryingTransactionCallback
- {
- public Object execute() throws Exception
- {
- promote.execute(action, AVMNodeConverter.ToNodeRef(-1, "source:/" + JNDIConstants.DIR_DEFAULT_WWW + "/a"));
- return null;
- }
- }
- ;
- TransactionService transactionService = (TransactionService) fContext.getBean("transactionService");
- transactionService.getRetryingTransactionHelper().doInTransaction(new TxnWork());
-
- assertEquals(0, fSyncService.compare(-1, "source:/" + JNDIConstants.DIR_DEFAULT_WWW, -1, "main:/" + JNDIConstants.DIR_DEFAULT_WWW, null).size());
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- finally
- {
- fService.purgeStore("source");
- }
- }
-
- /**
- * Test the SimpleAVMSubmitAction.
- *
- * @deprecated see org.alfresco.wcm.actions.WCMSandboxSubmitAction or org.alfesco.wcm.SandboxService.submit
- */
- public void testSubmitAction() throws Exception
- {
- // NOTE: it is implied that the sandboxes follow WCM naming conventions
- final String STAGING = "foo";
- final String SANDBOX = "foo--sandbox";
-
- try
- {
- fService.createStore(STAGING);
- fService.createDirectory(STAGING+":/", JNDIConstants.DIR_DEFAULT_WWW);
- fService.createDirectory(STAGING+":/" + JNDIConstants.DIR_DEFAULT_WWW, "a");
- fService.createDirectory(STAGING+":/" + JNDIConstants.DIR_DEFAULT_WWW + "/a", "b");
- fService.createDirectory(STAGING+":/" + JNDIConstants.DIR_DEFAULT_WWW + "/a/b", "c");
- fService.createFile(STAGING+":/" + JNDIConstants.DIR_DEFAULT_WWW + "/a/b/c", "foo").close();
- fService.createFile(STAGING+":/" + JNDIConstants.DIR_DEFAULT_WWW + "/a/b/c", "bar").close();
-
- fService.createStore(SANDBOX);
- fService.setStoreProperty(SANDBOX, SandboxConstants.PROP_WEBSITE_NAME, new PropertyValue(null, STAGING)); // note: it is implied that the website name is the same as staging name
- fService.createLayeredDirectory(STAGING+":/" + JNDIConstants.DIR_DEFAULT_WWW, SANDBOX+":/", JNDIConstants.DIR_DEFAULT_WWW);
- fService.createFile(SANDBOX+":/" + JNDIConstants.DIR_DEFAULT_WWW, "figs").close();
- fService.getFileOutputStream(SANDBOX+":/" + JNDIConstants.DIR_DEFAULT_WWW + "/a/b/c/foo").close();
- fService.removeNode(SANDBOX+":/" + JNDIConstants.DIR_DEFAULT_WWW + "/a/b/c/bar");
-
- List diffs = fSyncService.compare(-1, SANDBOX+":/" + JNDIConstants.DIR_DEFAULT_WWW, -1, STAGING+":/" + JNDIConstants.DIR_DEFAULT_WWW, null);
- assertEquals(3, diffs.size());
- assertEquals("["+SANDBOX+":/www/a/b/c/bar[-1] > "+STAGING+":/www/a/b/c/bar[-1], "+SANDBOX+":/www/a/b/c/foo[-1] > "+STAGING+":/www/a/b/c/foo[-1], "+SANDBOX+":/www/figs[-1] > "+STAGING+":/www/figs[-1]]", diffs.toString());
-
- final SimpleAVMSubmitAction action = (SimpleAVMSubmitAction) fContext.getBean("simple-avm-submit");
- class TxnWork implements RetryingTransactionCallback
- {
- public Object execute() throws Exception
- {
- action.execute(null, AVMNodeConverter.ToNodeRef(-1, SANDBOX+":/" + JNDIConstants.DIR_DEFAULT_WWW));
- return null;
- }
- };
-
- TransactionService transactionService = (TransactionService) fContext.getBean("transactionService");
- transactionService.getRetryingTransactionHelper().doInTransaction(new TxnWork());
-
- diffs = fSyncService.compare(-1, SANDBOX+":/" + JNDIConstants.DIR_DEFAULT_WWW, -1, STAGING+":/" + JNDIConstants.DIR_DEFAULT_WWW, null);
-
- assertEquals(0, diffs.size());
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- finally
- {
- fService.purgeStore(STAGING);
- fService.purgeStore(SANDBOX);
- }
- }
-
- /**
- * Test one argument remove.
- */
- public void testOneArgRemove() throws Exception
- {
- try
- {
- setupBasicTree();
- fService.removeNode("main:/a/b/c/foo/");
- fService.removeNode("main:/d");
- fService.createSnapshot("main", null, null);
-
- StoreRef storeRef = AVMNodeConverter.ToStoreRef("main");
-
- // Text index
- SearchService searchService = fIndexerAndSearcher.getSearcher(storeRef, true);
- ResultSet results = searchService.query(storeRef, "lucene", "TEXT:\"I am main\"");
- assertEquals(1, results.length());
- results.close();
-
- // Basic properties
-
- // Note "a" is a stop word and therefore not findable ...
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_NAME) + ":\"foo\"");
- assertEquals(0, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_NAME) + ":foo");
- assertEquals(0, results.length());
- results.close();
-
- // TODO: Fix auth in AVMDiskDriver and more??
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_CREATOR) + ":admin");
- if (results.length() == 7)
- {
- for (ResultSetRow row : results)
- {
- System.out.println(row.getNodeRef());
- }
- }
- assertEquals(5, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_MODIFIER) + ":admin");
- assertEquals(5, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_OWNER) + ":admin");
- assertEquals(5, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_NODE_UUID) + ":unknown");
- assertEquals(5, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_STORE_PROTOCOL) + ":avm");
- assertEquals(5, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_STORE_IDENTIFIER) + ":" + "main");
- assertEquals(5, results.length());
- results.close();
-
- // Basic paths
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b/c\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b/c/foo\"");
- assertEquals(0, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b/c/bar\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d\"");
- assertEquals(0, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d/e\"");
- assertEquals(0, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d/e/f\"");
- assertEquals(0, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"//.\"");
- assertEquals(5, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"//*\"");
- assertEquals(4, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a//.\"");
- assertEquals(4, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a//*\"");
- assertEquals(3, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/*\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"//c/*\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*/*\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*/*/*\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*/*/*/*\"");
- assertEquals(0, results.length());
- results.close();
-
- try
- {
- fService.removeNode("main://");
- fail();
- }
- catch (AVMException e)
- {
- // Do nothing.
- }
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- }
- }
-
- /**
- * Test that non head version sources are update correctly.
- */
- public void testVersionUpdate() throws Exception
- {
- //String LOAD_DIR1 = "config/alfresco/bootstrap";
- //String LOAD_DIR2 = "config/alfresco/extension";
-
- String LOAD_DIR1 = getSourceFolder()+"/org/alfresco/repo/avm/actions";
- String LOAD_DIR2 = getSourceFolder()+"/org/alfresco/repo/avm/ibatis";
-
- String[] split1 = LOAD_DIR1.split("/");
- String DIR1 = split1[split1.length-1];
-
- String[] split2 = LOAD_DIR2.split("/");
- String DIR2 = split2[split2.length-1];
-
-
- try
- {
- BulkLoader loader = new BulkLoader();
- loader.setAvmService(fService);
- fService.createStore("source");
- fService.createStore("dest");
-
- loader.recursiveLoad(LOAD_DIR1, "source:/");
- int version1 = fService.createSnapshot("source", null, null).get("source");
- loader.recursiveLoad(LOAD_DIR2, "source:/");
- int version2 = fService.createSnapshot("source", null, null).get("source");
- List diffs = fSyncService.compare(version1, "source:/", -1, "dest:/", null);
- fService.createSnapshot("dest", null, null);
- assertEquals(1, diffs.size());
- assertEquals("[source:/"+DIR1+"[1] > dest:/"+DIR1+"[-1]]", diffs.toString());
- fSyncService.update(diffs, null, false, false, false, false, null, null);
- diffs = fSyncService.compare(version1, "source:/", -1, "dest:/", null);
- assertEquals(0, diffs.size());
- diffs = fSyncService.compare(version2, "source:/", -1, "dest:/", null);
- assertEquals(1, diffs.size());
- assertEquals("[source:/"+DIR2+"[2] > dest:/"+DIR2+"[-1]]", diffs.toString());
- fSyncService.update(diffs, null, false, false, false, false, null, null);
- fService.createSnapshot("dest", null, null);
- diffs = fSyncService.compare(version2, "source:/", -1, "dest:/", null);
- assertEquals(0, diffs.size());
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- finally
- {
- fService.purgeStore("source");
- fService.purgeStore("dest");
- }
- }
-
- /**
- * Test that branching forces a snapshot on the source repository.
- */
- public void testBranchSnapshot() throws Exception
- {
- try
- {
- setupBasicTree();
- fService.getFileOutputStream("main:/a/b/c/foo").close();
- fService.createBranch(-1, "main:/a", "main:/", "abranch");
- assertEquals(fService.lookup(-1, "main:/a/b/c/foo").getId(), fService.lookup(-1, "main:/abranch/b/c/foo").getId());
- fService.getFileOutputStream("main:/a/b/c/foo").close();
- assertTrue(fService.lookup(-1, "main:/a/b/c/foo").getId() != fService.lookup(-1, "main:/abranch/b/c/foo").getId());
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- /**
- * Test of Descriptor indirection field.
- */
- public void testDescriptorIndirection() throws Exception
- {
- try
- {
- setupBasicTree();
- fService.createLayeredDirectory("main:/a", "main:/", "layer");
- fService.createFile("main:/layer/b/c", "bambino").close();
- AVMNodeDescriptor desc = fService.lookup(-1, "main:/layer");
- assertEquals("main:/a", desc.getIndirection());
- Map list = fService.getDirectoryListing(-1, "main:/");
- assertEquals("main:/a", list.get("layer").getIndirection());
- desc = fService.lookup(-1, "main:/layer/b");
- assertEquals("main:/a/b", desc.getIndirection());
- list = fService.getDirectoryListing(-1, "main:/layer");
- assertEquals("main:/a/b", list.get("b").getIndirection());
- list = fService.getDirectoryListingDirect(-1, "main:/layer");
- assertEquals("main:/a/b", list.get("b").getIndirection());
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- /**
- * Test link AVMService call.
- */
- public void testLink() throws Exception
- {
- try
- {
- setupBasicTree();
- // Just try linking /a/b/c/foo into /a/b
- fService.link("main:/a/b", "foo", fService.lookup(-1, "main:/a/b/c/foo"));
- assertEquals(fService.lookup(-1, "main:/a/b/c/foo").getId(), fService.lookup(-1, "main:/a/b/foo").getId());
- // Try linking /a/b/c/bar to /a/b/foo. It should fail.
- System.out.println(recursiveList("main", -1, true));
- try
- {
- fService.link("main:/a/b", "foo", fService.lookup(-1, "main:/a/b/c/bar"));
- fail();
- }
- catch (AVMExistsException e)
- {
- // Do nothing. It's OK.
- }
- // Delete /a/b/foo, and link /a/b/c/foo into /a/b. This checks that
- // a deleted node is no impediment.
- fService.removeNode("main:/a/b", "foo");
- fService.link("main:/a/b", "foo", fService.lookup(-1, "main:/a/b/c/foo"));
- assertEquals(fService.lookup(-1, "main:/a/b/c/foo").getId(), fService.lookup(-1, "main:/a/b/foo").getId());
- // Delete /a/b/foo again in prep for layer tests.
- fService.removeNode("main:/a/b", "foo");
- System.out.println(recursiveList("main", -1, true));
- fService.createSnapshot("main", null, null);
- // Create a layer do a link from /layer/b/c/bar to /layer/b
- fService.createLayeredDirectory("main:/a", "main:/", "layer");
- fService.link("main:/layer/b", "bar", fService.lookup(-1, "main:/layer/b/c/bar"));
- assertEquals(fService.lookup(-1, "main:/layer/b/c/bar").getId(), fService.lookup(-1, "main:/layer/b/bar").getId());
- System.out.println(recursiveList("main", -1, true));
- // Now link /layer/b/c/foo into /layer/b.
- fService.link("main:/layer/b", "foo", fService.lookup(-1, "main:/layer/b/c/foo"));
- assertEquals(fService.lookup(-1, "main:/layer/b/c/foo").getId(), fService.lookup(-1, "main:/layer/b/foo").getId());
- // Make sure that the underlying layer is not mucked up.
- assertTrue(fService.lookup(-1, "main:/a/b/foo", true).isDeleted());
- System.out.println(recursiveList("main", -1, true));
- // Try to link /layer/b/c/bar to /layer/b/c. It should fail.
- try
- {
- fService.link("main:/layer/b", "bar", fService.lookup(-1, "main:/layer/b/c/bar"));
- fail();
- }
- catch (AVMExistsException e)
- {
- // Do nothing.
- }
- // Try to link /layer/b to /frinx. It should fail.
- try
- {
- fService.link("main:/", "frinx", fService.lookup(-1, "main:/layer/b"));
- fail();
- }
- catch (AVMBadArgumentException ba)
- {
- // Do nothing.
- }
- // Delete /layer/b/bar and redo. It should work.
- fService.removeNode("main:/layer/b", "bar");
- fService.link("main:/layer/b", "bar", fService.lookup(-1, "main:/layer/b/c/bar"));
- assertEquals(fService.lookup(-1, "main:/layer/b/c/bar").getId(), fService.lookup(-1, "main:/layer/b/bar").getId());
- System.out.println(recursiveList("main", -1, true));
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- /**
- * Test goofy paths.
- */
- public void testGoofyPaths() throws Exception
- {
- try
- {
- setupBasicTree();
- fService.getFileInputStream(-1, "main://a/b/c/foo").close();
- fService.getDirectoryListing(-1, "main:/a/");
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- /**
- * Test getting deleted names.
- */
- public void testGetDeleted() throws Exception
- {
- try
- {
- setupBasicTree();
- fService.createLayeredDirectory("main:/a", "main:/", "layer");
- fService.createSnapshot("main", null, null);
- List deleted = fService.getDeleted(-1, "main:/layer/b/c");
- assertEquals(0, deleted.size());
- fService.removeNode("main:/a/b/c", "foo");
- fService.createSnapshot("main", null, null);
- deleted = fService.getDeleted(-1, "main:/a/b/c");
- assertEquals(0, deleted.size());
- fService.removeNode("main:/layer/b/c", "bar");
- fService.createSnapshot("main", null, null);
- deleted = fService.getDeleted(-1, "main:/layer/b/c");
- assertEquals(1, deleted.size());
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- /**
- * Test directly contained listing.
- */
- public void testListingDirect() throws Exception
- {
- try
- {
- setupBasicTree();
- fService.createLayeredDirectory("main:/a", "main:/", "layer");
- fService.createSnapshot("main", null, null);
- Map listing = fService.getDirectoryListingDirect(-1, "main:/layer");
- assertEquals(0, listing.size());
- listing = fService.getDirectoryListingDirect(-1, "main:/layer/b");
- assertEquals(0, listing.size());
- fService.createFile("main:/layer/b/c", "sigmoid").close();
- fService.createSnapshot("main", null, null);
- listing = fService.getDirectoryListingDirect(-1, "main:/layer");
- assertEquals(1, listing.size());
- fService.createFile("main:/layer", "lepton").close();
- fService.createSnapshot("main", null, null);
- listing = fService.getDirectoryListingDirect(-1, "main:/layer");
- assertEquals(2, listing.size());
- listing = fService.getDirectoryListingDirect(-1, "main:/layer/b/c");
- assertEquals(1, listing.size());
- listing = fService.getDirectoryListingDirect(-1, "main:/a/b/c");
- assertEquals(2, listing.size());
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- /**
- * Test layering info.
- */
- public void testLayeringInfo() throws Exception
- {
- try
- {
- setupBasicTree();
- fService.createStore("layer");
- fService.createLayeredDirectory("main:/a", "layer:/", "alayer");
- fService.createSnapshot("layer", null, null);
- LayeringDescriptor info = fService.getLayeringInfo(-1, "layer:/alayer");
- assertFalse(info.isBackground());
- assertEquals("layer", info.getPathAVMStore().getName());
- assertEquals("layer", info.getNativeAVMStore().getName());
- info = fService.getLayeringInfo(-1, "layer:/alayer/b/c");
- assertTrue(info.isBackground());
- assertEquals("layer", info.getPathAVMStore().getName());
- assertEquals("main", info.getNativeAVMStore().getName());
- fService.createFile("layer:/alayer/b", "figs").close();
- fService.createSnapshot("layer", null, null);
- info = fService.getLayeringInfo(-1, "layer:/alayer/b/figs");
- assertFalse(info.isBackground());
- assertEquals("layer", info.getPathAVMStore().getName());
- assertEquals("layer", info.getNativeAVMStore().getName());
- info = fService.getLayeringInfo(-1, "layer:/alayer/b/c");
- assertTrue(info.isBackground());
- assertEquals("layer", info.getPathAVMStore().getName());
- assertEquals("main", info.getNativeAVMStore().getName());
- fService.createLayeredDirectory("layer:/alayer/b", "layer:/", "blayer");
- fService.createSnapshot("layer", null, null);
- System.err.println(recursiveList("main", -1, true));
- System.err.println(recursiveList("layer", -1, true));
- info = fService.getLayeringInfo(-1, "layer:/blayer/c");
- assertEquals("main", info.getNativeAVMStore().getName());
- info = fService.getLayeringInfo(-1, "layer:/blayer/figs");
- assertEquals("layer", info.getNativeAVMStore().getName());
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- finally
- {
- fService.purgeStore("layer");
- }
- }
-
- /**
- * Another test of renaming in a layer.
- */
- public void testRenameLayer2() throws Exception
- {
- try
- {
- TreeMap history = new TreeMap();
- // Set up a basic hierarchy.
- fService.createDirectory("main:/", "a");
- fService.createDirectory("main:/a", "b");
- fService.createDirectory("main:/a", "c");
- fService.createFile("main:/a/b", "foo", new ByteArrayInputStream("I am foo.".getBytes()));
- fService.createFile("main:/a/c", "bar", new ByteArrayInputStream("I am bar.".getBytes()));
- fService.createSnapshot("main", null, null);
- // History is unchanged.
- checkHistory(history, "main");
- // Make a layer to a.
- fService.createLayeredDirectory("main:/a", "main:/", "layer");
- fService.createSnapshot("main", null, null);
- // History is unchanged.
- checkHistory(history, "main");
- // /a and /layer should have identical contents.
- assertEquals(recursiveContents("main:/a", -1, true), recursiveContents("main:/layer", -1, true));
- // Now rename /layer/c/bar to /layer/b/bar
- fService.rename("main:/layer/c", "bar", "main:/layer/b", "bar");
- fService.createSnapshot("main", null, null);
- // History is unchanged.
- checkHistory(history, "main");
- // /layer/c should be empty.
- Map listing = fService.getDirectoryListing(-1, "main:/layer/c");
- assertEquals(0, listing.size());
- // /layer/b should contain fao and bar
- listing = fService.getDirectoryListing(-1, "main:/layer/b");
- assertEquals(2, listing.size());
- List list = new ArrayList(listing.keySet());
- assertEquals("bar", list.get(0));
- assertEquals("foo", list.get(1));
- // /a/b should contain foo.
- listing = fService.getDirectoryListing(-1, "main:/a/b");
- assertEquals(1, listing.size());
- list = new ArrayList(listing.keySet());
- assertEquals("foo", list.get(0));
- // /a/c should contain bar.
- listing = fService.getDirectoryListing(-1, "main:/a/c");
- assertEquals(1, listing.size());
- list = new ArrayList(listing.keySet());
- assertEquals("bar", list.get(0));
- // Now make a file in /a/b
- fService.createFile("main:/a/b", "baz").close();
- fService.createSnapshot("main", null, null);
- // History is unchanged.
- checkHistory(history, "main");
- // /a/b should contain baz and foo.
- listing = fService.getDirectoryListing(-1, "main:/a/b");
- assertEquals(2, listing.size());
- list = new ArrayList(listing.keySet());
- assertEquals("baz", list.get(0));
- assertEquals("foo", list.get(1));
- // /layer/b should contain foo, bar, and baz.
- listing = fService.getDirectoryListing(-1, "main:/layer/b");
- System.out.println(recursiveList("main", -1, true));
- assertEquals(3, listing.size());
- list = new ArrayList(listing.keySet());
- assertEquals("bar", list.get(0));
- assertEquals("baz", list.get(1));
- assertEquals("foo", list.get(2));
- // Remove baz from /layer/b
- fService.removeNode("main:/layer/b", "baz");
- fService.createSnapshot("main", null, null);
- // History is unchanged.
- checkHistory(history, "main");
- System.out.println(recursiveList("main", -1, true));
- // /layer/b should have bar and foo.
- listing = fService.getDirectoryListing(-1, "main:/layer/b");
- assertEquals(2, listing.size());
- list = new ArrayList(listing.keySet());
- assertEquals("bar", list.get(0));
- assertEquals("foo", list.get(1));
- // /a/b should contain baz and foo as before.
- listing = fService.getDirectoryListing(-1, "main:/a/b");
- assertEquals(2, listing.size());
- list = new ArrayList(listing.keySet());
- assertEquals("baz", list.get(0));
- assertEquals("foo", list.get(1));
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- /**
- * Yet another test around rename in layers.
- */
- public void testRenameLayer3() throws Exception
- {
- try
- {
- TreeMap history = new TreeMap();
- // Set up a handy hierarchy.
- fService.createDirectory("main:/", "a");
- fService.createDirectory("main:/a", "b");
- fService.createFile("main:/a/b", "foo").close();
- fService.createFile("main:/a/b", "bar").close();
- fService.createDirectory("main:/", "c");
- fService.createDirectory("main:/c", "d");
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // Make a layer over /a
- fService.createLayeredDirectory("main:/a", "main:/", "layer");
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // Move /c/d to /layer
- fService.rename("main:/c", "d", "main:/layer", "d");
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // Now make a file in /layer/d
- fService.createFile("main:/layer/d", "baz").close();
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // Make /a/d/figs and see the wackiness.
- fService.createDirectory("main:/a", "d");
- fService.createFile("main:/a/d", "figs").close();
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // /layer/d should no contain baz and figs.
- Map listing = fService.getDirectoryListing(-1, "main:/layer/d");
- assertEquals(2, listing.size());
- List list = new ArrayList(listing.keySet());
- assertEquals("baz", list.get(0));
- assertEquals("figs", list.get(1));
- for (String val : history.values())
- {
- System.out.println(val);
- }
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- /**
- * Test the uncover operation.
- */
- public void testUncover() throws Exception
- {
- try
- {
- TreeMap history = new TreeMap();
- // Set up a handy hierarchy.
- fService.createDirectory("main:/", "a");
- fService.createDirectory("main:/a/", "b");
- fService.createFile("main:/a/b", "foo").close();
- fService.createFile("main:/a/b", "bar").close();
- fService.createDirectory("main:/", "c");
- fService.createDirectory("main:/c", "d");
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // Make a layer over /a
- fService.createLayeredDirectory("main:/a", "main:/", "layer");
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // Move /c/d to /layer
- fService.rename("main:/c", "d", "main:/layer", "d");
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // Make a file in /layer/d
- fService.createFile("main:/layer/d", "baz").close();
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // Make /a/d/figs and see the wackiness.
- fService.createDirectory("main:/a", "d");
- fService.createFile("main:/a/d", "figs").close();
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // /layer/d should now contain baz and figs.
- Map listing = fService.getDirectoryListing(-1, "main:/layer/d");
- assertEquals(2, listing.size());
- List list = new ArrayList(listing.keySet());
- assertEquals("baz", list.get(0));
- assertEquals("figs", list.get(1));
- // Rename /layer/d to /layer/e and uncover /layer/d
- System.out.println(recursiveContents("main:/", -1, true));
- fService.rename("main:/layer", "d", "main:/layer", "e");
- fService.uncover("main:/layer", "d");
- fService.createSnapshot("main", null, null);
- System.out.println(recursiveContents("main:/", -1, true));
- // History unchanged.
- checkHistory(history, "main");
- // /layer/d contains figs.
- listing = fService.getDirectoryListing(-1, "main:/layer/d");
- assertEquals(1, listing.size());
- list = new ArrayList(listing.keySet());
- assertEquals("figs", list.get(0));
- // /layer/e contains baz and figs.
- listing = fService.getDirectoryListing(-1, "main:/layer/e");
- assertEquals(2, listing.size());
- list = new ArrayList(listing.keySet());
- assertEquals("baz", list.get(0));
- assertEquals("figs", list.get(1));
- for (String val : history.values())
- {
- System.out.println(val);
- }
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- /**
- * Another test of renaming in a layer.
- */
- public void testRenameLayer4() throws Exception
- {
- try
- {
- TreeMap history = new TreeMap();
- // Set up a handy hierarchy.
- fService.createDirectory("main:/", "a");
- fService.createDirectory("main:/a", "b");
- fService.createFile("main:/a/b", "foo").close();
- fService.createFile("main:/a/b", "bar").close();
- fService.createDirectory("main:/", "c");
- fService.createDirectory("main:/c", "d");
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // Make a layer over /a
- fService.createLayeredDirectory("main:/a", "main:/", "layer");
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // Move /layer/b to /b
- fService.rename("main:/layer", "b", "main:/", "b");
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // Add something to /a/b and it should show up in /b.
- fService.createFile("main:/a/b", "baz").close();
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // /b should have foo and bar and baz.
- Map listing = fService.getDirectoryListing(-1, "main:/b");
- assertEquals(3, listing.size());
- List list = new ArrayList(listing.keySet());
- assertEquals("bar", list.get(0));
- assertEquals("baz", list.get(1));
- assertEquals("foo", list.get(2));
- // Add something to /a and it will show up in /layer.
- fService.createFile("main:/a", "figs").close();
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // /layer should have figs in it.
- listing = fService.getDirectoryListing(-1, "main:/layer");
- assertEquals(1, listing.size());
- list = new ArrayList(listing.keySet());
- assertEquals("figs", list.get(0));
- for (String val : history.values())
- {
- System.out.println(val);
- }
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- /**
- * Test branching within branches.
- */
- public void testBranchesInBranches() throws Exception
- {
- try
- {
- TreeMap history = new TreeMap();
- // Set up a hierarchy.
- setupBasicTree();
- // History unchanged.
- checkHistory(history, "main");
- // Make a branch from /a
- fService.createBranch(-1, "main:/a", "main:/", "abranch");
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // Make a branch in something that has been branched.
- fService.createBranch(-1, "main:/a/b", "main:/a", "bbranch");
- fService.createSnapshot("main", null, null);
- // History unchanged
- checkHistory(history, "main");
- // Everything under /abranch should be identical in this version
- // and the previous.
- int version = fService.getNextVersionID("main");
- assertEquals(recursiveContents("main:/abranch", version - 1, true), recursiveContents("main:/abranch", version - 2, true));
- // Make a branch within a branch.
- fService.createBranch(-1, "main:/abranch/b/c", "main:/abranch/b", "cbranch");
- fService.createSnapshot("main", null, null);
- // History unchanged
- checkHistory(history, "main");
- // Everything under /a should be unchanged between this version and the last.
- version = fService.getNextVersionID("main");
- assertEquals(recursiveContents("main:/a", version - 1, true), recursiveContents("main:/a", version - 2, true));
- // Make a branch to something outside of a branch inside a branch.
- fService.createBranch(-1, "main:/d", "main:/abranch", "dbranch");
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // Make something ind /abranch/dbranch.
- fService.createFile("main:/abranch/dbranch/e/f", "baz").close();
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // d should not have changed since the previous version.
- version = fService.getNextVersionID("main");
- assertEquals(recursiveContents("main:/d", version - 1, true), recursiveContents("main:/d", version - 2, true));
- for (String val : history.values())
- {
- System.out.println(val);
- }
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- /**
- * Test layers inside of layers.
- */
- public void testLayersInLayers() throws Exception
- {
- try
- {
- TreeMap history = new TreeMap();
- setupBasicTree();
- // History unchanged.
- checkHistory(history, "main");
- // Create a layer to /a
- fService.createLayeredDirectory("main:/a", "main:/", "layer");
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // Make a layer inside of a layer pointing to d.
- fService.createLayeredDirectory("main:/d", "main:/layer", "under");
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // Create a file in /layer/under/e/f.
- fService.createFile("main:/layer/under/e/f", "baz").close();
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // Create a file in /d/e.
- fService.createFile("main:/d/e", "bow").close();
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // /layer/under/e should contain bow and f.
- Map listing = fService.getDirectoryListing(-1, "main:/layer/under/e");
- assertEquals(2, listing.size());
- List list = new ArrayList(listing.keySet());
- assertEquals("bow", list.get(0));
- assertEquals("f", list.get(1));
- // Put a new set of dirs in to be made into a layering under d.
- fService.createDirectory("main:/", "g");
- fService.createDirectory("main:/g", "h");
- fService.createDirectory("main:/g/h", "i");
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // Make a layer in /d to /g.
- fService.createLayeredDirectory("main:/g", "main:/d", "gover");
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // /d/gover should be identical to /layer/under/gover
- assertEquals(recursiveContents("main:/d/gover", -1, true), recursiveContents("main:/layer/under/gover", -1, true));
- // Create a file in /layer/under/gover/h/i
- fService.createFile("main:/layer/under/gover/h/i", "moo").close();
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // /d should be unchanged before this version and the last
- // and /g should be unchanged between this version and the last.
- int version = fService.getNextVersionID("main");
- // TODO Need an equivalent test that won't mind the version number change
- // assertEquals(recursiveContents("main:/d", version - 1, true),
- // recursiveContents("main:/d", version - 2, true));
- // assertEquals(recursiveContents("main:/g", version - 1, true),
- // recursiveContents("main:/g", version - 2, true));
- // Add a file through /d/gover/h/i
- fService.createFile("main:/d/gover/h/i", "cow").close();
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // /g should not have changed since its last version.
- version = fService.getNextVersionID("main");
- assertEquals(recursiveContents("main:/g", version - 1, true), recursiveContents("main:/g", version - 2, true));
- // /layer/under/gover/h/i shows both moo and cow.
- listing = fService.getDirectoryListing(-1, "main:/layer/under/gover/h/i");
- assertEquals(2, listing.size());
- list = new ArrayList(listing.keySet());
- assertEquals("cow", list.get(0));
- assertEquals("moo", list.get(1));
- // Rename /layer/under/gover to /layer/b/gover and see what happens.
- fService.rename("main:/layer/under", "gover", "main:/layer/b", "gover");
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // moo should be in /layer/b/gover/h/i
- listing = fService.getDirectoryListing(-1, "main:/layer/b/gover/h/i");
- assertEquals(1, listing.size());
- list = new ArrayList(listing.keySet());
- assertEquals("moo", list.get(0));
- // Add a new file to /layer/b/gover/h/i
- fService.createFile("main:/layer/b/gover/h/i", "oink").close();
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // /layer/b/gover/h/i should contain moo, oink.
- listing = fService.getDirectoryListing(-1, "main:/layer/b/gover/h/i");
- assertEquals(2, listing.size());
- list = new ArrayList(listing.keySet());
- assertEquals("moo", list.get(0));
- assertEquals("oink", list.get(1));
- for (String val : history.values())
- {
- System.out.println(val);
- }
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- /**
- * Test behavior when one branches a layer.
- */
- public void testLayerAndBranch() throws Exception
- {
- try
- {
- TreeMap history = new TreeMap();
- // Create a basic tree.
- fService.createDirectory("main:/", "a");
- fService.createDirectory("main:/a", "b");
- fService.createDirectory("main:/a/b", "c");
- fService.createFile("main:/a/b/c", "foo").close();
- fService.createFile("main:/a/b/c", "bar").close();
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // Create a layer over /a
- fService.createLayeredDirectory("main:/a", "main:/", "layer");
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // /a and /layer should have identical contents.
- assertEquals(recursiveContents("main:/a", -1, true), recursiveContents("main:/layer", -1, true));
- // Make a modification in /layer
- fService.createFile("main:/layer/b", "baz").close();
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // Branch off layer.
- fService.createBranch(-1, "main:/layer", "main:/", "branch");
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // /layer/b and /branch/b should have identical contents.
- assertEquals(recursiveContents("main:/layer/b", -1, true), recursiveContents("main:/branch/b", -1, true));
- // Create /branch/b/c/foo
- fService.createFile("main:/branch/b/c", "baz").close();
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // /layer should not have changed.
- int version = fService.getNextVersionID("main");
- assertEquals(recursiveContents("main:/layer", version - 1, true), recursiveContents("main:/layer", version - 2, true));
- // Change something in /layer
- fService.createFile("main:/layer/b/c", "fig").close();
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // /branch should not have changed.
- version = fService.getNextVersionID("main");
- assertEquals(recursiveContents("main:/branch", version - 1, true), recursiveContents("main:/branch", version - 2, true));
- // Create another layer on /a
- fService.createLayeredDirectory("main:/a", "main:/", "layer2");
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // Branch from /layer2/b.
- fService.createBranch(-1, "main:/layer2/b", "main:/", "branch2");
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // Create something in the branch.
- fService.createFile("main:/branch2", "goofy").close();
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // /layer2 should be unchanged.
- version = fService.getNextVersionID("main");
- assertEquals(recursiveContents("main:/layer2", version - 1, true), recursiveContents("main:/layer2", version - 2, true));
- // Remove something from /layer2
- fService.removeNode("main:/layer2/b/c", "foo");
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // /branch2 is unchanged.
- version = fService.getNextVersionID("main");
- assertEquals(recursiveContents("main:/branch2", version - 1, true), recursiveContents("main:/branch2", version - 2, true));
- // /a is unchanged.
- assertEquals(recursiveContents("main:/a", version - 1, true), recursiveContents("main:/a", version - 2, true));
- for (String val : history.values())
- {
- System.out.println(val);
- }
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- /**
- * Test scenario in which something is renamed from inside one independent layer to another.
- */
- public void testRenameLayerToLayer() throws Exception
- {
- try
- {
- TreeMap history = new TreeMap();
- // Set up two trees
- fService.createDirectory("main:/", "a");
- fService.createDirectory("main:/a", "b");
- fService.createDirectory("main:/a/b", "c");
- fService.createFile("main:/a/b/c", "foo").close();
- fService.createFile("main:/a/b/c", "bar").close();
- fService.createDirectory("main:/", "d");
- fService.createDirectory("main:/d", "e");
- fService.createDirectory("main:/d/e", "f");
- fService.createFile("main:/d/e/f", "moo").close();
- fService.createFile("main:/d/e/f", "cow").close();
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // Make a layer to /a and a layer to /d
- fService.createLayeredDirectory("main:/a", "main:/", "la");
- fService.createLayeredDirectory("main:/d", "main:/", "ld");
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // Move /la/b/c to /ld/e/c.
- fService.rename("main:/la/b", "c", "main:/ld/e", "c");
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // Create file /ld/e/c/baz.
- fService.createFile("main:/ld/e/c", "baz").close();
- fService.createSnapshot("main", null, null);
- // History unchanged.
- checkHistory(history, "main");
- // Here's the thing we'd like to assert.
- assertEquals("main:/a/b/c", fService.lookup(-1, "main:/ld/e/c").getIndirection());
- for (String val : history.values())
- {
- System.out.println(val);
- }
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- /**
- * Test Nothing. Just make sure set up works.
- */
- public void testNothing() throws Exception
- {
- }
-
- /**
- * Test making a simple directory.
- */
- public void testCreateDirectory() throws Exception
- {
- try
- {
- fService.createDirectory("main:/", "testdir");
- fService.createSnapshot("main", null, null);
- assertEquals(AVMNodeType.PLAIN_DIRECTORY, fService.lookup(-1, "main:/").getType());
-
- StoreRef storeRef = AVMNodeConverter.ToStoreRef("main");
-
- // Text index
- SearchService searchService = fIndexerAndSearcher.getSearcher(storeRef, true);
- ResultSet results = searchService.query(storeRef, "lucene", "@cm\\:name:testdir");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"//.\"");
- assertEquals(2, results.length());
- results.close();
-
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- /**
- * Test creating a file.
- */
- public void testCreateFile() throws Exception
- {
- try
- {
- testCreateDirectory();
- fService.createFile("main:/testdir", "testfile").close();
- fService.createFile("main:/", "testfile2").close();
- fService.createSnapshot("main", null, null);
-
- StoreRef storeRef = AVMNodeConverter.ToStoreRef("main");
-
- // Text index
- SearchService searchService = fIndexerAndSearcher.getSearcher(storeRef, true);
- ResultSet results = searchService.query(storeRef, "lucene", "@cm\\:name:testfile");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "@cm\\:name:testfile2");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "TEXT:\"This is testdir/testfile\"");
- assertEquals(0, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "TEXT:\"This is testfile2\"");
- assertEquals(0, results.length());
- results.close();
-
- ContentWriter writer = fService.getContentWriter("main:/testdir/testfile", true);
- writer.setEncoding("UTF-8");
- writer.setMimetype(MimetypeMap.MIMETYPE_TEXT_PLAIN);
- PrintStream out = new PrintStream(writer.getContentOutputStream());
- out.println("This is testdir/testfile");
- out.close();
-
- out = new PrintStream(fService.getFileOutputStream("main:/testfile2"));
-
- writer = fService.getContentWriter("main:/testfile2", true);
- writer.setEncoding("UTF-8");
- writer.setMimetype(MimetypeMap.MIMETYPE_TEXT_PLAIN);
- out = new PrintStream(writer.getContentOutputStream());
- out.println("This is testfile2");
- out.close();
- fService.createSnapshot("main", null, null);
-
- results = searchService.query(storeRef, "lucene", "TEXT:\"This is testdir/testfile\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "TEXT:\"This is testfile2\"");
- assertEquals(1, results.length());
- results.close();
-
- List versions = fService.getStoreVersions("main");
- for (VersionDescriptor version : versions)
- {
- System.out.println("V:" + version.getVersionID());
- System.out.println(recursiveList("main", version.getVersionID(), true));
- }
- BufferedReader reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/testdir/testfile")));
- String line = reader.readLine();
- assertEquals("This is testdir/testfile", line);
- reader.close();
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/testfile2")));
- line = reader.readLine();
- assertEquals("This is testfile2", line);
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- /**
- * Test creating a branch.
- */
- public void testCreateBranch() throws Exception
- {
- try
- {
- setupBasicTree();
- fService.createBranch(-1, "main:/a", "main:/d/e", "abranch");
- fService.createSnapshot("main", null, null);
- List versions = fService.getStoreVersions("main");
- for (VersionDescriptor version : versions)
- {
- System.out.println("V:" + version.getVersionID());
- System.out.println(recursiveList("main", version.getVersionID(), true));
- }
- String original = recursiveList("main:/a", -1, 0, true);
- original = original.substring(original.indexOf('\n'));
- String branch = recursiveList("main:/d/e/abranch", -1, 0, true);
- branch = branch.substring(branch.indexOf('\n'));
- assertEquals(original, branch);
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- /**
- * Test creating a layer.
- */
- public void testCreateLayer() throws Exception
- {
- try
- {
- setupBasicTree();
- fService.createLayeredDirectory("main:/a", "main:/d/e", "alayer");
- fService.createSnapshot("main", null, null);
- System.out.println(recursiveList("main", -1, true));
- assertEquals("main:/a", fService.getIndirectionPath(-1, "main:/d/e/alayer"));
- assertEquals(recursiveContents("main:/a", -1, true), recursiveContents("main:/d/e/alayer", -1, true));
- PrintStream out = new PrintStream(fService.getFileOutputStream("main:/d/e/alayer/b/c/foo"));
- out.println("I am main:/d/e/alayer/b/c/foo");
- out.close();
- fService.createSnapshot("main", null, null);
- BufferedReader reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/a/b/c/foo")));
- String line = reader.readLine();
- reader.close();
- assertEquals("I am main:/a/b/c/foo", line);
- System.out.println(recursiveList("main", -1, true));
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- /**
- * Test creating a layered file.
- */
- public void testLayeredFile1() throws Exception
- {
- try
- {
- setupBasicTree();
- fService.createLayeredFile("main:/a/b/c/foo", "main:/d", "lfoo");
- assertTrue(fService.lookup(-1, "main:/d/lfoo").isLayeredFile());
- fService.createSnapshot("main", null, null);
- System.out.println(recursiveList("main", -1, true));
- assertEquals("main:/a/b/c/foo", fService.lookup(-1, "main:/d/lfoo").getIndirection());
- assertTrue(fService.lookup(-1, "main:/d/lfoo").isLayeredFile());
- BufferedReader reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/d/lfoo")));
- String line = reader.readLine();
- reader.close();
- assertEquals("I am main:/a/b/c/foo", line);
- PrintStream out = new PrintStream(fService.getFileOutputStream("main:/d/lfoo"));
- out.println("I am main:/d/lfoo");
- out.close();
- assertFalse(fService.lookup(-1, "main:/d/lfoo").isLayeredFile());
- fService.createSnapshot("main", null, null);
- System.out.println(recursiveList("main", -1, true));
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/a/b/c/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am main:/a/b/c/foo", line);
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/d/lfoo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am main:/d/lfoo", line);
- assertFalse(fService.lookup(-1, "main:/d/lfoo").isLayeredFile());
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- public void testLayeredFile2() throws Exception
- {
- try
- {
- AVMNodeDescriptor desc = fService.lookup(-1, "main:/foo");
- assertNull(desc);
-
- try
- {
- fService.getFileOutputStream("main:/foo");
- fail("Unexpected");
- }
- catch (AVMNotFoundException nfe)
- {
- // expected
- }
-
- try
- {
- fService.getFileInputStream(-1, "main:/foo");
- fail("Unexpected");
- }
- catch (AVMNotFoundException nfe)
- {
- // expected
- }
-
- // create plain file
- fService.createFile("main:/", "foo").close();
-
- assertEquals(1, fService.lookup(-1, "main:/foo").getVersionID());
-
- BufferedReader reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/foo")));
- String line = reader.readLine();
- reader.close();
- assertNull(line);
-
- PrintStream out = new PrintStream(fService.getFileOutputStream("main:/foo"));
- out.println("I am main:/foo V1a");
- out.close();
-
- // update plain file
-
- out = new PrintStream(fService.getFileOutputStream("main:/foo"));
- out.println("I am main:/foo V1b");
- out.close();
-
- out = new PrintStream(fService.getFileOutputStream("main:/foo"));
- out.println("I am main:/foo V1c");
- out.close();
-
- assertEquals(1, fService.lookup(-1, "main:/foo").getVersionID());
-
- fService.createSnapshot("main", null, null);
-
- assertEquals(1, fService.lookup(-1, "main:/foo").getVersionID());
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am main:/foo V1c", line);
-
- // update plain file
-
- out = new PrintStream(fService.getFileOutputStream("main:/foo"));
- out.println("I am main:/foo V2a");
- out.close();
-
- assertEquals(2, fService.lookup(-1, "main:/foo").getVersionID());
-
- out = new PrintStream(fService.getFileOutputStream("main:/foo"));
- out.println("I am main:/foo V2b");
- out.close();
-
- assertEquals(2, fService.lookup(-1, "main:/foo").getVersionID());
-
- fService.createSnapshot("main", null, null);
-
- assertEquals(2, fService.lookup(-1, "main:/foo").getVersionID());
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am main:/foo V2b", line);
-
- // update plain file
- out = new PrintStream(fService.getFileOutputStream("main:/foo"));
- out.println("I am main:/foo V3");
- out.close();
-
- assertEquals(3, fService.lookup(-1, "main:/foo").getVersionID());
-
- fService.createSnapshot("main", null, null);
-
- assertEquals(3, fService.lookup(-1, "main:/foo").getVersionID());
-
- try
- {
- fService.createLayeredFile("main:/foo", "main:/", "foo");
- fail("Unexpected");
- }
- catch (AVMExistsException ee)
- {
- // expected
- }
-
- // create layered file
- fService.createLayeredFile("main:/foo", "main:/", "lfoo");
-
- assertEquals(3, fService.lookup(-1, "main:/foo").getVersionID());
- assertEquals(1, fService.lookup(-1, "main:/lfoo").getVersionID());
- assertTrue(fService.lookup(-1, "main:/lfoo").isLayeredFile());
-
- assertEquals("main:/foo", fService.lookup(-1, "main:/lfoo").getIndirection());
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am main:/foo V3", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/lfoo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am main:/foo V3", line);
-
- fService.createSnapshot("main", null, null);
-
- assertEquals(3, fService.lookup(-1, "main:/foo").getVersionID());
- assertEquals(1, fService.lookup(-1, "main:/lfoo").getVersionID());
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am main:/foo V3", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/lfoo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am main:/foo V3", line);
-
- // update plain file
- out = new PrintStream(fService.getFileOutputStream("main:/foo"));
- out.println("I am main:/foo V4");
- out.close();
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am main:/foo V4", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/lfoo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am main:/foo V4", line);
-
- assertEquals(4, fService.lookup(-1, "main:/foo").getVersionID());
- assertEquals(1, fService.lookup(-1, "main:/lfoo").getVersionID());
-
- fService.createSnapshot("main", null, null);
-
- assertEquals(4, fService.lookup(-1, "main:/foo").getVersionID());
- assertEquals(2, fService.lookup(-1, "main:/lfoo").getVersionID());
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am main:/foo V4", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/lfoo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am main:/foo V4", line);
-
- // update plain file
-
- out = new PrintStream(fService.getFileOutputStream("main:/foo"));
- out.println("I am main:/foo V5a");
- out.close();
-
- out = new PrintStream(fService.getFileOutputStream("main:/foo"));
- out.println("I am main:/foo V5b");
- out.close();
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am main:/foo V5b", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/lfoo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am main:/foo V5b", line);
-
- assertEquals(5, fService.lookup(-1, "main:/foo").getVersionID());
- assertEquals(2, fService.lookup(-1, "main:/lfoo").getVersionID());
-
- fService.createSnapshot("main", null, null);
-
- assertEquals(5, fService.lookup(-1, "main:/foo").getVersionID());
- assertEquals(3, fService.lookup(-1, "main:/lfoo").getVersionID());
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am main:/foo V5b", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/lfoo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am main:/foo V5b", line);
-
- // update plain file
- out = new PrintStream(fService.getFileOutputStream("main:/foo"));
- out.println("I am main:/foo V6");
- out.close();
-
- assertEquals(6, fService.lookup(-1, "main:/foo").getVersionID());
- assertEquals(3, fService.lookup(-1, "main:/lfoo").getVersionID());
-
- fService.createSnapshot("main", null, null);
-
- assertEquals(6, fService.lookup(-1, "main:/foo").getVersionID());
- assertEquals(4, fService.lookup(-1, "main:/lfoo").getVersionID());
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am main:/foo V6", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/lfoo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am main:/foo V6", line);
-
- // update layered file
- out = new PrintStream(fService.getFileOutputStream("main:/lfoo"));
- out.println("I am main:/lfoo V1");
- out.close();
-
- assertEquals(6, fService.lookup(-1, "main:/foo").getVersionID());
- assertEquals(5, fService.lookup(-1, "main:/lfoo").getVersionID());
- assertFalse(fService.lookup(-1, "main:/lfoo").isLayeredFile());
-
- fService.createSnapshot("main", null, null);
-
- assertEquals(6, fService.lookup(-1, "main:/foo").getVersionID());
- assertEquals(5, fService.lookup(-1, "main:/lfoo").getVersionID());
- assertFalse(fService.lookup(-1, "main:/lfoo").isLayeredFile());
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am main:/foo V6", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/lfoo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am main:/lfoo V1", line);
-
- // update layered file
- out = new PrintStream(fService.getFileOutputStream("main:/lfoo"));
- out.println("I am main:/lfoo V2");
- out.close();
-
- assertEquals(6, fService.lookup(-1, "main:/foo").getVersionID());
- assertEquals(6, fService.lookup(-1, "main:/lfoo").getVersionID());
- assertFalse(fService.lookup(-1, "main:/lfoo").isLayeredFile());
-
- fService.createSnapshot("main", null, null);
-
- assertEquals(6, fService.lookup(-1, "main:/foo").getVersionID());
- assertEquals(6, fService.lookup(-1, "main:/lfoo").getVersionID());
- assertFalse(fService.lookup(-1, "main:/lfoo").isLayeredFile());
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am main:/foo V6", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/lfoo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am main:/lfoo V2", line);
-
- // remove plain file
- fService.removeNode("main:/foo");
-
- desc = fService.lookup(-1, "main:/foo");
- assertNull(desc);
-
- try
- {
- fService.getFileOutputStream("main:/foo");
- fail("Unexpected");
- }
- catch (AVMNotFoundException nfe)
- {
- // expected
- }
-
- try
- {
- fService.getFileInputStream(-1, "main:/foo");
- fail("Unexpected");
- }
- catch (AVMNotFoundException nfe)
- {
- // expected
- }
-
- fService.createSnapshot("main", null, null);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/lfoo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am main:/lfoo V2", line);
-
- assertEquals(6, fService.lookup(-1, "main:/lfoo").getVersionID());
-
- // remove layered file
- fService.removeNode("main:/lfoo");
-
- desc = fService.lookup(-1, "main:/lfoo");
- assertNull(desc);
-
- try
- {
- fService.getFileOutputStream("main:/lfoo");
- fail("Unexpected");
- }
- catch (AVMNotFoundException nfe)
- {
- // expected
- }
-
- try
- {
- fService.getFileInputStream(-1, "main:/lfoo");
- fail("Unexpected");
- }
- catch (AVMNotFoundException nfe)
- {
- // expected
- }
-
- fService.createSnapshot("main", null, null);
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- public void testLayeredFile3() throws Exception
- {
- try
- {
- AVMNodeDescriptor desc = fService.lookup(-1, "main:/foo");
- assertNull(desc);
-
- try
- {
- fService.getFileOutputStream("main:/foo");
- fail("Unexpected");
- }
- catch (AVMNotFoundException nfe)
- {
- // expected
- }
-
- try
- {
- fService.getFileInputStream(-1, "main:/foo");
- fail("Unexpected");
- }
- catch (AVMNotFoundException nfe)
- {
- // expected
- }
-
- // create layered file (pointing nowhere)
- fService.createLayeredFile("main:/foo", "main:/", "lfoo");
-
- assertEquals(1, fService.lookup(-1, "main:/lfoo").getVersionID());
-
- fService.createSnapshot("main", null, null);
-
- try
- {
- fService.getFileOutputStream("main:/lfoo");
- fail("Unexpected");
- }
- catch (AVMException e)
- {
- // TODO - review
- }
-
- try
- {
- fService.getFileInputStream(-1, "main:/lfoo");
- fail("Unexpected");
- }
- catch (AVMException e)
- {
- // TODO - review
- }
-
- // create plain file
- fService.createFile("main:/", "foo").close();
-
- assertEquals(1, fService.lookup(-1, "main:/foo").getVersionID());
- assertEquals(1, fService.lookup(-1, "main:/lfoo").getVersionID());
-
- BufferedReader reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/foo")));
- String line = reader.readLine();
- reader.close();
- assertNull(line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/lfoo")));
- line = reader.readLine();
- reader.close();
- assertNull(line);
-
- // update plain file
- PrintStream out = new PrintStream(fService.getFileOutputStream("main:/foo"));
- out.println("I am main:/foo V1");
- out.close();
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am main:/foo V1", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/lfoo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am main:/foo V1", line);
-
- assertEquals(1, fService.lookup(-1, "main:/foo").getVersionID());
- assertEquals(1, fService.lookup(-1, "main:/lfoo").getVersionID());
-
- fService.createSnapshot("main", null, null);
-
- assertEquals(1, fService.lookup(-1, "main:/foo").getVersionID());
- assertEquals(2, fService.lookup(-1, "main:/lfoo").getVersionID());
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am main:/foo V1", line);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/lfoo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am main:/foo V1", line);
-
- // remove plain file
- fService.removeNode( "main:/foo");
-
- desc = fService.lookup(-1, "main:/foo");
- assertNull(desc);
-
- try
- {
- fService.getFileOutputStream("main:/foo");
- fail("Unexpected");
- }
- catch (AVMNotFoundException nfe)
- {
- // expected
- }
-
- try
- {
- fService.getFileInputStream(-1, "main:/foo");
- fail("Unexpected");
- }
- catch (AVMNotFoundException nfe)
- {
- // expected
- }
-
- assertEquals(2, fService.lookup(-1, "main:/lfoo").getVersionID());
-
- try
- {
- fService.getFileInputStream(-1, "main:/lfoo");
- fail("Unexpected");
- }
- catch (AVMNotFoundException nfe)
- {
- // expected
- }
-
- fService.createSnapshot("main", null, null);
-
- assertEquals(3, fService.lookup(-1, "main:/lfoo").getVersionID());
-
- try
- {
- fService.getFileInputStream(-1, "main:/lfoo");
- fail("Unexpected");
- }
- catch (AVMNotFoundException nfe)
- {
- // expected
- }
-
- assertTrue(fService.lookup(-1, "main:/lfoo").isLayeredFile());
- assertFalse(fService.lookup(-1, "main:/lfoo").isPlainFile());
-
- try
- {
- fService.getFileOutputStream("main:/lfoo");
- fail();
- }
- catch (AVMException e)
- {
- // TODO - review
- }
-
- // remove layered file
- fService.removeNode("main:/lfoo");
-
- fService.createSnapshot("main", null, null);
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- public void testLayeredFile4() throws Exception
- {
- try
- {
- fService.createStore("mainA");
- fService.createStore("mainB");
- fService.createStore("mainB--layer");
-
- fService.createDirectory("mainA:/", "a");
- fService.createDirectory("mainB:/", "a");
-
- fService.createLayeredDirectory("mainB:/a", "mainB--layer:/", "a");
-
- // note: unlike WCM, edit staging directly (ie. don't bother with mainA--layer for now)
- fService.createFile("mainA:/a", "foo").close();
-
- PrintStream out = new PrintStream(fService.getFileOutputStream("mainA:/a/foo"));
- out.println("I am mainA:/a/foo");
- out.close();
-
- fService.createSnapshot("mainA", null, null);
-
- // note: WCM does not expose layered file (between web project staging sandboxes)
- fService.createLayeredFile("mainA:/a/foo", "mainB:/a", "foo");
-
-
- AVMNodeDescriptor foo = fService.lookup(-1, "mainB--layer:/a/foo");
- assertEquals(1, foo.getVersionID());
- assertTrue(foo.isLayeredFile());
-
- ContentData cData = fService.getContentDataForRead(foo);
- assertNotNull(cData);
-
- BufferedReader reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB--layer:/a/foo")));
- String line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/foo", line);
-
-
- foo = fService.lookup(-1, "mainB:/a/foo");
- assertEquals(1, foo.getVersionID());
- assertTrue(foo.isLayeredFile());
-
- cData = fService.getContentDataForRead(foo);
- assertNotNull(cData);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainB:/a/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/foo", line);
-
-
- foo = fService.lookup(-1, "mainA:/a/foo");
- assertEquals(1, foo.getVersionID());
- assertTrue(foo.isPlainFile());
-
- cData = fService.getContentDataForRead(foo);
- assertNotNull(cData);
-
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "mainA:/a/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am mainA:/a/foo", line);
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- finally
- {
- fService.purgeStore("mainA");
- fService.purgeStore("mainB");
- fService.purgeStore("mainB--layer");
- }
- }
-
-
- /**
- * Test rename.
- */
- public void testRename() throws Exception
- {
- try
- {
- setupBasicTree();
-
- // -ve test
- try
- {
- // note: without trailing "/"
- fService.rename("main:/a", "b", "main:/a/b", "b");
- fail("Renaming folder into itself should cause cycle exception");
- }
- catch (AVMCycleException ace)
- {
- // ignore - expected
- }
-
- // -ve test
- try
- {
- // note: with trailing "/"
- fService.rename("main:/a/", "b", "main:/a/b/", "b");
- fail("Renaming folder into itself should cause cycle exception");
- }
- catch (AVMCycleException ace)
- {
- // ignore - expected
- }
-
- // -ve test
- try
- {
- fService.rename("main:/", "a", "main:/a/b", "c");
- fail("Renaming folder tree into itself should cause cycle exception");
- }
- catch (AVMCycleException ace)
- {
- // ignore - expected
- }
-
- fService.rename("main:/a", "b", "main:/d/e", "brenamed");
- fService.createSnapshot("main", null, null);
- System.out.println(recursiveList("main", -1, true));
- assertEquals(recursiveContents("main:/a/b", 1, true), recursiveContents("main:/d/e/brenamed", 2, true));
-
- // Test inedx update
-
- StoreRef storeRef = AVMNodeConverter.ToStoreRef("main");
-
- // Text index
- SearchService searchService = fIndexerAndSearcher.getSearcher(storeRef, true);
- ResultSet results = searchService.query(storeRef, "lucene", "TEXT:\"I am main\"");
- assertEquals(2, results.length());
- results.close();
-
- // Basic properties
-
- // Note "a" is a stop word and therefore not findable ...
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_NAME) + ":\"foo\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_NAME) + ":foo");
- assertEquals(1, results.length());
- results.close();
-
- // TODO: Fix auth in AVMDiskDriver and more??
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_CREATOR) + ":admin");
-
- assertEquals(9, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_MODIFIER) + ":admin");
- assertEquals(9, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_OWNER) + ":admin");
- assertEquals(9, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_NODE_UUID) + ":unknown");
- assertEquals(9, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_STORE_PROTOCOL) + ":avm");
- assertEquals(9, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_STORE_IDENTIFIER) + ":main");
- assertEquals(9, results.length());
- results.close();
-
- // Basic paths
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b\"");
- assertEquals(0, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d/e\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d/e/brenamed\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d/e/brenamed/c\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d/e/brenamed/c/foo\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d/e/brenamed/c/bar\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d/e/f\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"//.\"");
- assertEquals(9, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"//*\"");
- assertEquals(8, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a//.\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a//*\"");
- assertEquals(0, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/*\"");
- assertEquals(0, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"//c/*\"");
- assertEquals(2, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*\"");
- assertEquals(2, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*/*\"");
- assertEquals(2, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*/*/*\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*/*/*/*\"");
- assertEquals(2, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*/*/*/*/*\"");
- assertEquals(0, results.length());
- results.close();
-
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- /**
- * Test remove.
- */
- public void testRemove() throws Exception
- {
- try
- {
- setupBasicTree();
- TreeMap history = new TreeMap();
- checkHistory(history, "main");
- System.out.println(history.get(0));
- fService.removeNode("main:/a/b/c", "foo");
- fService.createSnapshot("main", null, null);
- checkHistory(history, "main");
- System.out.println(history.get(1));
- Map l = fService.getDirectoryListing(-1, "main:/a/b/c");
- assertEquals(1, l.size());
- fService.removeNode("main:/d", "e");
- fService.createSnapshot("main", null, null);
- checkHistory(history, "main");
- System.out.println(history.get(2));
- l = fService.getDirectoryListing(-1, "main:/d");
- assertEquals(0, l.size());
-
- // Text index
- StoreRef storeRef = AVMNodeConverter.ToStoreRef("main");
- SearchService searchService = fIndexerAndSearcher.getSearcher(storeRef, true);
- ResultSet results = searchService.query(storeRef, "lucene", "TEXT:\"I am main\"");
- assertEquals(1, results.length());
- results.close();
-
- // Basic properties
-
- // Note "a" is a stop word and therefore not findable ...
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_NAME) + ":\"foo\"");
- assertEquals(0, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_NAME) + ":foo");
- assertEquals(0, results.length());
- results.close();
-
- // TODO: Fix auth in AVMDiskDriver and more??
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_CREATOR) + ":admin");
- assertEquals(6, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_MODIFIER) + ":admin");
- assertEquals(6, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_OWNER) + ":admin");
- assertEquals(6, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_NODE_UUID) + ":unknown");
- assertEquals(6, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_STORE_PROTOCOL) + ":avm");
- assertEquals(6, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", SearchLanguageConversion.escapeLuceneQuery("@" + ContentModel.PROP_STORE_IDENTIFIER) + ":" + "main");
- assertEquals(6, results.length());
- results.close();
-
- // Basic paths
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b/c\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b/c/foo\"");
- assertEquals(0, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/b/c/bar\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d/e\"");
- assertEquals(0, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/d/e/f\"");
- assertEquals(0, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"//.\"");
- assertEquals(6, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"//*\"");
- assertEquals(5, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a//.\"");
- assertEquals(4, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a//*\"");
- assertEquals(3, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/a/*\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"//c/*\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*\"");
- assertEquals(2, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*/*\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*/*/*\"");
- assertEquals(1, results.length());
- results.close();
-
- results = searchService.query(storeRef, "lucene", "PATH:\"/*/*/*/*/*\"");
- assertEquals(0, results.length());
- results.close();
-
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- /**
- * Test branching from one AVMStore to another.
- */
- public void testBranchAcross() throws Exception
- {
- try
- {
- setupBasicTree();
- fService.createStore("second");
- List repos = fService.getStores();
- assertTrue(checkStoreExists("main", repos));
- assertTrue(checkStoreExists("second", repos));
- fService.createBranch(-1, "main:/", "second:/", "main");
- fService.createSnapshot("second", null, null);
- System.out.println(recursiveList("second", -1, true));
- assertEquals(recursiveContents("main:/", -1, true), recursiveContents("second:/main", -1, true));
- // Now make sure nothing happens to the branched from place,
- // if the branch is modified.
- PrintStream out = new PrintStream(fService.getFileOutputStream("second:/main/a/b/c/foo"));
- out.println("I am second:/main/a/b/c/foo");
- out.close();
- fService.createSnapshot("second", null, null);
- System.out.println(recursiveList("second", -1, true));
- BufferedReader reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/a/b/c/foo")));
- String line = reader.readLine();
- reader.close();
- assertEquals("I am main:/a/b/c/foo", line);
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- finally
- {
- fService.purgeStore("second");
- }
- }
-
- private boolean checkStoreExists(String storeName, List stores)
- {
- for (AVMStoreDescriptor store : stores)
- {
- if (store.getName().equals(storeName))
- {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Test creating a layer across AVMStores.
- */
- public void testLayerAcross() throws Exception
- {
- try
- {
- setupBasicTree();
- fService.createStore("second");
- fService.createLayeredDirectory("main:/", "second:/", "main");
- fService.createSnapshot("second", null, null);
- System.out.println(recursiveList("second", -1, true));
- assertEquals(recursiveContents("main:/", -1, true), recursiveContents("second:/main", -1, true));
- // Now make sure that a copy on write will occur and
- // that the underlying stuff doesn't get changed.
- PrintStream out = new PrintStream(fService.getFileOutputStream("second:/main/a/b/c/foo"));
- out.println("I am second:/main/a/b/c/foo");
- out.close();
- fService.createSnapshot("second", null, null);
- System.out.println(recursiveList("second", -1, true));
- BufferedReader reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "second:/main/a/b/c/foo")));
- String line = reader.readLine();
- reader.close();
- assertEquals("I am second:/main/a/b/c/foo", line);
- reader = new BufferedReader(new InputStreamReader(fService.getFileInputStream(-1, "main:/a/b/c/foo")));
- line = reader.readLine();
- reader.close();
- assertEquals("I am main:/a/b/c/foo", line);
- fService.purgeStore("second");
- fService.purgeVersion(1, "main");
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- }
-
- /**
- * Test rename across AVMStores.
- */
- public void testRenameAcross() throws Exception
- {
- try
- {
- setupBasicTree();
- fService.createStore("second");
- fService.rename("main:/a/b", "c", "second:/", "cmoved");
- ArrayList toSnapshot = new ArrayList();
- toSnapshot.add("main");
- toSnapshot.add("second");
- System.out.println(recursiveList("main", -1, true));
- System.out.println(recursiveList("second", -1, true));
- // Check that the moved thing has identical contents to the thing it
- // was moved from.
- assertEquals(recursiveContents("main:/a/b/c", 1, true), recursiveContents("second:/cmoved", -1, true));
- }
- catch (Exception e)
- {
- e.printStackTrace(System.err);
- throw e;
- }
- finally
- {
- fService.purgeStore("second");
- }
- }
-
- /**
- * Test COW in various circumstances.
- */
- public void testDeepCOW() throws Exception
- {
- try
- {
- // Makes a layer on top of a layer on top of a plain directory.
- // Assures that the correct layers are copied when files
- // are added in the two layers.
- fService.createDirectory("main:/", "a");
- fService.createDirectory("main:/a", "b");
- fService.createSnapshot("main", null, null);
- Map listing = fService.getDirectoryListing(-1, "main:/a");
- assertEquals(1, listing.size());
- List list = new ArrayList(listing.keySet());
- assertEquals("b", list.get(0));
- fService.createLayeredDirectory("main:/a", "main:/", "c");
- fService.createLayeredDirectory("main:/c", "main:/", "d");
- fService.createFile("main:/d/b", "foo.txt").close();
- fService.createSnapshot("main", null, null);
- System.out.println(recursiveList("main", -1, true));
- listing = fService.getDirectoryListing(-1, "main:/d/b");
- assertEquals(1, listing.size());
- list = new ArrayList(listing.keySet());
- assertEquals("foo.txt", list.get(0));
- fService.createFile("main:/c/b", "bar.txt").close();
- fService.createSnapshot("main", null, null);
- System.out.println(recursiveList("main", -1, true));
- listing = fService.getDirectoryListing(-1, "main:/c/b");
- assertEquals(1, listing.size());
- list = new ArrayList