/**
* Copyright (c) 2000-present 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.rss.web.internal.portlet.action;
import com.liferay.portal.kernel.portlet.ConfigurationAction;
import com.liferay.portal.kernel.portlet.DefaultConfigurationAction;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.kernel.util.StringUtil;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.rss.web.constants.RSSPortletKeys;
import java.util.LinkedHashMap;
import java.util.Map;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.PortletConfig;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
/**
* @author Brian Wing Shun Chan
*/
@Component(
immediate = true, property = {"javax.portlet.name=" + RSSPortletKeys.RSS},
service = ConfigurationAction.class
)
public class RSSConfigurationAction extends DefaultConfigurationAction {
@Override
public String getJspPath(HttpServletRequest request) {
return "/configuration.jsp";
}
@Override
public void processAction(
PortletConfig portletConfig, ActionRequest actionRequest,
ActionResponse actionResponse)
throws Exception {
updateSubscriptions(actionRequest);
super.processAction(portletConfig, actionRequest, actionResponse);
}
@Override
@Reference(
target = "(osgi.web.symbolicname=com.liferay.rss.web)", unbind = "-"
)
public void setServletContext(ServletContext servletContext) {
super.setServletContext(servletContext);
}
protected void updateSubscriptions(ActionRequest actionRequest)
throws Exception {
int[] subscriptionIndexes = StringUtil.split(
ParamUtil.getString(actionRequest, "subscriptionIndexes"), 0);
Map<String, String> subscriptions = new LinkedHashMap<>();
for (int subscriptionIndex : subscriptionIndexes) {
String url = ParamUtil.getString(
actionRequest, "url" + subscriptionIndex);
String title = ParamUtil.getString(
actionRequest, "title" + subscriptionIndex);
if (Validator.isNull(url)) {
continue;
}
subscriptions.put(url, title);
}
String[] urls = new String[subscriptions.size()];
String[] titles = new String[subscriptions.size()];
int i = 0;
for (Map.Entry<String, String> entry : subscriptions.entrySet()) {
urls[i] = entry.getKey();
titles[i] = entry.getValue();
i++;
}
setPreference(actionRequest, "urls", urls);
setPreference(actionRequest, "titles", titles);
}
}