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