/**
* Licensed to Apereo under one or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information regarding copyright ownership. Apereo
* licenses this file to you 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 the
* following location:
*
* <p>http://www.apache.org/licenses/LICENSE-2.0
*
* <p>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.apereo.portal.api.portlet;
import java.util.Collections;
import java.util.Map;
import javax.portlet.ActionResponse;
import javax.portlet.PortletMode;
import javax.portlet.WindowState;
import org.apereo.portal.url.ParameterMap;
/**
* The resulting state of the delegated action request
*
*/
public class DelegationActionResponse extends DelegationResponse {
private final String redirectLocation;
private final String renderUrlParamName;
private final PortletMode portletMode;
private final WindowState windowState;
private final Map<String, String[]> renderParameters;
public DelegationActionResponse(
DelegateState delegateState,
PortletMode portletMode,
WindowState windowState,
Map<String, String[]> renderParameters) {
super(delegateState);
this.portletMode = portletMode;
this.windowState = windowState;
if (renderParameters != null) {
this.renderParameters = new ParameterMap(renderParameters);
} else {
this.renderParameters = Collections.emptyMap();
}
this.redirectLocation = null;
this.renderUrlParamName = null;
}
public DelegationActionResponse(
DelegateState delegateState, String redirectLocation, String renderUrlParamName) {
super(delegateState);
this.redirectLocation = redirectLocation;
this.renderUrlParamName = renderUrlParamName;
this.portletMode = null;
this.windowState = null;
this.renderParameters = Collections.emptyMap();
}
/**
* @return The render url parameter name specified in {@link ActionResponse#sendRedirect(String,
* String)}, null if no redirect was sent
*/
public String getRenderUrlParamName() {
return renderUrlParamName;
}
/**
* @return The url specified in {@link ActionResponse#sendRedirect(String)}, null if no redirect
* was sent
*/
public String getRedirectLocation() {
return this.redirectLocation;
}
public PortletMode getPortletMode() {
return portletMode;
}
public WindowState getWindowState() {
return windowState;
}
public Map<String, String[]> getRenderParameters() {
//Have to clone to make sure the value arrays don't get modified
return new ParameterMap(this.renderParameters);
}
@Override
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
result = prime * result + ((portletMode == null) ? 0 : portletMode.hashCode());
result = prime * result + ((redirectLocation == null) ? 0 : redirectLocation.hashCode());
result = prime * result + ((renderParameters == null) ? 0 : renderParameters.hashCode());
result =
prime * result + ((renderUrlParamName == null) ? 0 : renderUrlParamName.hashCode());
result = prime * result + ((windowState == null) ? 0 : windowState.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (!super.equals(obj)) return false;
if (getClass() != obj.getClass()) return false;
DelegationActionResponse other = (DelegationActionResponse) obj;
if (portletMode == null) {
if (other.portletMode != null) return false;
} else if (!portletMode.equals(other.portletMode)) return false;
if (redirectLocation == null) {
if (other.redirectLocation != null) return false;
} else if (!redirectLocation.equals(other.redirectLocation)) return false;
if (renderParameters == null) {
if (other.renderParameters != null) return false;
} else if (!renderParameters.equals(other.renderParameters)) return false;
if (renderUrlParamName == null) {
if (other.renderUrlParamName != null) return false;
} else if (!renderUrlParamName.equals(other.renderUrlParamName)) return false;
if (windowState == null) {
if (other.windowState != null) return false;
} else if (!windowState.equals(other.windowState)) return false;
return true;
}
@Override
public String toString() {
return "DelegationActionResponse [redirectLocation="
+ redirectLocation
+ ", renderUrlParamName="
+ renderUrlParamName
+ ", portletMode="
+ portletMode
+ ", windowState="
+ windowState
+ ", renderParameters="
+ renderParameters
+ ", getDelegateState()="
+ getDelegateState()
+ "]";
}
}