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