You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2009/08/04 17:49:36 UTC

svn commit: r800854 - /jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/RepositoryCopierTest.java

Author: jukka
Date: Tue Aug  4 15:49:36 2009
New Revision: 800854

URL: http://svn.apache.org/viewvc?rev=800854&view=rev
Log:
JCR-442: Implement a backup tool

Add tests for backing up namespaces, node types and non-binary properties (incl. references!).

Modified:
    jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/RepositoryCopierTest.java

Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/RepositoryCopierTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/RepositoryCopierTest.java?rev=800854&r1=800853&r2=800854&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/RepositoryCopierTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/RepositoryCopierTest.java Tue Aug  4 15:49:36 2009
@@ -17,19 +17,23 @@
 package org.apache.jackrabbit.core;
 
 import java.io.File;
+import java.math.BigDecimal;
+import java.util.Calendar;
 
 import javax.jcr.Credentials;
+import javax.jcr.NamespaceRegistry;
 import javax.jcr.Node;
-import javax.jcr.Property;
 import javax.jcr.PropertyType;
 import javax.jcr.Session;
 import javax.jcr.SimpleCredentials;
+import javax.jcr.Value;
+import javax.jcr.nodetype.NodeType;
+import javax.jcr.nodetype.NodeTypeManager;
+import javax.jcr.nodetype.NodeTypeTemplate;
 
 import junit.framework.TestCase;
 
 import org.apache.commons.io.FileUtils;
-import org.apache.jackrabbit.core.RepositoryCopier;
-import org.apache.jackrabbit.core.RepositoryImpl;
 import org.apache.jackrabbit.core.config.RepositoryConfig;
 
 public class RepositoryCopierTest extends TestCase {
@@ -43,6 +47,10 @@
 
     private final File TARGET = new File(BASE, "target");
 
+    private final Calendar DATE = Calendar.getInstance();
+
+    private String identifier;
+
     protected void setUp() {
         BASE.mkdirs();
     }
@@ -63,8 +71,35 @@
         try {
             Session session = repository.login(CREDENTIALS);
             try {
-                Node test = session.getRootNode().addNode("test");
-                test.setProperty("foo", "bar");
+                NamespaceRegistry registry =
+                    session.getWorkspace().getNamespaceRegistry();
+                registry.registerNamespace("test", "http://www.example.org/");
+
+                NodeTypeManager manager =
+                    session.getWorkspace().getNodeTypeManager();
+                NodeTypeTemplate template = manager.createNodeTypeTemplate();
+                template.setName("test:unstructured");
+                template.setDeclaredSuperTypeNames(
+                        new String[] { "nt:unstructured" });
+                manager.registerNodeType(template, false);
+
+                Node root = session.getRootNode();
+
+                Node referenceable =
+                    root.addNode("referenceable", "test:unstructured");
+                referenceable.addMixin(NodeType.MIX_REFERENCEABLE);
+                session.save();
+                identifier = referenceable.getIdentifier();
+
+                Node properties = root.addNode("properties", "test:unstructured");
+                properties.setProperty("boolean", true);
+                properties.setProperty("date", DATE);
+                properties.setProperty("decimal", new BigDecimal(123));
+                properties.setProperty("double", Math.PI);
+                properties.setProperty("long", 9876543210L);
+                properties.setProperty("reference", referenceable);
+                properties.setProperty("string", "test");
+                properties.setProperty("multiple", "a,b,c".split(","));
                 session.save();
             } finally {
                 session.logout();
@@ -80,12 +115,68 @@
         try {
             Session session = repository.login(CREDENTIALS);
             try {
-                assertTrue(session.nodeExists("/test"));
-                assertTrue(session.propertyExists("/test/foo"));
-
-                Property foo = session.getProperty("/test/foo");
-                assertEquals(PropertyType.STRING, foo.getType());
-                assertEquals("bar", foo.getString());
+                assertEquals(
+                        "http://www.example.org/",
+                        session.getNamespaceURI("test"));
+
+                NodeTypeManager manager =
+                    session.getWorkspace().getNodeTypeManager();
+                assertTrue(manager.hasNodeType("test:unstructured"));
+                NodeType type = manager.getNodeType("test:unstructured");
+                assertFalse(type.isMixin());
+                assertTrue(type.isNodeType("nt:unstructured"));
+
+                assertTrue(session.nodeExists("/properties"));
+                Node properties = session.getNode("/properties");
+                assertEquals(
+                        PropertyType.BOOLEAN,
+                        properties.getProperty("boolean").getType());
+                assertEquals(
+                        true, properties.getProperty("boolean").getBoolean());
+                assertEquals(
+                        PropertyType.DATE,
+                        properties.getProperty("date").getType());
+                assertEquals(
+                        DATE.getTimeInMillis(),
+                        properties.getProperty("date").getDate().getTimeInMillis());
+                assertEquals(
+                        PropertyType.DECIMAL,
+                        properties.getProperty("decimal").getType());
+                assertEquals(
+                        new BigDecimal(123),
+                        properties.getProperty("decimal").getDecimal());
+                assertEquals(
+                        PropertyType.DOUBLE,
+                        properties.getProperty("double").getType());
+                assertEquals(
+                        Math.PI, properties.getProperty("double").getDouble());
+                assertEquals(
+                        PropertyType.LONG,
+                        properties.getProperty("long").getType());
+                assertEquals(
+                        9876543210L, properties.getProperty("long").getLong());
+                assertEquals(
+                        PropertyType.REFERENCE,
+                        properties.getProperty("reference").getType());
+                assertEquals(
+                        identifier,
+                        properties.getProperty("reference").getString());
+                assertEquals(
+                        "/referenceable",
+                        properties.getProperty("reference").getNode().getPath());
+                assertEquals(
+                        PropertyType.STRING,
+                        properties.getProperty("string").getType());
+                assertEquals(
+                        "test", properties.getProperty("string").getString());
+                assertEquals(
+                        PropertyType.STRING,
+                        properties.getProperty("multiple").getType());
+                Value[] values = properties.getProperty("multiple").getValues();
+                assertEquals(3, values.length);
+                assertEquals("a", values[0].getString());
+                assertEquals("b", values[1].getString());
+                assertEquals("c", values[2].getString());
             } finally {
                 session.logout();
             }