//Get or create the parent portlet URL
final IPortletWindowId parentPortletWindowId = this.parentPortletWindow.getPortletWindowId();
final PortletUrl parentPortletUrl = new PortletUrl(parentPortletWindowId);
this.portletDelegationManager.setParentPortletUrl(request, parentPortletUrl);
final DelegateState delegateState = delegationRequest.getDelegateState();
if (delegateState != null) {
final IPortletWindowId portletWindowId = this.portletWindow.getPortletWindowId();
//Get or create the delegate portlet URL
PortletUrl delegatePortletUrl = this.portletRequestParameterManager.getPortletRequestInfo(request, portletWindowId);
if (delegatePortletUrl == null) {
delegatePortletUrl = new PortletUrl(portletWindowId);
this.portletRequestParameterManager.setAdditionalPortletUrl(request, delegatePortletUrl);
}
parentPortletUrl.setDelegatePortletUrl(delegatePortletUrl);
final PortletMode mode = delegateState.getPortletMode();
delegatePortletUrl.setPortletMode(mode);
final WindowState state = delegateState.getWindowState();
delegatePortletUrl.setWindowState(state);
}
final WindowState parentWindowState = delegationRequest.getParentWindowState();
if (parentWindowState != null) {