Update of
/var/cvs/contributions/CMSContainer/cmsc/portal/src/java/com/finalist/cmsc/portalImpl
In directory
james.mmbase.org:/tmp/cvs-serv790/cmsc/portal/src/java/com/finalist/cmsc/portalImpl
Modified Files:
PageNavigationRenderer.java PortalServlet.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: PageNavigationRenderer.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer/cmsc/portal/src/java/com/finalist/cmsc/portalImpl/PageNavigationRenderer.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- PageNavigationRenderer.java 12 Apr 2008 14:26:09 -0000 1.6
+++ PageNavigationRenderer.java 21 Apr 2008 10:11:51 -0000 1.7
@@ -18,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) {
@@ -47,7 +63,7 @@
// TODO Auto-generated catch block
throw new RenderException("IOException while rendering", e);
}
- log.debug("===>SERVICE DONE");
+ }
}
else {
throw new IllegalArgumentException(
@@ -56,6 +72,10 @@
}
}
+ protected boolean isActionUrl(PortalControlParameter control) {
+ String id = control.getPortletWindowOfAction();
+ return id != null;
+ }
protected ScreenFragment getScreen(Page page, ServletConfig sc) {
try {
@@ -65,18 +85,30 @@
Set<String> names = layout.getNames();
for (String layoutId : names) {
- 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);
+ 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);
}
@@ -91,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: PortalServlet.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer/cmsc/portal/src/java/com/finalist/cmsc/portalImpl/PortalServlet.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- PortalServlet.java 10 Mar 2008 09:38:32 -0000 1.14
+++ PortalServlet.java 21 Apr 2008 10:11:51 -0000 1.15
@@ -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: PortalErrorServlet.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer/cmsc/portal/src/java/com/finalist/cmsc/portalImpl/PortalErrorServlet.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- PortalErrorServlet.java 12 Apr 2008 14:26:10 -0000 1.13
+++ PortalErrorServlet.java 21 Apr 2008 10:11:51 -0000 1.14
@@ -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);
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs