eliminate null analysis warnings
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 @@
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 @@
// 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 @@
}
// 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 @@
}
@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 @@
@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 @@
@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 @@
@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 @@
@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 @@
@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 @@
@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);