1
22
23 package com.liferay.portlet.messageboards.action;
24
25 import com.liferay.portal.kernel.util.ParamUtil;
26 import com.liferay.portal.struts.ActionConstants;
27 import com.liferay.portal.util.PortletKeys;
28 import com.liferay.portlet.PortletURLImpl;
29 import com.liferay.portlet.messageboards.NoSuchThreadException;
30 import com.liferay.portlet.messageboards.model.MBThread;
31 import com.liferay.portlet.messageboards.service.MBThreadLocalServiceUtil;
32
33 import javax.portlet.PortletMode;
34 import javax.portlet.PortletRequest;
35 import javax.portlet.PortletURL;
36 import javax.portlet.WindowState;
37
38 import javax.servlet.http.HttpServletRequest;
39 import javax.servlet.http.HttpServletResponse;
40 import javax.servlet.jsp.PageContext;
41
42 import org.apache.commons.logging.Log;
43 import org.apache.commons.logging.LogFactory;
44 import org.apache.struts.action.Action;
45 import org.apache.struts.action.ActionForm;
46 import org.apache.struts.action.ActionForward;
47 import org.apache.struts.action.ActionMapping;
48
49
55 public class FindThreadAction extends Action {
56
57 public ActionForward execute(
58 ActionMapping mapping, ActionForm form, HttpServletRequest req,
59 HttpServletResponse res)
60 throws Exception {
61
62 try {
63 long plid = ParamUtil.getLong(req, "p_l_id");
64 long threadId = ParamUtil.getLong(req, "threadId");
65
66 MBThread thread = MBThreadLocalServiceUtil.getThread(threadId);
67
68 PortletURL portletURL = new PortletURLImpl(
69 req, PortletKeys.MESSAGE_BOARDS, plid,
70 PortletRequest.RENDER_PHASE);
71
72 portletURL.setWindowState(WindowState.NORMAL);
73 portletURL.setPortletMode(PortletMode.VIEW);
74
75 portletURL.setParameter(
76 "struts_action", "/message_boards/view_message");
77 portletURL.setParameter(
78 "messageId", String.valueOf(thread.getRootMessageId()));
79
80 res.sendRedirect(portletURL.toString());
81
82 return null;
83 }
84 catch (NoSuchThreadException nste) {
85 if (_log.isWarnEnabled()) {
86 _log.warn(nste);
87 }
88
89 return null;
90 }
91 catch (Exception e) {
92 req.setAttribute(PageContext.EXCEPTION, e);
93
94 return mapping.findForward(ActionConstants.COMMON_ERROR);
95 }
96 }
97
98 private static Log _log = LogFactory.getLog(FindThreadAction.class);
99
100 }