Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
com.liferay.portal.kernel.portlet.LiferayPortlet Maven / Gradle / Ivy
/**
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.liferay.portal.kernel.portlet;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.language.LanguageUtil;
import com.liferay.portal.kernel.servlet.ServletResponseUtil;
import com.liferay.portal.kernel.servlet.SessionErrors;
import com.liferay.portal.kernel.servlet.SessionMessages;
import com.liferay.portal.kernel.util.ContentTypes;
import com.liferay.portal.kernel.util.GetterUtil;
import com.liferay.portal.kernel.util.JavaConstants;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.portal.kernel.util.WebKeys;
import com.liferay.portal.theme.ThemeDisplay;
import com.liferay.portal.util.PortalUtil;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.GenericPortlet;
import javax.portlet.MimeResponse;
import javax.portlet.PortletConfig;
import javax.portlet.PortletException;
import javax.portlet.PortletMode;
import javax.portlet.PortletRequest;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import javax.portlet.ResourceRequest;
import javax.portlet.ResourceResponse;
import javax.portlet.WindowState;
import javax.servlet.http.HttpServletResponse;
/**
* @author Brian Wing Shun Chan
*/
public class LiferayPortlet extends GenericPortlet {
@Override
public void init() throws PortletException {
super.init();
addProcessActionSuccessMessage = GetterUtil.getBoolean(
getInitParameter("add-process-action-success-action"), true);
}
@Override
public void processAction(
ActionRequest actionRequest, ActionResponse actionResponse)
throws IOException, PortletException {
try {
if (!isProcessActionRequest(actionRequest)) {
return;
}
if (!callActionMethod(actionRequest, actionResponse)) {
return;
}
if (!SessionErrors.isEmpty(actionRequest)) {
return;
}
if (!SessionMessages.isEmpty(actionRequest)) {
return;
}
addSuccessMessage(actionRequest, actionResponse);
sendRedirect(actionRequest, actionResponse);
}
catch (PortletException pe) {
Throwable cause = pe.getCause();
if (isSessionErrorException(cause)) {
SessionErrors.add(actionRequest, cause.getClass(), cause);
}
else {
throw pe;
}
}
}
@Override
public void serveResource(
ResourceRequest resourceRequest, ResourceResponse resourceResponse)
throws IOException, PortletException {
if (!isProcessResourceRequest(resourceRequest)) {
return;
}
super.serveResource(resourceRequest, resourceResponse);
}
protected void addSuccessMessage(
ActionRequest actionRequest, ActionResponse actionResponse) {
if (!addProcessActionSuccessMessage) {
return;
}
String successMessage = ParamUtil.getString(
actionRequest, "successMessage");
SessionMessages.add(actionRequest, "requestProcessed", successMessage);
}
protected boolean callActionMethod(
ActionRequest actionRequest, ActionResponse actionResponse)
throws PortletException {
String actionName = ParamUtil.getString(
actionRequest, ActionRequest.ACTION_NAME);
if (Validator.isNull(actionName) ||
actionName.equals("callActionMethod") ||
actionName.equals("processAction")) {
return false;
}
try {
Method method = getActionMethod(actionName);
method.invoke(this, actionRequest, actionResponse);
return true;
}
catch (NoSuchMethodException nsme) {
try {
super.processAction(actionRequest, actionResponse);
return true;
}
catch (Exception e) {
throw new PortletException(nsme);
}
}
catch (InvocationTargetException ite) {
Throwable cause = ite.getCause();
if (cause != null) {
throw new PortletException(cause);
}
else {
throw new PortletException(ite);
}
}
catch (Exception e) {
throw new PortletException(e);
}
}
@SuppressWarnings("unused")
protected void doAbout(
RenderRequest renderRequest, RenderResponse renderResponse)
throws IOException, PortletException {
throw new PortletException("doAbout method not implemented");
}
@SuppressWarnings("unused")
protected void doConfig(
RenderRequest renderRequest, RenderResponse renderResponse)
throws IOException, PortletException {
throw new PortletException("doConfig method not implemented");
}
@Override
protected void doDispatch(
RenderRequest renderRequest, RenderResponse renderResponse)
throws IOException, PortletException {
if (!isProcessRenderRequest(renderRequest)) {
renderRequest.setAttribute(WebKeys.PORTLET_DECORATE, Boolean.FALSE);
return;
}
WindowState windowState = renderRequest.getWindowState();
if (windowState.equals(WindowState.MINIMIZED)) {
return;
}
PortletMode portletMode = renderRequest.getPortletMode();
if (portletMode.equals(PortletMode.VIEW)) {
doView(renderRequest, renderResponse);
}
else if (portletMode.equals(LiferayPortletMode.ABOUT)) {
doAbout(renderRequest, renderResponse);
}
else if (portletMode.equals(LiferayPortletMode.CONFIG)) {
doConfig(renderRequest, renderResponse);
}
else if (portletMode.equals(PortletMode.EDIT)) {
doEdit(renderRequest, renderResponse);
}
else if (portletMode.equals(LiferayPortletMode.EDIT_DEFAULTS)) {
doEditDefaults(renderRequest, renderResponse);
}
else if (portletMode.equals(LiferayPortletMode.EDIT_GUEST)) {
doEditGuest(renderRequest, renderResponse);
}
else if (portletMode.equals(PortletMode.HELP)) {
doHelp(renderRequest, renderResponse);
}
else if (portletMode.equals(LiferayPortletMode.PREVIEW)) {
doPreview(renderRequest, renderResponse);
}
else if (portletMode.equals(LiferayPortletMode.PRINT)) {
doPrint(renderRequest, renderResponse);
}
else {
throw new PortletException(portletMode.toString());
}
}
@SuppressWarnings("unused")
protected void doEditDefaults(
RenderRequest renderRequest, RenderResponse renderResponse)
throws IOException, PortletException {
throw new PortletException("doEditDefaults method not implemented");
}
@SuppressWarnings("unused")
protected void doEditGuest(
RenderRequest renderRequest, RenderResponse renderResponse)
throws IOException, PortletException {
throw new PortletException("doEditGuest method not implemented");
}
@SuppressWarnings("unused")
protected void doPreview(
RenderRequest renderRequest, RenderResponse renderResponse)
throws IOException, PortletException {
throw new PortletException("doPreview method not implemented");
}
@SuppressWarnings("unused")
protected void doPrint(
RenderRequest renderRequest, RenderResponse renderResponse)
throws IOException, PortletException {
throw new PortletException("doPrint method not implemented");
}
protected Method getActionMethod(String actionName)
throws NoSuchMethodException {
Method method = _actionMethods.get(actionName);
if (method != null) {
return method;
}
Class clazz = getClass();
method = clazz.getMethod(
actionName, ActionRequest.class, ActionResponse.class);
_actionMethods.put(actionName, method);
return method;
}
protected String getRedirect(
ActionRequest actionRequest, ActionResponse actionResponse) {
String redirect = (String)actionRequest.getAttribute(WebKeys.REDIRECT);
if (Validator.isNull(redirect)) {
redirect = ParamUtil.getString(actionRequest, "redirect");
}
return redirect;
}
@Override
protected String getTitle(RenderRequest renderRequest) {
try {
return PortalUtil.getPortletTitle(renderRequest);
}
catch (Exception e) {
return super.getTitle(renderRequest);
}
}
protected boolean isProcessActionRequest(ActionRequest actionRequest) {
return isProcessPortletRequest(actionRequest);
}
protected boolean isProcessPortletRequest(PortletRequest portletRequest) {
return _PROCESS_PORTLET_REQUEST;
}
protected boolean isProcessRenderRequest(RenderRequest renderRequest) {
return isProcessPortletRequest(renderRequest);
}
protected boolean isProcessResourceRequest(
ResourceRequest resourceRequest) {
return isProcessPortletRequest(resourceRequest);
}
protected boolean isSessionErrorException(Throwable cause) {
if (cause instanceof PortalException) {
return true;
}
return false;
}
protected void sendRedirect(
ActionRequest actionRequest, ActionResponse actionResponse)
throws IOException {
String redirect = getRedirect(actionRequest, actionResponse);
if (Validator.isNotNull(redirect)) {
actionResponse.sendRedirect(redirect);
}
}
protected String translate(PortletRequest portletRequest, String key) {
PortletConfig portletConfig =
(PortletConfig)portletRequest.getAttribute(
JavaConstants.JAVAX_PORTLET_CONFIG);
ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(
WebKeys.THEME_DISPLAY);
return LanguageUtil.get(portletConfig, themeDisplay.getLocale(), key);
}
protected String translate(
PortletRequest portletRequest, String key, Object argument) {
PortletConfig portletConfig =
(PortletConfig)portletRequest.getAttribute(
JavaConstants.JAVAX_PORTLET_CONFIG);
ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(
WebKeys.THEME_DISPLAY);
return LanguageUtil.format(
portletConfig, themeDisplay.getLocale(), key, argument);
}
protected String translate(
PortletRequest portletRequest, String key, Object[] arguments) {
PortletConfig portletConfig =
(PortletConfig)portletRequest.getAttribute(
JavaConstants.JAVAX_PORTLET_CONFIG);
ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(
WebKeys.THEME_DISPLAY);
return LanguageUtil.format(
portletConfig, themeDisplay.getLocale(), key, arguments);
}
protected void writeJSON(
PortletRequest portletRequest, ActionResponse actionResponse,
Object json)
throws IOException {
HttpServletResponse response = PortalUtil.getHttpServletResponse(
actionResponse);
response.setContentType(ContentTypes.APPLICATION_JSON);
ServletResponseUtil.write(response, json.toString());
response.flushBuffer();
}
protected void writeJSON(
PortletRequest portletRequest, MimeResponse mimeResponse,
Object json)
throws IOException {
mimeResponse.setContentType(ContentTypes.APPLICATION_JSON);
PortletResponseUtil.write(mimeResponse, json.toString());
mimeResponse.flushBuffer();
}
protected boolean addProcessActionSuccessMessage;
private static final boolean _PROCESS_PORTLET_REQUEST = true;
private Map _actionMethods =
new ConcurrentHashMap();
}