Update of 
/var/cvs/contributions/CMSContainer/cmsc/portal/src/java/com/finalist/cmsc/portalImpl
In directory 
james.mmbase.org:/tmp/cvs-serv657/cmsc/portal/src/java/com/finalist/cmsc/portalImpl

Modified Files:
      Tag: b1_4
        PortalServlet.java PageNavigationRenderer.java 
        PortalErrorServlet.java 
Log Message:
CMSC-863 HttpSessions are used when not necessary and created for useragents 
which do not maintain a session


See also: 
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer/cmsc/portal/src/java/com/finalist/cmsc/portalImpl
See also: http://www.mmbase.org/jira/browse/CMSC-863


Index: PortalServlet.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer/cmsc/portal/src/java/com/finalist/cmsc/portalImpl/PortalServlet.java,v
retrieving revision 1.13.2.1
retrieving revision 1.13.2.2
diff -u -b -r1.13.2.1 -r1.13.2.2
--- PortalServlet.java  10 Mar 2008 09:38:38 -0000      1.13.2.1
+++ PortalServlet.java  21 Apr 2008 10:11:28 -0000      1.13.2.2
@@ -29,11 +29,8 @@
 import com.finalist.cmsc.beans.om.NavigationItem;
 import com.finalist.cmsc.beans.om.Site;
 import com.finalist.cmsc.navigation.*;
-import com.finalist.cmsc.portalImpl.registry.PortalRegistry;
 import com.finalist.cmsc.services.ServiceManager;
 import com.finalist.cmsc.services.sitemanagement.SiteManagement;
-import com.finalist.pluto.portalImpl.aggregation.ScreenFragment;
-import com.finalist.pluto.portalImpl.core.PortalControlParameter;
 import com.finalist.pluto.portalImpl.core.PortalEnvironment;
 import com.finalist.pluto.portalImpl.core.PortalURL;
 import com.finalist.pluto.portalImpl.core.PortletContainerEnvironment;
@@ -158,19 +155,6 @@
          }
       }
 
-      PortalControlParameter control = new PortalControlParameter(currentURL);
-      if (isActionUrl(control)) {
-         String id = control.getPortletWindowOfAction();
-
-         log.debug("===>CONTROL='" + control.toString() + "'");
-         log.debug("===>WINDOW='" + id + "'");
-
-         PortalRegistry registry = PortalRegistry.getPortalRegistry(request);
-         ScreenFragment screen = registry.getScreen();
-         screen.processAction(request, response, id);
-         return; // we issued an redirect, so return directly
-      }
-
       processRenderPhase(request, response, currentURL);
       log.debug("===>PortalServlet.doGet EXIT!");
    }
@@ -191,11 +175,6 @@
       }
    }
 
-   private boolean isActionUrl(PortalControlParameter control) {
-      String id = control.getPortletWindowOfAction();
-      return id != null;
-   }
-
    private void processRenderPhase(HttpServletRequest request, 
HttpServletResponse response,
          PortalURL currentURL) {
       try {
@@ -214,7 +193,8 @@
       }
    }
 
