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 03291be883 Improved: Could not find PortalPage with portalPageId [] (OFBIZ-13071) 03291be883 is described below commit 03291be883cb72315f1e93384ee4013392bc09c5 Author: Jacques Le Roux <jacques.le.r...@les7arts.com> AuthorDate: Wed May 1 09:34:39 2024 +0200 Improved: Could not find PortalPage with portalPageId [] (OFBIZ-13071) No need to try to render a PortalPage when there is no PortalPage --- .../ofbiz/widget/model/ModelScreenWidget.java | 209 +++++++++++---------- 1 file changed, 107 insertions(+), 102 deletions(-) diff --git a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelScreenWidget.java b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelScreenWidget.java index b05c19dfb9..95806b46f5 100644 --- a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelScreenWidget.java +++ b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelScreenWidget.java @@ -1953,114 +1953,119 @@ public abstract class ModelScreenWidget extends ModelWidget { @Override public void renderWidgetString(Appendable writer, Map<String, Object> context, - ScreenStringRenderer screenStringRenderer) throws GeneralException, IOException { - try { - Delegator delegator = (Delegator) context.get("delegator"); - List<GenericValue> portalPageColumns = null; - List<GenericValue> portalPagePortlets = null; - List<GenericValue> portletAttributes = null; - GenericValue portalPage = getPortalPageValue(context); - String actualPortalPageId = portalPage.getString("portalPageId"); - portalPageColumns = EntityQuery.use(delegator) - .from("PortalPageColumn") - .where("portalPageId", actualPortalPageId) - .orderBy("columnSeqId") - .cache(true) - .queryList(); - - // Renders the portalPage header - screenStringRenderer.renderPortalPageBegin(writer, context, this); - - // First column has no previous column - String prevColumnSeqId = ""; - - // Iterates through the PortalPage columns - ListIterator<GenericValue> columnsIterator = portalPageColumns.listIterator(); - while (columnsIterator.hasNext()) { - GenericValue columnValue = columnsIterator.next(); - String columnSeqId = columnValue.getString("columnSeqId"); - - // Renders the portalPageColumn header - screenStringRenderer.renderPortalPageColumnBegin(writer, context, this, columnValue); - - // Get the Portlets located in the current column - portalPagePortlets = EntityQuery.use(delegator) - .from("PortalPagePortletView") - .where("portalPageId", portalPage.getString("portalPageId"), "columnSeqId", columnSeqId) - .orderBy("sequenceNum") - .queryList(); - // First Portlet in a Column has no previous Portlet - String prevPortletId = ""; - String prevPortletSeqId = ""; - - // If this is not the last column, get the next columnSeqId - String nextColumnSeqId = ""; - if (columnsIterator.hasNext()) { - nextColumnSeqId = portalPageColumns.get(columnsIterator.nextIndex()).getString("columnSeqId"); - } - - // Iterates through the Portlets in the Column - ListIterator<GenericValue> portletsIterator = portalPagePortlets.listIterator(); - while (portletsIterator.hasNext()) { - GenericValue portletValue = portletsIterator.next(); - - // If not the last portlet in the column, get the next nextPortletId and nextPortletSeqId - String nextPortletId = ""; - String nextPortletSeqId = ""; - if (portletsIterator.hasNext()) { - nextPortletId = portalPagePortlets.get(portletsIterator.nextIndex()).getString("portalPortletId"); - nextPortletSeqId = portalPagePortlets.get(portletsIterator.nextIndex()).getString("portletSeqId"); - } - - // Set info to allow portlet movement in the page - context.put("prevPortletId", prevPortletId); - context.put("prevPortletSeqId", prevPortletSeqId); - context.put("nextPortletId", nextPortletId); - context.put("nextPortletSeqId", nextPortletSeqId); - context.put("prevColumnSeqId", prevColumnSeqId); - context.put("nextColumnSeqId", nextColumnSeqId); - - // Get portlet's attributes - portletAttributes = EntityQuery.use(delegator) - .from("PortletAttribute") - .where("portalPageId", portletValue.get("portalPageId"), - "portalPortletId", portletValue.get("portalPortletId"), - "portletSeqId", portletValue.get("portletSeqId")) - .queryList(); - - ListIterator<GenericValue> attributesIterator = portletAttributes.listIterator(); - while (attributesIterator.hasNext()) { - GenericValue attribute = attributesIterator.next(); - context.put(attribute.getString("attrName"), attribute.getString("attrValue")); + ScreenStringRenderer screenStringRenderer) throws GeneralException, IOException { + GenericValue portalPage = getPortalPageValue(context); + if (portalPage != null) { + try { + Delegator delegator = (Delegator) context.get("delegator"); + List<GenericValue> portalPageColumns = null; + List<GenericValue> portalPagePortlets = null; + List<GenericValue> portletAttributes = null; + String actualPortalPageId = portalPage.getString("portalPageId"); + portalPageColumns = EntityQuery.use(delegator) + .from("PortalPageColumn") + .where("portalPageId", actualPortalPageId) + .orderBy("columnSeqId") + .cache(true) + .queryList(); + + // Renders the portalPage header + screenStringRenderer.renderPortalPageBegin(writer, context, this); + + // First column has no previous column + String prevColumnSeqId = ""; + + // Iterates through the PortalPage columns + ListIterator<GenericValue> columnsIterator = portalPageColumns.listIterator(); + while (columnsIterator.hasNext()) { + GenericValue columnValue = columnsIterator.next(); + String columnSeqId = columnValue.getString("columnSeqId"); + + // Renders the portalPageColumn header + screenStringRenderer.renderPortalPageColumnBegin(writer, context, this, columnValue); + + // Get the Portlets located in the current column + portalPagePortlets = EntityQuery.use(delegator) + .from("PortalPagePortletView") + .where("portalPageId", portalPage.getString("portalPageId"), "columnSeqId", columnSeqId) + .orderBy("sequenceNum") + .queryList(); + // First Portlet in a Column has no previous Portlet + String prevPortletId = ""; + String prevPortletSeqId = ""; + + // If this is not the last column, get the next columnSeqId + String nextColumnSeqId = ""; + if (columnsIterator.hasNext()) { + nextColumnSeqId = portalPageColumns.get(columnsIterator.nextIndex()).getString("columnSeqId"); } - // Renders the portalPagePortlet - screenStringRenderer.renderPortalPagePortletBegin(writer, context, this, portletValue); - screenStringRenderer.renderPortalPagePortletBody(writer, context, this, portletValue); - screenStringRenderer.renderPortalPagePortletEnd(writer, context, this, portletValue); - - // Remove the portlet's attributes so that these are not available for other portlets - while (attributesIterator.hasPrevious()) { - GenericValue attribute = attributesIterator.previous(); - context.remove(attribute.getString("attrName")); + // Iterates through the Portlets in the Column + ListIterator<GenericValue> portletsIterator = portalPagePortlets.listIterator(); + while (portletsIterator.hasNext()) { + GenericValue portletValue = portletsIterator.next(); + + // If not the last portlet in the column, get the next nextPortletId and nextPortletSeqId + String nextPortletId = ""; + String nextPortletSeqId = ""; + if (portletsIterator.hasNext()) { + nextPortletId = portalPagePortlets.get(portletsIterator.nextIndex()).getString("portalPortletId"); + nextPortletSeqId = portalPagePortlets.get(portletsIterator.nextIndex()).getString("portletSeqId"); + } + + // Set info to allow portlet movement in the page + context.put("prevPortletId", prevPortletId); + context.put("prevPortletSeqId", prevPortletSeqId); + context.put("nextPortletId", nextPortletId); + context.put("nextPortletSeqId", nextPortletSeqId); + context.put("prevColumnSeqId", prevColumnSeqId); + context.put("nextColumnSeqId", nextColumnSeqId); + + // Get portlet's attributes + portletAttributes = EntityQuery.use(delegator) + .from("PortletAttribute") + .where("portalPageId", portletValue.get("portalPageId"), + "portalPortletId", portletValue.get("portalPortletId"), + "portletSeqId", portletValue.get("portletSeqId")) + .queryList(); + + ListIterator<GenericValue> attributesIterator = portletAttributes.listIterator(); + while (attributesIterator.hasNext()) { + GenericValue attribute = attributesIterator.next(); + context.put(attribute.getString("attrName"), attribute.getString("attrValue")); + } + + // Renders the portalPagePortlet + screenStringRenderer.renderPortalPagePortletBegin(writer, context, this, portletValue); + screenStringRenderer.renderPortalPagePortletBody(writer, context, this, portletValue); + screenStringRenderer.renderPortalPagePortletEnd(writer, context, this, portletValue); + + // Remove the portlet's attributes so that these are not available for other portlets + while (attributesIterator.hasPrevious()) { + GenericValue attribute = attributesIterator.previous(); + context.remove(attribute.getString("attrName")); + } + + // Uses the actual portlet as prevPortlet for next iteration + prevPortletId = (String) portletValue.get("portalPortletId"); + prevPortletSeqId = (String) portletValue.get("portletSeqId"); } + // Renders the portalPageColumn footer + screenStringRenderer.renderPortalPageColumnEnd(writer, context, this, columnValue); - // Uses the actual portlet as prevPortlet for next iteration - prevPortletId = (String) portletValue.get("portalPortletId"); - prevPortletSeqId = (String) portletValue.get("portletSeqId"); + // Uses the actual columnSeqId as prevColumnSeqId for next iteration + prevColumnSeqId = columnSeqId; } - // Renders the portalPageColumn footer - screenStringRenderer.renderPortalPageColumnEnd(writer, context, this, columnValue); - - // Uses the actual columnSeqId as prevColumnSeqId for next iteration - prevColumnSeqId = columnSeqId; + // Renders the portalPage footer + screenStringRenderer.renderPortalPageEnd(writer, context, this); + } catch (IOException | GenericEntityException e) { + String errMsg = "Error rendering PortalPage with portalPageId [" + getId(context) + "]: " + e.toString(); + Debug.logError(e, errMsg, MODULE); + throw new RuntimeException(errMsg); } - // Renders the portalPage footer - screenStringRenderer.renderPortalPageEnd(writer, context, this); - } catch (IOException | GenericEntityException e) { - String errMsg = "Error rendering PortalPage with portalPageId [" + getId(context) + "]: " + e.toString(); - Debug.logError(e, errMsg, MODULE); - throw new RuntimeException(errMsg); + } else { + String errMsg = "Error rendering PortalPage, it's null"; + Debug.logError(errMsg, MODULE); } }