taylor 2004/03/30 14:00:20 Modified: portal/src/java/org/apache/jetspeed/container/session NavigationalState.java portal/src/java/org/apache/jetspeed/request JetspeedRequestContext.java RequestContext.java portal/src/java/org/apache/jetspeed/engine/core PortletActionProviderImpl.java portal/src/java/org/apache/jetspeed/container/session/impl PathNavigationalState.java SessionNavigationalState.java portal/src/java/org/apache/jetspeed/engine JetspeedServlet.java Added: portal/src/java/org/apache/jetspeed/container/session NavigationalStateComponent.java portal/src/java/org/apache/jetspeed/request JetspeedRequestContextComponent.java RequestContextComponent.java portal/src/java/org/apache/jetspeed/container/session/impl JetspeedNavigationalStateComponent.java Removed: portal/src/java/org/apache/jetspeed/container/session NavigationalStateContext.java portal/src/java/org/apache/jetspeed/request RequestContextFactory.java portal/src/java/org/apache/jetspeed/container/session/impl PathNavigationalStateContext.java SessionNavigationalStateContext.java Log: refactoring of RequestContext to a component
continued refactoring of Nav State PR: Obtained from: Submitted by: Reviewed by: CVS: ---------------------------------------------------------------------- CVS: PR: CVS: If this change addresses a PR in the problem report tracking CVS: database, then enter the PR number(s) here. CVS: Obtained from: CVS: If this change has been taken from another system, such as NCSA, CVS: then name the system in this line, otherwise delete it. CVS: Submitted by: CVS: If this code has been contributed to Apache by someone else; i.e., CVS: they sent us a patch or a new module, then include their name/email CVS: address here. If this is your work then delete this line. CVS: Reviewed by: CVS: If we are doing pre-commit code reviews and someone else has CVS: reviewed your changes, include their name(s) here. CVS: If you have not had it reviewed then delete this line. Revision Changes Path 1.4 +21 -35 jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/container/session/NavigationalState.java Index: NavigationalState.java =================================================================== RCS file: /home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/container/session/NavigationalState.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- NavigationalState.java 24 Mar 2004 23:31:19 -0000 1.3 +++ NavigationalState.java 30 Mar 2004 22:00:19 -0000 1.4 @@ -1,5 +1,5 @@ /* - * Copyright 2000-2004 The Apache Software Foundation. + * Copyright 2000-2001,2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,44 +15,30 @@ */ package org.apache.jetspeed.container.session; -import org.apache.jetspeed.request.RequestContext; +import javax.portlet.PortletMode; +import javax.portlet.WindowState; + +import org.apache.pluto.om.window.PortletWindow; /** - * NavigationalState + * NavigationalStateContext * * @author <a href="mailto:[EMAIL PROTECTED]">David Sean Taylor</a> * @version $Id$ */ -public interface NavigationalState -{ - /** - * Creates a navigational state context for the given request context. - * Depending on the implementation, navigational state can be retrieved from - * a persistence store to recover the state of a page such as portlet modes - * and window states of portlets on a page. - * - * @param context The request context for which this navigational state is valid. - * @return A new navigational state context for the given request. - */ - NavigationalStateContext createContext(RequestContext context); - - /** - * Save the navigational state to persistence store for the given context. - * - * @param context The request context for retrieving user and other information. - * @param navContext The current navigational state context for the given request. - */ - void storeContext(RequestContext context, NavigationalStateContext navContext); - - /** - * Keys for URL encoding - * @return - */ - String getActionKey(); - String getRenderParamKey(); - String getModeKey(); - String getPreviousModeKey(); - String getStateKey(); - String getPreviousStateKey(); +public interface NavigationalState +{ + WindowState getState(PortletWindow window); + + void setState(PortletWindow window, WindowState state); + + PortletMode getMode(PortletWindow window); + + void setMode(PortletWindow window, PortletMode mode); + + PortletMode getPreviousMode(PortletWindow window); + + WindowState getPreviousState(PortletWindow window); + boolean isNavigationalParameter(String token); } 1.1 jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/container/session/NavigationalStateComponent.java Index: NavigationalStateComponent.java =================================================================== /* * Copyright 2000-2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jetspeed.container.session; import org.apache.jetspeed.request.RequestContext; /** * NavigationalState * * @author <a href="mailto:[EMAIL PROTECTED]">David Sean Taylor</a> * @version $Id: NavigationalStateComponent.java,v 1.1 2004/03/30 22:00:19 taylor Exp $ */ public interface NavigationalStateComponent { /** * Creates a navigational state context for the given request context. * Depending on the implementation, navigational state can be retrieved from * a persistence store to recover the state of a page such as portlet modes * and window states of portlets on a page. * * @param context The request context for which this navigational state is valid. * @return A new navigational state context for the given request. */ NavigationalState create(RequestContext context); /** * Release a navigational state context back to the pool. * * @param context */ void release(NavigationalState state); /** * Save the navigational state to persistence store for the given context. * * @param context The request context for retrieving user and other information. * @param navContext The current navigational state context for the given request. */ void store(RequestContext context, NavigationalState navContext); /** * Keys for URL encoding * @return */ String getActionKey(); String getRenderParamKey(); String getModeKey(); String getPreviousModeKey(); String getStateKey(); String getPreviousStateKey(); } 1.11 +21 -18 jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/request/JetspeedRequestContext.java Index: JetspeedRequestContext.java =================================================================== RCS file: /home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/request/JetspeedRequestContext.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- JetspeedRequestContext.java 8 Mar 2004 00:33:12 -0000 1.10 +++ JetspeedRequestContext.java 30 Mar 2004 22:00:19 -0000 1.11 @@ -24,13 +24,13 @@ import javax.servlet.http.HttpServletResponse; import javax.servlet.ServletConfig; -import org.apache.jetspeed.PortalContext; import org.apache.jetspeed.profiler.ProfileLocator; import org.apache.jetspeed.aggregator.ContentDispatcher; import org.apache.jetspeed.om.page.Page; import org.apache.jetspeed.services.factory.FactoryManager; import org.apache.jetspeed.capability.CapabilityMap; -import org.apache.jetspeed.engine.core.PortalControlParameter; +import org.apache.jetspeed.container.session.NavigationalState; +import org.apache.jetspeed.container.session.NavigationalStateComponent; import org.apache.jetspeed.engine.core.PortalURL; import org.apache.jetspeed.engine.core.PortalURLImpl; import org.apache.jetspeed.engine.servlet.ServletRequestFactory; @@ -49,7 +49,6 @@ */ public class JetspeedRequestContext implements RequestContext { - private PortalContext pc; private HttpServletRequest request; private HttpServletResponse response; private ServletConfig config; @@ -63,6 +62,7 @@ private CapabilityMap capabilityMap; private String mimeType; private String mediaType; + private NavigationalState navstate; private PortalURL requestedPortalURL; private PortletWindow actionWindow; private String encoding; @@ -77,9 +77,12 @@ * @param response * @param config */ - public JetspeedRequestContext(PortalContext pc, HttpServletRequest request, HttpServletResponse response, ServletConfig config) + public JetspeedRequestContext( + HttpServletRequest request, + HttpServletResponse response, + ServletConfig config, + NavigationalStateComponent navcomponent) { - this.pc = pc; this.request = request; this.response = response; this.config = config; @@ -90,6 +93,12 @@ this.request.setAttribute(REQUEST_PORTALENV, this); } requestedPortalURL = new PortalURLImpl(this); + + if (navcomponent != null) + { + navstate = navcomponent.create(this); + } + } private JetspeedRequestContext() @@ -108,11 +117,6 @@ return (RequestContext) request.getAttribute(REQUEST_PORTALENV); } - public PortalContext getPortalContext() - { - return pc; - } - public HttpServletRequest getRequest() { return request; @@ -219,15 +223,14 @@ return this.mediaType; } - public PortalURL getRequestedPortalURL() + public NavigationalState getNavigationalState() { - return requestedPortalURL; + return navstate; } - - public void changeRequestedPortalURL(PortalURL url, PortalControlParameter control) + + public PortalURL getRequestedPortalURL() { - requestedPortalURL = url; - requestedPortalURL.analyzeControlInformation(control); + return requestedPortalURL; } /** @@ -410,7 +413,7 @@ while (tokenizer.hasMoreTokens()) { String token = tokenizer.nextToken(); - if (PortalControlParameter.isControlParameter(token)) + if (this.navstate.isNavigationalParameter(token)) { break; } 1.9 +10 -18 jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/request/RequestContext.java Index: RequestContext.java =================================================================== RCS file: /home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/request/RequestContext.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- RequestContext.java 8 Mar 2004 00:33:12 -0000 1.8 +++ RequestContext.java 30 Mar 2004 22:00:19 -0000 1.9 @@ -23,10 +23,9 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.apache.jetspeed.PortalContext; import org.apache.jetspeed.aggregator.ContentDispatcher; import org.apache.jetspeed.capability.CapabilityMap; -import org.apache.jetspeed.engine.core.PortalControlParameter; +import org.apache.jetspeed.container.session.NavigationalState; import org.apache.jetspeed.engine.core.PortalURL; import org.apache.jetspeed.profiler.ProfileLocator; import org.apache.jetspeed.om.page.Page; @@ -67,13 +66,6 @@ public ServletConfig getConfig(); /** - * Gets the Jetspeed Portal Context - * - * @return HttpServletRequest - */ - public PortalContext getPortalContext(); - - /** * Gets the profile locator for this request * * @return Profile @@ -154,20 +146,20 @@ */ public String getMediaType(); + + /** + * Gets the navigational state for this current request. + * + * @return The navigational state context object for the current request. + */ + public NavigationalState getNavigationalState(); + /** * Get the requested Portlet URL for this request * * @return PortletURL the requested Portlet URL */ public PortalURL getRequestedPortalURL(); - - /** - * Change the Portlet URL to a new portal URL - * - * @param url - * @param control - */ - public void changeRequestedPortalURL(PortalURL url, PortalControlParameter control); /** * Get the target Action Window 1.1 jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/request/JetspeedRequestContextComponent.java Index: JetspeedRequestContextComponent.java =================================================================== /* * Copyright 2000-2001,2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jetspeed.request; import java.lang.reflect.Constructor; import javax.servlet.ServletConfig; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.jetspeed.container.session.NavigationalStateComponent; /** * JetspeedRequestContextComponent * * @author <a href="mailto:[EMAIL PROTECTED]">David Sean Taylor</a> * @version $Id: JetspeedRequestContextComponent.java,v 1.1 2004/03/30 22:00:19 taylor Exp $ */ public class JetspeedRequestContextComponent implements RequestContextComponent { private String contextClassName = null; private Class contextClass = null; private NavigationalStateComponent nav; private final static Log log = LogFactory.getLog(JetspeedRequestContextComponent.class); public JetspeedRequestContextComponent(NavigationalStateComponent nav, String contextClassName) { this.nav = nav; this.contextClassName = contextClassName; } public RequestContext create(HttpServletRequest req, HttpServletResponse resp, ServletConfig config) { RequestContext context = null; try { if (null == contextClass) { contextClass = Class.forName(contextClassName); } // TODO: we could use a pooled object implementation here Constructor constructor = contextClass.getConstructor(new Class[] {HttpServletRequest.class, HttpServletResponse.class, ServletConfig.class, NavigationalStateComponent.class}); context = (RequestContext) constructor.newInstance(new Object[] {req, resp, config, nav}); } catch(Exception e) { e.printStackTrace(); String msg = "RequestContextFactory: Failed to create a Class object for RequestContext: " + e.toString(); log.error(msg); } return context; } public void release(RequestContext context) { } } 1.1 jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/request/RequestContextComponent.java Index: RequestContextComponent.java =================================================================== /* * Copyright 2000-2001,2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jetspeed.request; import javax.servlet.ServletConfig; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * RequestContextComponent * * @author <a href="mailto:[EMAIL PROTECTED]">David Sean Taylor</a> * @version $Id: RequestContextComponent.java,v 1.1 2004/03/30 22:00:19 taylor Exp $ */ public interface RequestContextComponent { /** * Creates a request context for the given servlet request. * * @param req * @param resp * @param config * @return */ RequestContext create(HttpServletRequest req, HttpServletResponse resp, ServletConfig config); /** * Release a request context back to the context pool. * * @param context */ void release(RequestContext context); } 1.5 +8 -15 jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/engine/core/PortletActionProviderImpl.java Index: PortletActionProviderImpl.java =================================================================== RCS file: /home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/engine/core/PortletActionProviderImpl.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- PortletActionProviderImpl.java 8 Mar 2004 00:26:09 -0000 1.4 +++ PortletActionProviderImpl.java 30 Mar 2004 22:00:20 -0000 1.5 @@ -22,6 +22,7 @@ import org.apache.pluto.om.window.PortletWindow; import org.apache.pluto.services.information.PortletActionProvider; +import org.apache.jetspeed.container.session.NavigationalState; import org.apache.jetspeed.request.RequestContext; import org.apache.jetspeed.request.JetspeedRequestContext; @@ -51,15 +52,11 @@ public void changePortletMode(PortletMode mode) { RequestContext context = JetspeedRequestContext.getRequestContext(request); - - PortalURL url = context.getRequestedPortalURL(); - PortalControlParameter controlURL = new PortalControlParameter(url); - if (!(controlURL.getMode(portletWindow).equals(mode)) && mode != null) + NavigationalState state = context.getNavigationalState(); + if (!(state.getMode(portletWindow).equals(mode)) && mode != null) { - controlURL.setMode(portletWindow, mode); - context.changeRequestedPortalURL(url, controlURL); + state.setMode(portletWindow, mode); } - } /* (non-Javadoc) @@ -68,14 +65,10 @@ public void changePortletWindowState(WindowState state) { RequestContext context = JetspeedRequestContext.getRequestContext(request); - - PortalURL url = context.getRequestedPortalURL(); - PortalControlParameter controlURL = new PortalControlParameter(url); - - if (!(controlURL.getState(portletWindow).equals(state)) && state != null) + NavigationalState navstate = context.getNavigationalState(); + if (!(navstate.getState(portletWindow).equals(state)) && state != null) { - controlURL.setState(portletWindow, state); - context.changeRequestedPortalURL(url, controlURL); + navstate.setState(portletWindow, state); } } 1.4 +36 -44 jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/container/session/impl/PathNavigationalState.java Index: PathNavigationalState.java =================================================================== RCS file: /home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/container/session/impl/PathNavigationalState.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- PathNavigationalState.java 24 Mar 2004 23:31:19 -0000 1.3 +++ PathNavigationalState.java 30 Mar 2004 22:00:20 -0000 1.4 @@ -1,5 +1,5 @@ /* - * Copyright 2000-2004 The Apache Software Foundation. + * Copyright 2000-2001,2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,83 +15,75 @@ */ package org.apache.jetspeed.container.session.impl; +import javax.portlet.PortletMode; +import javax.portlet.WindowState; + import org.apache.jetspeed.container.session.NavigationalState; -import org.apache.jetspeed.container.session.NavigationalStateContext; +import org.apache.jetspeed.engine.core.PortalControlParameter; +import org.apache.jetspeed.engine.core.PortalURL; import org.apache.jetspeed.request.RequestContext; -import org.picocontainer.Startable; +import org.apache.pluto.om.window.PortletWindow; /** - * PathNavigationalState is based on Pluto navigational state. + * PathNavigationalStateContext is based on Pluto navigational state. * All nav state is stored as path parameters in the URL. * This implementation does not currently support persisting navigational state * * @author <a href="mailto:[EMAIL PROTECTED]">David Sean Taylor</a> * @version $Id$ */ -public class PathNavigationalState implements NavigationalState, Startable +public class PathNavigationalState implements NavigationalState { - static private final String ACTION = "ac"; - static private final String MODE = "md"; - static private final String PREFIX = "_"; - static private final String PREV_MODE = "pm"; - static private final String PREV_STATE = "ps"; - static private final String RENDER_PARAM = "rp"; - static private final String STATE = "st"; - static private final String KEY_DELIMITER = ":"; - static private final String PORTLET_ID = "pid"; - - public PathNavigationalState() - { - } - - public void start() - { - } + RequestContext context; + PortalURL url; + PortalControlParameter pcp; - public void stop() + public PathNavigationalState(RequestContext context) { + init(context); } - public NavigationalStateContext createContext(RequestContext context) + public void init(RequestContext context) { - // TODO: pool - return new PathNavigationalStateContext(context); + this.context = context; + this.url = context.getRequestedPortalURL(); + this.pcp = new PortalControlParameter(url); } - public void storeContext(RequestContext context, NavigationalStateContext navContext) + public WindowState getState(PortletWindow window) { - // TODO: implement + return pcp.getState(window); } - - public String getActionKey() + + public void setState(PortletWindow window, WindowState state) { - return ACTION; + pcp.setState(window, state); } - - public String getRenderParamKey() + + public PortletMode getMode(PortletWindow window) { - return RENDER_PARAM; + return pcp.getMode(window); } - public String getModeKey() + public void setMode(PortletWindow window, PortletMode mode) { - return MODE; + pcp.setMode(window, mode); } - public String getPreviousModeKey() + public PortletMode getPreviousMode(PortletWindow window) { - return PREV_MODE; + return pcp.getPrevMode(window); } - - public String getStateKey() + public WindowState getPreviousState(PortletWindow window) { - return STATE; + return pcp.getPrevState(window); } - public String getPreviousStateKey() + public boolean isNavigationalParameter(String token) { - return PREV_STATE; + return PortalControlParameter.isControlParameter(token); } + } 1.4 +28 -44 jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/container/session/impl/SessionNavigationalState.java Index: SessionNavigationalState.java =================================================================== RCS file: /home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/container/session/impl/SessionNavigationalState.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- SessionNavigationalState.java 24 Mar 2004 23:31:19 -0000 1.3 +++ SessionNavigationalState.java 30 Mar 2004 22:00:20 -0000 1.4 @@ -1,5 +1,5 @@ /* - * Copyright 2000-2004 The Apache Software Foundation. + * Copyright 2000-2001,2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,82 +15,66 @@ */ package org.apache.jetspeed.container.session.impl; +import javax.portlet.PortletMode; +import javax.portlet.WindowState; + import org.apache.jetspeed.container.session.NavigationalState; -import org.apache.jetspeed.container.session.NavigationalStateContext; import org.apache.jetspeed.request.RequestContext; -import org.picocontainer.Startable; +import org.apache.pluto.om.window.PortletWindow; /** - * NavigationalStateComponent + * SessionNavigationalStateContext * * @author <a href="mailto:[EMAIL PROTECTED]">David Sean Taylor</a> * @version $Id$ */ -public class SessionNavigationalState implements NavigationalState, Startable +public class SessionNavigationalState + implements + NavigationalState { - static private final String ACTION = "ac"; - static private final String MODE = "md"; - static private final String PREFIX = "_"; - static private final String PREV_MODE = "pm"; - static private final String PREV_STATE = "ps"; - static private final String RENDER_PARAM = "rp"; - static private final String STATE = "st"; - static private final String KEY_DELIMITER = ":"; - static private final String PORTLET_ID = "pid"; - - public SessionNavigationalState() - { - } - + RequestContext context; - public void start() + public SessionNavigationalState(RequestContext context) { + init(context); } - public void stop() + public void init(RequestContext context) { - } - - public NavigationalStateContext createContext(RequestContext context) - { - // TODO: pool - return new SessionNavigationalStateContext(context); + this.context = context; } - public void storeContext(RequestContext context, NavigationalStateContext navContext) + public WindowState getState(PortletWindow window) { - // TODO: implement + return null; } - public String getActionKey() + public void setState(PortletWindow window, WindowState state) { - return ACTION; } - - public String getRenderParamKey() + + public PortletMode getMode(PortletWindow window) { - return RENDER_PARAM; + return null; } - public String getModeKey() + public void setMode(PortletWindow window, PortletMode mode) { - return MODE; } - public String getPreviousModeKey() + public PortletMode getPreviousMode(PortletWindow window) { - return PREV_MODE; + return null; } - - public String getStateKey() + public WindowState getPreviousState(PortletWindow window) { - return STATE; + return null; } - public String getPreviousStateKey() + public boolean isNavigationalParameter(String token) { - return PREV_STATE; + return false; } } 1.1 jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/container/session/impl/JetspeedNavigationalStateComponent.java Index: JetspeedNavigationalStateComponent.java =================================================================== /* * Copyright 2000-2001,2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jetspeed.container.session.impl; import java.lang.reflect.Constructor; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.jetspeed.container.session.NavigationalState; import org.apache.jetspeed.container.session.NavigationalStateComponent; import org.apache.jetspeed.request.RequestContext; /** * JetspeedNavigationalStateComponent * * @author <a href="mailto:[EMAIL PROTECTED]">David Sean Taylor</a> * @version $Id: JetspeedNavigationalStateComponent.java,v 1.1 2004/03/30 22:00:20 taylor Exp $ */ public class JetspeedNavigationalStateComponent implements NavigationalStateComponent { static private final String ACTION = "ac"; static private final String MODE = "md"; static private final String PREFIX = "_"; static private final String PREV_MODE = "pm"; static private final String PREV_STATE = "ps"; static private final String RENDER_PARAM = "rp"; static private final String STATE = "st"; static private final String KEY_DELIMITER = ":"; static private final String PORTLET_ID = "pid"; private String contextClassName = null; private Class contextClass = null; private final static Log log = LogFactory.getLog(JetspeedNavigationalStateComponent.class); public JetspeedNavigationalStateComponent(String contextClassName) { this.contextClassName = contextClassName; } public void start() { } public void stop() { } public NavigationalState create(RequestContext context) { NavigationalState state = null; try { if (null == contextClass) { contextClass = Class.forName(contextClassName); } // TODO: we could use a pooled object implementation here Constructor constructor = contextClass.getConstructor(new Class[] {RequestContext.class}); state = (NavigationalState) constructor.newInstance(new Object[] {context}); } catch(Exception e) { String msg = "RequestContextFactory: Failed to create a Class object for RequestContext: " + e.toString(); log.error(msg); } return state; } public void store(RequestContext context, NavigationalState navContext) { // TODO: implement } public void release(NavigationalState navContext) { } public String getActionKey() { return ACTION; } public String getRenderParamKey() { return RENDER_PARAM; } public String getModeKey() { return MODE; } public String getPreviousModeKey() { return PREV_MODE; } public String getStateKey() { return STATE; } public String getPreviousStateKey() { return PREV_STATE; } } 1.5 +6 -4 jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/engine/JetspeedServlet.java Index: JetspeedServlet.java =================================================================== RCS file: /home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/engine/JetspeedServlet.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- JetspeedServlet.java 8 Mar 2004 00:26:46 -0000 1.4 +++ JetspeedServlet.java 30 Mar 2004 22:00:20 -0000 1.5 @@ -35,7 +35,7 @@ import org.apache.jetspeed.engine.servlet.ServletHelper; import org.apache.jetspeed.exception.JetspeedException; import org.apache.jetspeed.request.RequestContext; -import org.apache.jetspeed.request.RequestContextFactory; +import org.apache.jetspeed.request.RequestContextComponent; /** * Jetspeed Servlet entry point. @@ -202,9 +202,11 @@ init(req, res); } - RequestContext context = RequestContextFactory.getInstance(req, res, getServletConfig()); - + //RequestContext context = RequestContextFactory.getInstance(req, res, getServletConfig()); + RequestContextComponent contextComponent = (RequestContextComponent)Jetspeed.getComponentManager().getComponent(RequestContextComponent.class); + RequestContext context = contextComponent.create(req, res, getServletConfig()); engine.service(context); + contextComponent.release(context); } catch (Throwable t) --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]