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