You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ss...@apache.org on 2015/04/07 22:35:44 UTC
svn commit: r1671940 - in /sling/trunk/testing/mocks/jcr-mock/src:
main/java/org/apache/sling/testing/mock/jcr/
test/java/org/apache/sling/testing/mock/jcr/
Author: sseifert
Date: Tue Apr 7 20:35:44 2015
New Revision: 1671940
URL: http://svn.apache.org/r1671940
Log:
SLING-4548 workaround for setting jcr:created/jcr:createdBy and new state properly when creating nt:file nodes
Modified:
sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/AbstractItem.java
sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/ItemData.java
sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNode.java
sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockSession.java
sling/trunk/testing/mocks/jcr-mock/src/test/java/org/apache/sling/testing/mock/jcr/MockNodeTest.java
sling/trunk/testing/mocks/jcr-mock/src/test/java/org/apache/sling/testing/mock/jcr/MockSessionTest.java
Modified: sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/AbstractItem.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/AbstractItem.java?rev=1671940&r1=1671939&r2=1671940&view=diff
==============================================================================
--- sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/AbstractItem.java (original)
+++ sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/AbstractItem.java Tue Apr 7 20:35:44 2015
@@ -67,9 +67,9 @@ abstract class AbstractItem implements I
@Override
public boolean isNew() {
- return false;
+ return itemData.isNew();
}
-
+
@Override
public Item getAncestor(final int depth) throws RepositoryException {
if (depth < 0 || depth > getDepth()) {
Modified: sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/ItemData.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/ItemData.java?rev=1671940&r1=1671939&r2=1671940&view=diff
==============================================================================
--- sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/ItemData.java (original)
+++ sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/ItemData.java Tue Apr 7 20:35:44 2015
@@ -37,14 +37,15 @@ class ItemData {
private final NodeType nodeType;
private Value[] values;
private boolean isMultiple;
+ private boolean isNew;
private ItemData(String path, boolean isNode, String uuid, NodeType nodeType) {
- super();
this.path = path;
this.name = ResourceUtil.getName(path);
this.uuid = uuid;
this.isNode = isNode;
this.nodeType = nodeType;
+ this.isNew = true;
}
public String getPath() {
@@ -114,6 +115,14 @@ class ItemData {
}
}
+ public boolean isNew() {
+ return isNew;
+ }
+
+ public void setIsNew(boolean isNew) {
+ this.isNew = isNew;
+ }
+
@Override
public int hashCode() {
return path.hashCode();
Modified: sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNode.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNode.java?rev=1671940&r1=1671939&r2=1671940&view=diff
==============================================================================
--- sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNode.java (original)
+++ sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNode.java Tue Apr 7 20:35:44 2015
@@ -40,6 +40,7 @@ import javax.jcr.nodetype.NodeType;
import javax.jcr.version.Version;
import javax.jcr.version.VersionHistory;
+import org.apache.commons.lang3.StringUtils;
import org.apache.jackrabbit.JcrConstants;
import org.apache.jackrabbit.commons.iterator.NodeIteratorAdapter;
import org.apache.jackrabbit.commons.iterator.PropertyIteratorAdapter;
@@ -64,6 +65,13 @@ class MockNode extends AbstractItem impl
ItemData itemData = ItemData.newNode(path, new MockNodeType(primaryNodeTypeName));
Node node = new MockNode(itemData, getSession());
getMockedSession().addItem(itemData);
+
+ // special handling for some node types
+ if (StringUtils.equals(primaryNodeTypeName, JcrConstants.NT_FILE)) {
+ node.setProperty(JcrConstants.JCR_CREATED, Calendar.getInstance());
+ node.setProperty("jcr:createdBy", getMockedSession().getUserID());
+ }
+
return node;
}
Modified: sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockSession.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockSession.java?rev=1671940&r1=1671939&r2=1671940&view=diff
==============================================================================
--- sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockSession.java (original)
+++ sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockSession.java Tue Apr 7 20:35:44 2015
@@ -239,7 +239,10 @@ class MockSession implements Session {
@Override
public void save() throws RepositoryException {
- // do nothing
+ // reset new flags
+ for (ItemData itemData : this.items.values()) {
+ itemData.setIsNew(false);
+ }
}
@Override
Modified: sling/trunk/testing/mocks/jcr-mock/src/test/java/org/apache/sling/testing/mock/jcr/MockNodeTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/jcr-mock/src/test/java/org/apache/sling/testing/mock/jcr/MockNodeTest.java?rev=1671940&r1=1671939&r2=1671940&view=diff
==============================================================================
--- sling/trunk/testing/mocks/jcr-mock/src/test/java/org/apache/sling/testing/mock/jcr/MockNodeTest.java (original)
+++ sling/trunk/testing/mocks/jcr-mock/src/test/java/org/apache/sling/testing/mock/jcr/MockNodeTest.java Tue Apr 7 20:35:44 2015
@@ -20,6 +20,7 @@ package org.apache.sling.testing.mock.jc
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import javax.jcr.ItemNotFoundException;
@@ -128,4 +129,11 @@ public class MockNodeTest {
this.node1.getPrimaryItem();
}
+ @Test
+ public void testNtFileNode() throws RepositoryException {
+ Node ntFile = this.session.getRootNode().addNode("testFile", JcrConstants.NT_FILE);
+ assertNotNull(ntFile.getProperty(JcrConstants.JCR_CREATED).getDate());
+ assertNotNull(ntFile.getProperty("jcr:createdBy").getString());
+ }
+
}
Modified: sling/trunk/testing/mocks/jcr-mock/src/test/java/org/apache/sling/testing/mock/jcr/MockSessionTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/jcr-mock/src/test/java/org/apache/sling/testing/mock/jcr/MockSessionTest.java?rev=1671940&r1=1671939&r2=1671940&view=diff
==============================================================================
--- sling/trunk/testing/mocks/jcr-mock/src/test/java/org/apache/sling/testing/mock/jcr/MockSessionTest.java (original)
+++ sling/trunk/testing/mocks/jcr-mock/src/test/java/org/apache/sling/testing/mock/jcr/MockSessionTest.java Tue Apr 7 20:35:44 2015
@@ -247,4 +247,17 @@ public class MockSessionTest {
this.session.removeItem("/foo/");
assertFalse("Removing /foo/ should succeed", this.session.nodeExists("/foo"));
}
+
+ @Test
+ public void testNewState() throws RepositoryException {
+ Node node = this.session.getRootNode().addNode("foo");
+ Property property = node.setProperty("testProp", "value123");
+ assertTrue(node.isNew());
+ assertTrue(property.isNew());
+
+ this.session.save();
+ assertFalse(node.isNew());
+ assertFalse(property.isNew());
+ }
+
}