Repository: incubator-ranger Updated Branches: refs/heads/ranger-0.5 24406a046 -> 0c9418cf8
RANGER-831: policy version incremented twice when resources are updated Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/0c9418cf Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/0c9418cf Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/0c9418cf Branch: refs/heads/ranger-0.5 Commit: 0c9418cf8465e5757440eef9c8a706c4b0584538 Parents: 24406a0 Author: Gautam Borad <[email protected]> Authored: Fri Jan 15 14:23:17 2016 -0800 Committer: Gautam Borad <[email protected]> Committed: Tue Feb 2 11:30:24 2016 +0530 ---------------------------------------------------------------------- .../ranger/service/RangerBaseModelService.java | 112 +++++++------------ 1 file changed, 42 insertions(+), 70 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/0c9418cf/security-admin/src/main/java/org/apache/ranger/service/RangerBaseModelService.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerBaseModelService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerBaseModelService.java index 4a1f27c..26fe439 100644 --- a/security-admin/src/main/java/org/apache/ranger/service/RangerBaseModelService.java +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerBaseModelService.java @@ -160,80 +160,49 @@ public abstract class RangerBaseModelService<T extends XXDBBase, V extends Range return mapEntityToViewBean(vObj, entityObj); } - protected T populateEntityBean(V vObj, int operationContext) { - T entityObj; - - Date createTime = null; - Date updTime = null; - Long createdById = null; - Long updById = null; - - if (operationContext == OPERATION_CREATE_CONTEXT) { - entityObj = createEntityObject(); - - if(!populateExistingBaseFields) { - createTime = DateUtil.getUTCDate(); - updTime = DateUtil.getUTCDate(); - createdById = ContextUtil.getCurrentUserId(); - updById = ContextUtil.getCurrentUserId(); - } else if(populateExistingBaseFields) { - createTime = vObj.getCreateTime() != null ? vObj.getCreateTime() : DateUtil.getUTCDate(); - updTime = vObj.getUpdateTime() != null ? vObj.getUpdateTime() : DateUtil.getUTCDate(); - - // If this is the case then vObj.createdBy and vObj.updatedBy must be loginId of user. - XXPortalUser createdByUser = daoMgr.getXXPortalUser().findByLoginId(vObj.getCreatedBy()); - XXPortalUser updByUser = daoMgr.getXXPortalUser().findByLoginId(vObj.getUpdatedBy()); - - if(createdByUser != null) { - createdById = createdByUser.getId(); - } else { - createdById = ContextUtil.getCurrentUserId(); - } + protected T populateEntityBeanForCreate(T entityObj, V vObj) { + if(!populateExistingBaseFields) { + entityObj.setCreateTime(DateUtil.getUTCDate()); + entityObj.setUpdateTime(entityObj.getCreateTime()); + entityObj.setAddedByUserId(ContextUtil.getCurrentUserId()); + entityObj.setUpdatedByUserId(entityObj.getAddedByUserId()); + } else if(populateExistingBaseFields) { + XXPortalUser createdByUser = daoMgr.getXXPortalUser().findByLoginId(vObj.getCreatedBy()); + XXPortalUser updByUser = daoMgr.getXXPortalUser().findByLoginId(vObj.getUpdatedBy()); + + entityObj.setId(vObj.getId()); + entityObj.setCreateTime(vObj.getCreateTime() != null ? vObj.getCreateTime() : DateUtil.getUTCDate()); + entityObj.setUpdateTime(vObj.getUpdateTime() != null ? vObj.getUpdateTime() : DateUtil.getUTCDate()); + entityObj.setAddedByUserId(createdByUser != null ? createdByUser.getId() : ContextUtil.getCurrentUserId()); + entityObj.setUpdatedByUserId(updByUser != null ? updByUser.getId() : ContextUtil.getCurrentUserId()); + } - if(updByUser != null) { - updById = updByUser.getId(); - } else { - updById = ContextUtil.getCurrentUserId(); - } - entityObj.setId(vObj.getId()); - } - } else if (operationContext == OPERATION_UPDATE_CONTEXT) { - entityObj = getDao().getById(vObj.getId()); + return mapViewToEntityBean(vObj, entityObj, OPERATION_CREATE_CONTEXT); + } - if (entityObj == null) { - throw restErrorUtil.createRESTException( - "No Object found to update.", - MessageEnums.DATA_NOT_FOUND); - } + protected T populateEntityBeanForUpdate(T entityObj, V vObj) { + if (entityObj == null) { + throw restErrorUtil.createRESTException( + "No Object found to update.", + MessageEnums.DATA_NOT_FOUND); + } - createTime = entityObj.getCreateTime(); - if (createTime == null) { - createTime = DateUtil.getUTCDate(); - } + T ret = mapViewToEntityBean(vObj, entityObj, OPERATION_UPDATE_CONTEXT); - createdById = entityObj.getAddedByUserId(); - if (createdById == null) { - createdById = ContextUtil.getCurrentUserId(); - } - - if(populateExistingBaseFields) { - updTime = entityObj.getUpdateTime(); - updById = entityObj.getUpdatedByUserId(); - } else { - updTime = DateUtil.getUTCDate(); - updById = ContextUtil.getCurrentUserId(); - } - } else { - throw restErrorUtil.createRESTException( - "Error while populating EntityBean", - MessageEnums.INVALID_INPUT_DATA); + if (ret.getCreateTime() == null) { + ret.setCreateTime(DateUtil.getUTCDate()); + } + + if (ret.getAddedByUserId() == null) { + ret.setAddedByUserId(ContextUtil.getCurrentUserId()); } - entityObj.setAddedByUserId(createdById); - entityObj.setUpdatedByUserId(updById); - entityObj.setCreateTime(createTime); - entityObj.setUpdateTime(updTime); - return mapViewToEntityBean(vObj, entityObj, operationContext); + if(!populateExistingBaseFields) { + ret.setUpdateTime(DateUtil.getUTCDate()); + ret.setUpdatedByUserId(ContextUtil.getCurrentUserId()); + } + + return ret; } protected abstract void validateForCreate(V vObj); @@ -242,7 +211,10 @@ public abstract class RangerBaseModelService<T extends XXDBBase, V extends Range public T preCreate(V vObj) { validateForCreate(vObj); - return populateEntityBean(vObj, OPERATION_CREATE_CONTEXT); + + T entityObj = createEntityObject(); + + return populateEntityBeanForCreate(entityObj, vObj); } public V postCreate(T xObj) { @@ -286,7 +258,7 @@ public abstract class RangerBaseModelService<T extends XXDBBase, V extends Range viewBaseBean.getId(), null, "preUpdate: id not found."); } validateForUpdate(viewBaseBean, resource); - return populateEntityBean(viewBaseBean, OPERATION_UPDATE_CONTEXT); + return populateEntityBeanForUpdate(resource, viewBaseBean); } public boolean delete(V vObj) {
