/**
* 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.portal.security.service.access.policy.internal;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.module.configuration.ConfigurationException;
import com.liferay.portal.kernel.module.configuration.ConfigurationProvider;
import com.liferay.portal.kernel.security.service.access.policy.ServiceAccessPolicy;
import com.liferay.portal.kernel.security.service.access.policy.ServiceAccessPolicyManager;
import com.liferay.portal.kernel.settings.CompanyServiceSettingsLocator;
import com.liferay.portal.security.service.access.policy.configuration.SAPConfiguration;
import com.liferay.portal.security.service.access.policy.constants.SAPConstants;
import com.liferay.portal.security.service.access.policy.model.SAPEntry;
import com.liferay.portal.security.service.access.policy.service.SAPEntryService;
import java.util.ArrayList;
import java.util.List;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
/**
* @author Mika Koivisto
*/
@Component(immediate = true, service = ServiceAccessPolicyManager.class)
public class ServiceAccessPolicyManagerImpl
implements ServiceAccessPolicyManager {
@Override
public String getDefaultApplicationServiceAccessPolicyName(long companyId) {
SAPConfiguration sapConfiguration = getSAPConfiguration(companyId);
if (sapConfiguration != null) {
return sapConfiguration.systemDefaultSAPEntryName();
}
return null;
}
@Override
public String getDefaultUserServiceAccessPolicyName(long companyId) {
SAPConfiguration sapConfiguration = getSAPConfiguration(companyId);
if (sapConfiguration != null) {
return sapConfiguration.systemUserPasswordSAPEntryName();
}
return null;
}
@Override
public List<ServiceAccessPolicy> getServiceAccessPolicies(
long companyId, int start, int end) {
return toServiceAccessPolicies(
_sapEntryService.getCompanySAPEntries(companyId, start, end));
}
@Override
public int getServiceAccessPoliciesCount(long companyId) {
return _sapEntryService.getCompanySAPEntriesCount(companyId);
}
@Override
public ServiceAccessPolicy getServiceAccessPolicy(
long companyId, String name) {
try {
return toServiceAccessPolicy(
_sapEntryService.getSAPEntry(companyId, name));
}
catch (PortalException pe) {
// LPS-52675
if (_log.isDebugEnabled()) {
_log.debug(pe, pe);
}
return null;
}
}
protected SAPConfiguration getSAPConfiguration(long companyId) {
try {
return _configurationProvider.getConfiguration(
SAPConfiguration.class,
new CompanyServiceSettingsLocator(
companyId, SAPConstants.SERVICE_NAME));
}
catch (ConfigurationException ce) {
if (_log.isWarnEnabled()) {
_log.warn("Unable to get SAP configuration", ce);
}
return null;
}
}
@Reference(unbind = "-")
protected void setConfigurationProvider(
ConfigurationProvider configurationProvider) {
_configurationProvider = configurationProvider;
}
@Reference(unbind = "-")
protected void setSAPEntryService(SAPEntryService sapEntryService) {
_sapEntryService = sapEntryService;
}
protected List<ServiceAccessPolicy> toServiceAccessPolicies(
List<SAPEntry> sapEntries) {
if (sapEntries == null) {
return null;
}
List<ServiceAccessPolicy> serviceAccessPolicies = new ArrayList<>(
sapEntries.size());
for (SAPEntry sapEntry : sapEntries) {
ServiceAccessPolicy serviceAccessPolicy = toServiceAccessPolicy(
sapEntry);
serviceAccessPolicies.add(serviceAccessPolicy);
}
return serviceAccessPolicies;
}
protected ServiceAccessPolicy toServiceAccessPolicy(SAPEntry sapEntry) {
if (sapEntry != null) {
return new ServiceAccessPolicyImpl(sapEntry);
}
return null;
}
private static final Log _log = LogFactoryUtil.getLog(
ServiceAccessPolicyManagerImpl.class);
private ConfigurationProvider _configurationProvider;
private SAPEntryService _sapEntryService;
}