1
22
23 package com.liferay.portal.kernel.portlet;
24
25 import com.liferay.portal.kernel.servlet.SessionErrors;
26 import com.liferay.portal.kernel.servlet.SessionMessages;
27 import com.liferay.portal.kernel.util.MethodCache;
28 import com.liferay.portal.kernel.util.ParamUtil;
29 import com.liferay.portal.kernel.util.Validator;
30
31 import java.io.IOException;
32
33 import java.lang.reflect.InvocationTargetException;
34 import java.lang.reflect.Method;
35
36 import javax.portlet.ActionRequest;
37 import javax.portlet.ActionResponse;
38 import javax.portlet.GenericPortlet;
39 import javax.portlet.PortletException;
40 import javax.portlet.PortletMode;
41 import javax.portlet.RenderRequest;
42 import javax.portlet.RenderResponse;
43 import javax.portlet.WindowState;
44
45
51 public class LiferayPortlet extends GenericPortlet {
52
53 public void processAction(
54 ActionRequest actionRequest, ActionResponse actionResponse)
55 throws IOException, PortletException {
56
57 if (!callActionMethod(actionRequest, actionResponse)) {
58 return;
59 }
60
61 if (SessionErrors.isEmpty(actionRequest)) {
62 SessionMessages.add(actionRequest, "request_processed");
63 }
64
65 String redirect = ParamUtil.getString(actionRequest, "redirect");
66
67 actionResponse.sendRedirect(redirect);
68 }
69
70 protected boolean callActionMethod(
71 ActionRequest actionRequest, ActionResponse actionResponse)
72 throws IOException, PortletException {
73
74 String actionName = ParamUtil.getString(
75 actionRequest, ActionRequest.ACTION_NAME);
76
77 if (Validator.isNull(actionName)) {
78 return false;
79 }
80
81 try {
82 Method method = MethodCache.get(
83 getClass().getName(), actionName,
84 new Class[] {ActionRequest.class, ActionResponse.class});
85
86 method.invoke(this, actionRequest, actionResponse);
87
88 return true;
89 }
90 catch (InvocationTargetException ite) {
91 Throwable cause = ite.getCause();
92
93 if (cause != null) {
94 throw new PortletException(cause);
95 }
96 else {
97 throw new PortletException(ite);
98 }
99 }
100 catch (Exception e) {
101 throw new PortletException(e);
102 }
103 }
104
105 protected void doDispatch(
106 RenderRequest renderRequest, RenderResponse renderResponse)
107 throws IOException, PortletException {
108
109 WindowState state = renderRequest.getWindowState();
110
111 if (!state.equals(WindowState.MINIMIZED)) {
112 PortletMode mode = renderRequest.getPortletMode();
113
114 if (mode.equals(PortletMode.VIEW)) {
115 doView(renderRequest, renderResponse);
116 }
117 else if (mode.equals(LiferayPortletMode.ABOUT)) {
118 doAbout(renderRequest, renderResponse);
119 }
120 else if (mode.equals(LiferayPortletMode.CONFIG)) {
121 doConfig(renderRequest, renderResponse);
122 }
123 else if (mode.equals(PortletMode.EDIT)) {
124 doEdit(renderRequest, renderResponse);
125 }
126 else if (mode.equals(LiferayPortletMode.EDIT_DEFAULTS)) {
127 doEditDefaults(renderRequest, renderResponse);
128 }
129 else if (mode.equals(LiferayPortletMode.EDIT_GUEST)) {
130 doEditGuest(renderRequest, renderResponse);
131 }
132 else if (mode.equals(PortletMode.HELP)) {
133 doHelp(renderRequest, renderResponse);
134 }
135 else if (mode.equals(LiferayPortletMode.PREVIEW)) {
136 doPreview(renderRequest, renderResponse);
137 }
138 else if (mode.equals(LiferayPortletMode.PRINT)) {
139 doPrint(renderRequest, renderResponse);
140 }
141 else {
142 throw new PortletException(mode.toString());
143 }
144 }
145 }
146
147 protected void doAbout(
148 RenderRequest renderRequest, RenderResponse renderResponse)
149 throws IOException, PortletException {
150
151 throw new PortletException("doAbout method not implemented");
152 }
153
154 protected void doConfig(
155 RenderRequest renderRequest, RenderResponse renderResponse)
156 throws IOException, PortletException {
157
158 throw new PortletException("doConfig method not implemented");
159 }
160
161 protected void doEditDefaults(
162 RenderRequest renderRequest, RenderResponse renderResponse)
163 throws IOException, PortletException {
164
165 throw new PortletException("doEditDefaults method not implemented");
166 }
167
168 protected void doEditGuest(
169 RenderRequest renderRequest, RenderResponse renderResponse)
170 throws IOException, PortletException {
171
172 throw new PortletException("doEditGuest method not implemented");
173 }
174
175 protected void doPreview(
176 RenderRequest renderRequest, RenderResponse renderResponse)
177 throws IOException, PortletException {
178
179 throw new PortletException("doPreview method not implemented");
180 }
181
182 protected void doPrint(
183 RenderRequest renderRequest, RenderResponse renderResponse)
184 throws IOException, PortletException {
185
186 throw new PortletException("doPrint method not implemented");
187 }
188
189 }