001
014
015 package com.liferay.portal.repository.capabilities;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.kernel.exception.SystemException;
019 import com.liferay.portal.kernel.repository.DocumentRepository;
020 import com.liferay.portal.kernel.repository.capabilities.Capability;
021 import com.liferay.portal.kernel.repository.capabilities.ConfigurationCapability;
022 import com.liferay.portal.kernel.util.StringPool;
023 import com.liferay.portal.kernel.util.UnicodeProperties;
024 import com.liferay.portal.model.Repository;
025 import com.liferay.portal.service.RepositoryLocalServiceUtil;
026
027
030 public class ConfigurationCapabilityImpl implements ConfigurationCapability {
031
032 public ConfigurationCapabilityImpl(DocumentRepository repository) {
033 _repository = repository;
034 }
035
036 @Override
037 public String getProperty(Class<? extends Capability> owner, String key) {
038 try {
039 Repository repository = RepositoryLocalServiceUtil.getRepository(
040 _repository.getRepositoryId());
041
042 UnicodeProperties typeSettingsProperties =
043 repository.getTypeSettingsProperties();
044
045 return typeSettingsProperties.getProperty(
046 _getUniqueKey(owner, key));
047 }
048 catch (PortalException pe) {
049 throw new SystemException(
050 "Unable to read repository configuration property", pe);
051 }
052 }
053
054 @Override
055 public void setProperty(
056 Class<? extends Capability> owner, String key, String value) {
057
058 try {
059 Repository repository = RepositoryLocalServiceUtil.getRepository(
060 _repository.getRepositoryId());
061
062 UnicodeProperties typeSettingsProperties =
063 repository.getTypeSettingsProperties();
064
065 typeSettingsProperties.setProperty(
066 _getUniqueKey(owner, key), value);
067
068 repository.setTypeSettingsProperties(typeSettingsProperties);
069
070 RepositoryLocalServiceUtil.updateRepository(repository);
071 }
072 catch (PortalException pe) {
073 throw new SystemException(
074 "Unable to set repository configuration property", pe);
075 }
076 }
077
078 private String _getUniqueKey(
079 Class<? extends Capability> owner, String key) {
080
081 Class<?> clazz = owner.getClass();
082
083 return clazz.getName() + StringPool.POUND + key;
084 }
085
086 private final DocumentRepository _repository;
087
088 }