Author: sseifert Date: Thu Oct 16 17:53:47 2014 New Revision: 1632397 URL: http://svn.apache.org/r1632397 Log: SLING-4042 make sure JCR mock supports accessing data using multiple sessions
Added: sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/ItemData.java (with props) sling/trunk/testing/mocks/sling-mock-jackrabbit/src/test/java/org/apache/sling/testing/mock/sling/jackrabbit/resource/MultipleResourceResolverTest.java (with props) sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/jcrmock/resource/MultipleResourceResolverTest.java (with props) sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractMultipleResourceResolverTest.java (with props) sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/rrmock/resource/MultipleResourceResolverTest.java (with props) Modified: sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/ItemFilter.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/MockProperty.java sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockRepository.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/MockRepositoryTest.java sling/trunk/testing/mocks/jcr-mock/src/test/java/org/apache/sling/testing/mock/jcr/MockSessionTest.java sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/rrmock/resource/SlingCrudResourceResolverTest.java Added: 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=1632397&view=auto ============================================================================== --- sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/ItemData.java (added) +++ sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/ItemData.java Thu Oct 16 17:53:47 2014 @@ -0,0 +1,136 @@ +/* + * 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.sling.testing.mock.jcr; + +import java.util.UUID; + +import javax.jcr.Item; +import javax.jcr.Session; +import javax.jcr.Value; +import javax.jcr.nodetype.NodeType; + +/** + * Holds node and property item data independently from session. + */ +class ItemData { + + private final String path; + private final boolean isNode; + private final String uuid; + private final NodeType nodeType; + private Value[] values; + private boolean isMultiple; + + private ItemData(String path, boolean isNode, String uuid, NodeType nodeType) { + super(); + this.path = path; + this.uuid = uuid; + this.isNode = isNode; + this.nodeType = nodeType; + } + + public String getPath() { + return path; + } + + public String getName() { + return ResourceUtil.getName(path); + } + + public boolean isNode() { + return isNode; + } + + public boolean isProperty() { + return !isNode; + } + + public String getUuid() { + if (!isNode()) { + throw new UnsupportedOperationException(); + } + return uuid; + } + + public NodeType getNodeType() { + if (!isNode()) { + throw new UnsupportedOperationException(); + } + return nodeType; + } + + public Value[] getValues() { + if (!isProperty()) { + throw new UnsupportedOperationException(); + } + return values; + } + + public void setValues(Value[] values) { + if (!isProperty()) { + throw new UnsupportedOperationException(); + } + this.values = values; + } + + public boolean isMultiple() { + if (!isProperty()) { + throw new UnsupportedOperationException(); + } + return isMultiple; + } + + public void setMultiple(boolean isMultiple) { + if (!isProperty()) { + throw new UnsupportedOperationException(); + } + this.isMultiple = isMultiple; + } + + public Item getItem(Session session) { + if (isNode) { + return new MockNode(this, session); + } + else { + return new MockProperty(this, session); + } + } + + @Override + public int hashCode() { + return path.hashCode(); + } + + @Override + public boolean equals(Object obj) { + if (obj instanceof ItemData) { + return path.equals(((ItemData)obj).path); + } + return false; + } + + public static ItemData newNode(String path, NodeType nodeType) { + return new ItemData(path, true, UUID.randomUUID().toString(), nodeType); + } + + public static ItemData newProperty(String path) { + return new ItemData(path, false, null, null); + } + +} Propchange: sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/ItemData.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/ItemData.java ------------------------------------------------------------------------------ --- svn:keywords (added) +++ svn:keywords Thu Oct 16 17:53:47 2014 @@ -0,0 +1 @@ +LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author Propchange: sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/ItemData.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/ItemFilter.java URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/ItemFilter.java?rev=1632397&r1=1632396&r2=1632397&view=diff ============================================================================== --- sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/ItemFilter.java (original) +++ sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/ItemFilter.java Thu Oct 16 17:53:47 2014 @@ -18,7 +18,6 @@ */ package org.apache.sling.testing.mock.jcr; -import javax.jcr.Item; import javax.jcr.RepositoryException; /** @@ -26,6 +25,6 @@ import javax.jcr.RepositoryException; */ interface ItemFilter { - boolean accept(Item item) throws RepositoryException; + boolean accept(ItemData item) throws RepositoryException; } 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=1632397&r1=1632396&r2=1632397&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 Thu Oct 16 17:53:47 2014 @@ -21,7 +21,6 @@ package org.apache.sling.testing.mock.jc import java.io.InputStream; import java.math.BigDecimal; import java.util.Calendar; -import java.util.UUID; import java.util.regex.Pattern; import javax.jcr.Binary; @@ -50,12 +49,11 @@ import org.apache.jackrabbit.commons.ite */ class MockNode extends AbstractItem implements Node { - private final UUID uuid = UUID.randomUUID(); - private final NodeType nodeType; + private final ItemData itemData; - public MockNode(final String path, final Session session, final NodeType nodeType) { - super(path, session); - this.nodeType = nodeType; + public MockNode(final ItemData itemData, final Session session) { + super(itemData.getPath(), session); + this.itemData = itemData; } @Override @@ -66,8 +64,9 @@ class MockNode extends AbstractItem impl @Override public Node addNode(final String relPath, final String primaryNodeTypeName) throws RepositoryException { String path = makeAbsolutePath(relPath); - Node node = new MockNode(path, getSession(), new MockNodeType(primaryNodeTypeName)); - getMockedSession().addItem(node); + ItemData itemData = ItemData.newNode(path, new MockNodeType(primaryNodeTypeName)); + Node node = new MockNode(itemData, getSession()); + getMockedSession().addItem(itemData); return node; } @@ -81,8 +80,8 @@ class MockNode extends AbstractItem impl public NodeIterator getNodes() throws RepositoryException { RangeIterator items = getMockedSession().listChildren(getPath(), new ItemFilter() { @Override - public boolean accept(final Item item) { - return item instanceof Node; + public boolean accept(final ItemData item) { + return item.isNode(); } }); return new NodeIteratorAdapter(items, items.getSize()); @@ -93,8 +92,8 @@ class MockNode extends AbstractItem impl final Pattern pattern = Pattern.compile(namePattern); RangeIterator items = getMockedSession().listChildren(getPath(), new ItemFilter() { @Override - public boolean accept(final Item item) throws RepositoryException { - return (item instanceof Node) && pattern.matcher(item.getName()).matches(); + public boolean accept(final ItemData item) throws RepositoryException { + return item.isNode() && pattern.matcher(item.getName()).matches(); } }); return new NodeIteratorAdapter(items, items.getSize()); @@ -104,8 +103,8 @@ class MockNode extends AbstractItem impl public PropertyIterator getProperties() throws RepositoryException { RangeIterator items = getMockedSession().listChildren(getPath(), new ItemFilter() { @Override - public boolean accept(final Item item) { - return item instanceof Property; + public boolean accept(final ItemData item) { + return item.isProperty(); } }); return new PropertyIteratorAdapter(items, items.getSize()); @@ -116,8 +115,8 @@ class MockNode extends AbstractItem impl final Pattern pattern = Pattern.compile(namePattern); RangeIterator items = getMockedSession().listChildren(getPath(), new ItemFilter() { @Override - public boolean accept(final Item item) throws RepositoryException { - return (item instanceof Property) && pattern.matcher(item.getName()).matches(); + public boolean accept(final ItemData item) throws RepositoryException { + return item.isProperty() && pattern.matcher(item.getName()).matches(); } }); return new PropertyIteratorAdapter(items, items.getSize()); @@ -131,7 +130,7 @@ class MockNode extends AbstractItem impl @Override public String getIdentifier() { - return this.uuid.toString(); + return this.itemData.getUuid(); } @Override @@ -163,98 +162,110 @@ class MockNode extends AbstractItem impl @Override public Property setProperty(final String name, final Value value) throws RepositoryException { - Property property = new MockProperty(getPath() + "/" + name, getSession()); + ItemData itemData = ItemData.newProperty(getPath() + "/" + name); + Property property = new MockProperty(itemData, getSession()); property.setValue(value); - getMockedSession().addItem(property); + getMockedSession().addItem(itemData); return property; } @Override public Property setProperty(final String name, final Value[] values) throws RepositoryException { - Property property = new MockProperty(getPath() + "/" + name, getSession()); + ItemData itemData = ItemData.newProperty(getPath() + "/" + name); + Property property = new MockProperty(itemData, getSession()); property.setValue(values); - getMockedSession().addItem(property); + getMockedSession().addItem(itemData); return property; } @Override public Property setProperty(final String name, final String[] values) throws RepositoryException { - Property property = new MockProperty(getPath() + "/" + name, getSession()); + ItemData itemData = ItemData.newProperty(getPath() + "/" + name); + Property property = new MockProperty(itemData, getSession()); property.setValue(values); - getMockedSession().addItem(property); + getMockedSession().addItem(itemData); return property; } @Override public Property setProperty(final String name, final String value) throws RepositoryException { - Property property = new MockProperty(getPath() + "/" + name, getSession()); + ItemData itemData = ItemData.newProperty(getPath() + "/" + name); + Property property = new MockProperty(itemData, getSession()); property.setValue(value); - getMockedSession().addItem(property); + getMockedSession().addItem(itemData); return property; } @Override @SuppressWarnings("deprecation") public Property setProperty(final String name, final InputStream value) throws RepositoryException { - Property property = new MockProperty(getPath() + "/" + name, getSession()); + ItemData itemData = ItemData.newProperty(getPath() + "/" + name); + Property property = new MockProperty(itemData, getSession()); property.setValue(value); - getMockedSession().addItem(property); + getMockedSession().addItem(itemData); return property; } @Override public Property setProperty(final String name, final boolean value) throws RepositoryException { - Property property = new MockProperty(getPath() + "/" + name, getSession()); + ItemData itemData = ItemData.newProperty(getPath() + "/" + name); + Property property = new MockProperty(itemData, getSession()); property.setValue(value); - getMockedSession().addItem(property); + getMockedSession().addItem(itemData); return property; } @Override public Property setProperty(final String name, final double value) throws RepositoryException { - Property property = new MockProperty(getPath() + "/" + name, getSession()); + ItemData itemData = ItemData.newProperty(getPath() + "/" + name); + Property property = new MockProperty(itemData, getSession()); property.setValue(value); - getMockedSession().addItem(property); + getMockedSession().addItem(itemData); return property; } @Override public Property setProperty(final String name, final long value) throws RepositoryException { - Property property = new MockProperty(getPath() + "/" + name, getSession()); + ItemData itemData = ItemData.newProperty(getPath() + "/" + name); + Property property = new MockProperty(itemData, getSession()); property.setValue(value); - getMockedSession().addItem(property); + getMockedSession().addItem(itemData); return property; } @Override public Property setProperty(final String name, final Calendar value) throws RepositoryException { - Property property = new MockProperty(getPath() + "/" + name, getSession()); + ItemData itemData = ItemData.newProperty(getPath() + "/" + name); + Property property = new MockProperty(itemData, getSession()); property.setValue(value); - getMockedSession().addItem(property); + getMockedSession().addItem(itemData); return property; } @Override public Property setProperty(final String name, final Node value) throws RepositoryException { - Property property = new MockProperty(getPath() + "/" + name, getSession()); + ItemData itemData = ItemData.newProperty(getPath() + "/" + name); + Property property = new MockProperty(itemData, getSession()); property.setValue(value); - getMockedSession().addItem(property); + getMockedSession().addItem(itemData); return property; } @Override public Property setProperty(final String name, final Binary value) throws RepositoryException { - Property property = new MockProperty(getPath() + "/" + name, getSession()); + ItemData itemData = ItemData.newProperty(getPath() + "/" + name); + Property property = new MockProperty(itemData, getSession()); property.setValue(value); - getMockedSession().addItem(property); + getMockedSession().addItem(itemData); return property; } @Override public Property setProperty(final String name, final BigDecimal value) throws RepositoryException { - Property property = new MockProperty(getPath() + "/" + name, getSession()); + ItemData itemData = ItemData.newProperty(getPath() + "/" + name); + Property property = new MockProperty(itemData, getSession()); property.setValue(value); - getMockedSession().addItem(property); + getMockedSession().addItem(itemData); return property; } @@ -265,12 +276,12 @@ class MockNode extends AbstractItem impl @Override public boolean isNodeType(final String nodeTypeName) throws RepositoryException { - return this.nodeType.isNodeType(nodeTypeName); + return this.itemData.getNodeType().isNodeType(nodeTypeName); } @Override public NodeType getPrimaryNodeType() { - return this.nodeType; + return this.itemData.getNodeType(); } @Override @@ -284,6 +295,19 @@ class MockNode extends AbstractItem impl throw new ItemNotFoundException(); } } + + @Override + public int hashCode() { + return itemData.hashCode(); + } + + @Override + public boolean equals(Object obj) { + if (obj instanceof MockNode) { + return itemData.equals(((MockNode)obj).itemData); + } + return false; + } // --- unsupported operations --- @Override Modified: sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockProperty.java URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockProperty.java?rev=1632397&r1=1632396&r2=1632397&view=diff ============================================================================== --- sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockProperty.java (original) +++ sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockProperty.java Thu Oct 16 17:53:47 2014 @@ -39,20 +39,27 @@ import org.apache.jackrabbit.value.Binar */ class MockProperty extends AbstractItem implements Property { - private Value[] values; - private boolean isMultiple; + private final ItemData itemData; - public MockProperty(final String path, final Session session) throws RepositoryException { - super(path, session); - this.values = new Value[] { getSession().getValueFactory().createValue("") }; + public MockProperty(final ItemData itemData, final Session session) { + super(itemData.getPath(), session); + this.itemData = itemData; + if (this.itemData.getValues() == null) { + try { + this.itemData.setValues(new Value[] { getSession().getValueFactory().createValue("") }); + } + catch (RepositoryException ex) { + throw new RuntimeException("Initializing property failed.", ex); + } + } } private Value internalGetValue() throws ValueFormatException { - if (this.values.length > 1) { + if (this.itemData.getValues().length > 1) { throw new ValueFormatException(this + " is a multi-valued property, so it's values can only be retrieved as an array"); } else { - return this.values[0]; + return this.itemData.getValues()[0]; } } @@ -63,89 +70,91 @@ class MockProperty extends AbstractItem @Override public Value[] getValues() { - Value[] valuesCopy = new Value[this.values.length]; - for (int i = 0; i < this.values.length; i++) { - valuesCopy[i] = this.values[i]; + Value[] valuesCopy = new Value[this.itemData.getValues().length]; + for (int i = 0; i < this.itemData.getValues().length; i++) { + valuesCopy[i] = this.itemData.getValues()[i]; } return valuesCopy; } @Override public void setValue(final Value newValue) { - this.values = new Value[] { newValue }; - this.isMultiple = false; + this.itemData.setValues(new Value[] { newValue }); + this.itemData.setMultiple(false); } @Override public void setValue(final Value[] newValues) { - this.values = new Value[newValues.length]; + Value[] values = new Value[newValues.length]; for (int i = 0; i < newValues.length; i++) { - this.values[i] = newValues[i]; + values[i] = newValues[i]; } - this.isMultiple = true; + this.itemData.setValues(values); + this.itemData.setMultiple(true); } @Override public void setValue(final String newValue) throws RepositoryException { - this.values = new Value[] { getSession().getValueFactory().createValue(newValue) }; - this.isMultiple = false; + this.itemData.setValues(new Value[] { getSession().getValueFactory().createValue(newValue) }); + this.itemData.setMultiple(false); } @Override public void setValue(final String[] newValues) throws RepositoryException { - this.values = new Value[newValues.length]; + Value[] values = new Value[newValues.length]; for (int i = 0; i < newValues.length; i++) { - this.values[i] = getSession().getValueFactory().createValue(newValues[i]); + values[i] = getSession().getValueFactory().createValue(newValues[i]); } - this.isMultiple = true; + this.itemData.setValues(values); + this.itemData.setMultiple(true); } @Override public void setValue(final InputStream newValue) throws RepositoryException { - this.values = new Value[] { new BinaryValue(newValue) }; - this.isMultiple = false; + this.itemData.setValues(new Value[] { new BinaryValue(newValue) }); + this.itemData.setMultiple(false); } @Override public void setValue(final long newValue) throws RepositoryException { - this.values = new Value[] { getSession().getValueFactory().createValue(newValue) }; - this.isMultiple = false; + this.itemData.setValues(new Value[] { getSession().getValueFactory().createValue(newValue) }); + this.itemData.setMultiple(false); } @Override public void setValue(final double newValue) throws RepositoryException { - this.values = new Value[] { getSession().getValueFactory().createValue(newValue) }; - this.isMultiple = false; + this.itemData.setValues(new Value[] { getSession().getValueFactory().createValue(newValue) }); + this.itemData.setMultiple(false); } @Override public void setValue(final Calendar newValue) throws RepositoryException { - this.values = new Value[] { getSession().getValueFactory().createValue(newValue) }; - this.isMultiple = false; + this.itemData.setValues(new Value[] { getSession().getValueFactory().createValue(newValue) }); + this.itemData.setMultiple(false); } @Override public void setValue(final boolean newValue) throws RepositoryException { - this.values = new Value[] { getSession().getValueFactory().createValue(newValue) }; - this.isMultiple = false; + this.itemData.setValues(new Value[] { getSession().getValueFactory().createValue(newValue) }); + this.itemData.setMultiple(false); } @Override public void setValue(final Node newValue) throws RepositoryException { - this.values = new Value[] { getSession().getValueFactory().createValue(newValue) }; - this.isMultiple = false; + this.itemData.setValues(new Value[] { getSession().getValueFactory().createValue(newValue) }); + this.itemData.setMultiple(false); } @Override public void setValue(final Binary newValue) throws RepositoryException { - this.values = new Value[] { new BinaryValue(newValue) }; - this.isMultiple = false; + this.itemData.setValues(new Value[] { new BinaryValue(newValue) }); + this.itemData.setMultiple(false); } @Override public void setValue(final BigDecimal newValue) throws RepositoryException { - this.values = new Value[] { getSession().getValueFactory().createValue(newValue) }; - this.isMultiple = false; + this.itemData.setValues(new Value[] { getSession().getValueFactory().createValue(newValue) }); + this.itemData.setMultiple(false); } @Override @@ -191,7 +200,7 @@ class MockProperty extends AbstractItem @Override public int getType() throws RepositoryException { - return this.values[0].getType(); + return this.itemData.getValues()[0].getType(); } @Override @@ -201,9 +210,9 @@ class MockProperty extends AbstractItem @Override public long[] getLengths() throws RepositoryException { - long[] lengths = new long[this.values.length]; - for (int i = 0; i < this.values.length; i++) { - lengths[i] = this.values[i].getString().length(); + long[] lengths = new long[this.itemData.getValues().length]; + for (int i = 0; i < this.itemData.getValues().length; i++) { + lengths[i] = this.itemData.getValues()[i].getString().length(); } return lengths; } @@ -215,7 +224,7 @@ class MockProperty extends AbstractItem @Override public boolean isMultiple() { - return this.isMultiple; + return this.itemData.isMultiple(); } @Override @@ -223,6 +232,19 @@ class MockProperty extends AbstractItem return new MockPropertyDefinition(); } + @Override + public int hashCode() { + return itemData.hashCode(); + } + + @Override + public boolean equals(Object obj) { + if (obj instanceof MockProperty) { + return itemData.equals(((MockProperty)obj).itemData); + } + return false; + } + // --- unsupported operations --- @Override public Node getNode() { Modified: sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockRepository.java URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockRepository.java?rev=1632397&r1=1632396&r2=1632397&view=diff ============================================================================== --- sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockRepository.java (original) +++ sling/trunk/testing/mocks/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockRepository.java Thu Oct 16 17:53:47 2014 @@ -18,6 +18,9 @@ */ package org.apache.sling.testing.mock.jcr; +import java.util.LinkedHashMap; +import java.util.Map; + import javax.jcr.Credentials; import javax.jcr.Repository; import javax.jcr.Session; @@ -32,9 +35,16 @@ import org.apache.commons.lang3.ArrayUti */ class MockRepository implements Repository { + // Use linked hashmap to ensure ordering when adding items is preserved. + private final Map<String, ItemData> items = new LinkedHashMap<String, ItemData>(); + + public MockRepository() { + this.items.put("/", ItemData.newNode("/", MockNodeTypes.NT_UNSTRUCTURED)); + } + @Override public Session login() { - return new MockSession(this); + return new MockSession(this, items); } @Override 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=1632397&r1=1632396&r2=1632397&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 Thu Oct 16 17:53:47 2014 @@ -21,7 +21,6 @@ package org.apache.sling.testing.mock.jc import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.regex.Pattern; @@ -41,6 +40,7 @@ import javax.jcr.Workspace; import javax.jcr.retention.RetentionManager; import javax.jcr.security.AccessControlManager; +import org.apache.commons.lang3.StringUtils; import org.apache.jackrabbit.commons.iterator.RangeIteratorAdapter; import org.apache.jackrabbit.value.ValueFactoryImpl; import org.xml.sax.ContentHandler; @@ -53,14 +53,12 @@ class MockSession implements Session { private final Repository repository; private final Workspace workspace; + private final Map<String, ItemData> items; - // Use linked hashmap to ensure ordering when adding items is preserved. - private final Map<String, Item> items = new LinkedHashMap<String, Item>(); - - public MockSession(final Repository repository) { + public MockSession(Repository repository, Map<String,ItemData> items) { this.repository = repository; this.workspace = new MockWorkspace(this); - this.items.put("/", new MockNode("/", this, MockNodeTypes.NT_UNSTRUCTURED)); + this.items = items; } @Override @@ -70,9 +68,14 @@ class MockSession implements Session { @Override public Item getItem(final String absPath) throws RepositoryException { - Item item = this.items.get(absPath); - if (item != null) { - return item; + ItemData itemData = this.items.get(absPath); + if (itemData != null) { + if (itemData.isNode()) { + return new MockNode(itemData, this); + } + else { + return new MockProperty(itemData, this); + } } else { throw new PathNotFoundException(String.format("No item found at: %s.", absPath)); } @@ -90,12 +93,9 @@ class MockSession implements Session { @Override public Node getNodeByIdentifier(final String id) throws RepositoryException { - for (Item item : this.items.values()) { - if (item instanceof Node) { - Node node = (Node) item; - if (node.getIdentifier().equals(id)) { - return node; - } + for (ItemData item : this.items.values()) { + if (item.isNode() && StringUtils.equals(item.getUuid(), id)) { + return new MockNode(item, this); } } throw new ItemNotFoundException(String.format("No node found with id: %s.", id)); @@ -138,7 +138,7 @@ class MockSession implements Session { @Override public Node getRootNode() { - return (Node) this.items.get("/"); + return (Node)this.items.get("/").getItem(this); } @Override @@ -151,8 +151,8 @@ class MockSession implements Session { * @param item item * @throws RepositoryException */ - void addItem(final Item item) throws RepositoryException { - this.items.put(item.getPath(), item); + void addItem(final ItemData itemData) throws RepositoryException { + this.items.put(itemData.getPath(), itemData); } /** @@ -182,9 +182,9 @@ class MockSession implements Session { Pattern pattern = Pattern.compile("^" + Pattern.quote(parentPath) + "/[^/]+$"); // collect child resources - for (Item item : this.items.values()) { + for (ItemData item : this.items.values()) { if (pattern.matcher(item.getPath()).matches() && (filter == null || filter.accept(item))) { - children.add(item); + children.add(item.getItem(this)); } } 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=1632397&r1=1632396&r2=1632397&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 Thu Oct 16 17:53:47 2014 @@ -20,7 +20,6 @@ package org.apache.sling.testing.mock.jc import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; import javax.jcr.ItemNotFoundException; @@ -56,14 +55,14 @@ public class MockNodeTest { public void testGetNodes() throws RepositoryException { NodeIterator nodes = this.node1.getNodes(); assertEquals(1, nodes.getSize()); - assertSame(this.node11, nodes.next()); + assertEquals(this.node11, nodes.nextNode()); assertTrue(this.node1.hasNodes()); assertFalse(this.node11.hasNodes()); nodes = this.node1.getNodes("^node.*$"); assertEquals(1, nodes.getSize()); - assertSame(this.node11, nodes.next()); + assertEquals(this.node11, nodes.nextNode()); nodes = this.node1.getNodes("unknown?"); assertEquals(0, nodes.getSize()); @@ -73,14 +72,14 @@ public class MockNodeTest { public void testGetProperties() throws RepositoryException { PropertyIterator properties = this.node1.getProperties(); assertEquals(1, properties.getSize()); - assertSame(this.prop1, properties.next()); + assertEquals(this.prop1, properties.next()); assertTrue(this.node1.hasProperties()); assertFalse(this.node11.hasProperties()); properties = this.node1.getProperties("^prop.*$"); assertEquals(1, properties.getSize()); - assertSame(this.prop1, properties.next()); + assertEquals(this.prop1, properties.next()); properties = this.node1.getProperties("unknown?"); assertEquals(0, properties.getSize()); @@ -114,11 +113,11 @@ public class MockNodeTest { public void testGetPrimaryItem() throws RepositoryException { Node dataParent = this.node1.addNode("dataParent"); Property dataProperty = dataParent.setProperty(JcrConstants.JCR_DATA, "data"); - assertSame(dataProperty, dataParent.getPrimaryItem()); + assertEquals(dataProperty, dataParent.getPrimaryItem()); Node contentParent = this.node1.addNode("contentParent"); Node contentNode = contentParent.addNode(JcrConstants.JCR_CONTENT); - assertSame(contentNode, contentParent.getPrimaryItem()); + assertEquals(contentNode, contentParent.getPrimaryItem()); } @Test(expected = ItemNotFoundException.class) Modified: sling/trunk/testing/mocks/jcr-mock/src/test/java/org/apache/sling/testing/mock/jcr/MockRepositoryTest.java URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/jcr-mock/src/test/java/org/apache/sling/testing/mock/jcr/MockRepositoryTest.java?rev=1632397&r1=1632396&r2=1632397&view=diff ============================================================================== --- sling/trunk/testing/mocks/jcr-mock/src/test/java/org/apache/sling/testing/mock/jcr/MockRepositoryTest.java (original) +++ sling/trunk/testing/mocks/jcr-mock/src/test/java/org/apache/sling/testing/mock/jcr/MockRepositoryTest.java Thu Oct 16 17:53:47 2014 @@ -22,9 +22,13 @@ import static org.junit.Assert.assertEqu import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; +import static org.junit.Assert.fail; +import javax.jcr.Node; +import javax.jcr.PathNotFoundException; import javax.jcr.Repository; import javax.jcr.RepositoryException; +import javax.jcr.Session; import javax.jcr.SimpleCredentials; import org.junit.Before; @@ -39,25 +43,52 @@ public class MockRepositoryTest { @Before public void setUp() { - this.repository = MockJcr.newRepository(); + repository = MockJcr.newRepository(); } @Test public void testLogin() throws RepositoryException { - assertNotNull(this.repository.login()); - assertNotNull(this.repository.login(new SimpleCredentials(USER_NAME, PASSWORD))); - assertNotNull(this.repository.login(MockJcr.DEFAULT_WORKSPACE)); - assertNotNull(this.repository.login(new SimpleCredentials(USER_NAME, PASSWORD), MockJcr.DEFAULT_WORKSPACE)); + assertNotNull(repository.login()); + assertNotNull(repository.login(new SimpleCredentials(USER_NAME, PASSWORD))); + assertNotNull(repository.login(MockJcr.DEFAULT_WORKSPACE)); + assertNotNull(repository.login(new SimpleCredentials(USER_NAME, PASSWORD), MockJcr.DEFAULT_WORKSPACE)); } @Test public void testDescriptor() { - assertEquals(0, this.repository.getDescriptorKeys().length); - assertNull(this.repository.getDescriptor("test")); - assertNull(this.repository.getDescriptorValue("test")); - assertNull(this.repository.getDescriptorValues("test")); - assertFalse(this.repository.isStandardDescriptor("test")); - assertFalse(this.repository.isSingleValueDescriptor("test")); + assertEquals(0, repository.getDescriptorKeys().length); + assertNull(repository.getDescriptor("test")); + assertNull(repository.getDescriptorValue("test")); + assertNull(repository.getDescriptorValues("test")); + assertFalse(repository.isStandardDescriptor("test")); + assertFalse(repository.isSingleValueDescriptor("test")); + } + + @Test + public void testMultipleSessions() throws RepositoryException { + Session session1 = repository.login(); + Session session2 = repository.login(); + + // add a node in session 1 + Node root = session1.getRootNode(); + root.addNode("test"); + session1.save(); + + // try to get node in session 2 + Node testNode2 = session2.getNode("/test"); + assertNotNull(testNode2); + + // delete node and make sure it is removed in session 1 as well + testNode2.remove(); + session2.save(); + + try { + session1.getNode("/test"); + fail("Node was not removed"); + } + catch (PathNotFoundException ex) { + // expected + } } } 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=1632397&r1=1632396&r2=1632397&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 Thu Oct 16 17:53:47 2014 @@ -22,7 +22,6 @@ import static org.junit.Assert.assertArr import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; import javax.jcr.ItemNotFoundException; @@ -60,7 +59,7 @@ public class MockSessionTest { @Test public void testNodePropertyCreateRead() throws RepositoryException { Node rootNode = this.session.getNode("/"); - assertSame(rootNode, this.session.getRootNode()); + assertEquals(rootNode, this.session.getRootNode()); Node node1 = rootNode.addNode("node1"); node1.setProperty("prop1a", "value1a"); @@ -69,16 +68,16 @@ public class MockSessionTest { Node node2 = rootNode.addNode("node2"); node2.setProperty("prop2", "value2"); - assertSame(node1, rootNode.getNode("node1")); - assertSame(node1, this.session.getNode("/node1")); - assertSame(node1, this.session.getItem("/node1")); - assertSame(node1, this.session.getNodeByIdentifier(node1.getIdentifier())); + assertEquals(node1, rootNode.getNode("node1")); + assertEquals(node1, this.session.getNode("/node1")); + assertEquals(node1, this.session.getItem("/node1")); + assertEquals(node1, this.session.getNodeByIdentifier(node1.getIdentifier())); assertTrue(this.session.nodeExists("/node1")); assertTrue(this.session.itemExists("/node1")); - assertSame(node2, rootNode.getNode("node2")); - assertSame(node2, this.session.getNode("/node2")); - assertSame(node2, this.session.getItem("/node2")); - assertSame(node2, this.session.getNodeByIdentifier(node2.getIdentifier())); + assertEquals(node2, rootNode.getNode("node2")); + assertEquals(node2, this.session.getNode("/node2")); + assertEquals(node2, this.session.getItem("/node2")); + assertEquals(node2, this.session.getNodeByIdentifier(node2.getIdentifier())); assertTrue(this.session.nodeExists("/node2")); assertTrue(this.session.itemExists("/node2")); @@ -86,16 +85,16 @@ public class MockSessionTest { Property prop1b = node1.getProperty("prop1b"); Property prop2 = node2.getProperty("prop2"); - assertSame(prop1a, this.session.getProperty("/node1/prop1a")); - assertSame(prop1a, this.session.getItem("/node1/prop1a")); + assertEquals(prop1a, this.session.getProperty("/node1/prop1a")); + assertEquals(prop1a, this.session.getItem("/node1/prop1a")); assertTrue(this.session.propertyExists("/node1/prop1a")); assertTrue(this.session.itemExists("/node1/prop1a")); - assertSame(prop1b, this.session.getProperty("/node1/prop1b")); - assertSame(prop1b, this.session.getItem("/node1/prop1b")); + assertEquals(prop1b, this.session.getProperty("/node1/prop1b")); + assertEquals(prop1b, this.session.getItem("/node1/prop1b")); assertTrue(this.session.propertyExists("/node1/prop1b")); assertTrue(this.session.itemExists("/node1/prop1b")); - assertSame(prop2, this.session.getProperty("/node2/prop2")); - assertSame(prop2, this.session.getItem("/node2/prop2")); + assertEquals(prop2, this.session.getProperty("/node2/prop2")); + assertEquals(prop2, this.session.getItem("/node2/prop2")); assertTrue(this.session.propertyExists("/node2/prop2")); assertTrue(this.session.itemExists("/node2/prop2")); Added: sling/trunk/testing/mocks/sling-mock-jackrabbit/src/test/java/org/apache/sling/testing/mock/sling/jackrabbit/resource/MultipleResourceResolverTest.java URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock-jackrabbit/src/test/java/org/apache/sling/testing/mock/sling/jackrabbit/resource/MultipleResourceResolverTest.java?rev=1632397&view=auto ============================================================================== --- sling/trunk/testing/mocks/sling-mock-jackrabbit/src/test/java/org/apache/sling/testing/mock/sling/jackrabbit/resource/MultipleResourceResolverTest.java (added) +++ sling/trunk/testing/mocks/sling-mock-jackrabbit/src/test/java/org/apache/sling/testing/mock/sling/jackrabbit/resource/MultipleResourceResolverTest.java Thu Oct 16 17:53:47 2014 @@ -0,0 +1,63 @@ +/* + * 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.sling.testing.mock.sling.jackrabbit.resource; + +import java.io.IOException; + +import javax.jcr.RepositoryException; +import javax.jcr.Session; + +import org.apache.sling.api.resource.LoginException; +import org.apache.sling.api.resource.ResourceResolver; +import org.apache.sling.api.resource.ResourceResolverFactory; +import org.apache.sling.commons.testing.jcr.RepositoryUtil; +import org.apache.sling.testing.mock.sling.MockSling; +import org.apache.sling.testing.mock.sling.ResourceResolverType; +import org.apache.sling.testing.mock.sling.resource.AbstractMultipleResourceResolverTest; +import org.junit.Ignore; + +//TEST IS DISABLED currently, it does not work with jackrabbit repository yet +@Ignore +public class MultipleResourceResolverTest extends AbstractMultipleResourceResolverTest { + + @Override + protected ResourceResolverType getResourceResolverType() { + return ResourceResolverType.JCR_JACKRABBIT; + } + + @Override + protected ResourceResolverFactory newResourceResolerFactory() { + ResourceResolverFactory factory = MockSling.newResourceResolverFactory(getResourceResolverType()); + + // register sling node types + try { + ResourceResolver resolver = factory.getResourceResolver(null); + RepositoryUtil.registerSlingNodeTypes(resolver.adaptTo(Session.class)); + } catch (LoginException ex) { + throw new RuntimeException("Unable to register sling node types.", ex); + } catch (IOException ex) { + throw new RuntimeException("Unable to register sling node types.", ex); + } catch (RepositoryException ex) { + throw new RuntimeException("Unable to register sling node types.", ex); + } + + return factory; + } + +} Propchange: sling/trunk/testing/mocks/sling-mock-jackrabbit/src/test/java/org/apache/sling/testing/mock/sling/jackrabbit/resource/MultipleResourceResolverTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: sling/trunk/testing/mocks/sling-mock-jackrabbit/src/test/java/org/apache/sling/testing/mock/sling/jackrabbit/resource/MultipleResourceResolverTest.java ------------------------------------------------------------------------------ --- svn:keywords (added) +++ svn:keywords Thu Oct 16 17:53:47 2014 @@ -0,0 +1 @@ +LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author Propchange: sling/trunk/testing/mocks/sling-mock-jackrabbit/src/test/java/org/apache/sling/testing/mock/sling/jackrabbit/resource/MultipleResourceResolverTest.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/jcrmock/resource/MultipleResourceResolverTest.java URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/jcrmock/resource/MultipleResourceResolverTest.java?rev=1632397&view=auto ============================================================================== --- sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/jcrmock/resource/MultipleResourceResolverTest.java (added) +++ sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/jcrmock/resource/MultipleResourceResolverTest.java Thu Oct 16 17:53:47 2014 @@ -0,0 +1,31 @@ +/* + * 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.sling.testing.mock.sling.jcrmock.resource; + +import org.apache.sling.testing.mock.sling.ResourceResolverType; +import org.apache.sling.testing.mock.sling.resource.AbstractMultipleResourceResolverTest; + +public class MultipleResourceResolverTest extends AbstractMultipleResourceResolverTest { + + @Override + protected ResourceResolverType getResourceResolverType() { + return ResourceResolverType.JCR_MOCK; + } + +} Propchange: sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/jcrmock/resource/MultipleResourceResolverTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/jcrmock/resource/MultipleResourceResolverTest.java ------------------------------------------------------------------------------ --- svn:keywords (added) +++ svn:keywords Thu Oct 16 17:53:47 2014 @@ -0,0 +1 @@ +LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author Propchange: sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/jcrmock/resource/MultipleResourceResolverTest.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractMultipleResourceResolverTest.java URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractMultipleResourceResolverTest.java?rev=1632397&view=auto ============================================================================== --- sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractMultipleResourceResolverTest.java (added) +++ sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractMultipleResourceResolverTest.java Thu Oct 16 17:53:47 2014 @@ -0,0 +1,66 @@ +/* + * 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.sling.testing.mock.sling.resource; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +import org.apache.sling.api.resource.Resource; +import org.apache.sling.api.resource.ResourceResolver; +import org.apache.sling.api.resource.ResourceResolverFactory; +import org.apache.sling.testing.mock.sling.MockSling; +import org.apache.sling.testing.mock.sling.ResourceResolverType; +import org.junit.Test; + +import com.google.common.collect.ImmutableMap; + +/** + * Tests content access accross multiple resource resolvers. + */ +public abstract class AbstractMultipleResourceResolverTest { + + protected abstract ResourceResolverType getResourceResolverType(); + + protected ResourceResolverFactory newResourceResolerFactory() { + return MockSling.newResourceResolverFactory(getResourceResolverType()); + } + + @Test + public void testMultipleResourceResolver() throws Exception { + ResourceResolverFactory factory = newResourceResolerFactory(); + ResourceResolver resolver1 = factory.getResourceResolver(null); + ResourceResolver resolver2 = factory.getResourceResolver(null); + + // add a resource in resolver 1 + Resource root = resolver1.getResource("/"); + resolver1.create(root, "test", ImmutableMap.<String, Object>of()); + resolver1.commit(); + + // try to get resource in resolver 2 + Resource testResource2 = resolver2.getResource("/test"); + assertNotNull(testResource2); + + // delete resource and make sure it is removed in resolver 1 as well + resolver2.delete(testResource2); + resolver2.commit(); + + assertNull(resolver1.getResource("/test")); + } + +} Propchange: sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractMultipleResourceResolverTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractMultipleResourceResolverTest.java ------------------------------------------------------------------------------ --- svn:keywords (added) +++ svn:keywords Thu Oct 16 17:53:47 2014 @@ -0,0 +1 @@ +LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author Propchange: sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractMultipleResourceResolverTest.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/rrmock/resource/MultipleResourceResolverTest.java URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/rrmock/resource/MultipleResourceResolverTest.java?rev=1632397&view=auto ============================================================================== --- sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/rrmock/resource/MultipleResourceResolverTest.java (added) +++ sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/rrmock/resource/MultipleResourceResolverTest.java Thu Oct 16 17:53:47 2014 @@ -0,0 +1,31 @@ +/* + * 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.sling.testing.mock.sling.rrmock.resource; + +import org.apache.sling.testing.mock.sling.ResourceResolverType; +import org.apache.sling.testing.mock.sling.resource.AbstractMultipleResourceResolverTest; + +public class MultipleResourceResolverTest extends AbstractMultipleResourceResolverTest { + + @Override + protected ResourceResolverType getResourceResolverType() { + return ResourceResolverType.RESOURCERESOLVER_MOCK; + } + +} Propchange: sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/rrmock/resource/MultipleResourceResolverTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/rrmock/resource/MultipleResourceResolverTest.java ------------------------------------------------------------------------------ --- svn:keywords (added) +++ svn:keywords Thu Oct 16 17:53:47 2014 @@ -0,0 +1 @@ +LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author Propchange: sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/rrmock/resource/MultipleResourceResolverTest.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/rrmock/resource/SlingCrudResourceResolverTest.java URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/rrmock/resource/SlingCrudResourceResolverTest.java?rev=1632397&r1=1632396&r2=1632397&view=diff ============================================================================== --- sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/rrmock/resource/SlingCrudResourceResolverTest.java (original) +++ sling/trunk/testing/mocks/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/rrmock/resource/SlingCrudResourceResolverTest.java Thu Oct 16 17:53:47 2014 @@ -18,8 +18,6 @@ */ package org.apache.sling.testing.mock.sling.rrmock.resource; -import org.apache.sling.api.resource.ResourceResolver; -import org.apache.sling.testing.mock.sling.MockSling; import org.apache.sling.testing.mock.sling.ResourceResolverType; import org.apache.sling.testing.mock.sling.resource.AbstractSlingCrudResourceResolverTest; @@ -30,9 +28,4 @@ public class SlingCrudResourceResolverTe return ResourceResolverType.RESOURCERESOLVER_MOCK; } - @Override - protected ResourceResolver newResourceResolver() { - return MockSling.newResourceResolver(getResourceResolverType()); - } - }