-   protected boolean doRender(HttpServletRequest request, HttpServletResponse 
response, String path) {
+   protected boolean doRender(HttpServletRequest request, HttpServletResponse 
response, String path)
+       throws IOException {
      NavigationItem item = SiteManagement.getNavigationItemFromPath(path);
      if (item != null) {
         NavigationItemRenderer manager = NavigationManager.getRenderer(item);


Index: PageNavigationRenderer.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer/cmsc/portal/src/java/com/finalist/cmsc/portalImpl/PageNavigationRenderer.java,v
retrieving revision 1.4
retrieving revision 1.4.2.1
diff -u -b -r1.4 -r1.4.2.1
--- PageNavigationRenderer.java 3 Dec 2007 13:10:26 -0000       1.4
+++ PageNavigationRenderer.java 21 Apr 2008 10:11:28 -0000      1.4.2.1
@@ -1,7 +1,6 @@
 package com.finalist.cmsc.portalImpl;
 
 import java.io.IOException;
-import java.util.Iterator;
 import java.util.Set;
 
 import javax.servlet.ServletConfig;
@@ -19,26 +18,42 @@
 import com.finalist.cmsc.beans.om.PortletDefinition;
 import com.finalist.cmsc.beans.om.View;
 import com.finalist.cmsc.navigation.NavigationItemRenderer;
-import com.finalist.cmsc.portalImpl.registry.PortalRegistry;
 import com.finalist.cmsc.services.sitemanagement.SiteManagement;
 import com.finalist.pluto.portalImpl.aggregation.EmptyFragment;
 import com.finalist.pluto.portalImpl.aggregation.PortletFragment;
 import com.finalist.pluto.portalImpl.aggregation.ScreenFragment;
+import com.finalist.pluto.portalImpl.core.*;
 
 public class PageNavigationRenderer implements NavigationItemRenderer {
 
    private static Log log = LogFactory.getLog(PageNavigationRenderer.class);
 
    public void render(NavigationItem item, HttpServletRequest request, 
HttpServletResponse response,
-         ServletConfig sc) {
+         ServletConfig sc) throws IOException {
       if (item instanceof Page) {
-         ScreenFragment screen = getScreen((Page) item, sc);
 
-         PortalRegistry registry = PortalRegistry.getPortalRegistry(request);
+          PortalEnvironment env = 
PortalEnvironment.getPortalEnvironment(request);
+          PortalURL currentURL = env.getRequestedPortalURL();
+
+          PortalControlParameter control = new 
PortalControlParameter(currentURL);
+          if (isActionUrl(control)) {
+              // portlet action phase
+             String id = control.getPortletWindowOfAction();
+
+             log.debug("===>CONTROL='" + control.toString() + "'");
+             log.debug("===>WINDOW='" + id + "'");
+             ScreenFragment screen = getActionScreen((Page) item, sc, id);
+             if (screen == null) {
+                 screen = getScreen((Page) item, sc);
+             }
          
-         registry.setScreen(screen);
-         log.debug("===>SERVICE");
+             screen.processAction(request, response, id);
+             return; // we issued an redirect, so return directly
+          }
+          else {
+             // portlet render phase
          try {
+                 ScreenFragment screen = getScreen((Page) item, sc);
             screen.service(request, response);
          }
          catch (ServletException e) {
@@ -48,7 +63,7 @@
             // TODO Auto-generated catch block
             throw new RenderException("IOException while rendering", e);
          }
-         log.debug("===>SERVICE DONE");
+          }
       }
       else {
          throw new IllegalArgumentException(
@@ -57,6 +72,10 @@
       }
    }
 
+   protected boolean isActionUrl(PortalControlParameter control) {
+      String id = control.getPortletWindowOfAction();
+      return id != null;
+   }
 
    protected ScreenFragment getScreen(Page page, ServletConfig sc) {
       try {
@@ -65,21 +84,31 @@
          // place portletfragments and emptyfragments in the screenfragment
 
          Set<String> names = layout.getNames();
-         for (Iterator<String> iter = names.iterator(); iter.hasNext();) {
-            String layoutId = iter.next();
-            Integer portletId = page.getPortlet(layoutId);
-            Portlet portlet = SiteManagement.getPortlet(portletId);
-            if (portlet != null) {
-               PortletDefinition definition = 
SiteManagement.getPortletDefinition(portlet.getDefinition());
-               View view = SiteManagement.getView(portlet.getView());
-
-               PortletFragment pf = new PortletFragment(sc, sf, layoutId, 
portlet, definition, view);
+                for (String layoutId : names) {
+            PortletFragment pf = getPortlet(page, sc, sf, layoutId);
                if (pf != null) {
                   sf.addChild(pf);
                }
             }
-            else {
-               PortletFragment pf = createDefaultPortlet(sf, page, layoutId, 
sc);
+
+         return sf;
+      }
+      catch (Exception e) {
+         log.error("Error while constructing screen for page: '" + 
page.getId() + "'", e);
+      }
+      return null;
+   }
+
+   private ScreenFragment getActionScreen(Page page, ServletConfig sc, String 
id) {
+       try {
+           Layout layout = SiteManagement.getLayout(page.getLayout());
+           ScreenFragment sf = new ScreenFragment(sc, page, layout);
+           // place portletfragments and emptyfragments in the screenfragment
+
+           Set<String> names = layout.getNames();
+           for (String layoutId : names) {
+              if (layoutId.equals(id)) {
+                  PortletFragment pf = getPortlet(page, sc, sf, layoutId);
                if (pf != null) {
                   sf.addChild(pf);
                }
@@ -94,6 +123,20 @@
       return null;
    }
 
+    private PortletFragment getPortlet(Page page, ServletConfig sc, 
ScreenFragment sf, String layoutId)
+            throws Exception {
+        Integer portletId = page.getPortlet(layoutId);
+        Portlet portlet = SiteManagement.getPortlet(portletId);
+        if (portlet != null) {
+           PortletDefinition definition = 
SiteManagement.getPortletDefinition(portlet.getDefinition());
+           View view = SiteManagement.getView(portlet.getView());
+    
+           return new PortletFragment(sc, sf, layoutId, portlet, definition, 
view);
+        }
+        else {
+           return createDefaultPortlet(sf, page, layoutId, sc);
+        }
+    }
 
    private PortletFragment createDefaultPortlet(ScreenFragment sf, Page page, 
String layoutId, ServletConfig sc) {
       try {


Index: PortalErrorServlet.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer/cmsc/portal/src/java/com/finalist/cmsc/portalImpl/PortalErrorServlet.java,v
retrieving revision 1.11.2.1
retrieving revision 1.11.2.2
diff -u -b -r1.11.2.1 -r1.11.2.2
--- PortalErrorServlet.java     10 Mar 2008 09:38:38 -0000      1.11.2.1
+++ PortalErrorServlet.java     21 Apr 2008 10:11:28 -0000      1.11.2.2
@@ -24,9 +24,7 @@
 
 import com.finalist.cmsc.beans.om.Site;
 import com.finalist.cmsc.navigation.ServerUtil;
-import com.finalist.cmsc.portalImpl.registry.PortalRegistry;
 import com.finalist.cmsc.services.sitemanagement.SiteManagement;
-import com.finalist.pluto.portalImpl.aggregation.ScreenFragment;
 import com.finalist.pluto.portalImpl.core.*;
 import com.finalist.util.version.VersionUtil;
 
@@ -112,9 +110,6 @@
                 HttpServletRequest errorRequest = new 
ErrorHttpServletRequest(request, errorPageSite.getUrlfragment(), 
String.valueOf(statusCode)); 
                 PortalEnvironment errorEnv = new 
PortalEnvironment(errorRequest, response, config);
 
-                PortalRegistry registry = 
PortalRegistry.getPortalRegistry(request);
-                ScreenFragment oldScreen = registry.getScreen();
-
                 response.setContentType(CONTENT_TYPE);
 
                 String errorPagePath = errorPageSite.getUrlfragment() + 
PATH_SP + statusCode;
@@ -124,8 +119,6 @@
                 if (!renderSucceed) {
                    defaultError(request, response, statusCode);
                 }
-                
-                registry.setScreen(oldScreen);
             }
             else {
                defaultError(request, response, statusCode);
@@ -161,8 +154,8 @@
       out.println("<html><head><title>" + 
request.getAttribute(ERROR_STATUS_CODE) + " "
             + request.getAttribute(ERROR_MESSAGE) + 
"</title></head><body><table>");
       // Print vars
-      for (int i = 0; i < vars.length; i++) {
-         out.println("<tr><td>" + vars[i] + "</td><td>" + 
request.getAttribute(vars[i]) + "</td></tr>");
+     for (String var : vars) {
+         out.println("<tr><td>" + var + "</td><td>" + 
request.getAttribute(var) + "</td></tr>");
       }
       out.println("</table></body></html>");
    }
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to