if (containerURL instanceof ActionURL)
{
ActionURL actionURL = (ActionURL)containerURL;
StateString state = actionURL.getInteractionState();
if (state != null && !state.getStringValue().equals(StateString.JBPNS_PREFIX))
{
appendParameter(baseURL, INTERACTION_STATE_PARAM_NAME, state.getStringValue());
}
state = actionURL.getNavigationalState();
if (state != null && !state.getStringValue().equals(StateString.JBPNS_PREFIX))
{
appendParameter(baseURL, NAVIGATIONAL_STATE_PARAM_NAME, state.getStringValue());
}
WindowState windowState = actionURL.getWindowState();
if (windowState != null)
{
appendParameter(baseURL, Constants.WINDOW_STATE_PARAMETER, windowState.toString());
}
Mode mode = actionURL.getMode();
if (mode != null)
{
appendParameter(baseURL, Constants.PORTLET_MODE_PARAMETER, mode.toString());
}
}
else if (containerURL instanceof ResourceURL)
{
ResourceURL resourceURL = (ResourceURL)containerURL;
appendParameter(baseURL, Constants.RESOURCE_ID_PARAMETER, resourceURL.getResourceId());
CacheLevel cachability = resourceURL.getCacheability();
if (cachability != null)
{
appendParameter(baseURL, Constants.CACHELEVEL_PARAMETER, cachability.name());
}
StateString resourceState = resourceURL.getResourceState();
if (resourceState != null && !resourceState.getStringValue().equals(StateString.JBPNS_PREFIX))
{
appendParameter(baseURL, RESOURCE_STATE_PARAM_NAME, resourceState.getStringValue());
}
resourceState = resourceURL.getNavigationalState();
if (resourceState != null && !resourceState.getStringValue().equals(StateString.JBPNS_PREFIX))
{
appendParameter(baseURL, NAVIGATIONAL_STATE_PARAM_NAME, resourceState.getStringValue());
}
WindowState windowState = resourceURL.getWindowState();
if (windowState != null)
{
appendParameter(baseURL, Constants.WINDOW_STATE_PARAMETER, windowState.toString());
}
Mode mode = resourceURL.getMode();
if (mode != null)
{
appendParameter(baseURL, Constants.PORTLET_MODE_PARAMETER, mode.toString());
}
}
else
{
RenderURL renderURL = (RenderURL)containerURL;
WindowState windowState = renderURL.getWindowState();
if (windowState != null)//&& !windowState.equals(WindowState.NORMAL))
{
appendParameter(baseURL, Constants.WINDOW_STATE_PARAMETER, windowState.toString());
}
Mode mode = renderURL.getMode();
if (mode != null && !mode.equals(Mode.VIEW))
{
appendParameter(baseURL, Constants.PORTLET_MODE_PARAMETER, mode.toString());
}
Map<String, String[]> publicNSChanges = renderURL.getPublicNavigationalStateChanges();
if (ParameterValidation.existsAndIsNotEmpty(publicNSChanges))
{
for (String key : publicNSChanges.keySet())
{
String[] values = publicNSChanges.get(key);
if (values != null && values.length > 0)
{
for (String value : values)
{
appendParameter(baseURL, key, value);
}
}
else
{
appendParameter(baseURL, "removePP", key);
}
}
}
StateString state = renderURL.getNavigationalState();
if (state != null && !state.getStringValue().equals(StateString.JBPNS_PREFIX))
{
appendParameter(baseURL, NAVIGATIONAL_STATE_PARAM_NAME, state.getStringValue());
}
}
return baseURL.toString();
}