001
014
015 package com.liferay.portlet.portletconfiguration.action;
016
017 import com.liferay.portal.kernel.log.Log;
018 import com.liferay.portal.kernel.log.LogFactoryUtil;
019 import com.liferay.portal.kernel.portlet.ConfigurationAction;
020 import com.liferay.portal.kernel.portlet.ResourceServingConfigurationAction;
021 import com.liferay.portal.kernel.servlet.SessionErrors;
022 import com.liferay.portal.kernel.util.Validator;
023 import com.liferay.portal.model.Portlet;
024 import com.liferay.portal.security.auth.PrincipalException;
025 import com.liferay.portal.struts.PortletAction;
026 import com.liferay.portal.util.WebKeys;
027
028 import javax.portlet.ActionRequest;
029 import javax.portlet.ActionResponse;
030 import javax.portlet.PortletConfig;
031 import javax.portlet.RenderRequest;
032 import javax.portlet.RenderResponse;
033 import javax.portlet.ResourceRequest;
034 import javax.portlet.ResourceResponse;
035
036 import org.apache.struts.action.ActionForm;
037 import org.apache.struts.action.ActionForward;
038 import org.apache.struts.action.ActionMapping;
039
040
044 public class EditConfigurationAction extends PortletAction {
045
046 @Override
047 public void processAction(
048 ActionMapping actionMapping, ActionForm actionForm,
049 PortletConfig portletConfig, ActionRequest actionRequest,
050 ActionResponse actionResponse)
051 throws Exception {
052
053 actionRequest = ActionUtil.getWrappedActionRequest(actionRequest, null);
054
055 Portlet portlet = null;
056
057 try {
058 portlet = ActionUtil.getPortlet(actionRequest);
059 }
060 catch (PrincipalException pe) {
061 SessionErrors.add(
062 actionRequest, PrincipalException.class.getName());
063
064 setForward(actionRequest, "portlet.portlet_configuration.error");
065
066 return;
067 }
068
069 ConfigurationAction configurationAction = getConfigurationAction(
070 portlet);
071
072 if (configurationAction == null) {
073 return;
074 }
075
076 configurationAction.processAction(
077 portletConfig, actionRequest, actionResponse);
078 }
079
080 @Override
081 public ActionForward render(
082 ActionMapping actionMapping, ActionForm actionForm,
083 PortletConfig portletConfig, RenderRequest renderRequest,
084 RenderResponse renderResponse)
085 throws Exception {
086
087 renderRequest = ActionUtil.getWrappedRenderRequest(renderRequest, null);
088
089 Portlet portlet = null;
090
091 try {
092 portlet = ActionUtil.getPortlet(renderRequest);
093 }
094 catch (PrincipalException pe) {
095 SessionErrors.add(
096 renderRequest, PrincipalException.class.getName());
097
098 return actionMapping.findForward(
099 "portlet.portlet_configuration.error");
100 }
101
102 renderResponse.setTitle(ActionUtil.getTitle(portlet, renderRequest));
103
104 ConfigurationAction configurationAction = getConfigurationAction(
105 portlet);
106
107 if (configurationAction != null) {
108 String path = configurationAction.render(
109 portletConfig, renderRequest, renderResponse);
110
111 if (_log.isDebugEnabled()) {
112 _log.debug("Configuration action returned render path " + path);
113 }
114
115 if (Validator.isNotNull(path)) {
116 renderRequest.setAttribute(
117 WebKeys.CONFIGURATION_ACTION_PATH, path);
118 }
119 else {
120 _log.error("Configuration action returned a null path");
121 }
122 }
123
124 return actionMapping.findForward(
125 getForward(
126 renderRequest,
127 "portlet.portlet_configuration.edit_configuration"));
128 }
129
130 @Override
131 public void serveResource(
132 ActionMapping actionMapping, ActionForm actionForm,
133 PortletConfig portletConfig, ResourceRequest resourceRequest,
134 ResourceResponse resourceResponse)
135 throws Exception {
136
137 resourceRequest = ActionUtil.getWrappedResourceRequest(
138 resourceRequest, null);
139
140 Portlet portlet = null;
141
142 try {
143 portlet = ActionUtil.getPortlet(resourceRequest);
144 }
145 catch (PrincipalException pe) {
146 return;
147 }
148
149 ResourceServingConfigurationAction resourceServingConfigurationAction =
150 (ResourceServingConfigurationAction)getConfigurationAction(portlet);
151
152 if (resourceServingConfigurationAction == null) {
153 return;
154 }
155
156 resourceServingConfigurationAction.serveResource(
157 portletConfig, resourceRequest, resourceResponse);
158 }
159
160 protected ConfigurationAction getConfigurationAction(Portlet portlet)
161 throws Exception {
162
163 if (portlet == null) {
164 return null;
165 }
166
167 ConfigurationAction configurationAction =
168 portlet.getConfigurationActionInstance();
169
170 if (configurationAction == null) {
171 _log.error(
172 "Configuration action for portlet " + portlet.getPortletId() +
173 " is null");
174 }
175
176 return configurationAction;
177 }
178
179 private static Log _log = LogFactoryUtil.getLog(
180 EditConfigurationAction.class);
181
182 }