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 2021/01/08 12:34:02 UTC

[sling-org-apache-sling-testing-resourceresolver-mock] branch feature/SLING-10045-deps-2018 updated (f6a7683 -> 73b2bb3)

This is an automated email from the ASF dual-hosted git repository.

sseifert pushed a change to branch feature/SLING-10045-deps-2018
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-resourceresolver-mock.git.


 discard f6a7683  SLING-10045 update dependencies to 2018 replace DeepReadModifiableValueMapDecorator with the one from the Sling API apply nullable annotations
     new 73b2bb3  SLING-10045 update dependencies to 2018 replace DeepReadModifiableValueMapDecorator with the one from the Sling API apply nullable annotations

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (f6a7683)
            \
             N -- N -- N   refs/heads/feature/SLING-10045-deps-2018 (73b2bb3)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 pom.xml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)


[sling-org-apache-sling-testing-resourceresolver-mock] 01/01: SLING-10045 update dependencies to 2018 replace DeepReadModifiableValueMapDecorator with the one from the Sling API apply nullable annotations

Posted by ss...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sseifert pushed a commit to branch feature/SLING-10045-deps-2018
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-resourceresolver-mock.git

commit 73b2bb3c21d52ab45fca76f5f4cf243df8da615c
Author: Stefan Seifert <st...@users.noreply.github.com>
AuthorDate: Fri Jan 8 11:02:04 2021 +0100

    SLING-10045 update dependencies to 2018
    replace DeepReadModifiableValueMapDecorator with the one from the Sling API
    apply nullable annotations
---
 pom.xml                                            |  71 +++-----------
 .../DeepReadModifiableValueMapDecorator.java       | 108 ---------------------
 .../sling/testing/resourceresolver/MockHelper.java |   1 +
 .../resourceresolver/MockPropertyResource.java     |  12 ++-
 .../testing/resourceresolver/MockResource.java     |  16 ++-
 .../resourceresolver/MockResourceResolver.java     |  53 +++++-----
 .../MockResourceResolverFactory.java               |  11 +--
 .../MockResourceResolverFactoryOptions.java        |   2 +-
 .../testing/resourceresolver/MockValueMap.java     |   1 +
 .../ReadonlyValueMapDecorator.java                 |   6 +-
 .../resourceresolver/ValueMapDecorator.java        |   8 +-
 .../testing/resourceresolver/package-info.java     |   2 +-
 .../CreateDeleteResourceResolverTest.java          |   1 +
 .../NamespaceManglingResourceResolverTest.java     |   1 +
 .../resourceresolver/ObjectConverterTest.java      |   1 +
 .../resourceresolver/RootResourceTypeTest.java     |   5 +-
 16 files changed, 77 insertions(+), 222 deletions(-)

diff --git a/pom.xml b/pom.xml
index d93ed9b..2bb25f9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,12 +23,12 @@
     <parent>
         <groupId>org.apache.sling</groupId>
         <artifactId>sling-bundle-parent</artifactId>
-        <version>36</version>
+        <version>40</version>
         <relativePath />
     </parent>
 
     <artifactId>org.apache.sling.testing.resourceresolver-mock</artifactId>
-    <version>1.1.27-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
 
     <name>Apache Sling Testing Resource Resolver Mock</name>
     <description>
@@ -64,31 +64,30 @@
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.api</artifactId>
-            <version>2.4.0</version>
+            <version>2.16.4</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.compendium</artifactId>
-            <version>4.1.0</version>
+            <artifactId>org.osgi.service.event</artifactId>
+            <version>1.3.1</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>javax.servlet</groupId>
-            <artifactId>servlet-api</artifactId>
-            <version>2.4</version>
+            <artifactId>javax.servlet-api</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>commons-io</groupId>
             <artifactId>commons-io</artifactId>
-            <version>2.4</version>
+            <version>2.5</version>
             <scope>compile</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.jackrabbit</groupId>
             <artifactId>jackrabbit-jcr-commons</artifactId>
