001
014
015 package com.liferay.portlet.wiki.action;
016
017 import com.liferay.portal.kernel.servlet.SessionErrors;
018 import com.liferay.portal.security.auth.PrincipalException;
019 import com.liferay.portal.struts.PortletAction;
020 import com.liferay.portlet.wiki.NoSuchNodeException;
021 import com.liferay.portlet.wiki.model.WikiNode;
022
023 import javax.portlet.PortletConfig;
024 import javax.portlet.RenderRequest;
025 import javax.portlet.RenderResponse;
026
027 import org.apache.struts.action.ActionForm;
028 import org.apache.struts.action.ActionForward;
029 import org.apache.struts.action.ActionMapping;
030
031
034 public class ViewNodeAction extends PortletAction {
035
036 public static ActionForward viewNode(
037 ActionMapping mapping, RenderRequest renderRequest,
038 String defaultForward)
039 throws Exception {
040
041 try {
042 WikiNode node = ActionUtil.getNode(renderRequest);
043
044 if (node == null) {
045 ActionUtil.getFirstVisibleNode(renderRequest);
046 }
047 }
048 catch (Exception e) {
049 if (e instanceof NoSuchNodeException ||
050 e instanceof PrincipalException) {
051
052 SessionErrors.add(renderRequest, e.getClass().getName());
053
054 return mapping.findForward("portlet.wiki.error");
055 }
056 else {
057 throw e;
058 }
059 }
060
061 return mapping.findForward(defaultForward);
062 }
063
064 public ActionForward render(
065 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
066 RenderRequest renderRequest, RenderResponse renderResponse)
067 throws Exception {
068
069 return viewNode(
070 mapping, renderRequest,
071 getForward(renderRequest, "portlet.wiki.view_node"));
072 }
073
074 }