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

Reply via email to