mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
Decrypt zone, cluster, storage details for configuration values (#10237)
Co-authored-by: dahn <daan.hoogland@gmail.com> Co-authored-by: Bryan Lima <42067040+BryanMLima@users.noreply.github.com>
This commit is contained in:
parent
0d5047b8b7
commit
60af31c9c0
@ -19,8 +19,9 @@ package com.cloud.dc;
|
||||
import java.util.Map;
|
||||
|
||||
import com.cloud.utils.db.GenericDao;
|
||||
import org.apache.cloudstack.resourcedetail.ResourceDetailsDao;
|
||||
|
||||
public interface ClusterDetailsDao extends GenericDao<ClusterDetailsVO, Long> {
|
||||
public interface ClusterDetailsDao extends GenericDao<ClusterDetailsVO, Long>, ResourceDetailsDao<ClusterDetailsVO> {
|
||||
Map<String, String> findDetails(long clusterId);
|
||||
|
||||
void persist(long clusterId, Map<String, String> details);
|
||||
|
||||
@ -26,12 +26,13 @@ import org.apache.cloudstack.framework.config.ConfigKey.Scope;
|
||||
import org.apache.cloudstack.framework.config.ScopedConfigStorage;
|
||||
|
||||
import com.cloud.utils.crypt.DBEncryptionUtil;
|
||||
import com.cloud.utils.db.GenericDaoBase;
|
||||
import com.cloud.utils.db.SearchBuilder;
|
||||
import com.cloud.utils.db.SearchCriteria;
|
||||
import com.cloud.utils.db.TransactionLegacy;
|
||||
import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase;
|
||||
|
||||
public class ClusterDetailsDaoImpl extends ResourceDetailsDaoBase<ClusterDetailsVO> implements ClusterDetailsDao, ScopedConfigStorage {
|
||||
|
||||
public class ClusterDetailsDaoImpl extends GenericDaoBase<ClusterDetailsVO, Long> implements ClusterDetailsDao, ScopedConfigStorage {
|
||||
protected final SearchBuilder<ClusterDetailsVO> ClusterSearch;
|
||||
protected final SearchBuilder<ClusterDetailsVO> DetailSearch;
|
||||
|
||||
@ -42,11 +43,11 @@ public class ClusterDetailsDaoImpl extends GenericDaoBase<ClusterDetailsVO, Long
|
||||
|
||||
protected ClusterDetailsDaoImpl() {
|
||||
ClusterSearch = createSearchBuilder();
|
||||
ClusterSearch.and("clusterId", ClusterSearch.entity().getClusterId(), SearchCriteria.Op.EQ);
|
||||
ClusterSearch.and("clusterId", ClusterSearch.entity().getResourceId(), SearchCriteria.Op.EQ);
|
||||
ClusterSearch.done();
|
||||
|
||||
DetailSearch = createSearchBuilder();
|
||||
DetailSearch.and("clusterId", DetailSearch.entity().getClusterId(), SearchCriteria.Op.EQ);
|
||||
DetailSearch.and("clusterId", DetailSearch.entity().getResourceId(), SearchCriteria.Op.EQ);
|
||||
DetailSearch.and("name", DetailSearch.entity().getName(), SearchCriteria.Op.EQ);
|
||||
DetailSearch.done();
|
||||
}
|
||||
@ -66,6 +67,11 @@ public class ClusterDetailsDaoImpl extends GenericDaoBase<ClusterDetailsVO, Long
|
||||
return detail;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addDetail(long resourceId, String key, String value, boolean display) {
|
||||
super.addDetail(new ClusterDetailsVO(resourceId, key, value));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, String> findDetails(long clusterId) {
|
||||
SearchCriteria<ClusterDetailsVO> sc = ClusterSearch.create();
|
||||
@ -138,7 +144,7 @@ public class ClusterDetailsDaoImpl extends GenericDaoBase<ClusterDetailsVO, Long
|
||||
@Override
|
||||
public String getConfigValue(long id, ConfigKey<?> key) {
|
||||
ClusterDetailsVO vo = findDetail(id, key.key());
|
||||
return vo == null ? null : vo.getValue();
|
||||
return vo == null ? null : getActualValue(vo);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -23,11 +23,11 @@ import javax.persistence.GenerationType;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
import org.apache.cloudstack.api.ResourceDetail;
|
||||
|
||||
@Entity
|
||||
@Table(name = "cluster_details")
|
||||
public class ClusterDetailsVO implements InternalIdentity {
|
||||
public class ClusterDetailsVO implements ResourceDetail {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
@ -35,7 +35,7 @@ public class ClusterDetailsVO implements InternalIdentity {
|
||||
private long id;
|
||||
|
||||
@Column(name = "cluster_id")
|
||||
private long clusterId;
|
||||
private long resourceId;
|
||||
|
||||
@Column(name = "name")
|
||||
private String name;
|
||||
@ -47,13 +47,14 @@ public class ClusterDetailsVO implements InternalIdentity {
|
||||
}
|
||||
|
||||
public ClusterDetailsVO(long clusterId, String name, String value) {
|
||||
this.clusterId = clusterId;
|
||||
this.resourceId = clusterId;
|
||||
this.name = name;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public long getClusterId() {
|
||||
return clusterId;
|
||||
@Override
|
||||
public long getResourceId() {
|
||||
return resourceId;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
@ -64,6 +65,11 @@ public class ClusterDetailsVO implements InternalIdentity {
|
||||
return value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDisplay() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
@ -16,7 +16,6 @@
|
||||
// under the License.
|
||||
package com.cloud.dc.dao;
|
||||
|
||||
import org.apache.cloudstack.api.ResourceDetail;
|
||||
import org.apache.cloudstack.framework.config.ConfigKey;
|
||||
import org.apache.cloudstack.framework.config.ConfigKey.Scope;
|
||||
import org.apache.cloudstack.framework.config.ScopedConfigStorage;
|
||||
@ -45,8 +44,8 @@ public class DataCenterDetailsDaoImpl extends ResourceDetailsDaoBase<DataCenterD
|
||||
|
||||
@Override
|
||||
public String getConfigValue(long id, ConfigKey<?> key) {
|
||||
ResourceDetail vo = findDetail(id, key.key());
|
||||
return vo == null ? null : vo.getValue();
|
||||
DataCenterDetailVO vo = findDetail(id, key.key());
|
||||
return vo == null ? null : getActualValue(vo);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -23,18 +23,18 @@ import javax.persistence.GenerationType;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
import org.apache.cloudstack.api.ResourceDetail;
|
||||
|
||||
@Entity
|
||||
@Table(name = "domain_details")
|
||||
public class DomainDetailVO implements InternalIdentity {
|
||||
public class DomainDetailVO implements ResourceDetail {
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
@Column(name = "id")
|
||||
private long id;
|
||||
|
||||
@Column(name = "domain_id")
|
||||
private long domainId;
|
||||
private long resourceId;
|
||||
|
||||
@Column(name = "name")
|
||||
private String name;
|
||||
@ -46,13 +46,14 @@ public class DomainDetailVO implements InternalIdentity {
|
||||
}
|
||||
|
||||
public DomainDetailVO(long domainId, String name, String value) {
|
||||
this.domainId = domainId;
|
||||
this.resourceId = domainId;
|
||||
this.name = name;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public long getDomainId() {
|
||||
return domainId;
|
||||
@Override
|
||||
public long getResourceId() {
|
||||
return resourceId;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
@ -63,6 +64,11 @@ public class DomainDetailVO implements InternalIdentity {
|
||||
return value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDisplay() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
@ -20,8 +20,9 @@ import java.util.Map;
|
||||
|
||||
import com.cloud.domain.DomainDetailVO;
|
||||
import com.cloud.utils.db.GenericDao;
|
||||
import org.apache.cloudstack.resourcedetail.ResourceDetailsDao;
|
||||
|
||||
public interface DomainDetailsDao extends GenericDao<DomainDetailVO, Long> {
|
||||
public interface DomainDetailsDao extends GenericDao<DomainDetailVO, Long>, ResourceDetailsDao<DomainDetailVO> {
|
||||
Map<String, String> findDetails(long domainId);
|
||||
|
||||
void persist(long domainId, Map<String, String> details);
|
||||
@ -31,6 +32,4 @@ public interface DomainDetailsDao extends GenericDao<DomainDetailVO, Long> {
|
||||
void deleteDetails(long domainId);
|
||||
|
||||
void update(long domainId, Map<String, String> details);
|
||||
|
||||
String getActualValue(DomainDetailVO domainDetailVO);
|
||||
}
|
||||
|
||||
@ -24,8 +24,6 @@ import javax.inject.Inject;
|
||||
|
||||
import com.cloud.domain.DomainDetailVO;
|
||||
import com.cloud.domain.DomainVO;
|
||||
import com.cloud.utils.crypt.DBEncryptionUtil;
|
||||
import com.cloud.utils.db.GenericDaoBase;
|
||||
import com.cloud.utils.db.QueryBuilder;
|
||||
import com.cloud.utils.db.SearchBuilder;
|
||||
import com.cloud.utils.db.SearchCriteria;
|
||||
@ -35,9 +33,9 @@ import org.apache.cloudstack.framework.config.ConfigKey;
|
||||
import org.apache.cloudstack.framework.config.ConfigKey.Scope;
|
||||
import org.apache.cloudstack.framework.config.ScopedConfigStorage;
|
||||
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
|
||||
import org.apache.cloudstack.framework.config.impl.ConfigurationVO;
|
||||
import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase;
|
||||
|
||||
public class DomainDetailsDaoImpl extends GenericDaoBase<DomainDetailVO, Long> implements DomainDetailsDao, ScopedConfigStorage {
|
||||
public class DomainDetailsDaoImpl extends ResourceDetailsDaoBase<DomainDetailVO> implements DomainDetailsDao, ScopedConfigStorage {
|
||||
protected final SearchBuilder<DomainDetailVO> domainSearch;
|
||||
|
||||
@Inject
|
||||
@ -47,14 +45,14 @@ public class DomainDetailsDaoImpl extends GenericDaoBase<DomainDetailVO, Long> i
|
||||
|
||||
protected DomainDetailsDaoImpl() {
|
||||
domainSearch = createSearchBuilder();
|
||||
domainSearch.and("domainId", domainSearch.entity().getDomainId(), Op.EQ);
|
||||
domainSearch.and("domainId", domainSearch.entity().getResourceId(), Op.EQ);
|
||||
domainSearch.done();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, String> findDetails(long domainId) {
|
||||
QueryBuilder<DomainDetailVO> sc = QueryBuilder.create(DomainDetailVO.class);
|
||||
sc.and(sc.entity().getDomainId(), Op.EQ, domainId);
|
||||
sc.and(sc.entity().getResourceId(), Op.EQ, domainId);
|
||||
List<DomainDetailVO> results = sc.list();
|
||||
Map<String, String> details = new HashMap<String, String>(results.size());
|
||||
for (DomainDetailVO r : results) {
|
||||
@ -80,11 +78,16 @@ public class DomainDetailsDaoImpl extends GenericDaoBase<DomainDetailVO, Long> i
|
||||
@Override
|
||||
public DomainDetailVO findDetail(long domainId, String name) {
|
||||
QueryBuilder<DomainDetailVO> sc = QueryBuilder.create(DomainDetailVO.class);
|
||||
sc.and(sc.entity().getDomainId(), Op.EQ, domainId);
|
||||
sc.and(sc.entity().getResourceId(), Op.EQ, domainId);
|
||||
sc.and(sc.entity().getName(), Op.EQ, name);
|
||||
return sc.find();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addDetail(long resourceId, String key, String value, boolean display) {
|
||||
super.addDetail(new DomainDetailVO(resourceId, key, value));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteDetails(long domainId) {
|
||||
SearchCriteria<DomainDetailVO> sc = domainSearch.create();
|
||||
@ -129,13 +132,4 @@ public class DomainDetailsDaoImpl extends GenericDaoBase<DomainDetailVO, Long> i
|
||||
}
|
||||
return vo == null ? null : getActualValue(vo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getActualValue(DomainDetailVO domainDetailVO) {
|
||||
ConfigurationVO configurationVO = _configDao.findByName(domainDetailVO.getName());
|
||||
if (configurationVO != null && configurationVO.isEncrypted()) {
|
||||
return DBEncryptionUtil.decrypt(domainDetailVO.getValue());
|
||||
}
|
||||
return domainDetailVO.getValue();
|
||||
}
|
||||
}
|
||||
|
||||
@ -45,7 +45,7 @@ public class StoragePoolDetailsDaoImpl extends ResourceDetailsDaoBase<StoragePoo
|
||||
@Override
|
||||
public String getConfigValue(long id, ConfigKey<?> key) {
|
||||
StoragePoolDetailVO vo = findDetail(id, key.key());
|
||||
return vo == null ? null : vo.getValue();
|
||||
return vo == null ? null : getActualValue(vo);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -23,18 +23,18 @@ import javax.persistence.GenerationType;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
import org.apache.cloudstack.api.ResourceDetail;
|
||||
|
||||
@Entity
|
||||
@Table(name = "account_details")
|
||||
public class AccountDetailVO implements InternalIdentity {
|
||||
public class AccountDetailVO implements ResourceDetail {
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
@Column(name = "id")
|
||||
private long id;
|
||||
|
||||
@Column(name = "account_id")
|
||||
private long accountId;
|
||||
private long resourceId;
|
||||
|
||||
@Column(name = "name")
|
||||
private String name;
|
||||
@ -46,13 +46,14 @@ public class AccountDetailVO implements InternalIdentity {
|
||||
}
|
||||
|
||||
public AccountDetailVO(long accountId, String name, String value) {
|
||||
this.accountId = accountId;
|
||||
this.resourceId = accountId;
|
||||
this.name = name;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public long getAccountId() {
|
||||
return accountId;
|
||||
@Override
|
||||
public long getResourceId() {
|
||||
return resourceId;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
@ -63,6 +64,11 @@ public class AccountDetailVO implements InternalIdentity {
|
||||
return value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDisplay() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
@ -19,8 +19,9 @@ package com.cloud.user;
|
||||
import java.util.Map;
|
||||
|
||||
import com.cloud.utils.db.GenericDao;
|
||||
import org.apache.cloudstack.resourcedetail.ResourceDetailsDao;
|
||||
|
||||
public interface AccountDetailsDao extends GenericDao<AccountDetailVO, Long> {
|
||||
public interface AccountDetailsDao extends GenericDao<AccountDetailVO, Long>, ResourceDetailsDao<AccountDetailVO> {
|
||||
Map<String, String> findDetails(long accountId);
|
||||
|
||||
void persist(long accountId, Map<String, String> details);
|
||||
@ -34,6 +35,4 @@ public interface AccountDetailsDao extends GenericDao<AccountDetailVO, Long> {
|
||||
* they will get created
|
||||
*/
|
||||
void update(long accountId, Map<String, String> details);
|
||||
|
||||
String getActualValue(AccountDetailVO accountDetailVO);
|
||||
}
|
||||
|
||||
@ -23,7 +23,6 @@ import java.util.Optional;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import com.cloud.utils.crypt.DBEncryptionUtil;
|
||||
import org.apache.cloudstack.framework.config.ConfigKey;
|
||||
import org.apache.cloudstack.framework.config.ConfigKey.Scope;
|
||||
import org.apache.cloudstack.framework.config.ScopedConfigStorage;
|
||||
@ -34,16 +33,15 @@ import com.cloud.domain.dao.DomainDetailsDao;
|
||||
import com.cloud.domain.dao.DomainDao;
|
||||
import com.cloud.user.dao.AccountDao;
|
||||
|
||||
import com.cloud.utils.db.GenericDaoBase;
|
||||
import com.cloud.utils.db.QueryBuilder;
|
||||
import com.cloud.utils.db.SearchBuilder;
|
||||
import com.cloud.utils.db.SearchCriteria;
|
||||
import com.cloud.utils.db.SearchCriteria.Op;
|
||||
import com.cloud.utils.db.TransactionLegacy;
|
||||
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
|
||||
import org.apache.cloudstack.framework.config.impl.ConfigurationVO;
|
||||
import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase;
|
||||
|
||||
public class AccountDetailsDaoImpl extends GenericDaoBase<AccountDetailVO, Long> implements AccountDetailsDao, ScopedConfigStorage {
|
||||
public class AccountDetailsDaoImpl extends ResourceDetailsDaoBase<AccountDetailVO> implements AccountDetailsDao, ScopedConfigStorage {
|
||||
protected final SearchBuilder<AccountDetailVO> accountSearch;
|
||||
|
||||
@Inject
|
||||
@ -57,14 +55,14 @@ public class AccountDetailsDaoImpl extends GenericDaoBase<AccountDetailVO, Long>
|
||||
|
||||
protected AccountDetailsDaoImpl() {
|
||||
accountSearch = createSearchBuilder();
|
||||
accountSearch.and("accountId", accountSearch.entity().getAccountId(), Op.EQ);
|
||||
accountSearch.and("accountId", accountSearch.entity().getResourceId(), Op.EQ);
|
||||
accountSearch.done();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, String> findDetails(long accountId) {
|
||||
QueryBuilder<AccountDetailVO> sc = QueryBuilder.create(AccountDetailVO.class);
|
||||
sc.and(sc.entity().getAccountId(), Op.EQ, accountId);
|
||||
sc.and(sc.entity().getResourceId(), Op.EQ, accountId);
|
||||
List<AccountDetailVO> results = sc.list();
|
||||
Map<String, String> details = new HashMap<String, String>(results.size());
|
||||
for (AccountDetailVO r : results) {
|
||||
@ -90,11 +88,16 @@ public class AccountDetailsDaoImpl extends GenericDaoBase<AccountDetailVO, Long>
|
||||
@Override
|
||||
public AccountDetailVO findDetail(long accountId, String name) {
|
||||
QueryBuilder<AccountDetailVO> sc = QueryBuilder.create(AccountDetailVO.class);
|
||||
sc.and(sc.entity().getAccountId(), Op.EQ, accountId);
|
||||
sc.and(sc.entity().getResourceId(), Op.EQ, accountId);
|
||||
sc.and(sc.entity().getName(), Op.EQ, name);
|
||||
return sc.find();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addDetail(long resourceId, String key, String value, boolean display) {
|
||||
super.addDetail(new AccountDetailVO(resourceId, key, value));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteDetails(long accountId) {
|
||||
SearchCriteria<AccountDetailVO> sc = accountSearch.create();
|
||||
@ -154,13 +157,4 @@ public class AccountDetailsDaoImpl extends GenericDaoBase<AccountDetailVO, Long>
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getActualValue(AccountDetailVO accountDetailVO) {
|
||||
ConfigurationVO configurationVO = _configDao.findByName(accountDetailVO.getName());
|
||||
if (configurationVO != null && configurationVO.isEncrypted()) {
|
||||
return DBEncryptionUtil.decrypt(accountDetailVO.getValue());
|
||||
}
|
||||
return accountDetailVO.getValue();
|
||||
}
|
||||
}
|
||||
|
||||
@ -97,4 +97,6 @@ public interface ResourceDetailsDao<R extends ResourceDetail> extends GenericDao
|
||||
public void addDetail(long resourceId, String key, String value, boolean display);
|
||||
|
||||
public List<Long> findResourceIdsByNameAndValueIn(String name, Object[] values);
|
||||
|
||||
String getActualValue(ResourceDetail resourceDetail);
|
||||
}
|
||||
|
||||
@ -20,6 +20,7 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.cloud.utils.crypt.DBEncryptionUtil;
|
||||
import org.apache.cloudstack.api.ResourceDetail;
|
||||
|
||||
import com.cloud.utils.db.GenericDaoBase;
|
||||
@ -28,8 +29,16 @@ import com.cloud.utils.db.SearchBuilder;
|
||||
import com.cloud.utils.db.SearchCriteria;
|
||||
import com.cloud.utils.db.TransactionLegacy;
|
||||
import com.cloud.utils.db.SearchCriteria.Op;
|
||||
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
|
||||
import org.apache.cloudstack.framework.config.impl.ConfigurationVO;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
public abstract class ResourceDetailsDaoBase<R extends ResourceDetail> extends GenericDaoBase<R, Long> implements ResourceDetailsDao<R> {
|
||||
|
||||
@Inject
|
||||
private ConfigurationDao configDao;
|
||||
|
||||
private SearchBuilder<R> AllFieldsSearch;
|
||||
|
||||
public ResourceDetailsDaoBase() {
|
||||
@ -201,4 +210,13 @@ public abstract class ResourceDetailsDaoBase<R extends ResourceDetail> extends G
|
||||
|
||||
return customSearch(sc, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getActualValue(ResourceDetail resourceDetail) {
|
||||
ConfigurationVO configurationVO = configDao.findByName(resourceDetail.getName());
|
||||
if (configurationVO != null && configurationVO.isEncrypted()) {
|
||||
return DBEncryptionUtil.decrypt(resourceDetail.getValue());
|
||||
}
|
||||
return resourceDetail.getValue();
|
||||
}
|
||||
}
|
||||
|
||||
@ -37,7 +37,6 @@ import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase;
|
||||
|
||||
@Component
|
||||
public class ImageStoreDetailsDaoImpl extends ResourceDetailsDaoBase<ImageStoreDetailVO> implements ImageStoreDetailsDao, ScopedConfigStorage {
|
||||
|
||||
protected final SearchBuilder<ImageStoreDetailVO> storeSearch;
|
||||
|
||||
public ImageStoreDetailsDaoImpl() {
|
||||
@ -108,12 +107,11 @@ public class ImageStoreDetailsDaoImpl extends ResourceDetailsDaoBase<ImageStoreD
|
||||
@Override
|
||||
public String getConfigValue(long id, ConfigKey<?> key) {
|
||||
ImageStoreDetailVO vo = findDetail(id, key.key());
|
||||
return vo == null ? null : vo.getValue();
|
||||
return vo == null ? null : getActualValue(vo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addDetail(long resourceId, String key, String value, boolean display) {
|
||||
super.addDetail(new ImageStoreDetailVO(resourceId, key, value, display));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user