/**
* 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.portlet.configuration.toolbar.contributor.locator.internal;
import com.liferay.portal.kernel.module.framework.ModuleServiceLifecycle;
import com.liferay.portal.kernel.portlet.toolbar.contributor.locator.PortletToolbarContributorLocator;
import org.osgi.framework.BundleContext;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Deactivate;
import org.osgi.service.component.annotations.Reference;
/**
* Provides an implementation of {@link PortletToolbarContributorLocator} for
* portlets using Struts as MVC pattern, allowing them to have a different
* {@link
* com.liferay.portal.kernel.portlet.toolbar.contributor.PortletToolbarContributor}
* for different struts actions.
*
* <p>
* PortletToolbarContributor implementations must be registered in the OSGI
* Registry using the following properties:
* </p>
*
* <ul>
* <li>
* "javax.portlet.name" the ID of the portlet whose portlet toolbar to
* extend.
* </li>
* <li>
* "struts.action" this property is optional. If this property is not
* present, the portlet toolbar is always extended. If it contains a value
* (e.g., <code>/blogs/view_entry</code>) the portlet toolbar is extended only
* for that specific struts action. If the value is "-" the portlet
* toolbar is extended when there is no <code>strutsAction</code> specified in
* the request (typically when rendering the first view of the portlet).
* </li>
* </ul>
*
* <p>
* A single PortletToolbarContributor implementation can be used for different
* portlets and struts actions by including multiple times with the same
* properties.
* </p>
*
* @author Sergio González
*/
@Component(immediate = true, service = PortletToolbarContributorLocator.class)
public class StrutsPortletToolbarContributorLocator
extends BasePortletToolbarContributorLocator {
@Activate
@Override
protected void activate(BundleContext bundleContext) {
super.activate(bundleContext);
}
@Deactivate
@Override
protected void deactivate() {
super.deactivate();
}
@Override
protected String getParameterName() {
return "struts_action";
}
@Override
protected String getPropertyName() {
return "struts.action";
}
@Reference(target = ModuleServiceLifecycle.PORTAL_INITIALIZED, unbind = "-")
protected void setModuleServiceLifecycle(
ModuleServiceLifecycle moduleServiceLifecycle) {
}
}