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

[sling-org-apache-sling-fsresource] 03/03: eliminate null analysis warnings

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 1aa702a18cd395ea20857d3f336f6aeaa1b54957
Author: sseifert <ss...@pro-vision.de>
AuthorDate: Wed May 29 16:10:38 2019 +0200

    eliminate null analysis warnings
---
 .../fsprovider/internal/FsResourceProvider.java    | 10 +++---
 .../internal/mapper/ContentFileResourceMapper.java |  3 ++
 .../fsprovider/internal/mapper/jcr/FsNode.java     |  1 +
 .../fsprovider/internal/mapper/jcr/FsValue.java    | 36 ++++++++++++++++++----
 4 files changed, 40 insertions(+), 10 deletions(-)

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 cd8ee56..351d926 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/FsResourceProvider.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/FsResourceProvider.java
@@ -206,8 +206,9 @@ public final class FsResourceProvider extends ResourceProvider<Object> {
             if ( rsrc == null || rsrc.getResourceMetadata().containsKey(RESOURCE_METADATA_FILE_DIRECTORY) ) {
             	// get resource from shadowed provider
             	final ResourceProvider rp = ctx.getParentResourceProvider();
-            	if ( rp != null ) {
-            	    Resource resourceFromParentResourceProvider = rp.getResource((ResolveContext)ctx.getParentResolveContext(), 
+            	final ResolveContext resolveContext = (ResolveContext)ctx.getParentResolveContext();
+            	if ( rp != null && resolveContext != null ) {
+            	    Resource resourceFromParentResourceProvider = rp.getResource(resolveContext, 
     	            		path, 
     	            		resourceContext, parent);
             	    if (resourceFromParentResourceProvider != null) {
@@ -256,8 +257,9 @@ public final class FsResourceProvider extends ResourceProvider<Object> {
     	// get children from from shadowed provider
         if (askParentResourceProvider) {
         	final ResourceProvider parentResourceProvider = ctx.getParentResourceProvider();
-        	if (parentResourceProvider != null) {
-        		children = parentResourceProvider.listChildren(ctx.getParentResolveContext(), parent);
+            final ResolveContext resolveContext = (ResolveContext)ctx.getParentResolveContext();
+        	if (parentResourceProvider != null && resolveContext != null) {
+        		children = parentResourceProvider.listChildren(resolveContext, parent);
                 if (children != null) {
                     if (fsMode == FsMode.FILEVAULT_XML) {
                         // filevault: include all children from parent resource provider that do not match the filters
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/mapper/ContentFileResourceMapper.java b/src/main/java/org/apache/sling/fsprovider/internal/mapper/ContentFileResourceMapper.java
index d27458e..25638b7 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/mapper/ContentFileResourceMapper.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/mapper/ContentFileResourceMapper.java
@@ -139,6 +139,9 @@ public final class ContentFileResourceMapper implements FsResourceMapper {
         }
         // try to find in parent path which contains content fragment
         String parentPath = ResourceUtil.getParent(path);
+        if (parentPath == null) {
+            return null;
+        }
         String nextSubPath = path.substring(parentPath.length() + 1)
                 + (subPath != null ? "/" + subPath : "");
         return getFile(parentPath, nextSubPath);
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsNode.java b/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsNode.java
index 23abe66..c0fb1cd 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsNode.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsNode.java
@@ -90,6 +90,7 @@ public final class FsNode extends FsItem implements Node {
     }
     
     @Override
+    @SuppressWarnings("null")
     public Node getNode(String relPath) throws PathNotFoundException, RepositoryException {
         if (relPath == null) {
             throw new PathNotFoundException();
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsValue.java b/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsValue.java
index 4ca2873..7d53f88 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsValue.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsValue.java
@@ -55,7 +55,11 @@ class FsValue implements Value {
     @Override
     public String getString() throws ValueFormatException, IllegalStateException, RepositoryException {
         if (arrayIndex >= 0) {
-            return props.get(propertyName, String[].class)[arrayIndex];
+            String[] array = props.get(propertyName, String[].class);
+            if (array == null) {
+                return null;
+            }
+            return array[arrayIndex];
         }
         else {
             return props.get(propertyName, String.class);
@@ -65,7 +69,11 @@ class FsValue implements Value {
     @Override
     public long getLong() throws ValueFormatException, RepositoryException {
         if (arrayIndex >= 0) {
-            return props.get(propertyName, Long[].class)[arrayIndex];
+            Long[] array = props.get(propertyName, Long[].class);
+            if (array == null) {
+                return 0;
+            }
+            return array[arrayIndex];
         }
         else {
             return props.get(propertyName, 0L);
@@ -75,7 +83,11 @@ class FsValue implements Value {
     @Override
     public double getDouble() throws ValueFormatException, RepositoryException {
         if (arrayIndex >= 0) {
-            return props.get(propertyName, Double[].class)[arrayIndex];
+            Double[] array = props.get(propertyName, Double[].class);
+            if (array == null) {
+                return 0;
+            }
+            return array[arrayIndex];
         }
         else {
             return props.get(propertyName, 0d);
@@ -85,7 +97,11 @@ class FsValue implements Value {
     @Override
     public BigDecimal getDecimal() throws ValueFormatException, RepositoryException {
         if (arrayIndex >= 0) {
-            return props.get(propertyName, BigDecimal[].class)[arrayIndex];
+            BigDecimal[] array = props.get(propertyName, BigDecimal[].class);
+            if (array == null) {
+                return null;
+            }
+            return array[arrayIndex];
         }
         else {
             return props.get(propertyName, BigDecimal.ZERO);
@@ -95,7 +111,11 @@ class FsValue implements Value {
     @Override
     public Calendar getDate() throws ValueFormatException, RepositoryException {
         if (arrayIndex >= 0) {
-            return props.get(propertyName, Calendar[].class)[arrayIndex];
+            Calendar[] array = props.get(propertyName, Calendar[].class);
+            if (array == null) {
+                return null;
+            }
+            return array[arrayIndex];
         }
         else {
             return props.get(propertyName, Calendar.class);
@@ -105,7 +125,11 @@ class FsValue implements Value {
     @Override
     public boolean getBoolean() throws ValueFormatException, RepositoryException {
         if (arrayIndex >= 0) {
-            return props.get(propertyName, Boolean[].class)[arrayIndex];
+            Boolean[] array = props.get(propertyName, Boolean[].class);
+            if (array == null) {
+                return false;
+            }
+            return array[arrayIndex];
         }
         else {
             return props.get(propertyName, false);