-            <version>2.5.3</version>
+            <version>2.16.0</version>
             <scope>compile</scope>
         </dependency>
 
@@ -114,63 +113,15 @@
         <dependency>
             <groupId>org.mockito</groupId>
             <artifactId>mockito-core</artifactId>
-            <version>2.3.7</version>
+            <version>3.7.0</version>
             <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>
-            <version>3.2</version>
+            <version>3.6</version>
             <scope>test</scope>
         </dependency>
     </dependencies>
-    
-    <!-- Profiles to run unit tests against different Sling API versions -->
-    <profiles>
-        <profile>
-            <id>api-2.5</id>
-            <dependencies>
-            <dependency>
-                <groupId>org.apache.sling</groupId>
-                <artifactId>org.apache.sling.api</artifactId>
-                <version>2.5.0</version>
-                <scope>provided</scope>
-            </dependency>
-            </dependencies>
-        </profile>
-        <profile>
-            <id>api-2.6</id>
-            <dependencies>
-            <dependency>
-                <groupId>org.apache.sling</groupId>
-                <artifactId>org.apache.sling.api</artifactId>
-                <version>2.6.0</version>
-                <scope>provided</scope>
-            </dependency>
-            </dependencies>
-        </profile>
-        <profile>
-            <id>api-2.7</id>
-            <dependencies>
-            <dependency>
-                <groupId>org.apache.sling</groupId>
-                <artifactId>org.apache.sling.api</artifactId>
-                <version>2.7.0</version>
-                <scope>provided</scope>
-            </dependency>
-            </dependencies>
-        </profile>
-        <profile>
-            <id>api-2.8</id>
-            <dependencies>
-            <dependency>
-                <groupId>org.apache.sling</groupId>
-                <artifactId>org.apache.sling.api</artifactId>
-                <version>2.8.0</version>
-                <scope>provided</scope>
-            </dependency>
-            </dependencies>
-        </profile>
-    </profiles>
-    
+
 </project>
diff --git a/src/main/java/org/apache/sling/testing/resourceresolver/DeepReadModifiableValueMapDecorator.java b/src/main/java/org/apache/sling/testing/resourceresolver/DeepReadModifiableValueMapDecorator.java
deleted file mode 100644
index c2b1e5f..0000000
--- a/src/main/java/org/apache/sling/testing/resourceresolver/DeepReadModifiableValueMapDecorator.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * 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.resourceresolver;
-
-import org.apache.sling.api.resource.ModifiableValueMap;
-import org.apache.sling.api.resource.Resource;
-import org.apache.sling.api.resource.ResourceResolver;
-import org.apache.sling.api.resource.ValueMap;
-
-/**
- * This is copied from org.apache.sling.api.wrappers.DeepReadValueMapDecorator and DeepReadModifiableValueMapDecorator
- * to avoid dependency to latest Sling API.
- */
-class DeepReadModifiableValueMapDecorator extends ValueMapDecorator implements ModifiableValueMap {
-
-    private final String pathPrefix;
-
-    private final ResourceResolver resolver;
-
-    private final ValueMap base;
-
-    public DeepReadModifiableValueMapDecorator(final Resource resource, final ValueMap base) {
-        super(base);
-        this.pathPrefix = resource.getPath() + "/";
-        this.resolver = resource.getResourceResolver();
-        this.base = base;
-    }
-
-    @SuppressWarnings("null")
-    private ValueMap getValueMap(final String name) {
-        final int pos = name.lastIndexOf("/");
-        if ( pos == -1 ) {
-            return this.base;
-        }
-        final Resource rsrc = this.resolver.getResource(pathPrefix + name.substring(0, pos));
-        if ( rsrc != null ) {
-            final ValueMap vm = rsrc.adaptTo(ValueMap.class);
-            if ( vm != null ) {
-                return vm;
-            }
-        }
-        return ValueMap.EMPTY; // fall back
-    }
-
-    private String getPropertyName(final String name) {
-        final int pos = name.lastIndexOf("/");
-        if ( pos == -1 ) {
-            return name;
-        }
-        return name.substring(pos + 1);
-    }
-
-    /**
-     * @see org.apache.sling.api.resource.ValueMap#get(java.lang.String, java.lang.Class)
-     */
-    @Override
-    public <T> T get(final String name, final Class<T> type) {
-        return this.getValueMap(name).get(this.getPropertyName(name), type);
-    }
-
-    /**
-     * @see org.apache.sling.api.resource.ValueMap#get(java.lang.String, java.lang.Object)
-     */
-    @Override
-    public <T> T get(final String name, T defaultValue) {
-        return this.getValueMap(name).get(this.getPropertyName(name), defaultValue);
-    }
-
-    /**
-     * @see org.apache.sling.api.wrappers.ValueMapDecorator#containsKey(java.lang.Object)
-     */
-    @Override
-    public boolean containsKey(final Object key) {
-        if ( key == null ) {
-            return false;
-        }
-        final String name = key.toString();
-        return this.getValueMap(name).containsKey(this.getPropertyName(name));
-    }
-
-    /**
-     * @see org.apache.sling.api.wrappers.ValueMapDecorator#get(java.lang.Object)
-     */
-    @Override
-    public Object get(final Object key) {
-        if ( key == null ) {
-            return null;
-        }
-        final String name = key.toString();
-        return this.getValueMap(name).get(this.getPropertyName(name));
-    }
-}
diff --git a/src/main/java/org/apache/sling/testing/resourceresolver/MockHelper.java b/src/main/java/org/apache/sling/testing/resourceresolver/MockHelper.java
index b84b740..eb216a9 100644
--- a/src/main/java/org/apache/sling/testing/resourceresolver/MockHelper.java
+++ b/src/main/java/org/apache/sling/testing/resourceresolver/MockHelper.java
@@ -117,6 +117,7 @@ public class MockHelper {
         this.resolver.commit();
     }
 
