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);
}
-
}