This is an automated email from the ASF dual-hosted git repository.

jleroux pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git


The following commit(s) were added to refs/heads/trunk by this push:
     new cfb5de4  Improved:  Fix some bugs Spotbugs reports (OFBIZ-12386)
cfb5de4 is described below

commit cfb5de424619991c81283adb5c3b103883847d7a
Author: Jacques Le Roux <jacques.le.r...@les7arts.com>
AuthorDate: Mon Nov 29 14:00:09 2021 +0100

    Improved:  Fix some bugs Spotbugs reports (OFBIZ-12386)
    
    Fixes possible null dereferencings
---
 .../apache/ofbiz/product/config/ProductConfigWrapper.java   | 10 ++++++----
 .../org/apache/ofbiz/widget/model/ModelScreenCondition.java |  5 ++++-
 .../main/java/org/apache/ofbiz/widget/model/ModelTree.java  | 13 +++++++++----
 .../apache/ofbiz/widget/renderer/html/HtmlTreeRenderer.java |  4 ++--
 .../ofbiz/widget/renderer/macro/MacroTreeRenderer.java      |  5 +++--
 5 files changed, 24 insertions(+), 13 deletions(-)

diff --git 
a/applications/product/src/main/java/org/apache/ofbiz/product/config/ProductConfigWrapper.java
 
b/applications/product/src/main/java/org/apache/ofbiz/product/config/ProductConfigWrapper.java
index e1ba46b..7307391 100644
--- 
a/applications/product/src/main/java/org/apache/ofbiz/product/config/ProductConfigWrapper.java
+++ 
b/applications/product/src/main/java/org/apache/ofbiz/product/config/ProductConfigWrapper.java
@@ -30,8 +30,8 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
-
 import java.util.stream.Collectors;
+
 import org.apache.ofbiz.base.util.Debug;
 import org.apache.ofbiz.base.util.GeneralException;
 import org.apache.ofbiz.base.util.UtilMisc;
@@ -703,9 +703,11 @@ public class ProductConfigWrapper implements Serializable {
                     && otherOptions.size() != mineOptions.size()) {
                 return false;
             }
-            for (int i = 0; i < mineOptions.size(); i++) {
-                if (!mineOptions.get(i).equals(otherOptions.get(i))) {
-                    return false;
+            if (mineOptions != null) {
+                for (int i = 0; i < mineOptions.size(); i++) {
+                    if (!mineOptions.get(i).equals(otherOptions.get(i))) {
+                        return false;
+                    }
                 }
             }
             return true;
diff --git 
a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelScreenCondition.java
 
b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelScreenCondition.java
index beb0151..31ca852 100644
--- 
a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelScreenCondition.java
+++ 
b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelScreenCondition.java
@@ -64,7 +64,10 @@ public final class ModelScreenCondition {
         public boolean eval(Map<String, Object> context) {
             Object obj = context.get("sections");
             Map<String, Object> sectionsMap = (obj instanceof Map) ? 
UtilGenerics.cast(obj) : null;
-            return 
!sectionsMap.containsKey(this.sectionExdr.expandString(context));
+            if (sectionsMap != null) {
+                return 
!sectionsMap.containsKey(this.sectionExdr.expandString(context));
+            }
+            return false;
         }
 
         public FlexibleStringExpander getSectionExdr() {
diff --git 
a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelTree.java 
b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelTree.java
index 4ae9f2e..be72c0a 100644
--- 
a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelTree.java
+++ 
b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelTree.java
@@ -680,7 +680,9 @@ public class ModelTree extends ModelWidget {
                 } else {
                     id = (String) context.get(pkName);
                 }
-                currentNodeTrail.add(id);
+                if (currentNodeTrail != null) {
+                    currentNodeTrail.add(id);
+                }
                 treeStringRenderer.renderNodeBegin(writer, context, this, 
depth);
                 try {
                     String screenName = null;
@@ -737,9 +739,12 @@ public class ModelTree extends ModelWidget {
                     throw new RuntimeException(errMsg);
                 }
                 treeStringRenderer.renderNodeEnd(writer, context, this);
-                int removeIdx = currentNodeTrail.size() - 1;
-                if (removeIdx >= 0) {
-                    currentNodeTrail.remove(removeIdx);
+                int removeIdx = 0;
+                if (currentNodeTrail != null) {
+                    removeIdx = currentNodeTrail.size() - 1;
+                    if (removeIdx >= 0) {
+                        currentNodeTrail.remove(removeIdx);
+                    }
                 }
             }
         }
diff --git 
a/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/html/HtmlTreeRenderer.java
 
b/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/html/HtmlTreeRenderer.java
index 9584134..b6645c8 100644
--- 
a/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/html/HtmlTreeRenderer.java
+++ 
b/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/html/HtmlTreeRenderer.java
@@ -38,8 +38,8 @@ import org.apache.ofbiz.widget.model.ModelTree;
 import org.apache.ofbiz.widget.model.ModelWidget;
 import org.apache.ofbiz.widget.renderer.ScreenRenderer;
 import org.apache.ofbiz.widget.renderer.ScreenStringRenderer;
-import org.apache.ofbiz.widget.renderer.VisualTheme;
 import org.apache.ofbiz.widget.renderer.TreeStringRenderer;
+import org.apache.ofbiz.widget.renderer.VisualTheme;
 import org.apache.ofbiz.widget.renderer.macro.MacroScreenRenderer;
 
 import freemarker.template.TemplateException;
@@ -87,7 +87,7 @@ public class HtmlTreeRenderer extends HtmlWidgetRenderer 
implements TreeStringRe
             String targetEntityId = null;
             Object obj1 = context.get("targetNodeTrail");
             List<String> targetNodeTrail = (obj1 instanceof List) ? 
UtilGenerics.cast(obj1) : null;
-            if (depth < targetNodeTrail.size()) {
+            if (targetNodeTrail != null && depth < targetNodeTrail.size()) {
                 targetEntityId = targetNodeTrail.get(depth);
             }
             // FIXME: Using a widget model in this way is an ugly hack.
diff --git 
a/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroTreeRenderer.java
 
b/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroTreeRenderer.java
index 27db602..8871e25 100644
--- 
a/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroTreeRenderer.java
+++ 
b/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroTreeRenderer.java
@@ -29,7 +29,6 @@ import java.util.Map;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import com.google.common.collect.ImmutableList;
 import org.apache.ofbiz.base.util.Debug;
 import org.apache.ofbiz.base.util.StringUtil;
 import org.apache.ofbiz.base.util.UtilGenerics;
@@ -46,6 +45,8 @@ import org.apache.ofbiz.widget.renderer.ScreenRenderer;
 import org.apache.ofbiz.widget.renderer.ScreenStringRenderer;
 import org.apache.ofbiz.widget.renderer.TreeStringRenderer;
 
+import com.google.common.collect.ImmutableList;
+
 import freemarker.core.Environment;
 import freemarker.template.Template;
 import freemarker.template.TemplateException;
@@ -157,7 +158,7 @@ public class MacroTreeRenderer implements 
TreeStringRenderer {
             String targetEntityId = null;
             Object obj1 = context.get("targetNodeTrail");
             List<String> targetNodeTrail = (obj1 instanceof List) ? 
UtilGenerics.cast(obj1) : null;
-            if (depth < targetNodeTrail.size()) {
+            if (targetNodeTrail != null && depth < targetNodeTrail.size()) {
                 targetEntityId = targetNodeTrail.get(depth);
             }
 

Reply via email to