You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by tr...@apache.org on 2013/11/26 15:12:28 UTC

svn commit: r1545669 - in /jackrabbit/commons/filevault/trunk/vault-core: ./ src/main/java/org/apache/jackrabbit/vault/fs/impl/io/ src/test/java/org/apache/jackrabbit/vault/packaging/integration/ src/test/resources/org/apache/jackrabbit/vault/packaging...

Author: tripod
Date: Tue Nov 26 14:12:28 2013
New Revision: 1545669

URL: http://svn.apache.org/r1545669
Log:
JCRVLT-22 Import of SNS content on not supporting repositories

Added:
    jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/org/apache/jackrabbit/vault/packaging/integration/testpackages/test_sns.zip   (with props)
Modified:
    jackrabbit/commons/filevault/trunk/vault-core/pom.xml
    jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSAXImporter.java
    jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/ImportTests.java
    jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/IntegrationTestBase.java

Modified: jackrabbit/commons/filevault/trunk/vault-core/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/pom.xml?rev=1545669&r1=1545668&r2=1545669&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/pom.xml (original)
+++ jackrabbit/commons/filevault/trunk/vault-core/pom.xml Tue Nov 26 14:12:28 2013
@@ -110,7 +110,30 @@
                     </instructions>
                 </configuration>
             </plugin>
+
+            <plugin>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <executions>
+                    <!-- run tests 2 second time on jackrabbit oak -->
+                    <execution>
+                        <id>oak</id>
+                        <goals>
+                            <goal>test</goal>
+                        </goals>
+                        <configuration>
+                            <argLine>-Doak=true</argLine>
+                            <excludes>
+                                <exclude>**/TestGroupMergePackage.java</exclude>
+                                <exclude>**/TestACLAndMerge.java</exclude>
+                                <exclude>**/JcrPackageManagerImplTest.java</exclude>
+                                <exclude>**/AdminPermissionCheckerTest.java</exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
         </plugins>
+
     </build>
 
     <!-- ====================================================================== -->
@@ -197,6 +220,12 @@
             <version>${jackrabbit.version}</version>
             <scope>test</scope>
         </dependency>
-    </dependencies>
 
+        <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>oak-run</artifactId>
+            <version>0.13-SNAPSHOT</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
 </project>

Modified: jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSAXImporter.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSAXImporter.java?rev=1545669&r1=1545668&r2=1545669&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSAXImporter.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSAXImporter.java Tue Nov 26 14:12:28 2013
@@ -37,6 +37,7 @@ import javax.jcr.NodeIterator;
 import javax.jcr.Property;
 import javax.jcr.PropertyIterator;
 import javax.jcr.PropertyType;
