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 2010/04/07 11:51:18 UTC
svn commit: r931483 - in
/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core:
JackrabbitRepositoryStub.java TestContentLoader.java
Author: jukka
Date: Wed Apr 7 09:51:18 2010
New Revision: 931483
URL: http://svn.apache.org/viewvc?rev=931483&view=rev
Log:
JCR-2568: extract test content loading from JackrabbitRepositoryStub
Patch by Justin Edelson
Added:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/TestContentLoader.java (with props)
Modified:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/JackrabbitRepositoryStub.java
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/JackrabbitRepositoryStub.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/JackrabbitRepositoryStub.java?rev=931483&r1=931482&r2=931483&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/JackrabbitRepositoryStub.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/JackrabbitRepositoryStub.java Wed Apr 7 09:51:18 2010
@@ -200,7 +200,8 @@ public class JackrabbitRepositoryStub ex
repo = createRepository(dir, xml);
Session session = repo.login(superuser);
try {
- prepareTestContent(session);
+ TestContentLoader loader = new TestContentLoader(ENCODING, JackrabbitRepositoryStub.class.getClassLoader());
+ loader.loadTestContent(session);
} finally {
session.logout();
}
@@ -211,216 +212,11 @@ public class JackrabbitRepositoryStub ex
}
}
- private void prepareTestContent(Session session)
- throws RepositoryException, IOException {
- JackrabbitWorkspace workspace =
- (JackrabbitWorkspace) session.getWorkspace();
- Collection<String> workspaces =
- Arrays.asList(workspace.getAccessibleWorkspaceNames());
- if (!workspaces.contains("test")) {
- workspace.createWorkspace("test");
- }
-
- JackrabbitNodeTypeManager manager =
- (JackrabbitNodeTypeManager) workspace.getNodeTypeManager();
- if (!manager.hasNodeType("test:versionable")) {
- InputStream xml = getResource("test-nodetypes.xml");
- try {
- manager.registerNodeTypes(xml, JackrabbitNodeTypeManager.TEXT_XML);
- } finally {
- xml.close();
- }
- }
-
- Node data = getOrAddNode(session.getRootNode(), "testdata");
- addPropertyTestData(getOrAddNode(data, "property"));
- addQueryTestData(getOrAddNode(data, "query"));
- addNodeTestData(getOrAddNode(data, "node"));
- addLifecycleTestData(getOrAddNode(data, "lifecycle"));
- addExportTestData(getOrAddNode(data, "docViewTest"));
-
- Node conf = getOrAddNode(session.getRootNode(), "testconf");
- addRetentionTestData(getOrAddNode(conf, "retentionTest"));
-
- session.save();
- }
-
- private Node getOrAddNode(Node node, String name)
- throws RepositoryException {
- try {
- return node.getNode(name);
- } catch (PathNotFoundException e) {
- return node.addNode(name);
- }
- }
-
- /**
- * Creates a boolean, double, long, calendar and a path property at the
- * given node.
- */
- private void addPropertyTestData(Node node) throws RepositoryException {
- node.setProperty("boolean", true);
- node.setProperty("double", Math.PI);
- node.setProperty("long", 90834953485278298l);
- Calendar c = Calendar.getInstance();
- c.set(2005, 6, 18, 17, 30);
- node.setProperty("calendar", c);
- ValueFactory factory = node.getSession().getValueFactory();
- node.setProperty("path", factory.createValue("/", PropertyType.PATH));
- node.setProperty("multi", new String[] { "one", "two", "three" });
- }
-
- /**
- * Creates a node with a RetentionPolicy
- */
- private void addRetentionTestData(Node node) throws RepositoryException {
- RetentionPolicy rp = RetentionPolicyImpl.createRetentionPolicy("testRetentionPolicy", node.getSession());
- node.getSession().getRetentionManager().setRetentionPolicy(node.getPath(), rp);
- }
-
- /**
- * Creates four nodes under the given node. Each node has a String
- * property named "prop1" with some content set.
- */
- private void addQueryTestData(Node node) throws RepositoryException {
- while (node.hasNode("node1")) {
- node.getNode("node1").remove();
- }
- getOrAddNode(node, "node1").setProperty(
- "prop1", "You can have it good, cheap, or fast. Any two.");
- getOrAddNode(node, "node1").setProperty("prop1", "foo bar");
- getOrAddNode(node, "node1").setProperty("prop1", "Hello world!");
- getOrAddNode(node, "node2").setProperty("prop1", "Apache Jackrabbit");
- }
-
-
- /**
- * Creates three nodes under the given node: one of type nt:resource
- * and the other nodes referencing it.
- */
- private void addNodeTestData(Node node) throws RepositoryException, IOException {
- if (node.hasNode("multiReference")) {
- node.getNode("multiReference").remove();
- }
- if (node.hasNode("resReference")) {
- node.getNode("resReference").remove();
- }
- if (node.hasNode("myResource")) {
- node.getNode("myResource").remove();
- }
-
- Node resource = node.addNode("myResource", "nt:resource");
- // nt:resource not longer referenceable since JCR 2.0
- resource.addMixin("mix:referenceable");
- resource.setProperty("jcr:encoding", ENCODING);
- resource.setProperty("jcr:mimeType", "text/plain");
- resource.setProperty(
- "jcr:data",
- new ByteArrayInputStream("Hello w\u00F6rld.".getBytes(ENCODING)));
- resource.setProperty("jcr:lastModified", Calendar.getInstance());
-
- Node resReference = getOrAddNode(node, "reference");
- resReference.setProperty("ref", resource);
- // make this node itself referenceable
- resReference.addMixin("mix:referenceable");
-
- Node multiReference = node.addNode("multiReference");
- ValueFactory factory = node.getSession().getValueFactory();
- multiReference.setProperty("ref", new Value[] {
- factory.createValue(resource),
- factory.createValue(resReference)
- });
- }
-
- /**
- * Creates a lifecycle policy node and another node with a lifecycle
- * referencing that policy.
- */
- private void addLifecycleTestData(Node node) throws RepositoryException {
- Node policy = getOrAddNode(node, "policy");
- policy.addMixin(NodeType.MIX_REFERENCEABLE);
- Node transitions = getOrAddNode(policy, "transitions");
- Node transition = getOrAddNode(transitions, "identity");
- transition.setProperty("from", "identity");
- transition.setProperty("to", "identity");
-
- Node lifecycle = getOrAddNode(node, "node");
- ((NodeImpl) lifecycle).assignLifecyclePolicy(policy, "identity");
- }
-
- private void addExportTestData(Node node) throws RepositoryException, IOException {
- getOrAddNode(node, "invalidXmlName").setProperty("propName", "some text");
-
- // three nodes which should be serialized as xml text in docView export
- // separated with spaces
- getOrAddNode(node, "jcr:xmltext").setProperty(
- "jcr:xmlcharacters", "A text without any special character.");
- getOrAddNode(node, "some-element");
- getOrAddNode(node, "jcr:xmltext").setProperty(
- "jcr:xmlcharacters",
- " The entity reference characters: <, ', ,&, >, \" should"
- + " be escaped in xml export. ");
- getOrAddNode(node, "some-element");
- getOrAddNode(node, "jcr:xmltext").setProperty(
- "jcr:xmlcharacters", "A text without any special character.");
-
- Node big = getOrAddNode(node, "bigNode");
- big.setProperty(
- "propName0",
- "SGVsbG8gd8O2cmxkLg==;SGVsbG8gd8O2cmxkLg==".split(";"),
- PropertyType.BINARY);
- big.setProperty("propName1", "text 1");
- big.setProperty(
- "propName2",
- "multival text 1;multival text 2;multival text 3".split(";"));
- big.setProperty("propName3", "text 1");
-
- addExportValues(node, "propName");
- addExportValues(node, "Prop<>prop");
- }
-
- /**
- * create nodes with following properties
- * binary & single
- * binary & multival
- * notbinary & single
- * notbinary & multival
- */
- private void addExportValues(Node node, String name)
- throws RepositoryException, IOException {
- String prefix = "valid";
- if (name.indexOf('<') != -1) {
- prefix = "invalid";
- }
- node = getOrAddNode(node, prefix + "Names");
-
- String[] texts = new String[] {
- "multival text 1", "multival text 2", "multival text 3" };
- getOrAddNode(node, prefix + "MultiNoBin").setProperty(name, texts);
-
- Node resource = getOrAddNode(node, prefix + "MultiBin");
- resource.setProperty("jcr:encoding", ENCODING);
- resource.setProperty("jcr:mimeType", "text/plain");
- String[] values =
- new String[] { "SGVsbG8gd8O2cmxkLg==", "SGVsbG8gd8O2cmxkLg==" };
- resource.setProperty(name, values, PropertyType.BINARY);
- resource.setProperty("jcr:lastModified", Calendar.getInstance());
-
- getOrAddNode(node, prefix + "NoBin").setProperty(name, "text 1");
-
- resource = getOrAddNode(node, "invalidBin");
- resource.setProperty("jcr:encoding", ENCODING);
- resource.setProperty("jcr:mimeType", "text/plain");
- byte[] bytes = "Hello w\u00F6rld.".getBytes(ENCODING);
- resource.setProperty(name, new ByteArrayInputStream(bytes));
- resource.setProperty("jcr:lastModified", Calendar.getInstance());
- }
-
@Override
public Principal getKnownPrincipal(Session session) throws RepositoryException {
-
+
Principal knownPrincipal = null;
-
+
if (session instanceof SessionImpl) {
for (Principal p : ((SessionImpl)session).getSubject().getPrincipals()) {
if (! (p instanceof Group)) {
@@ -428,7 +224,7 @@ public class JackrabbitRepositoryStub ex
}
}
}
-
+
if (knownPrincipal != null) {
return knownPrincipal;
}
@@ -442,7 +238,7 @@ public class JackrabbitRepositoryStub ex
return "an_unknown_user";
}
};
-
+
@Override
public Principal getUnknownPrincipal(Session session) throws RepositoryException, NotExecutableException {
return UNKNOWN_PRINCIPAL;
Added: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/TestContentLoader.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/TestContentLoader.java?rev=931483&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/TestContentLoader.java (added)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/TestContentLoader.java Wed Apr 7 09:51:18 2010
@@ -0,0 +1,263 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership. The ASF
+ * licenses this file to You under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package org.apache.jackrabbit.core;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Collection;
+
+import javax.jcr.Node;
+import javax.jcr.PathNotFoundException;
+import javax.jcr.PropertyType;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.jcr.Value;
+import javax.jcr.ValueFactory;
+import javax.jcr.nodetype.NodeType;
+import javax.jcr.retention.RetentionPolicy;
+
+import org.apache.jackrabbit.api.JackrabbitNodeTypeManager;
+import org.apache.jackrabbit.api.JackrabbitWorkspace;
+import org.apache.jackrabbit.core.retention.RetentionPolicyImpl;
+
+/**
+ * Test Content Loader.
+ */
+public class TestContentLoader {
+
+ private String encoding;
+ private ClassLoader classLoader;
+
+ public TestContentLoader(String encoding, ClassLoader classLoader) {
+ this.encoding = encoding;
+ this.classLoader = classLoader;
+ }
+
+ private InputStream getResource(String name) {
+ return classLoader.getResourceAsStream(name);
+ }
+
+ public void loadTestContent(Session session) throws RepositoryException, IOException {
+ JackrabbitWorkspace workspace =
+ (JackrabbitWorkspace) session.getWorkspace();
+ Collection<String> workspaces =
+ Arrays.asList(workspace.getAccessibleWorkspaceNames());
+ if (!workspaces.contains("test")) {
+ workspace.createWorkspace("test");
+ }
+
+ JackrabbitNodeTypeManager manager =
+ (JackrabbitNodeTypeManager) workspace.getNodeTypeManager();
+ if (!manager.hasNodeType("test:versionable")) {
+ InputStream xml = getResource("test-nodetypes.xml");
+ try {
+ manager.registerNodeTypes(xml, JackrabbitNodeTypeManager.TEXT_XML);
+ } finally {
+ xml.close();
+ }
+ }
+
+ Node data = getOrAddNode(session.getRootNode(), "testdata");
+ addPropertyTestData(getOrAddNode(data, "property"));
+ addQueryTestData(getOrAddNode(data, "query"));
+ addNodeTestData(getOrAddNode(data, "node"));
+ addLifecycleTestData(getOrAddNode(data, "lifecycle"));
+ addExportTestData(getOrAddNode(data, "docViewTest"));
+
+ Node conf = getOrAddNode(session.getRootNode(), "testconf");
+ addRetentionTestData(getOrAddNode(conf, "retentionTest"));
+
+ session.save();
+ }
+
+
+
+ private Node getOrAddNode(Node node, String name)
+ throws RepositoryException {
+ try {
+ return node.getNode(name);
+ } catch (PathNotFoundException e) {
+ return node.addNode(name);
+ }
+ }
+
+ /**
+ * Creates a boolean, double, long, calendar and a path property at the
+ * given node.
+ */
+ private void addPropertyTestData(Node node) throws RepositoryException {
+ node.setProperty("boolean", true);
+ node.setProperty("double", Math.PI);
+ node.setProperty("long", 90834953485278298l);
+ Calendar c = Calendar.getInstance();
+ c.set(2005, 6, 18, 17, 30);
+ node.setProperty("calendar", c);
+ ValueFactory factory = node.getSession().getValueFactory();
+ node.setProperty("path", factory.createValue("/", PropertyType.PATH));
+ node.setProperty("multi", new String[] { "one", "two", "three" });
+ }
+
+ /**
+ * Creates a node with a RetentionPolicy
+ */
+ private void addRetentionTestData(Node node) throws RepositoryException {
+ RetentionPolicy rp = RetentionPolicyImpl.createRetentionPolicy("testRetentionPolicy", node.getSession());
+ node.getSession().getRetentionManager().setRetentionPolicy(node.getPath(), rp);
+ }
+
+ /**
+ * Creates four nodes under the given node. Each node has a String
+ * property named "prop1" with some content set.
+ */
+ private void addQueryTestData(Node node) throws RepositoryException {
+ while (node.hasNode("node1")) {
+ node.getNode("node1").remove();
+ }
+ getOrAddNode(node, "node1").setProperty(
+ "prop1", "You can have it good, cheap, or fast. Any two.");
+ getOrAddNode(node, "node1").setProperty("prop1", "foo bar");
+ getOrAddNode(node, "node1").setProperty("prop1", "Hello world!");
+ getOrAddNode(node, "node2").setProperty("prop1", "Apache Jackrabbit");
+ }
+
+
+ /**
+ * Creates three nodes under the given node: one of type nt:resource
+ * and the other nodes referencing it.
+ */
+ private void addNodeTestData(Node node) throws RepositoryException, IOException {
+ if (node.hasNode("multiReference")) {
+ node.getNode("multiReference").remove();
+ }
+ if (node.hasNode("resReference")) {
+ node.getNode("resReference").remove();
+ }
+ if (node.hasNode("myResource")) {
+ node.getNode("myResource").remove();
+ }
+
+ Node resource = node.addNode("myResource", "nt:resource");
+ // nt:resource not longer referenceable since JCR 2.0
+ resource.addMixin("mix:referenceable");
+ resource.setProperty("jcr:encoding", encoding);
+ resource.setProperty("jcr:mimeType", "text/plain");
+ resource.setProperty(
+ "jcr:data",
+ new ByteArrayInputStream("Hello w\u00F6rld.".getBytes(encoding)));
+ resource.setProperty("jcr:lastModified", Calendar.getInstance());
+
+ Node resReference = getOrAddNode(node, "reference");
+ resReference.setProperty("ref", resource);
+ // make this node itself referenceable
+ resReference.addMixin("mix:referenceable");
+
+ Node multiReference = node.addNode("multiReference");
+ ValueFactory factory = node.getSession().getValueFactory();
+ multiReference.setProperty("ref", new Value[] {
+ factory.createValue(resource),
+ factory.createValue(resReference)
+ });
+ }
+
+ /**
+ * Creates a lifecycle policy node and another node with a lifecycle
+ * referencing that policy.
+ */
+ private void addLifecycleTestData(Node node) throws RepositoryException {
+ Node policy = getOrAddNode(node, "policy");
+ policy.addMixin(NodeType.MIX_REFERENCEABLE);
+ Node transitions = getOrAddNode(policy, "transitions");
+ Node transition = getOrAddNode(transitions, "identity");
+ transition.setProperty("from", "identity");
+ transition.setProperty("to", "identity");
+
+ Node lifecycle = getOrAddNode(node, "node");
+ ((NodeImpl) lifecycle).assignLifecyclePolicy(policy, "identity");
+ }
+
+ private void addExportTestData(Node node) throws RepositoryException, IOException {
+ getOrAddNode(node, "invalidXmlName").setProperty("propName", "some text");
+
+ // three nodes which should be serialized as xml text in docView export
+ // separated with spaces
+ getOrAddNode(node, "jcr:xmltext").setProperty(
+ "jcr:xmlcharacters", "A text without any special character.");
+ getOrAddNode(node, "some-element");
+ getOrAddNode(node, "jcr:xmltext").setProperty(
+ "jcr:xmlcharacters",
+ " The entity reference characters: <, ', ,&, >, \" should"
+ + " be escaped in xml export. ");
+ getOrAddNode(node, "some-element");
+ getOrAddNode(node, "jcr:xmltext").setProperty(
+ "jcr:xmlcharacters", "A text without any special character.");
+
+ Node big = getOrAddNode(node, "bigNode");
+ big.setProperty(
+ "propName0",
+ "SGVsbG8gd8O2cmxkLg==;SGVsbG8gd8O2cmxkLg==".split(";"),
+ PropertyType.BINARY);
+ big.setProperty("propName1", "text 1");
+ big.setProperty(
+ "propName2",
+ "multival text 1;multival text 2;multival text 3".split(";"));
+ big.setProperty("propName3", "text 1");
+
+ addExportValues(node, "propName");
+ addExportValues(node, "Prop<>prop");
+ }
+
+ /**
+ * create nodes with following properties
+ * binary & single
+ * binary & multival
+ * notbinary & single
+ * notbinary & multival
+ */
+ private void addExportValues(Node node, String name)
+ throws RepositoryException, IOException {
+ String prefix = "valid";
+ if (name.indexOf('<') != -1) {
+ prefix = "invalid";
+ }
+ node = getOrAddNode(node, prefix + "Names");
+
+ String[] texts = new String[] {
+ "multival text 1", "multival text 2", "multival text 3" };
+ getOrAddNode(node, prefix + "MultiNoBin").setProperty(name, texts);
+
+ Node resource = getOrAddNode(node, prefix + "MultiBin");
+ resource.setProperty("jcr:encoding", encoding);
+ resource.setProperty("jcr:mimeType", "text/plain");
+ String[] values =
+ new String[] { "SGVsbG8gd8O2cmxkLg==", "SGVsbG8gd8O2cmxkLg==" };
+ resource.setProperty(name, values, PropertyType.BINARY);
+ resource.setProperty("jcr:lastModified", Calendar.getInstance());
+
+ getOrAddNode(node, prefix + "NoBin").setProperty(name, "text 1");
+
+ resource = getOrAddNode(node, "invalidBin");
+ resource.setProperty("jcr:encoding", encoding);
+ resource.setProperty("jcr:mimeType", "text/plain");
+ byte[] bytes = "Hello w\u00F6rld.".getBytes(encoding);
+ resource.setProperty(name, new ByteArrayInputStream(bytes));
+ resource.setProperty("jcr:lastModified", Calendar.getInstance());
+ }
+
+}
\ No newline at end of file
Propchange: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/TestContentLoader.java
------------------------------------------------------------------------------
svn:eol-style = native