This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to annotated tag org.apache.sling.testing.jcr-mock-1.1.10 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-jcr-mock.git
commit 07d129d17c3191dca2e9a223acb727ee89001fbf Author: Stefan Seifert <[email protected]> AuthorDate: Thu Jun 11 15:37:25 2015 +0000 SLING-4802 JcrMock: Support Session close and isLive methods git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/testing/mocks/jcr-mock@1684923 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/sling/testing/mock/jcr/MockSession.java | 47 +++++++++++++++++----- .../sling/testing/mock/jcr/MockSessionTest.java | 7 ++++ 2 files changed, 44 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/apache/sling/testing/mock/jcr/MockSession.java b/src/main/java/org/apache/sling/testing/mock/jcr/MockSession.java index 41b7db2..45e050d 100644 --- a/src/main/java/org/apache/sling/testing/mock/jcr/MockSession.java +++ b/src/main/java/org/apache/sling/testing/mock/jcr/MockSession.java @@ -55,6 +55,7 @@ class MockSession implements Session { private final Workspace workspace; private final Map<String, ItemData> items; private final String userId; + private boolean isLive; public MockSession(MockRepository repository, Map<String,ItemData> items, String userId, String workspaceName) { @@ -62,15 +63,24 @@ class MockSession implements Session { this.workspace = new MockWorkspace(repository, this, workspaceName); this.items = items; this.userId = userId; + isLive = true; + } + + private void checkLive() throws RepositoryException { + if (!isLive) { + throw new RepositoryException("Session is logged out / not live."); + } } @Override public ValueFactory getValueFactory() throws RepositoryException { + checkLive(); return ValueFactoryImpl.getInstance(); } @Override public Item getItem(final String absPath) throws RepositoryException { + checkLive(); final ItemData itemData = getItemData(absPath); if (itemData != null) { if (itemData.isNode()) { @@ -86,6 +96,7 @@ class MockSession implements Session { @Override public Node getNode(final String absPath) throws RepositoryException { + checkLive(); Item item = getItem(absPath); if (item instanceof Node) { return (Node) item; @@ -96,6 +107,7 @@ class MockSession implements Session { @Override public Node getNodeByIdentifier(final String id) throws RepositoryException { + checkLive(); for (ItemData item : this.items.values()) { if (item.isNode() && StringUtils.equals(item.getUuid(), id)) { return new MockNode(item, this); @@ -106,6 +118,7 @@ class MockSession implements Session { @Override public Property getProperty(final String absPath) throws RepositoryException { + checkLive(); Item item = getItem(absPath); if (item instanceof Property) { return (Property) item; @@ -116,26 +129,31 @@ class MockSession implements Session { @Override public boolean nodeExists(final String absPath) throws RepositoryException { + checkLive(); return itemExists(absPath) && getItemData(absPath).isNode(); } @Override public boolean propertyExists(final String absPath) throws RepositoryException { + checkLive(); return itemExists(absPath) && getItemData(absPath).isProperty(); } @Override public void removeItem(final String absPath) throws RepositoryException { + checkLive(); removeItemWithChildren(absPath); } @Override public Node getRootNode() throws RepositoryException { + checkLive(); return getNode("/"); } @Override public Node getNodeByUUID(final String uuid) throws RepositoryException { + checkLive(); return getNodeByIdentifier(uuid); } @@ -194,11 +212,13 @@ class MockSession implements Session { @Override public boolean hasPendingChanges() throws RepositoryException { + checkLive(); return false; } @Override public boolean itemExists(final String absPath) throws RepositoryException { + checkLive(); return getItemData(absPath) != null; } @@ -214,21 +234,25 @@ class MockSession implements Session { @Override public String getNamespacePrefix(final String uri) throws RepositoryException { + checkLive(); return getWorkspace().getNamespaceRegistry().getPrefix(uri); } @Override public String[] getNamespacePrefixes() throws RepositoryException { + checkLive(); return getWorkspace().getNamespaceRegistry().getPrefixes(); } @Override public String getNamespaceURI(final String prefix) throws RepositoryException { + checkLive(); return getWorkspace().getNamespaceRegistry().getURI(prefix); } @Override public void setNamespacePrefix(final String prefix, final String uri) throws RepositoryException { + checkLive(); getWorkspace().getNamespaceRegistry().registerNamespace(prefix, uri); } @@ -239,6 +263,7 @@ class MockSession implements Session { @Override public void save() throws RepositoryException { + checkLive(); // reset new flags for (ItemData itemData : this.items.values()) { itemData.setIsNew(false); @@ -248,13 +273,25 @@ class MockSession implements Session { @Override public void refresh(final boolean keepChanges) throws RepositoryException { // do nothing + checkLive(); } @Override public void checkPermission(final String absPath, final String actions) throws RepositoryException { // always grant permission + checkLive(); + } + + @Override + public boolean isLive() { + return isLive; } + @Override + public void logout() { + isLive = false; + } + // --- unsupported operations --- @Override public void addLockToken(final String lt) { @@ -316,16 +353,6 @@ class MockSession implements Session { } @Override - public boolean isLive() { - throw new UnsupportedOperationException(); - } - - @Override - public void logout() { - throw new UnsupportedOperationException(); - } - - @Override public void move(final String srcAbsPath, final String destAbsPath) throws RepositoryException { throw new UnsupportedOperationException(); } diff --git a/src/test/java/org/apache/sling/testing/mock/jcr/MockSessionTest.java b/src/test/java/org/apache/sling/testing/mock/jcr/MockSessionTest.java index 51068d7..9a08aaf 100644 --- a/src/test/java/org/apache/sling/testing/mock/jcr/MockSessionTest.java +++ b/src/test/java/org/apache/sling/testing/mock/jcr/MockSessionTest.java @@ -259,5 +259,12 @@ public class MockSessionTest { assertFalse(node.isNew()); assertFalse(property.isNew()); } + + @Test + public void testLogout() throws Exception { + assertTrue(session.isLive()); + session.logout(); + assertFalse(session.isLive()); + } } -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
