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 2019/05/29 14:14:30 UTC
[sling-org-apache-sling-fsresource] 01/03: add null analysis
annotations
This is an automated email from the ASF dual-hosted git repository.
sseifert pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-fsresource.git
commit b1f19f8330040593d05925b24864a81f9c62bd57
Author: sseifert <ss...@pro-vision.de>
AuthorDate: Wed May 29 16:02:43 2019 +0200
add null analysis annotations
---
pom.xml | 6 ++++++
.../apache/sling/fsprovider/internal/FileStatCache.java | 1 -
.../sling/fsprovider/internal/FsResourceProvider.java | 14 ++++++++------
.../fsprovider/internal/mapper/ContentFileResource.java | 12 +++++++-----
.../sling/fsprovider/internal/mapper/FileResource.java | 14 ++++++++------
.../internal/mapper/valuemap/ValueMapDecorator.java | 5 +++--
.../org/apache/sling/fsprovider/internal/TestUtils.java | 3 ++-
7 files changed, 34 insertions(+), 21 deletions(-)
diff --git a/pom.xml b/pom.xml
index d29f90b..90c5d98 100644
--- a/pom.xml
+++ b/pom.xml
@@ -152,6 +152,12 @@
<scope>compile</scope>
</dependency>
<dependency>
+ <groupId>org.jetbrains</groupId>
+ <artifactId>annotations</artifactId>
+ <version>16.0.2</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/FileStatCache.java b/src/main/java/org/apache/sling/fsprovider/internal/FileStatCache.java
index 769382d..3b6053c 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/FileStatCache.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/FileStatCache.java
@@ -82,7 +82,6 @@ public class FileStatCache {
private final String providerFilePath;
- @SuppressWarnings("unchecked")
FileStatCache(final File providerFile) {
this.providerFilePath = providerFile.getPath();
}
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/FsResourceProvider.java b/src/main/java/org/apache/sling/fsprovider/internal/FsResourceProvider.java
index c6eff9b..cd8ee56 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/FsResourceProvider.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/FsResourceProvider.java
@@ -43,6 +43,8 @@ import org.apache.sling.spi.resource.provider.ProviderContext;
import org.apache.sling.spi.resource.provider.ResolveContext;
import org.apache.sling.spi.resource.provider.ResourceContext;
import org.apache.sling.spi.resource.provider.ResourceProvider;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;
import org.osgi.service.component.annotations.Activate;
@@ -167,12 +169,12 @@ public final class FsResourceProvider extends ResourceProvider<Object> {
* to access the file or folder. If no such file or folder exists, this
* method returns <code>null</code>.
*/
- @SuppressWarnings({ "rawtypes", "unchecked" })
+ @SuppressWarnings("unchecked")
@Override
- public Resource getResource(final ResolveContext<Object> ctx,
- final String path,
- final ResourceContext resourceContext,
- final Resource parent) {
+ public Resource getResource(final @NotNull ResolveContext<Object> ctx,
+ final @NotNull String path,
+ final @NotNull ResourceContext resourceContext,
+ final @Nullable Resource parent) {
ResourceResolver resolver = ctx.getResourceResolver();
@@ -223,7 +225,7 @@ public final class FsResourceProvider extends ResourceProvider<Object> {
*/
@SuppressWarnings("unchecked")
@Override
- public Iterator<Resource> listChildren(final ResolveContext<Object> ctx, final Resource parent) {
+ public Iterator<Resource> listChildren(final @NotNull ResolveContext<Object> ctx, final @NotNull Resource parent) {
ResourceResolver resolver = ctx.getResourceResolver();
List<Iterator<Resource>> allChildren = new ArrayList<>();
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/mapper/ContentFileResource.java b/src/main/java/org/apache/sling/fsprovider/internal/mapper/ContentFileResource.java
index fc1d17a..e2a37c7 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/mapper/ContentFileResource.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/mapper/ContentFileResource.java
@@ -28,6 +28,8 @@ import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.resource.ValueMap;
import org.apache.sling.api.wrappers.DeepReadValueMapDecorator;
import org.apache.sling.fsprovider.internal.mapper.jcr.FsNode;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
/**
* Represents a JSON File with resource content.
@@ -61,11 +63,11 @@ public final class ContentFileResource extends AbstractResource {
+ (contentFile.getSubPath() != null ? "/" + contentFile.getSubPath() : "");
}
- public String getPath() {
+ public @NotNull String getPath() {
return resourcePath;
}
- public ResourceMetadata getResourceMetadata() {
+ public @NotNull ResourceMetadata getResourceMetadata() {
if (metaData == null) {
metaData = new LazyModifiedDateResourceMetadata(contentFile.getFile());
metaData.setResolutionPath(resourcePath);
@@ -73,7 +75,7 @@ public final class ContentFileResource extends AbstractResource {
return metaData;
}
- public ResourceResolver getResourceResolver() {
+ public @NotNull ResourceResolver getResourceResolver() {
return resolver;
}
@@ -84,7 +86,7 @@ public final class ContentFileResource extends AbstractResource {
return resourceSuperType;
}
- public String getResourceType() {
+ public @NotNull String getResourceType() {
if (resourceType == null) {
ValueMap props = getValueMap();
resourceType = props.get("sling:resourceType", String.class);
@@ -98,7 +100,7 @@ public final class ContentFileResource extends AbstractResource {
@Override
@SuppressWarnings("unchecked")
- public <AdapterType> AdapterType adaptTo(Class<AdapterType> type) {
+ public <AdapterType> AdapterType adaptTo(@Nullable Class<AdapterType> type) {
if (type == ContentFile.class) {
return (AdapterType)this.contentFile;
}
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/mapper/FileResource.java b/src/main/java/org/apache/sling/fsprovider/internal/mapper/FileResource.java
index c77d42f..58f04c0 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/mapper/FileResource.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/mapper/FileResource.java
@@ -48,6 +48,8 @@ import org.apache.sling.fsprovider.internal.mapper.jcr.FsNode;
import org.apache.sling.fsprovider.internal.mapper.valuemap.ValueMapDecorator;
import org.apache.sling.fsprovider.internal.parser.ContentFileCache;
import org.apache.sling.jcr.contentparser.ParserOptions;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -123,7 +125,7 @@ public final class FileResource extends AbstractResource {
/**
* Returns the path of this resource
*/
- public String getPath() {
+ public @NotNull String getPath() {
return resourcePath;
}
@@ -132,7 +134,7 @@ public final class FileResource extends AbstractResource {
* length, last modification time and the resource path (same as
* {@link #getPath()}).
*/
- public ResourceMetadata getResourceMetadata() {
+ public @NotNull ResourceMetadata getResourceMetadata() {
if (metaData == null) {
metaData = new LazyModifiedDateResourceMetadata(file);
metaData.setContentLength(file.length());
@@ -148,7 +150,7 @@ public final class FileResource extends AbstractResource {
* Returns the resource resolver which cause this resource object to be
* created.
*/
- public ResourceResolver getResourceResolver() {
+ public @NotNull ResourceResolver getResourceResolver() {
return resolver;
}
@@ -159,7 +161,7 @@ public final class FileResource extends AbstractResource {
return resourceSuperType;
}
- public String getResourceType() {
+ public @NotNull String getResourceType() {
if (resourceType == null) {
ValueMap props = getValueMap();
resourceType = props.get("sling:resourceType", String.class);
@@ -177,8 +179,8 @@ public final class FileResource extends AbstractResource {
* plus those supported by the adapter manager.
*/
@Override
- @SuppressWarnings("unchecked")
- public <AdapterType> AdapterType adaptTo(Class<AdapterType> type) {
+ @SuppressWarnings({ "unchecked", "null" })
+ public @Nullable <AdapterType> AdapterType adaptTo(@NotNull Class<AdapterType> type) {
if (type == File.class) {
return (AdapterType) file;
}
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/mapper/valuemap/ValueMapDecorator.java b/src/main/java/org/apache/sling/fsprovider/internal/mapper/valuemap/ValueMapDecorator.java
index 4b0b5a5..c5fb347 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/mapper/valuemap/ValueMapDecorator.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/mapper/valuemap/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,7 @@ public final class ValueMapDecorator implements ValueMap {
/**
* {@inheritDoc}
*/
- public <T> T get(String name, Class<T> type) {
+ 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);
@@ -59,7 +60,7 @@ public final class ValueMapDecorator implements ValueMap {
* {@inheritDoc}
*/
@SuppressWarnings("unchecked")
- public <T> T get(String name, T defaultValue) {
+ public <T> T get(@NotNull String name, T defaultValue) {
if (base instanceof ValueMap) {
// shortcut if decorated map is ValueMap
return ((ValueMap)base).get(name, defaultValue);
diff --git a/src/test/java/org/apache/sling/fsprovider/internal/TestUtils.java b/src/test/java/org/apache/sling/fsprovider/internal/TestUtils.java
index 5539a40..ffa5934 100644
--- a/src/test/java/org/apache/sling/fsprovider/internal/TestUtils.java
+++ b/src/test/java/org/apache/sling/fsprovider/internal/TestUtils.java
@@ -45,6 +45,7 @@ import org.apache.sling.hamcrest.ResourceMatchers;
import org.apache.sling.testing.mock.osgi.MapUtil;
import org.apache.sling.testing.mock.osgi.context.AbstractContextPlugin;
import org.apache.sling.testing.mock.sling.context.SlingContextImpl;
+import org.jetbrains.annotations.NotNull;
class TestUtils {
@@ -114,7 +115,7 @@ class TestUtils {
public static class ResourceListener implements ResourceChangeListener {
private final List<ResourceChange> allChanges = new ArrayList<>();
@Override
- public void onChange(List<ResourceChange> changes) {
+ public void onChange(@NotNull List<ResourceChange> changes) {
allChanges.addAll(changes);
}
public List<ResourceChange> getChanges() {