in jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/util/ConversationUtils.java [139:202]
public static String resolveWindowContextId(WindowHandler windowHandler,
boolean requestParameterSupported,
boolean allowUnknownWindowIds)
{
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext externalContext = facesContext.getExternalContext();
Map<String, String> requestParameterMap = externalContext.getRequestParameterMap();
Map<String, Object> requestMap = externalContext.getRequestMap();
//try to find id in request map
String id = tryToFindWindowIdInRequestMap(requestMap);
if((id == null || id.length() == 0) && windowHandler != null)
{
id = windowHandler.restoreWindowId(facesContext.getExternalContext());
}
if(id == null || id.length() == 0)
{
//depending on the config we have to check it in case of server-side window-ids +a forced id for the request
id = tryToRestoreWindowIdFromRequestParameterMap(requestParameterSupported, requestParameterMap);
}
if(id != null && id.length() > 0 &&
(!cacheWindowId(externalContext, id, allowUnknownWindowIds) ||
WindowContextManager.AUTOMATED_ENTRY_POINT_PARAMETER_KEY.equals(id)))
{
id = null;
}
if (id != null && id.length() > 0)
{
return id;
}
if("".equals(id))
{
//return null to force a new window id - e.g. in case of #{currentWindow.useNewId}
return null;
}
//try to restore id from component
WindowContextIdHolderComponent windowContextIdHolder = getWindowContextIdHolderComponent(facesContext);
if (windowContextIdHolder != null)
{
//TODO cache for request
id = windowContextIdHolder.getWindowContextId();
if(id != null && !cacheWindowId(externalContext, id, allowUnknownWindowIds))
{
id = null;
}
if(id != null)
{
requestMap.put(WindowContextManager.WINDOW_CONTEXT_ID_PARAMETER_KEY,
windowContextIdHolder.getWindowContextId());
}
}
return id;
}