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() {