+    @SuppressWarnings("null")
     private void create(@NotNull final String path, @NotNull final Map<String, Object> properties) throws PersistenceException {
         final String parentPath = ResourceUtil.getParent(path);
         final String name = ResourceUtil.getName(path);
diff --git a/src/main/java/org/apache/sling/testing/resourceresolver/MockPropertyResource.java b/src/main/java/org/apache/sling/testing/resourceresolver/MockPropertyResource.java
index a6884f1..2ba585d 100644
--- a/src/main/java/org/apache/sling/testing/resourceresolver/MockPropertyResource.java
+++ b/src/main/java/org/apache/sling/testing/resourceresolver/MockPropertyResource.java
@@ -23,6 +23,7 @@ import org.apache.sling.api.resource.ResourceMetadata;
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.resource.ResourceUtil;
 import org.apache.sling.api.resource.ValueMap;
+import org.jetbrains.annotations.NotNull;
 
 /**
  * Resource that wraps a property value.
@@ -45,12 +46,14 @@ class MockPropertyResource extends AbstractResource {
     }
 
     @Override
-    public String getPath() {
+    public @NotNull String getPath() {
         return this.path;
     }
 
     @Override
-    public String getResourceType() {
+    @SuppressWarnings("null")
+    public @NotNull String getResourceType() {
+        // TODO: we should return a resource type here!
         return null;
     }
 
@@ -60,16 +63,17 @@ class MockPropertyResource extends AbstractResource {
     }
 
     @Override
-    public ResourceMetadata getResourceMetadata() {
+    public @NotNull ResourceMetadata getResourceMetadata() {
         return rm;
     }
 
     @Override
-    public ResourceResolver getResourceResolver() {
+    public @NotNull ResourceResolver getResourceResolver() {
         return this.resolver;
     }
 
     @Override
+    @SuppressWarnings("null")
     public <AdapterType> AdapterType adaptTo(Class<AdapterType> type) {
         AdapterType value = props.get(key, type);
         if (value!=null) {
diff --git a/src/main/java/org/apache/sling/testing/resourceresolver/MockResource.java b/src/main/java/org/apache/sling/testing/resourceresolver/MockResource.java
index c434b34..964b338 100644
--- a/src/main/java/org/apache/sling/testing/resourceresolver/MockResource.java
+++ b/src/main/java/org/apache/sling/testing/resourceresolver/MockResource.java
@@ -28,6 +28,7 @@ import org.apache.sling.api.resource.ResourceMetadata;
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.resource.ResourceUtil;
 import org.apache.sling.api.resource.ValueMap;
+import org.jetbrains.annotations.NotNull;
 
 public class MockResource extends AbstractResource {
 
@@ -64,13 +65,12 @@ public class MockResource extends AbstractResource {
     }
 
     @Override
-    public String getPath() {
+    public @NotNull String getPath() {
         return this.path;
     }
 
     @Override
-    @SuppressWarnings({ "null", "unused" })
-    public String getResourceType() {
+    public @NotNull String getResourceType() {
         String resourceType = this.props.get(ResourceResolver.PROPERTY_RESOURCE_TYPE, String.class);
         if (resourceType == null) {
             // fallback to jcr:primaryType if not resouce type exists (to mimick JCR resource behavior)
@@ -84,23 +84,22 @@ public class MockResource extends AbstractResource {
     }
 
     @Override
-    @SuppressWarnings("null")
     public String getResourceSuperType() {
         return this.props.get("sling:resourceSuperType", String.class);
     }
 
     @Override
-    public ResourceMetadata getResourceMetadata() {
+    public @NotNull ResourceMetadata getResourceMetadata() {
         return rm;
     }
 
     @Override
-    public ResourceResolver getResourceResolver() {
+    public @NotNull ResourceResolver getResourceResolver() {
         return this.resolver;
     }
 
-    @SuppressWarnings("unchecked")
     @Override
+    @SuppressWarnings({ "unchecked", "null" })
     public <AdapterType> AdapterType adaptTo(final Class<AdapterType> type) {
         if ( type == ValueMap.class || type == Map.class ) {
             return (AdapterType)new ReadonlyValueMapDecorator(this.props);
@@ -122,7 +121,6 @@ public class MockResource extends AbstractResource {
      * Emulate feature of JCR resource implementation that allows adapting to InputStream for nt:file and nt:resource nodes.
      * @return InputStream or null if adaption not possible.
      */
-    @SuppressWarnings("null")
     private InputStream getFileResourceInputStream() {
         String resourceType = getResourceType();
         if (NT_RESOURCE.equals(resourceType)) {
@@ -137,7 +135,7 @@ public class MockResource extends AbstractResource {
         return null;
     }
 
-    // part of Resource API 2.7.0
+    @Override
     public ValueMap getValueMap() {
         return this.adaptTo(ValueMap.class);
     }
diff --git a/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolver.java b/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolver.java
index f72fc7e..c4eb210 100644
--- a/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolver.java
+++ b/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolver.java
@@ -43,6 +43,7 @@ import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.resource.ResourceUtil;
 import org.apache.sling.api.resource.ValueMap;
+import org.jetbrains.annotations.NotNull;
 import org.osgi.service.event.Event;
 import org.osgi.service.event.EventAdmin;
 
@@ -77,7 +78,8 @@ public class MockResourceResolver extends SlingAdaptable implements ResourceReso
     }
 
     @Override
-    public Resource resolve(final HttpServletRequest request, final String absPath) {
+    @SuppressWarnings("unused")
+    public @NotNull Resource resolve(final @NotNull HttpServletRequest request, final @NotNull String absPath) {
         String path = absPath;
         if (path == null) {
             path = "/";
@@ -107,17 +109,19 @@ public class MockResourceResolver extends SlingAdaptable implements ResourceReso
     }
 
     @Override
-    public Resource resolve(final String absPath) {
+    @SuppressWarnings("null")
+    public @NotNull Resource resolve(final @NotNull String absPath) {
         return resolve(null, absPath);
     }
 
     @Override
-    public String map(final String resourcePath) {
+    @SuppressWarnings("null")
+    public @NotNull String map(final @NotNull String resourcePath) {
         return map(null, resourcePath);
     }
 
     @Override
-    public String map(final HttpServletRequest request, final String resourcePath) {
+    public String map(final @NotNull HttpServletRequest request, final @NotNull String resourcePath) {
         String path = resourcePath;
 
         // split off query string or fragment that may be appendend to the URL
@@ -138,7 +142,7 @@ public class MockResourceResolver extends SlingAdaptable implements ResourceReso
     }
     
     @Override
-    public Resource getResource(final String path) {
+    public Resource getResource(final @NotNull String path) {
         Resource resource = getResourceInternal(path);
         
         // if not resource found check if this is a reference to a property
@@ -195,7 +199,7 @@ public class MockResourceResolver extends SlingAdaptable implements ResourceReso
     }
 
     @Override
-    public Resource getResource(Resource base, String path) {
+    public Resource getResource(Resource base, @NotNull String path) {
         if ( path == null || path.length() == 0 ) {
             path = "/";
         }
@@ -209,12 +213,12 @@ public class MockResourceResolver extends SlingAdaptable implements ResourceReso
     }
 
     @Override
-    public String[] getSearchPath() {
+    public String @NotNull [] getSearchPath() {
         return this.options.getSearchPaths();
     }
 
     @Override
-    public Iterator<Resource> listChildren(final Resource parent) {
+    public @NotNull Iterator<Resource> listChildren(final @NotNull Resource parent) {
         final String pathPrefix = "/".equals(parent.getPath()) ? "" : parent.getPath();
         final Pattern childPathMatcher = Pattern.compile("^" + Pattern.quote(pathPrefix) + "/[^/]+$");
         final Map<String, Map<String, Object>> candidates = new LinkedHashMap<String, Map<String,Object>>();
@@ -241,8 +245,8 @@ public class MockResourceResolver extends SlingAdaptable implements ResourceReso
         return children.iterator();
     }
 
-    // part of Resource API 2.5.0
-    public Iterable<Resource> getChildren(final Resource parent) {
+    @Override
+    public @NotNull Iterable<Resource> getChildren(final @NotNull Resource parent) {
         return new Iterable<Resource>() {
             @Override
             public Iterator<Resource> iterator() {
@@ -267,17 +271,17 @@ public class MockResourceResolver extends SlingAdaptable implements ResourceReso
     }
 
     @Override
-    public Iterator<String> getAttributeNames() {
+    public @NotNull Iterator<String> getAttributeNames() {
         return attributes.keySet().iterator();
     }
 
     @Override
-    public Object getAttribute(final String name) {
+    public Object getAttribute(final @NotNull String name) {
         return attributes.get(name);
     }
 
     @Override
-    public void delete(final Resource resource) throws PersistenceException {
+    public void delete(final @NotNull Resource resource) throws PersistenceException {
         this.deletedResources.add(resource.getPath());
         this.temporaryResources.remove(resource.getPath());
         final String prefixPath = resource.getPath() + '/';
@@ -298,7 +302,7 @@ public class MockResourceResolver extends SlingAdaptable implements ResourceReso
     }
 
     @Override
-    public Resource create(Resource parent, String name,
+    public @NotNull Resource create(@NotNull Resource parent, @NotNull String name,
             Map<String, Object> properties) throws PersistenceException {
         final String path = (parent.getPath().equals("/") ? parent.getPath() + name : parent.getPath() + '/' + name);
         if ( this.temporaryResources.containsKey(path) ) {
@@ -326,6 +330,7 @@ public class MockResourceResolver extends SlingAdaptable implements ResourceReso
     }
 
     @Override
+    @SuppressWarnings("deprecation")
     public void commit() throws PersistenceException {
         EventAdmin eventAdmin = this.options.getEventAdmin();
         synchronized ( this.resources ) {
@@ -428,13 +433,13 @@ public class MockResourceResolver extends SlingAdaptable implements ResourceReso
         return resourceSuperType;
     }
     
-    // part of Resource API 2.6.0
-    public boolean hasChildren(Resource resource) {
+    @Override
+    public boolean hasChildren(@NotNull Resource resource) {
         return this.listChildren(resource).hasNext();
     }
 
-    // part of Resource API 2.11.0
-    public Resource getParent(Resource child) {
+    @Override
+    public Resource getParent(@NotNull Resource child) {
         final String parentPath = ResourceUtil.getParent(child.getPath());
         if (parentPath == null) {
             return null;
@@ -447,31 +452,31 @@ public class MockResourceResolver extends SlingAdaptable implements ResourceReso
 
     @Override
     @Deprecated
-    public Resource resolve(final HttpServletRequest request) {
+    public @NotNull Resource resolve(final @NotNull HttpServletRequest request) {
         throw new UnsupportedOperationException();
     }
 
     @Override
-    public Iterator<Resource> findResources(final String query, final String language) {
+    public @NotNull Iterator<Resource> findResources(final @NotNull String query, final String language) {
         throw new UnsupportedOperationException();
     }
 
     @Override
-    public Iterator<Map<String, Object>> queryResources(String query, String language) {
+    public @NotNull Iterator<Map<String, Object>> queryResources(@NotNull String query, String language) {
         throw new UnsupportedOperationException();
     }
 
     @Override
-    public ResourceResolver clone(Map<String, Object> authenticationInfo) throws LoginException {
+    public @NotNull ResourceResolver clone(Map<String, Object> authenticationInfo) throws LoginException {
         throw new UnsupportedOperationException();
     }
 
-    // part of Resource API 2.11.0
+    @Override
     public Resource copy(String srcAbsPath, String destAbsPath) throws PersistenceException {
         throw new UnsupportedOperationException();
     }
 
-    // part of Resource API 2.11.0
+    @Override
     public Resource move(String srcAbsPath, String destAbsPath) throws PersistenceException {
         throw new UnsupportedOperationException();
     }
diff --git a/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolverFactory.java b/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolverFactory.java
index 227d4a9..8694865 100644
--- a/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolverFactory.java
+++ b/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolverFactory.java
@@ -30,7 +30,6 @@ import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 import org.osgi.service.event.EventAdmin;
 
-
 /**
  * Simple resource resolver factory
  */
@@ -70,7 +69,7 @@ public class MockResourceResolverFactory implements ResourceResolverFactory {
     }
 
     @Override
-    public ResourceResolver getResourceResolver(
+    public @NotNull ResourceResolver getResourceResolver(
             final Map<String, Object> authenticationInfo) throws LoginException {
         
         // put user name in resolver attributes
@@ -90,13 +89,13 @@ public class MockResourceResolverFactory implements ResourceResolverFactory {
     }
 
     @Override
-    public ResourceResolver getAdministrativeResourceResolver(
+    public @NotNull ResourceResolver getAdministrativeResourceResolver(
             final Map<String, Object> authenticationInfo) throws LoginException {
         return new MockResourceResolver(options, this, resources);
     }
 
-    // part of Resource API 2.5.0
-    public ResourceResolver getServiceResourceResolver(
+    @Override
+    public @NotNull ResourceResolver getServiceResourceResolver(
             Map<String, Object> authenticationInfo) throws LoginException {
         return new MockResourceResolver(options, this, resources);
     }
@@ -106,7 +105,7 @@ public class MockResourceResolverFactory implements ResourceResolverFactory {
      */
     private ThreadLocal<Stack<ResourceResolver>> resolverStackHolder = new ThreadLocal<Stack<ResourceResolver>>();
 
-    // part of Resource API 2.8.0
+    @Override
     public ResourceResolver getThreadResourceResolver() {
         ResourceResolver result = null;
         final Stack<ResourceResolver> resolverStack = resolverStackHolder.get();
diff --git a/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolverFactoryOptions.java b/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolverFactoryOptions.java
index 632a9da..c9c93c1 100644
--- a/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolverFactoryOptions.java
+++ b/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolverFactoryOptions.java
@@ -42,7 +42,7 @@ public class MockResourceResolverFactoryOptions {
         return this;
     }
 
-    public @NotNull String @NotNull [] getSearchPaths() {
+    public String @NotNull [] getSearchPaths() {
         return searchPaths;
     }
 
diff --git a/src/main/java/org/apache/sling/testing/resourceresolver/MockValueMap.java b/src/main/java/org/apache/sling/testing/resourceresolver/MockValueMap.java
index 0b6ba9b..1c7ba44 100644
--- a/src/main/java/org/apache/sling/testing/resourceresolver/MockValueMap.java
+++ b/src/main/java/org/apache/sling/testing/resourceresolver/MockValueMap.java
@@ -29,6 +29,7 @@ import java.util.Map;
 import org.apache.commons.io.IOUtils;
 import org.apache.sling.api.resource.ModifiableValueMap;
 import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.wrappers.DeepReadModifiableValueMapDecorator;
 
 /**
  * ValueMap for mocked resources to mimick JCR-like behavior.
diff --git a/src/main/java/org/apache/sling/testing/resourceresolver/ReadonlyValueMapDecorator.java b/src/main/java/org/apache/sling/testing/resourceresolver/ReadonlyValueMapDecorator.java
index 29a7678..5248346 100644
--- a/src/main/java/org/apache/sling/testing/resourceresolver/ReadonlyValueMapDecorator.java
+++ b/src/main/java/org/apache/sling/testing/resourceresolver/ReadonlyValueMapDecorator.java
@@ -23,6 +23,7 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.sling.api.resource.ValueMap;
+import org.jetbrains.annotations.NotNull;
 
 /**
  * Decorator that disallows access to all methods that modify the value map.
@@ -51,11 +52,12 @@ class ReadonlyValueMapDecorator implements ValueMap {
         throw new UnsupportedOperationException("ValueMap is read-only.");
     }
 
-    public <T> T get(String name, Class<T> type) {
+    @SuppressWarnings("null")
+    public <T> T get(@NotNull String name, @NotNull Class<T> type) {
         return delegate.get(name, type);
     }
 
-    public <T> T get(String name, T defaultValue) {
+    public @NotNull <T> T get(@NotNull String name, @NotNull T defaultValue) {
         return delegate.get(name, defaultValue);
     }
 
diff --git a/src/main/java/org/apache/sling/testing/resourceresolver/ValueMapDecorator.java b/src/main/java/org/apache/sling/testing/resourceresolver/ValueMapDecorator.java
index 916291e..abeeac3 100644
--- a/src/main/java/org/apache/sling/testing/resourceresolver/ValueMapDecorator.java
+++ b/src/main/java/org/apache/sling/testing/resourceresolver/ValueMapDecorator.java
@@ -23,6 +23,7 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.sling.api.resource.ValueMap;
+import org.jetbrains.annotations.NotNull;
 
 /**
  * This is copied from org.apache.sling.api.wrappers.ValueMapDectorator
@@ -47,7 +48,8 @@ class ValueMapDecorator implements ValueMap {
     /**
      * {@inheritDoc}
      */
-    public <T> T get(String name, Class<T> type) {
+    @SuppressWarnings("null")
+    public <T> T get(@NotNull String name, @NotNull Class<T> type) {
         if (base instanceof ValueMap) {
             // shortcut if decorated map is ValueMap
             return ((ValueMap)base).get(name, type);
@@ -58,8 +60,8 @@ class ValueMapDecorator implements ValueMap {
     /**
      * {@inheritDoc}
      */
-    @SuppressWarnings("unchecked")
-    public <T> T get(String name, T defaultValue) {
+    @SuppressWarnings({ "unchecked", "unused" })
+    public @NotNull <T> T get(@NotNull String name, @NotNull T defaultValue) {
         if (base instanceof ValueMap) {
             // shortcut if decorated map is ValueMap
             return ((ValueMap)base).get(name, defaultValue);
diff --git a/src/main/java/org/apache/sling/testing/resourceresolver/package-info.java b/src/main/java/org/apache/sling/testing/resourceresolver/package-info.java
index 65cd956..d735a2f 100644
--- a/src/main/java/org/apache/sling/testing/resourceresolver/package-info.java
+++ b/src/main/java/org/apache/sling/testing/resourceresolver/package-info.java
@@ -19,5 +19,5 @@
 /**
  * Apache Sling Testing Resource Resolver Mock
  */
-@org.osgi.annotation.versioning.Version("1.1.1")
+@org.osgi.annotation.versioning.Version("2.0.0")
 package org.apache.sling.testing.resourceresolver;
diff --git a/src/test/java/org/apache/sling/testing/resourceresolver/CreateDeleteResourceResolverTest.java b/src/test/java/org/apache/sling/testing/resourceresolver/CreateDeleteResourceResolverTest.java
index 0b511ac..4a88be9 100644
--- a/src/test/java/org/apache/sling/testing/resourceresolver/CreateDeleteResourceResolverTest.java
+++ b/src/test/java/org/apache/sling/testing/resourceresolver/CreateDeleteResourceResolverTest.java
@@ -49,6 +49,7 @@ public class CreateDeleteResourceResolverTest {
     private Resource testRoot;
 
     @Before
+    @SuppressWarnings("null")
     public final void setUp() throws IOException, LoginException {
         resourceResolver = new MockResourceResolverFactory().getResourceResolver(null);
         Resource root = resourceResolver.getResource("/");
diff --git a/src/test/java/org/apache/sling/testing/resourceresolver/NamespaceManglingResourceResolverTest.java b/src/test/java/org/apache/sling/testing/resourceresolver/NamespaceManglingResourceResolverTest.java
index 033db8a..59b6a3c 100644
--- a/src/test/java/org/apache/sling/testing/resourceresolver/NamespaceManglingResourceResolverTest.java
+++ b/src/test/java/org/apache/sling/testing/resourceresolver/NamespaceManglingResourceResolverTest.java
@@ -32,6 +32,7 @@ public class NamespaceManglingResourceResolverTest {
     private ResourceResolver resolver;
     
     @Before
+    @SuppressWarnings("null")
     public void setUp() throws Exception {
         MockResourceResolverFactoryOptions options = new MockResourceResolverFactoryOptions();
         options.setMangleNamespacePrefixes(true);
diff --git a/src/test/java/org/apache/sling/testing/resourceresolver/ObjectConverterTest.java b/src/test/java/org/apache/sling/testing/resourceresolver/ObjectConverterTest.java
index 1ef7949..bda6a39 100644
--- a/src/test/java/org/apache/sling/testing/resourceresolver/ObjectConverterTest.java
+++ b/src/test/java/org/apache/sling/testing/resourceresolver/ObjectConverterTest.java
@@ -35,6 +35,7 @@ import org.junit.Test;
 /**
  * This is copied from org.apache.sling.api.wrappers.impl.ObjectConverterTest
  */
+@SuppressWarnings("null")
 public class ObjectConverterTest {
     
     private static final String STRING_1 = "item1";
diff --git a/src/test/java/org/apache/sling/testing/resourceresolver/RootResourceTypeTest.java b/src/test/java/org/apache/sling/testing/resourceresolver/RootResourceTypeTest.java
index 7264f63..3ae3363 100644
--- a/src/test/java/org/apache/sling/testing/resourceresolver/RootResourceTypeTest.java
+++ b/src/test/java/org/apache/sling/testing/resourceresolver/RootResourceTypeTest.java
@@ -27,10 +27,8 @@ import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 
-
 public class RootResourceTypeTest {
 
-
     private ResourceResolver resourceResolver;
 
     @Before
@@ -38,8 +36,8 @@ public class RootResourceTypeTest {
         resourceResolver = new MockResourceResolverFactory().getResourceResolver(null);       
     }
 
-
     @Test
+    @SuppressWarnings("null")
     public void testIsResourceResolver() {
         Resource root= resourceResolver.getResource("/");
         Assert.assertTrue(root.isResourceType("rep:root"));
@@ -51,5 +49,4 @@ public class RootResourceTypeTest {
         Assert.assertNull(rootParent);
     }
 
-
 }