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

doebele pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/empire-db.git


The following commit(s) were added to refs/heads/master by this push:
     new 1adfefea EMPIREDB-422 PagePhaseListener Code cleanup
1adfefea is described below

commit 1adfefeaec3e613ee9063f859994e75cac84abc7
Author: Rainer Döbele <[email protected]>
AuthorDate: Tue Apr 16 23:25:28 2024 +0200

    EMPIREDB-422
    PagePhaseListener Code cleanup
---
 .../empire/jsf2/pages/PagePhaseListener.java       | 151 ++++++---------------
 1 file changed, 43 insertions(+), 108 deletions(-)

diff --git 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pages/PagePhaseListener.java
 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pages/PagePhaseListener.java
index 38322c20..fd695ceb 100644
--- 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pages/PagePhaseListener.java
+++ 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pages/PagePhaseListener.java
@@ -108,64 +108,26 @@ public class PagePhaseListener implements PhaseListener
         {   // No page definition available
             if (log.isDebugEnabled())
                 log.debug("No page definition available for viewId {}.", 
viewId);
+            // terminate
+            return;
         }    
 
-        // Check Request context path 
-        /*
-        if (viewChanged)
-        {
-            log.debug("Checking view context path");
-            HttpServletRequest req = FacesUtils.getHttpRequest(fc);
-            String reqURI = req.getRequestURI();
-            viewId = pageDef.getPath();
-            int vix = viewId.lastIndexOf('.');
-            int rix = reqURI.lastIndexOf('.');
-            if (rix<vix || !viewId.regionMatches(true, 0, reqURI, rix-vix, 
vix))
-            {   // redirect to view page
-                String ctxPath = 
fc.getExternalContext().getRequestContextPath();
-                String pageURI = ctxPath + viewId.substring(0,vix) + ".iface";
-                log.warn("Invalid RequestURI '" + reqURI + "'. Redirecting to 
'"+pageURI+"'.");
-                FacesUtils.redirectDirectly(fc, pageURI);
-                return;
-            }
-            // Save current viewId
-        }
-        */
-        
         // Obtain PageBean from BeanManager
         String name = pageDef.getPageBeanName();
         Map<String, Object> viewMap = vr.getViewMap();
         Page pageBean = (Page) viewMap.get(name);
         if (pageBean == null)
         {   // Not available yet
-            Class<? extends Page> pageClass = pageDef.getPageBeanClass();
             if (log.isDebugEnabled())
-                log.debug("Creating page bean {} for {} in Phase {}.", new 
Object[] { pageClass.getName(), viewId, pe.getPhaseId() });
-            // Use Bean Manager
-            pageBean = (Page)FacesUtils.getManagedBean(fc, name);
-            if (pageBean==null)
-            {   // Create Instance ourselves
-                log.warn("Unable to obtain page bean '{}' from BeanManager. 
Page bean probably not registered. Creating new instance but Injection might 
not work! ", name);
-                try
-                {   // Create Instance
-                    pageBean = pageClass.newInstance();
-                    viewMap.put(name, pageBean);
-                }
-                catch (Exception e)
-                {
-                    log.error("Error creating instance of page bean " + 
pageClass.getName(), e);
-                    throw new InternalException(e);
-                }
-            }
-            else if (!pageClass.isInstance(pageBean))
-            {   // Wrong class
-                log.warn("Page bean '"+name+"' is not an instance of class {} 
as expected. Detected class is {}", pageClass.getName(), 
pageBean.getClass().getName());
-            }
+                log.debug("Creating page bean of type {} for {} in Phase {}.", 
pageDef.getPageBeanClass().getName(), viewId, pe.getPhaseId());
+            // Create Page Bean
+            pageBean = createPageBean(name, pageDef, fc);
+            viewMap.put(name, pageBean);
+            // set definition
+            pageBean.setPageDefinition(pageDef);
             // Add 'page' to map 
             viewMap.put("page", pageBean);
         }
-        // set definition
-        pageBean.setPageDefinition(pageDef);
 
         // Init PageBean
         if (pe.getPhaseId() == PhaseId.RENDER_RESPONSE)
@@ -180,7 +142,32 @@ public class PagePhaseListener implements PhaseListener
         */
     }
 
