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 11:05:32 UTC

[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

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 f6a7683343a2887605f590f06c783aea747d8a69
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                                            |  70 ++-----------
 .../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, 76 insertions(+), 222 deletions(-)

diff --git a/pom.xml b/pom.xml
index d93ed9b..c65f668 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,29 @@
         <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>osgi.cmpn</artifactId>
             <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 +112,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);
     }
 
-
 }