}
public StateId getStateId(String portletName, RenderRequest renderRequest, String namespace) {
PortletMode portletMode = renderRequest.getPortletMode();
String scopeId = getScopeId(portletName, renderRequest);
StateId stateId = null ;
PortletSession session = renderRequest.getPortletSession(false);
String stateIdParameter = renderRequest.getParameter(STATE_ID_PARAMETER);
if (null == stateIdParameter) {
stateId = getStateIdFromViewHistory(portletMode,
session);
} else {
stateId = new StateId(stateIdParameter);
// Check portlet mode for a changes:
if (!portletMode.equals(stateId.getMode())) {
StateId historyStateId = getStateIdFromViewHistory(portletMode,
session);
if(null != historyStateId){
stateId = historyStateId;
} else {
stateId.setMode(portletMode);
}
}
}
if (null == stateId) {
stateId = new StateId(scopeId,portletMode,namespace);
}
return stateId;
}