-    private void initPageBean(Page pageBean, FacesContext fc, Map<String, 
Object> viewMap)
+    protected Page createPageBean(String name, PageDefinition pageDef, 
FacesContext fc)
+    {
+        Class<? extends Page> pageClass = pageDef.getPageBeanClass();
+        // Use Bean Manager first
+        Page pageBean = (Page)FacesUtils.getManagedBean(fc, name);
+        if (pageBean==null)
+        {   // Create Instance ourselves
+            log.warn("Unable to obtain page bean \"{}\" from BeanManager. Page 
bean probably not registered. Creating new instance but Injection might not 
work! ", name);
+            try
+            {   // Create Instance
+                pageBean = pageClass.newInstance();
+            }
+            catch (Exception e)
+            {
+                log.error("Error creating instance of page bean " + 
pageClass.getName(), e);
+                throw new InternalException(e);
+            }
+        }
+        else if (!pageClass.isInstance(pageBean))
+        {   // Wrong class
+            log.warn("Page bean \"{}\" is not an instance of class {} as 
expected. Detected class is {}", name, pageClass.getName(), 
pageBean.getClass().getName());
+        }
+        return pageBean;
+    }
+    
+    protected void initPageBean(Page pageBean, FacesContext fc, Map<String, 
Object> viewMap)
     {
         if (!pageBean.isInitialized())
         { // Not yet initialized 
@@ -193,22 +180,7 @@ public class PagePhaseListener implements PhaseListener
             {
                 @SuppressWarnings("unchecked")
                 Map<String, String> pageParams = (Map<String, String>) 
viewMap.remove(FORWARD_PAGE_PARAMS);
-                // TODO: Set view metadata
-                if (!setViewMetadata(pageParams))
-                { // instead set properties directly
-                    for (String name : pageParams.keySet())
-                    {
-                        String value = pageParams.get(name);
-                        try
-                        {
-                            BeanUtils.setProperty(pageBean, name, value);
-                        }
-                        catch (Exception e)
-                        {
-                            log.error("Unable to set PageParam " + name + " on 
" + pageBean.getClass().getName() + ".", e);
-                        }
-                    }
-                }
+                setPageParams(pageBean, pageParams);
             }
             // page prepared
         }
@@ -217,61 +189,24 @@ public class PagePhaseListener implements PhaseListener
     }
 
     /**
-     * TODO: Find a way to set the view Metadata. Don't know how to do it.
-     * 
+     * Sets the view Metadata
      * @param pageParams
      * @return
      */
-    private boolean setViewMetadata(Map<String, String> pageParams)
+    protected void setPageParams(Page pageBean, Map<String, String> pageParams)
     {
-        // Getting the metadata facet of the view
-        /*
-        FacesContext fc = FacesContext.getCurrentInstance();
-        UIViewRoot   vr = fc.getViewRoot();
-        UIComponent metadataFacet = 
vr.getFacet(UIViewRoot.METADATA_FACET_NAME);
-        */
-
-        /*
-        String viewId = vr.getViewId();        
-        ViewDeclarationLanguage vdl = 
fc.getApplication().getViewHandler().getViewDeclarationLanguage(fc, viewId);
-        ViewMetadata viewMetadata = vdl.getViewMetadata(fc, viewId);
-        Collection<UIViewParameter> viewParams = 
ViewMetadata.getViewParameters(vr);
-        for (UIComponent child : metadataFacet.getChildren())
-        */
-
-        /*
-        UIComponent metadata = vr.getFacet(UIViewRoot.METADATA_FACET_NAME);
-        if (metadata == null)
+        for (String name : pageParams.keySet())
         {
-            metadata = 
fc.getApplication().createComponent(UIPanel.COMPONENT_TYPE);
-            vr.getFacets().put(UIViewRoot.METADATA_FACET_NAME, metadata);
-
-            Collection<UIViewParameter> viewParams = 
ViewMetadata.getViewParameters(vr);
-            int size = viewParams.size();
-            
-            for (String name : pageParams.keySet())
+            String value = pageParams.get(name);
+            try
             {
-                String value = pageParams.get(name);
-                UIViewParameter uivp = new UIViewParameter();
-                uivp.setName(name);
-                uivp.setValue(value);
-                // uivp.setParent(vr);
-                metadata.getChildren().add(uivp);
+                BeanUtils.setProperty(pageBean, name, value);
             }
-        }
-        for (UIComponent child : metadata.getChildren())
-        {
-            if (child instanceof UIViewParameter)
+            catch (Exception e)
             {
-                UIViewParameter viewParam = (UIViewParameter) child;
-                String value = pageParams.get(viewParam.getName());
-                if (value != null)
-                    viewParam.setValue(value);
+                log.error("Unable to set PageParam " + name + " on " + 
pageBean.getClass().getName() + ".", e);
             }
         }
-        */
-
-        return false;
     }
 
     @Override

Reply via email to