+import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 import javax.jcr.Value;
@@ -211,6 +212,11 @@ public class DocViewSAXImporter extends 
     private AccessControlHandling aclHandling = AccessControlHandling.IGNORE;
 
     /**
+     * flag indicating if SNS are supported by the underlying repository
+     */
+    private final boolean snsSupported;
+
+    /**
      * Creates a new importer that will receive SAX events and imports the
      * items below the given root.
      *
@@ -231,6 +237,8 @@ public class DocViewSAXImporter extends 
         this.rootNodeName = rootNodeName;
         this.aclManagement = ServiceProviderFactory.getProvider().getACLManagement();
         this.userManagement = ServiceProviderFactory.getProvider().getUserManagement();
+        this.snsSupported = session.getRepository().
+                getDescriptorValue(Repository.NODE_TYPE_MANAGEMENT_SAME_NAME_SIBLINGS_SUPPORTED).getBoolean();
 
         String rootPath = parentNode.getPath();
         if (!rootPath.equals("/")) {
@@ -558,8 +566,21 @@ public class DocViewSAXImporter extends 
         String label = ISO9075.decode(qName);
         String name = label;
         log.debug("-> element {}", label);
+        boolean snsNode = false;
         int idx = name.lastIndexOf('[');
         if (idx > 0) {
+            if (!snsSupported) {
+                int idx2 = name.indexOf(']', idx);
+                if (idx2 > 0) {
+                    try {
+                        if (Integer.valueOf(name.substring(idx+1, idx2)) > 1) {
+                            snsNode = true;
+                        }
+                    } catch (NumberFormatException e) {
+                        // ignore
+                    }
+                }
+            }
             name = name.substring(0, idx);
         }
         try {
@@ -579,6 +600,10 @@ public class DocViewSAXImporter extends 
                     // only ordering node. skip
                     log.debug("Skipping empty node {}", node.getPath() + "/" + name);
                     stack = stack.push(null);
+                } else if (snsNode) {
+                    // skip SNS nodes with index > 1
+                    log.warn("Skipping unsupported SNS node with index > 1. Some content will be missing after import: {}", node.getPath() + "/" + label);
+                    stack = stack.push(null);
                 } else {
                     try {
                         DocViewNode ni = new DocViewNode(name, label, attributes, npResolver);

Modified: jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/ImportTests.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/ImportTests.java?rev=1545669&r1=1545668&r2=1545669&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/ImportTests.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/ImportTests.java Tue Nov 26 14:12:28 2013
@@ -20,6 +20,7 @@ package org.apache.jackrabbit.vault.pack
 import java.io.IOException;
 
 import javax.jcr.Node;
+import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 
 import org.apache.jackrabbit.vault.fs.api.PathFilterSet;
@@ -194,5 +195,32 @@ public class ImportTests extends Integra
 
     }
 
+    @Test
+    public void testSNSImport() throws IOException, RepositoryException, ConfigurationException {
+        ZipArchive archive = new ZipArchive(getTempFile("testpackages/test_sns.zip"));
+        archive.open(true);
+        Node rootNode = admin.getRootNode();
+        ImportOptions opts = getDefaultOptions();
+        Importer importer = new Importer(opts);
+        importer.run(archive, rootNode);
+
+        assertNodeExists("/tmp/testroot");
+        assertNodeExists("/tmp/testroot/foo");
+        assertProperty("/tmp/testroot/foo/name", "foo1");
+
+        // only check for SNS nodes if SNS supported
+        if (admin.getRepository().getDescriptorValue(Repository.NODE_TYPE_MANAGEMENT_SAME_NAME_SIBLINGS_SUPPORTED).getBoolean()) {
+            assertNodeExists("/tmp/testroot/foo[2]");
+            assertNodeExists("/tmp/testroot/foo[3]");
+            assertProperty("/tmp/testroot/foo[2]/name", "foo2");
+            assertProperty("/tmp/testroot/foo[3]/name", "foo3");
+        } else {
+            // otherwise nodes must not exist
+            assertNodeMissing("/tmp/testroot/foo[2]");
+            assertNodeMissing("/tmp/testroot/foo[3]");
+        }
+
+    }
+
 
 }
\ No newline at end of file

Modified: jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/IntegrationTestBase.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/IntegrationTestBase.java?rev=1545669&r1=1545668&r2=1545669&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/IntegrationTestBase.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/IntegrationTestBase.java Tue Nov 26 14:12:28 2013
@@ -24,6 +24,7 @@ import java.io.InputStream;
 
 import javax.jcr.Node;
 import javax.jcr.NodeIterator;
+import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 import javax.jcr.SimpleCredentials;
@@ -32,6 +33,7 @@ import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.jackrabbit.core.RepositoryImpl;
 import org.apache.jackrabbit.core.config.RepositoryConfig;
+import org.apache.jackrabbit.oak.jcr.Jcr;
 import org.apache.jackrabbit.vault.fs.api.ProgressTrackerListener;
 import org.apache.jackrabbit.vault.fs.io.ImportOptions;
 import org.apache.jackrabbit.vault.packaging.JcrPackageManager;
@@ -59,7 +61,7 @@ public class IntegrationTestBase  {
 
     private static final String REPO_HOME = "target/repository";
 
-    protected static RepositoryImpl repository;
+    protected static Repository repository;
 
     protected Session admin;
 
@@ -67,17 +69,24 @@ public class IntegrationTestBase  {
 
     @BeforeClass
     public static void initRepository() throws RepositoryException {
-        InputStream in = IntegrationTestBase.class.getResourceAsStream("repository.xml");
-        RepositoryConfig cfg = RepositoryConfig.create(in, REPO_HOME);
-        repository = RepositoryImpl.create(cfg);
+        if (Boolean.getBoolean("oak")) {
+            repository = new Jcr().createRepository();
+        } else {
+            InputStream in = IntegrationTestBase.class.getResourceAsStream("repository.xml");
+            RepositoryConfig cfg = RepositoryConfig.create(in, REPO_HOME);
+            repository = RepositoryImpl.create(cfg);
+        }
+        log.info("repository created: {} {}",
+                repository.getDescriptor(Repository.REP_NAME_DESC),
+                repository.getDescriptor(Repository.REP_VERSION_DESC));
     }
 
     @AfterClass
     public static void shutdownRepository() {
-        if (repository != null) {
-            repository.shutdown();
-            repository = null;
+        if (repository instanceof RepositoryImpl) {
+            ((RepositoryImpl) repository).shutdown();
         }
+        repository = null;
     }
 
     @Before

Added: jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/org/apache/jackrabbit/vault/packaging/integration/testpackages/test_sns.zip
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/org/apache/jackrabbit/vault/packaging/integration/testpackages/test_sns.zip?rev=1545669&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/org/apache/jackrabbit/vault/packaging/integration/testpackages/test_sns.zip
------------------------------------------------------------------------------
    svn:mime-type = application/jar