Repository: incubator-ranger Updated Branches: refs/heads/master 7ecfa0536 -> 53709aad8
RANGER-300 : Preserve ids during migration Signed-off-by: Velmurugan Periasamy <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/53709aad Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/53709aad Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/53709aad Branch: refs/heads/master Commit: 53709aad8bca8b326c81766738a4ffbaeff66fb8 Parents: 7ecfa05 Author: Gautam Borad <[email protected]> Authored: Tue Apr 7 20:26:53 2015 +0530 Committer: Velmurugan Periasamy <[email protected]> Committed: Tue Apr 7 14:28:32 2015 -0400 ---------------------------------------------------------------------- .../org/apache/ranger/biz/ServiceDBStore.java | 26 +- .../org/apache/ranger/common/AppConstants.java | 8 + .../apache/ranger/db/RangerDaoManagerBase.java | 20 ++ .../java/org/apache/ranger/db/XXPolicyDao.java | 8 + .../ranger/db/XXPolicyWithAssignedIdDao.java | 12 + .../java/org/apache/ranger/db/XXServiceDao.java | 8 + .../ranger/db/XXServiceWithAssignedIdDao.java | 12 + .../java/org/apache/ranger/entity/XXPolicy.java | 291 +--------------- .../org/apache/ranger/entity/XXPolicyBase.java | 287 ++++++++++++++++ .../ranger/entity/XXPolicyWithAssignedId.java | 57 +++ .../org/apache/ranger/entity/XXService.java | 343 +------------------ .../org/apache/ranger/entity/XXServiceBase.java | 333 ++++++++++++++++++ .../ranger/entity/XXServiceWithAssignedId.java | 59 ++++ .../ranger/patch/PatchMigration_J10002.java | 49 +++ .../ranger/service/RangerPolicyService.java | 147 +------- .../ranger/service/RangerPolicyServiceBase.java | 165 ++++++++- .../RangerPolicyWithAssignedIdService.java | 61 ++++ .../ranger/service/RangerServiceService.java | 29 +- .../service/RangerServiceServiceBase.java | 28 +- .../RangerServiceWithAssignedIdService.java | 60 ++++ .../resources/META-INF/jpa_named_queries.xml | 8 + 21 files changed, 1222 insertions(+), 789 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/53709aad/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java b/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java index 6333b09..2506d66 100644 --- a/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java +++ b/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java @@ -98,11 +98,13 @@ import org.apache.ranger.plugin.model.RangerServiceDef.RangerServiceConfigDef; import org.apache.ranger.plugin.store.EmbeddedServiceDefsUtil; import org.apache.ranger.plugin.store.AbstractServiceStore; import org.apache.ranger.plugin.util.ServicePolicies; +import org.apache.ranger.service.RangerPolicyWithAssignedIdService; import org.apache.ranger.service.RangerAuditFields; import org.apache.ranger.service.RangerDataHistService; import org.apache.ranger.service.RangerPolicyService; import org.apache.ranger.service.RangerServiceDefService; import org.apache.ranger.service.RangerServiceService; +import org.apache.ranger.service.RangerServiceWithAssignedIdService; import org.apache.ranger.service.XUserService; import org.apache.ranger.view.RangerPolicyList; import org.apache.ranger.view.RangerServiceDefList; @@ -159,6 +161,12 @@ public class ServiceDBStore extends AbstractServiceStore { @Autowired RangerBizUtil bizUtil; + + @Autowired + RangerPolicyWithAssignedIdService assignedIdPolicyService; + + @Autowired + RangerServiceWithAssignedIdService svcServiceWithAssignedId; private static volatile boolean legacyServiceDefsInitDone = false; private Boolean populateExistingBaseFields = false; @@ -444,9 +452,9 @@ public class ServiceDBStore extends AbstractServiceStore { service.setVersion(new Long(1)); if(populateExistingBaseFields) { - svcService.setPopulateExistingBaseFields(true); - service = svcService.create(service); - svcService.setPopulateExistingBaseFields(false); + svcServiceWithAssignedId.setPopulateExistingBaseFields(true); + service = svcServiceWithAssignedId.create(service); + svcServiceWithAssignedId.setPopulateExistingBaseFields(false); createDefaultPolicy = false; } else { service = svcService.create(service); @@ -548,9 +556,9 @@ public class ServiceDBStore extends AbstractServiceStore { service.setVersion(version); if(populateExistingBaseFields) { - svcService.setPopulateExistingBaseFields(true); - service = svcService.update(service); - svcService.setPopulateExistingBaseFields(false); + svcServiceWithAssignedId.setPopulateExistingBaseFields(true); + service = svcServiceWithAssignedId.update(service); + svcServiceWithAssignedId.setPopulateExistingBaseFields(false); } else { service = svcService.update(service); } @@ -716,9 +724,9 @@ public class ServiceDBStore extends AbstractServiceStore { policy.setVersion(new Long(1)); if(populateExistingBaseFields) { - policyService.setPopulateExistingBaseFields(true); - policy = policyService.create(policy); - policyService.setPopulateExistingBaseFields(false); + assignedIdPolicyService.setPopulateExistingBaseFields(true); + policy = assignedIdPolicyService.create(policy); + assignedIdPolicyService.setPopulateExistingBaseFields(false); } else { policy = policyService.create(policy); } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/53709aad/security-admin/src/main/java/org/apache/ranger/common/AppConstants.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/common/AppConstants.java b/security-admin/src/main/java/org/apache/ranger/common/AppConstants.java index a5ecff7..f9eb61b 100644 --- a/security-admin/src/main/java/org/apache/ranger/common/AppConstants.java +++ b/security-admin/src/main/java/org/apache/ranger/common/AppConstants.java @@ -505,6 +505,14 @@ public class AppConstants extends RangerCommonEnums { * CLASS_TYPE_XA_SERVICE_DEF is an element of enum ClassTypes. Its value is "CLASS_TYPE_XA_SERVICE_DEF". */ public static final int CLASS_TYPE_XA_SERVICE_DEF = 1033; + /** + * CLASS_TYPE_RANGER_POLICY_WITH_ASSIGNED_ID is an element of enum ClassTypes. Its value is "CLASS_TYPE_RANGER_POLICY_WITH_ASSIGNED_ID". + */ + public static final int CLASS_TYPE_RANGER_POLICY_WITH_ASSIGNED_ID = 1037; + /** + * CLASS_TYPE_RANGER_SERVICE_WITH_ASSIGNED_ID is an element of enum ClassTypes. Its value is "CLASS_TYPE_RANGER_SERVICE_WITH_ASSIGNED_ID". + */ + public static final int CLASS_TYPE_RANGER_SERVICE_WITH_ASSIGNED_ID = 1038; /** * CLASS_TYPE_RANGER_MODULE_DEF is an element of enum ClassTypes. Its value is "CLASS_TYPE_RANGER_MODULE_DEF". http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/53709aad/security-admin/src/main/java/org/apache/ranger/db/RangerDaoManagerBase.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/RangerDaoManagerBase.java b/security-admin/src/main/java/org/apache/ranger/db/RangerDaoManagerBase.java index 2dd0797..06bb6db 100644 --- a/security-admin/src/main/java/org/apache/ranger/db/RangerDaoManagerBase.java +++ b/security-admin/src/main/java/org/apache/ranger/db/RangerDaoManagerBase.java @@ -143,6 +143,12 @@ public abstract class RangerDaoManagerBase { if (classType == AppConstants.CLASS_TYPE_XA_DATA_HIST) { return getXXDataHist(); } + if (classType == AppConstants.CLASS_TYPE_RANGER_POLICY_WITH_ASSIGNED_ID) { + return getXXPolicyWithAssignedId(); + } + if (classType == AppConstants.CLASS_TYPE_RANGER_SERVICE_WITH_ASSIGNED_ID) { + return getXXServiceWithAssignedId(); + } if (classType == AppConstants.CLASS_TYPE_RANGER_MODULE_DEF) { return getXXModuleDef(); } @@ -263,6 +269,12 @@ public abstract class RangerDaoManagerBase { if (className.equals("XXDataHist")) { return getXXDataHist(); } + if (className.equals("XXPolicyWithAssignedId")) { + return getXXPolicyWithAssignedId(); + } + if (className.equals("XXServiceWithAssignedId")) { + return getXXServiceWithAssignedId(); + } if (className.equals("XXModuleDef")) { return getXXModuleDef(); } @@ -423,6 +435,14 @@ public abstract class RangerDaoManagerBase { public XXDataHistDao getXXDataHist() { return new XXDataHistDao(this); } + + public XXPolicyWithAssignedIdDao getXXPolicyWithAssignedId() { + return new XXPolicyWithAssignedIdDao(this); + } + + public XXServiceWithAssignedIdDao getXXServiceWithAssignedId() { + return new XXServiceWithAssignedIdDao(this); + } public XXModuleDefDao getXXModuleDef(){ return new XXModuleDefDao(this); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/53709aad/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java index 89eff56..c132f3c 100644 --- a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java +++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java @@ -47,4 +47,12 @@ public class XXPolicyDao extends BaseDao<XXPolicy> { } } + public Long getMaxIdOfXXPolicy() { + try { + return (Long) getEntityManager().createNamedQuery("XXPolicy.getMaxIdOfXXPolicy").getSingleResult(); + } catch (NoResultException e) { + return null; + } + } + } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/53709aad/security-admin/src/main/java/org/apache/ranger/db/XXPolicyWithAssignedIdDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyWithAssignedIdDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyWithAssignedIdDao.java new file mode 100644 index 0000000..434847b --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyWithAssignedIdDao.java @@ -0,0 +1,12 @@ +package org.apache.ranger.db; + +import org.apache.ranger.common.db.BaseDao; +import org.apache.ranger.entity.XXPolicyWithAssignedId; + +public class XXPolicyWithAssignedIdDao extends BaseDao<XXPolicyWithAssignedId> { + + public XXPolicyWithAssignedIdDao(RangerDaoManagerBase daoManager) { + super(daoManager); + } + +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/53709aad/security-admin/src/main/java/org/apache/ranger/db/XXServiceDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXServiceDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXServiceDao.java index 50d1e94..2ea8b29 100644 --- a/security-admin/src/main/java/org/apache/ranger/db/XXServiceDao.java +++ b/security-admin/src/main/java/org/apache/ranger/db/XXServiceDao.java @@ -29,4 +29,12 @@ public class XXServiceDao extends BaseDao<XXService> { } } + public Long getMaxIdOfXXService() { + try { + return (Long) getEntityManager().createNamedQuery("XXService.getMaxIdOfXXService").getSingleResult(); + } catch (NoResultException e) { + return null; + } + } + } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/53709aad/security-admin/src/main/java/org/apache/ranger/db/XXServiceWithAssignedIdDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXServiceWithAssignedIdDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXServiceWithAssignedIdDao.java new file mode 100644 index 0000000..246c162 --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/db/XXServiceWithAssignedIdDao.java @@ -0,0 +1,12 @@ +package org.apache.ranger.db; + +import org.apache.ranger.common.db.BaseDao; +import org.apache.ranger.entity.XXServiceWithAssignedId; + +public class XXServiceWithAssignedIdDao extends BaseDao<XXServiceWithAssignedId> { + + public XXServiceWithAssignedIdDao(RangerDaoManagerBase daoManager) { + super(daoManager); + } + +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/53709aad/security-admin/src/main/java/org/apache/ranger/entity/XXPolicy.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/entity/XXPolicy.java b/security-admin/src/main/java/org/apache/ranger/entity/XXPolicy.java index abbfeb4..d24695a 100644 --- a/security-admin/src/main/java/org/apache/ranger/entity/XXPolicy.java +++ b/security-admin/src/main/java/org/apache/ranger/entity/XXPolicy.java @@ -25,7 +25,7 @@ import javax.xml.bind.annotation.XmlRootElement; @Cacheable @XmlRootElement @Table(name = "x_policy") -public class XXPolicy extends XXDBBase implements java.io.Serializable { +public class XXPolicy extends XXPolicyBase implements java.io.Serializable { private static final long serialVersionUID = 1L; /** * id of the XXPolicy @@ -39,307 +39,36 @@ public class XXPolicy extends XXDBBase implements java.io.Serializable { @Column(name = "id") protected Long id; - /** - * Global Id for the object - * <ul> - * <li>The maximum length for this attribute is <b>512</b>. - * </ul> - * - */ - @Column(name = "guid", unique = true, nullable = false, length = 512) - protected String guid; - - /** - * version of the XXPolicy - * <ul> - * </ul> - * - */ - @Column(name = "version") - protected Long version; - - /** - * service of the XXPolicy - * <ul> - * </ul> - * - */ - @Column(name = "service") - protected Long service; - - /** - * name of the XXPolicy - * <ul> - * </ul> - * - */ - @Column(name = "name") - protected String name; - - /** - * description of the XXPolicy - * <ul> - * </ul> - * - */ - @Column(name = "description") - protected String description; - - /** - * isEnabled of the XXPolicy - * <ul> - * </ul> - * - */ - @Column(name = "is_enabled") - protected boolean isEnabled; - - /** - * isAuditEnabled of the XXPolicy - * <ul> - * </ul> - * - */ - @Column(name = "is_audit_enabled") - protected boolean isAuditEnabled; - - /** - * This method sets the value to the member attribute <b> id</b> . You - * cannot set null to the attribute. - * - * @param id - * Value to set member attribute <b> id</b> - */ + @Override public void setId(Long id) { this.id = id; } - /** - * Returns the value for the member attribute <b>id</b> - * - * @return Date - value of member attribute <b>id</b> . - */ + @Override public Long getId() { - return this.id; - } - - /** - * @return the gUID - */ - public String getGuid() { - return guid; - } - - /** - * @param gUID - * the gUID to set - */ - public void setGuid(String gUID) { - guid = gUID; - } - - /** - * This method sets the value to the member attribute <b> version</b> . You - * cannot set null to the attribute. - * - * @param version - * Value to set member attribute <b> version</b> - */ - public void setVersion(Long version) { - this.version = version; + return id; } - /** - * Returns the value for the member attribute <b>version</b> - * - * @return Date - value of member attribute <b>version</b> . - */ - public Long getVersion() { - return this.version; - } - - /** - * This method sets the value to the member attribute <b> service</b> . You - * cannot set null to the attribute. - * - * @param service - * Value to set member attribute <b> service</b> - */ - public void setService(Long service) { - this.service = service; - } - - /** - * Returns the value for the member attribute <b>service</b> - * - * @return Date - value of member attribute <b>service</b> . - */ - public Long getService() { - return this.service; - } - - /** - * This method sets the value to the member attribute <b> name</b> . You - * cannot set null to the attribute. - * - * @param name - * Value to set member attribute <b> name</b> - */ - public void setName(String name) { - this.name = name; - } - - /** - * Returns the value for the member attribute <b>name</b> - * - * @return Date - value of member attribute <b>name</b> . - */ - public String getName() { - return this.name; - } - - /** - * This method sets the value to the member attribute <b> description</b> . - * You cannot set null to the attribute. - * - * @param description - * Value to set member attribute <b> description</b> - */ - public void setDescription(String description) { - this.description = description; - } - - /** - * Returns the value for the member attribute <b>description</b> - * - * @return Date - value of member attribute <b>description</b> . - */ - public String getDescription() { - return this.description; - } - - /** - * This method sets the value to the member attribute <b> isEnabled</b> . - * You cannot set null to the attribute. - * - * @param isEnabled - * Value to set member attribute <b> isEnabled</b> - */ - public void setIsEnabled(boolean isEnabled) { - this.isEnabled = isEnabled; - } - - /** - * Returns the value for the member attribute <b>isEnabled</b> - * - * @return Date - value of member attribute <b>isEnabled</b> . - */ - public boolean getIsEnabled() { - return this.isEnabled; - } - - /** - * This method sets the value to the member attribute <b> isAuditEnabled</b> - * . You cannot set null to the attribute. - * - * @param isAuditEnabled - * Value to set member attribute <b> isAuditEnabled</b> - */ - public void setIsAuditEnabled(boolean isAuditEnabled) { - this.isAuditEnabled = isAuditEnabled; - } - - /** - * Returns the value for the member attribute <b>isAuditEnabled</b> - * - * @return Date - value of member attribute <b>isAuditEnabled</b> . - */ - public boolean getIsAuditEnabled() { - return this.isAuditEnabled; - } - - /* - * (non-Javadoc) - * - * @see java.lang.Object#equals(java.lang.Object) - */ @Override public boolean equals(Object obj) { - if(!super.equals(obj)) { - return false; - } - if (this == obj) { + if (this == obj) return true; - } - if (!super.equals(obj)) { + if (!super.equals(obj)) return false; - } - if (getClass() != obj.getClass()) { + if (getClass() != obj.getClass()) return false; - } XXPolicy other = (XXPolicy) obj; - if (guid == null) { - if (other.guid != null) { - return false; - } - } else if (!guid.equals(other.guid)) { - return false; - } - if (description == null) { - if (other.description != null) { - return false; - } - } else if (!description.equals(other.description)) { - return false; - } if (id == null) { - if (other.id != null) { - return false; - } - } else if (!id.equals(other.id)) { - return false; - } - if (isAuditEnabled != other.isAuditEnabled) { - return false; - } - if (isEnabled != other.isEnabled) { - return false; - } - if (name == null) { - if (other.name != null) { - return false; - } - } else if (!name.equals(other.name)) { - return false; - } - if (service == null) { - if (other.service != null) { + if (other.id != null) return false; - } - } else if (!service.equals(other.service)) { + } else if (!id.equals(other.id)) return false; - } - if (version == null) { - if (other.version != null) { - return false; - } - } else if (!version.equals(other.version)) { - return false; - } return true; } - /* - * (non-Javadoc) - * - * @see java.lang.Object#toString() - */ @Override public String toString() { - return "XXPolicy [" + super.toString() + " id=" + id + ", guid=" + guid - + ", version=" + version + ", service=" + service + ", name=" - + name + ", description=" + description + ", isEnabled=" - + isEnabled + ", isAuditEnabled=" + isAuditEnabled + "]"; + return "XXPolicy [id=" + id + "]"; } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/53709aad/security-admin/src/main/java/org/apache/ranger/entity/XXPolicyBase.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/entity/XXPolicyBase.java b/security-admin/src/main/java/org/apache/ranger/entity/XXPolicyBase.java new file mode 100644 index 0000000..7ee05c8 --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/entity/XXPolicyBase.java @@ -0,0 +1,287 @@ +package org.apache.ranger.entity; + +import javax.persistence.Column; +import javax.persistence.MappedSuperclass; +import javax.xml.bind.annotation.XmlRootElement; + +@MappedSuperclass +@XmlRootElement +public abstract class XXPolicyBase extends XXDBBase { + private static final long serialVersionUID = 1L; + + /** + * Global Id for the object + * <ul> + * <li>The maximum length for this attribute is <b>512</b>. + * </ul> + * + */ + @Column(name = "guid", unique = true, nullable = false, length = 512) + protected String guid; + + /** + * version of the XXPolicy + * <ul> + * </ul> + * + */ + @Column(name = "version") + protected Long version; + + /** + * service of the XXPolicy + * <ul> + * </ul> + * + */ + @Column(name = "service") + protected Long service; + + /** + * name of the XXPolicy + * <ul> + * </ul> + * + */ + @Column(name = "name") + protected String name; + + /** + * description of the XXPolicy + * <ul> + * </ul> + * + */ + @Column(name = "description") + protected String description; + + /** + * isEnabled of the XXPolicy + * <ul> + * </ul> + * + */ + @Column(name = "is_enabled") + protected boolean isEnabled; + + /** + * isAuditEnabled of the XXPolicy + * <ul> + * </ul> + * + */ + @Column(name = "is_audit_enabled") + protected boolean isAuditEnabled; + + /** + * @return the gUID + */ + public String getGuid() { + return guid; + } + + /** + * @param gUID + * the gUID to set + */ + public void setGuid(String gUID) { + guid = gUID; + } + + /** + * This method sets the value to the member attribute <b> version</b> . You + * cannot set null to the attribute. + * + * @param version + * Value to set member attribute <b> version</b> + */ + public void setVersion(Long version) { + this.version = version; + } + + /** + * Returns the value for the member attribute <b>version</b> + * + * @return Date - value of member attribute <b>version</b> . + */ + public Long getVersion() { + return this.version; + } + + /** + * This method sets the value to the member attribute <b> service</b> . You + * cannot set null to the attribute. + * + * @param service + * Value to set member attribute <b> service</b> + */ + public void setService(Long service) { + this.service = service; + } + + /** + * Returns the value for the member attribute <b>service</b> + * + * @return Date - value of member attribute <b>service</b> . + */ + public Long getService() { + return this.service; + } + + /** + * This method sets the value to the member attribute <b> name</b> . You + * cannot set null to the attribute. + * + * @param name + * Value to set member attribute <b> name</b> + */ + public void setName(String name) { + this.name = name; + } + + /** + * Returns the value for the member attribute <b>name</b> + * + * @return Date - value of member attribute <b>name</b> . + */ + public String getName() { + return this.name; + } + + /** + * This method sets the value to the member attribute <b> description</b> . + * You cannot set null to the attribute. + * + * @param description + * Value to set member attribute <b> description</b> + */ + public void setDescription(String description) { + this.description = description; + } + + /** + * Returns the value for the member attribute <b>description</b> + * + * @return Date - value of member attribute <b>description</b> . + */ + public String getDescription() { + return this.description; + } + + /** + * This method sets the value to the member attribute <b> isEnabled</b> . + * You cannot set null to the attribute. + * + * @param isEnabled + * Value to set member attribute <b> isEnabled</b> + */ + public void setIsEnabled(boolean isEnabled) { + this.isEnabled = isEnabled; + } + + /** + * Returns the value for the member attribute <b>isEnabled</b> + * + * @return Date - value of member attribute <b>isEnabled</b> . + */ + public boolean getIsEnabled() { + return this.isEnabled; + } + + /** + * This method sets the value to the member attribute <b> isAuditEnabled</b> + * . You cannot set null to the attribute. + * + * @param isAuditEnabled + * Value to set member attribute <b> isAuditEnabled</b> + */ + public void setIsAuditEnabled(boolean isAuditEnabled) { + this.isAuditEnabled = isAuditEnabled; + } + + /** + * Returns the value for the member attribute <b>isAuditEnabled</b> + * + * @return Date - value of member attribute <b>isAuditEnabled</b> . + */ + public boolean getIsAuditEnabled() { + return this.isAuditEnabled; + } + + /* + * (non-Javadoc) + * + * @see java.lang.Object#equals(java.lang.Object) + */ + @Override + public boolean equals(Object obj) { + if (!super.equals(obj)) { + return false; + } + if (this == obj) { + return true; + } + if (!super.equals(obj)) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + XXPolicyBase other = (XXPolicyBase) obj; + if (guid == null) { + if (other.guid != null) { + return false; + } + } else if (!guid.equals(other.guid)) { + return false; + } + if (description == null) { + if (other.description != null) { + return false; + } + } else if (!description.equals(other.description)) { + return false; + } + if (isAuditEnabled != other.isAuditEnabled) { + return false; + } + if (isEnabled != other.isEnabled) { + return false; + } + if (name == null) { + if (other.name != null) { + return false; + } + } else if (!name.equals(other.name)) { + return false; + } + if (service == null) { + if (other.service != null) { + return false; + } + } else if (!service.equals(other.service)) { + return false; + } + if (version == null) { + if (other.version != null) { + return false; + } + } else if (!version.equals(other.version)) { + return false; + } + return true; + } + + /* + * (non-Javadoc) + * + * @see java.lang.Object#toString() + */ + @Override + public String toString() { + return "XXPolicyBase [" + super.toString() + " guid=" + guid + ", version=" + version + ", service=" + service + + ", name=" + name + ", description=" + description + ", isEnabled=" + isEnabled + ", isAuditEnabled=" + + isAuditEnabled + "]"; + } + +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/53709aad/security-admin/src/main/java/org/apache/ranger/entity/XXPolicyWithAssignedId.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/entity/XXPolicyWithAssignedId.java b/security-admin/src/main/java/org/apache/ranger/entity/XXPolicyWithAssignedId.java new file mode 100644 index 0000000..b5cf6c3 --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/entity/XXPolicyWithAssignedId.java @@ -0,0 +1,57 @@ +package org.apache.ranger.entity; + +import javax.persistence.Cacheable; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.xml.bind.annotation.XmlRootElement; + +@Entity +@Cacheable +@XmlRootElement +@Table(name = "x_policy") +public class XXPolicyWithAssignedId extends XXPolicyBase { + private static final long serialVersionUID = 1L; + + /** + * id of the XXPolicy + * + */ + @Id + @Column(name = "id") + protected Long id; + + @Override + public void setId(Long id) { + this.id = id; + } + + @Override + public Long getId() { + return id; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (!super.equals(obj)) + return false; + if (getClass() != obj.getClass()) + return false; + XXPolicyWithAssignedId other = (XXPolicyWithAssignedId) obj; + if (id == null) { + if (other.id != null) + return false; + } else if (!id.equals(other.id)) + return false; + return true; + } + + @Override + public String toString() { + return "XXPolicyWithAssignedId [id=" + id + "]"; + } + +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/53709aad/security-admin/src/main/java/org/apache/ranger/entity/XXService.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/entity/XXService.java b/security-admin/src/main/java/org/apache/ranger/entity/XXService.java index 9d6cf4d..a1efc94 100644 --- a/security-admin/src/main/java/org/apache/ranger/entity/XXService.java +++ b/security-admin/src/main/java/org/apache/ranger/entity/XXService.java @@ -18,8 +18,6 @@ */ package org.apache.ranger.entity; -import java.util.Date; - import javax.persistence.*; import javax.xml.bind.annotation.XmlRootElement; @@ -27,8 +25,9 @@ import javax.xml.bind.annotation.XmlRootElement; @Cacheable @XmlRootElement @Table(name = "x_service") -public class XXService extends XXDBBase implements java.io.Serializable { +public class XXService extends XXServiceBase implements java.io.Serializable { private static final long serialVersionUID = 1L; + /** * id of the XXService * <ul> @@ -40,351 +39,37 @@ public class XXService extends XXDBBase implements java.io.Serializable { @GeneratedValue(strategy = GenerationType.AUTO, generator = "x_service_SEQ") @Column(name = "id") protected Long id; - - /** - * Global Id for the object - * <ul> - * <li>The maximum length for this attribute is <b>512</b>. - * </ul> - * - */ - @Column(name = "guid", unique = true, nullable = false, length = 512) - protected String guid; - - /** - * version of the XXServiceDef - * <ul> - * </ul> - * - */ - @Column(name = "version") - protected Long version; - - /** - * type of the XXService - * <ul> - * </ul> - * - */ - @Column(name = "type") - protected Long type; - - /** - * name of the XXService - * <ul> - * </ul> - * - */ - @Column(name = "name") - protected String name; - - /** - * policyVersion of the XXService - * <ul> - * </ul> - * - */ - @Column(name = "policy_version") - protected Long policyVersion; - /** - * policyUpdateTime of the XXService - * <ul> - * </ul> - * - */ - @Temporal(TemporalType.TIMESTAMP) - @Column(name = "policy_update_time") - protected Date policyUpdateTime; - - /** - * description of the XXService - * <ul> - * </ul> - * - */ - @Column(name = "description") - protected String description; - - /** - * isEnabled of the XXService - * <ul> - * </ul> - * - */ - @Column(name = "is_enabled") - protected Boolean isEnabled; - - /** - * This method sets the value to the member attribute <b> id</b> . You - * cannot set null to the attribute. - * - * @param id - * Value to set member attribute <b> id</b> - */ + @Override public void setId(Long id) { this.id = id; } - /** - * Returns the value for the member attribute <b>id</b> - * - * @return Date - value of member attribute <b>id</b> . - */ + @Override public Long getId() { - return this.id; - } - - /** - * @return the gUID - */ - public String getGuid() { - return this.guid; - } - - /** - * @param guid - * the gUID to set - */ - public void setGuid(String guid) { - this.guid = guid; - } - - /** - * This method sets the value to the member attribute <b> version</b> . You - * cannot set null to the attribute. - * - * @param version - * Value to set member attribute <b> version</b> - */ - public void setVersion(Long version) { - this.version = version; - } - - /** - * Returns the value for the member attribute <b>version</b> - * - * @return Date - value of member attribute <b>version</b> . - */ - public Long getVersion() { - return this.version; - } - - /** - * This method sets the value to the member attribute <b> type</b> . You - * cannot set null to the attribute. - * - * @param type - * Value to set member attribute <b> type</b> - */ - public void setType(Long type) { - this.type = type; - } - - /** - * Returns the value for the member attribute <b>type</b> - * - * @return Date - value of member attribute <b>type</b> . - */ - public Long getType() { - return this.type; - } - - /** - * This method sets the value to the member attribute <b> name</b> . You - * cannot set null to the attribute. - * - * @param name - * Value to set member attribute <b> name</b> - */ - public void setName(String name) { - this.name = name; - } - - /** - * Returns the value for the member attribute <b>name</b> - * - * @return Date - value of member attribute <b>name</b> . - */ - public String getName() { - return this.name; - } - - /** - * This method sets the value to the member attribute <b> policyVersion</b> - * . You cannot set null to the attribute. - * - * @param policyVersion - * Value to set member attribute <b> policyVersion</b> - */ - public void setPolicyVersion(Long policyVersion) { - this.policyVersion = policyVersion; - } - - /** - * Returns the value for the member attribute <b>policyVersion</b> - * - * @return Date - value of member attribute <b>policyVersion</b> . - */ - public Long getPolicyVersion() { - return this.policyVersion; - } - - /** - * This method sets the value to the member attribute <b> - * policyUpdateTime</b> . You cannot set null to the attribute. - * - * @param policyUpdateTime - * Value to set member attribute <b> policyUpdateTime</b> - */ - public void setPolicyUpdateTime(Date policyUpdateTime) { - this.policyUpdateTime = policyUpdateTime; + return id; } - /** - * Returns the value for the member attribute <b>policyUpdateTime</b> - * - * @return Date - value of member attribute <b>policyUpdateTime</b> . - */ - public Date getPolicyUpdateTime() { - return this.policyUpdateTime; - } - - /** - * This method sets the value to the member attribute <b> description</b> . - * You cannot set null to the attribute. - * - * @param description - * Value to set member attribute <b> description</b> - */ - public void setDescription(String description) { - this.description = description; - } - - /** - * Returns the value for the member attribute <b>description</b> - * - * @return Date - value of member attribute <b>description</b> . - */ - public String getDescription() { - return this.description; - } - - /** - * This method sets the value to the member attribute <b> isEnabled</b> . - * You cannot set null to the attribute. - * - * @param isEnabled - * Value to set member attribute <b> isEnabled</b> - */ - public void setIsEnabled(Boolean isEnabled) { - this.isEnabled = isEnabled; - } - - /** - * Returns the value for the member attribute <b>isEnabled</b> - * - * @return Date - value of member attribute <b>isEnabled</b> . - */ - public Boolean getIsenabled() { - return this.isEnabled; + @Override + public String toString() { + return "XXService [id=" + id + "]"; } - /* - * (non-Javadoc) - * - * @see java.lang.Object#equals(java.lang.Object) - */ @Override public boolean equals(Object obj) { - if (!super.equals(obj)) { - return false; - } - if (this == obj) { + if (this == obj) return true; - } - if (getClass() != obj.getClass()) { + if (!super.equals(obj)) return false; - } - XXService other = (XXService) obj; - if (description == null) { - if (other.description != null) { - return false; - } - } else if (!description.equals(other.description)) { + if (getClass() != obj.getClass()) return false; - } + XXService other = (XXService) obj; if (id == null) { - if (other.id != null) { - return false; - } - } else if (!id.equals(other.id)) { - return false; - } - if (isEnabled == null) { - if (other.isEnabled != null) { + if (other.id != null) return false; - } - } else if (!isEnabled.equals(other.isEnabled)) { + } else if (!id.equals(other.id)) return false; - } - if (name == null) { - if (other.name != null) { - return false; - } - } else if (!name.equals(other.name)) { - return false; - } - if (policyUpdateTime == null) { - if (other.policyUpdateTime != null) { - return false; - } - } else if (!policyUpdateTime.equals(other.policyUpdateTime)) { - return false; - } - if (policyVersion == null) { - if (other.policyVersion != null) { - return false; - } - } else if (!policyVersion.equals(other.policyVersion)) { - return false; - } - if (type == null) { - if (other.type != null) { - return false; - } - } else if (!type.equals(other.type)) { - return false; - } - if (version == null) { - if (other.version != null) { - return false; - } - } else if (!version.equals(other.version)) { - return false; - } - if (guid == null) { - if (other.guid != null) { - return false; - } - } else if (!guid.equals(other.guid)) { - return false; - } return true; } - /* - * (non-Javadoc) - * - * @see java.lang.Object#toString() - */ - @Override - public String toString() { - return "XXService [" + super.toString() + " id=" + id + ", guid=" - + guid + ", version=" + version + ", type=" + type + ", name=" - + name + ", policyVersion=" + policyVersion - + ", policyUpdateTime=" + policyUpdateTime + ", description=" - + description + ", isEnabled=" + isEnabled + "]"; - } - } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/53709aad/security-admin/src/main/java/org/apache/ranger/entity/XXServiceBase.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/entity/XXServiceBase.java b/security-admin/src/main/java/org/apache/ranger/entity/XXServiceBase.java new file mode 100644 index 0000000..ad193d4 --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/entity/XXServiceBase.java @@ -0,0 +1,333 @@ +package org.apache.ranger.entity; + +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.MappedSuperclass; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import javax.xml.bind.annotation.XmlRootElement; + +@MappedSuperclass +@XmlRootElement +public abstract class XXServiceBase extends XXDBBase { + private static final long serialVersionUID = 1L; + + /** + * Global Id for the object + * <ul> + * <li>The maximum length for this attribute is <b>512</b>. + * </ul> + * + */ + @Column(name = "guid", unique = true, nullable = false, length = 512) + protected String guid; + + /** + * version of the XXServiceDef + * <ul> + * </ul> + * + */ + @Column(name = "version") + protected Long version; + + /** + * type of the XXService + * <ul> + * </ul> + * + */ + @Column(name = "type") + protected Long type; + + /** + * name of the XXService + * <ul> + * </ul> + * + */ + @Column(name = "name") + protected String name; + + /** + * policyVersion of the XXService + * <ul> + * </ul> + * + */ + @Column(name = "policy_version") + protected Long policyVersion; + + /** + * policyUpdateTime of the XXService + * <ul> + * </ul> + * + */ + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "policy_update_time") + protected Date policyUpdateTime; + + /** + * description of the XXService + * <ul> + * </ul> + * + */ + @Column(name = "description") + protected String description; + + /** + * isEnabled of the XXService + * <ul> + * </ul> + * + */ + @Column(name = "is_enabled") + protected Boolean isEnabled; + + /** + * @return the gUID + */ + public String getGuid() { + return this.guid; + } + + /** + * @param guid + * the gUID to set + */ + public void setGuid(String guid) { + this.guid = guid; + } + + /** + * This method sets the value to the member attribute <b> version</b> . You + * cannot set null to the attribute. + * + * @param version + * Value to set member attribute <b> version</b> + */ + public void setVersion(Long version) { + this.version = version; + } + + /** + * Returns the value for the member attribute <b>version</b> + * + * @return Date - value of member attribute <b>version</b> . + */ + public Long getVersion() { + return this.version; + } + + /** + * This method sets the value to the member attribute <b> type</b> . You + * cannot set null to the attribute. + * + * @param type + * Value to set member attribute <b> type</b> + */ + public void setType(Long type) { + this.type = type; + } + + /** + * Returns the value for the member attribute <b>type</b> + * + * @return Date - value of member attribute <b>type</b> . + */ + public Long getType() { + return this.type; + } + + /** + * This method sets the value to the member attribute <b> name</b> . You + * cannot set null to the attribute. + * + * @param name + * Value to set member attribute <b> name</b> + */ + public void setName(String name) { + this.name = name; + } + + /** + * Returns the value for the member attribute <b>name</b> + * + * @return Date - value of member attribute <b>name</b> . + */ + public String getName() { + return this.name; + } + + /** + * This method sets the value to the member attribute <b> policyVersion</b> + * . You cannot set null to the attribute. + * + * @param policyVersion + * Value to set member attribute <b> policyVersion</b> + */ + public void setPolicyVersion(Long policyVersion) { + this.policyVersion = policyVersion; + } + + /** + * Returns the value for the member attribute <b>policyVersion</b> + * + * @return Date - value of member attribute <b>policyVersion</b> . + */ + public Long getPolicyVersion() { + return this.policyVersion; + } + + /** + * This method sets the value to the member attribute <b> + * policyUpdateTime</b> . You cannot set null to the attribute. + * + * @param policyUpdateTime + * Value to set member attribute <b> policyUpdateTime</b> + */ + public void setPolicyUpdateTime(Date policyUpdateTime) { + this.policyUpdateTime = policyUpdateTime; + } + + /** + * Returns the value for the member attribute <b>policyUpdateTime</b> + * + * @return Date - value of member attribute <b>policyUpdateTime</b> . + */ + public Date getPolicyUpdateTime() { + return this.policyUpdateTime; + } + + /** + * This method sets the value to the member attribute <b> description</b> . + * You cannot set null to the attribute. + * + * @param description + * Value to set member attribute <b> description</b> + */ + public void setDescription(String description) { + this.description = description; + } + + /** + * Returns the value for the member attribute <b>description</b> + * + * @return Date - value of member attribute <b>description</b> . + */ + public String getDescription() { + return this.description; + } + + /** + * This method sets the value to the member attribute <b> isEnabled</b> . + * You cannot set null to the attribute. + * + * @param isEnabled + * Value to set member attribute <b> isEnabled</b> + */ + public void setIsEnabled(Boolean isEnabled) { + this.isEnabled = isEnabled; + } + + /** + * Returns the value for the member attribute <b>isEnabled</b> + * + * @return Date - value of member attribute <b>isEnabled</b> . + */ + public Boolean getIsenabled() { + return this.isEnabled; + } + + /* + * (non-Javadoc) + * + * @see java.lang.Object#equals(java.lang.Object) + */ + @Override + public boolean equals(Object obj) { + if (!super.equals(obj)) { + return false; + } + if (this == obj) { + return true; + } + if (getClass() != obj.getClass()) { + return false; + } + XXServiceBase other = (XXServiceBase) obj; + if (description == null) { + if (other.description != null) { + return false; + } + } else if (!description.equals(other.description)) { + return false; + } + if (isEnabled == null) { + if (other.isEnabled != null) { + return false; + } + } else if (!isEnabled.equals(other.isEnabled)) { + return false; + } + if (name == null) { + if (other.name != null) { + return false; + } + } else if (!name.equals(other.name)) { + return false; + } + if (policyUpdateTime == null) { + if (other.policyUpdateTime != null) { + return false; + } + } else if (!policyUpdateTime.equals(other.policyUpdateTime)) { + return false; + } + if (policyVersion == null) { + if (other.policyVersion != null) { + return false; + } + } else if (!policyVersion.equals(other.policyVersion)) { + return false; + } + if (type == null) { + if (other.type != null) { + return false; + } + } else if (!type.equals(other.type)) { + return false; + } + if (version == null) { + if (other.version != null) { + return false; + } + } else if (!version.equals(other.version)) { + return false; + } + if (guid == null) { + if (other.guid != null) { + return false; + } + } else if (!guid.equals(other.guid)) { + return false; + } + return true; + } + + /* + * (non-Javadoc) + * + * @see java.lang.Object#toString() + */ + @Override + public String toString() { + return "XXServiceBase [" + super.toString() + " guid=" + guid + ", version=" + version + ", type=" + type + + ", name=" + name + ", policyVersion=" + policyVersion + ", policyUpdateTime=" + policyUpdateTime + + ", description=" + description + ", isEnabled=" + isEnabled + "]"; + } + +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/53709aad/security-admin/src/main/java/org/apache/ranger/entity/XXServiceWithAssignedId.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/entity/XXServiceWithAssignedId.java b/security-admin/src/main/java/org/apache/ranger/entity/XXServiceWithAssignedId.java new file mode 100644 index 0000000..54e88c6 --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/entity/XXServiceWithAssignedId.java @@ -0,0 +1,59 @@ +package org.apache.ranger.entity; + +import javax.persistence.Cacheable; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.xml.bind.annotation.XmlRootElement; + +@Entity +@Cacheable +@XmlRootElement +@Table(name = "x_service") +public class XXServiceWithAssignedId extends XXServiceBase { + private static final long serialVersionUID = 1L; + + /** + * id of the XXService + * <ul> + * </ul> + * + */ + @Id + @Column(name = "id") + protected Long id; + + @Override + public void setId(Long id) { + this.id = id; + } + + @Override + public Long getId() { + return id; + } + + @Override + public String toString() { + return "XXService [id=" + id + "]"; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (!super.equals(obj)) + return false; + if (getClass() != obj.getClass()) + return false; + XXServiceWithAssignedId other = (XXServiceWithAssignedId) obj; + if (id == null) { + if (other.id != null) + return false; + } else if (!id.equals(other.id)) + return false; + return true; + } + +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/53709aad/security-admin/src/main/java/org/apache/ranger/patch/PatchMigration_J10002.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/patch/PatchMigration_J10002.java b/security-admin/src/main/java/org/apache/ranger/patch/PatchMigration_J10002.java index 34b6541..7b97cc1 100644 --- a/security-admin/src/main/java/org/apache/ranger/patch/PatchMigration_J10002.java +++ b/security-admin/src/main/java/org/apache/ranger/patch/PatchMigration_J10002.java @@ -7,6 +7,7 @@ import java.util.List; import java.util.Map; import org.apache.log4j.Logger; +import org.apache.ranger.biz.RangerBizUtil; import org.apache.ranger.biz.ServiceDBStore; import org.apache.ranger.common.AppConstants; import org.apache.ranger.common.JSONUtil; @@ -62,6 +63,9 @@ public class PatchMigration_J10002 extends BaseLoader { @Autowired XPermMapService xPermMapService; + + @Autowired + RangerBizUtil bizUtil; private static int policyCounter = 0; private static int serviceCounter = 0; @@ -93,6 +97,7 @@ public class PatchMigration_J10002 extends BaseLoader { try { migrateServicesToNewSchema(); migratePoliciesToNewSchema(); + updateSequences(); } catch (Exception e) { logger.error("Error whille migrating data.", e); } @@ -410,5 +415,49 @@ public class PatchMigration_J10002 extends BaseLoader { } return policyItems; } + + private void updateSequences() { + + if(RangerBizUtil.getDBFlavor() != AppConstants.DB_FLAVOR_ORACLE) { + return; + } + + List<String> queryList = new ArrayList<String>(); + String policySequence = "X_POLICY_SEQ"; + String svcSequence = "X_SERVICE_SEQ"; + + if(serviceCounter > 0) { + + Long maxSvcId = daoMgr.getXXService().getMaxIdOfXXService(); + + if(maxSvcId != null) { + String query1 = "ALTER SEQUENCE " + svcSequence + " INCREMENT BY " + maxSvcId; + String query2 = "select " + svcSequence + ".nextval from dual"; + String query3 = "ALTER SEQUENCE " + svcSequence + " INCREMENT BY 1 NOCACHE NOCYCLE"; + queryList.add(query1); + queryList.add(query2); + queryList.add(query3); + } + } + + if(policyCounter > 0) { + + Long maxPolId = daoMgr.getXXPolicy().getMaxIdOfXXPolicy(); + + if(maxPolId != null) { + String query1 = "ALTER SEQUENCE " + policySequence + " INCREMENT BY " + maxPolId; + String query2 = "select " + policySequence + ".nextval from dual"; + String query3 = "ALTER SEQUENCE " + policySequence + " INCREMENT BY 1 NOCACHE NOCYCLE"; + queryList.add(query1); + queryList.add(query2); + queryList.add(query3); + } + } + + for(String query : queryList) { + daoMgr.getEntityManager().createNativeQuery(query).executeUpdate(); + } + + } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/53709aad/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyService.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyService.java index 3193407..3fef565 100644 --- a/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyService.java +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyService.java @@ -10,30 +10,14 @@ import java.util.Map; import org.apache.ranger.common.AppConstants; import org.apache.ranger.common.JSONUtil; import org.apache.ranger.common.MessageEnums; -import org.apache.ranger.common.SearchField; -import org.apache.ranger.common.SortField; -import org.apache.ranger.common.SearchField.DATA_TYPE; -import org.apache.ranger.common.SearchField.SEARCH_TYPE; import org.apache.ranger.common.view.VTrxLogAttr; -import org.apache.ranger.db.XXAccessTypeDefDao; -import org.apache.ranger.db.XXPolicyResourceDao; -import org.apache.ranger.entity.XXAccessTypeDef; import org.apache.ranger.entity.XXPolicy; -import org.apache.ranger.entity.XXPolicyConditionDef; -import org.apache.ranger.entity.XXPolicyItem; -import org.apache.ranger.entity.XXPolicyItemAccess; -import org.apache.ranger.entity.XXPolicyItemCondition; -import org.apache.ranger.entity.XXPolicyResource; -import org.apache.ranger.entity.XXPolicyResourceMap; -import org.apache.ranger.entity.XXResourceDef; +import org.apache.ranger.entity.XXPolicyBase; import org.apache.ranger.entity.XXService; import org.apache.ranger.entity.XXTrxLog; import org.apache.ranger.plugin.model.RangerPolicy; import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItem; -import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItemAccess; -import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItemCondition; import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyResource; -import org.apache.ranger.plugin.util.SearchFilter; import org.codehaus.jackson.JsonParseException; import org.codehaus.jackson.map.JsonMappingException; import org.codehaus.jackson.map.ObjectMapper; @@ -70,33 +54,16 @@ public class RangerPolicyService extends RangerPolicyServiceBase<XXPolicy, Range actionCreate = "create"; actionUpdate = "update"; actionDelete = "delete"; - - searchFields.add(new SearchField(SearchFilter.SERVICE_TYPE, "xSvcDef.name", DATA_TYPE.STRING, - SEARCH_TYPE.FULL, "XXServiceDef xSvcDef, XXService xSvc", "xSvc.type = xSvcDef.id and xSvc.id = obj.service")); - searchFields.add(new SearchField(SearchFilter.SERVICE_TYPE_ID, "xSvc.type", DATA_TYPE.INTEGER, SEARCH_TYPE.FULL, - "XXService xSvc", "xSvc.id = obj.service")); - searchFields.add(new SearchField(SearchFilter.SERVICE_NAME, "xSvc.name", DATA_TYPE.STRING, SEARCH_TYPE.FULL, - "XXService xSvc", "xSvc.id = obj.service")); - searchFields.add(new SearchField(SearchFilter.SERVICE_ID, "xSvc.id", DATA_TYPE.INTEGER, SEARCH_TYPE.FULL, - "XXService xSvc", "xSvc.id = obj.service")); - searchFields.add(new SearchField(SearchFilter.IS_ENABLED, "obj.isEnabled", DATA_TYPE.BOOLEAN, SEARCH_TYPE.FULL)); - searchFields.add(new SearchField(SearchFilter.POLICY_ID, "obj.id", DATA_TYPE.INTEGER, SEARCH_TYPE.FULL)); - searchFields.add(new SearchField(SearchFilter.POLICY_NAME, "obj.name", DATA_TYPE.STRING, SEARCH_TYPE.FULL)); - searchFields.add(new SearchField(SearchFilter.USER, "xUser.name", DATA_TYPE.STRING, SEARCH_TYPE.FULL, - "XXUser xUser, XXPolicyItem xPolItem, XXPolicyItemUserPerm userPerm", "obj.id = xPolItem.policyId " - + "and userPerm.policyItemId = xPolItem.id and xUser.id = userPerm.userId")); - searchFields.add(new SearchField(SearchFilter.GROUP, "xGrp.name", DATA_TYPE.STRING, SEARCH_TYPE.FULL, - "XXGroup xGrp, XXPolicyItem xPolItem, XXPolicyItemGroupPerm grpPerm", "obj.id = xPolItem.policyId " - + "and grpPerm.policyItemId = xPolItem.id and xGrp.id = grpPerm.groupId")); - searchFields.add(new SearchField(SearchFilter.POL_RESOURCE, "resMap.value", DATA_TYPE.STRING, - SEARCH_TYPE.PARTIAL, "XXPolicyResourceMap resMap, XXPolicyResource polRes", - "resMap.resourceId = polRes.id and polRes.policyId = obj.id")); - searchFields.add(new SearchField(SearchFilter.POLICY_NAME_PARTIAL, "obj.name", DATA_TYPE.STRING, SEARCH_TYPE.PARTIAL)); - - sortFields.add(new SortField(SearchFilter.CREATE_TIME, "obj.createTime")); - sortFields.add(new SortField(SearchFilter.UPDATE_TIME, "obj.updateTime")); - sortFields.add(new SortField(SearchFilter.POLICY_ID, "obj.id")); - sortFields.add(new SortField(SearchFilter.POLICY_NAME, "obj.name")); + } + + @Override + protected XXPolicy mapViewToEntityBean(RangerPolicy vObj, XXPolicy xObj, int OPERATION_CONTEXT) { + return (XXPolicy)super.mapViewToEntityBean(vObj, (XXPolicyBase)xObj, OPERATION_CONTEXT); + } + + @Override + protected RangerPolicy mapEntityToViewBean(RangerPolicy vObj, XXPolicy xObj) { + return super.mapEntityToViewBean(vObj, (XXPolicyBase)xObj); } @Override @@ -124,98 +91,6 @@ public class RangerPolicyService extends RangerPolicyServiceBase<XXPolicy, Range return vPolicy; } - public List<RangerPolicyItem> getPolicyItemListForXXPolicy(XXPolicy xPolicy) { - - List<RangerPolicyItem> policyItems = new ArrayList<RangerPolicyItem>(); - List<XXPolicyItem> xPolicyItemList = daoMgr.getXXPolicyItem().findByPolicyId(xPolicy.getId()); - - for(XXPolicyItem xPolItem : xPolicyItemList) { - RangerPolicyItem policyItem = populateXXToRangerPolicyItem(xPolItem); - policyItems.add(policyItem); - } - return policyItems; - } - - public RangerPolicyItem populateXXToRangerPolicyItem(XXPolicyItem xPolItem) { - - RangerPolicyItem rangerPolItem = new RangerPolicyItem(); - - List<XXPolicyItemAccess> xPolItemAccList = daoMgr - .getXXPolicyItemAccess().findByPolicyItemId(xPolItem.getId()); - List<RangerPolicyItemAccess> accesses = new ArrayList<RangerPolicyItemAccess>(); - - XXAccessTypeDefDao xAccDefDao = daoMgr.getXXAccessTypeDef(); - for(XXPolicyItemAccess xPolAccess : xPolItemAccList) { - RangerPolicyItemAccess access = new RangerPolicyItemAccess(); - access.setIsAllowed(xPolAccess.getIsallowed()); - XXAccessTypeDef xAccessType = xAccDefDao.getById(xPolAccess.getType()); - access.setType(xAccessType.getName()); - - accesses.add(access); - } - rangerPolItem.setAccesses(accesses); - - List<RangerPolicyItemCondition> conditions = new ArrayList<RangerPolicyItemCondition>(); - List<XXPolicyConditionDef> xConditionDefList = daoMgr - .getXXPolicyConditionDef() - .findByPolicyItemId(xPolItem.getId()); - for(XXPolicyConditionDef xCondDef : xConditionDefList) { - - List<XXPolicyItemCondition> xPolCondItemList = daoMgr - .getXXPolicyItemCondition().findByPolicyItemAndDefId( - xPolItem.getId(), xCondDef.getId()); - List<String> values = new ArrayList<String>(); - - for(XXPolicyItemCondition polCond : xPolCondItemList) { - values.add(polCond.getValue()); - } - - RangerPolicyItemCondition condition = new RangerPolicyItemCondition(); - condition.setType(xCondDef.getName()); - condition.setValues(values); - - conditions.add(condition); - } - rangerPolItem.setConditions(conditions); - - List<String> userList = daoMgr.getXXUser().findByPolicyItemId(xPolItem.getId()); - List<String> grpList = daoMgr.getXXGroup().findByPolicyItemId(xPolItem.getId()); - - rangerPolItem.setUsers(userList); - rangerPolItem.setGroups(grpList); - - rangerPolItem.setDelegateAdmin(xPolItem.getDelegateAdmin()); - return rangerPolItem; - } - - public Map<String, RangerPolicyResource> getResourcesForXXPolicy(XXPolicy xPolicy) { - List<XXResourceDef> resDefList = daoMgr.getXXResourceDef().findByPolicyId(xPolicy.getId()); - Map<String, RangerPolicyResource> resources = new HashMap<String, RangerPolicyResource>(); - - XXPolicyResourceDao xPolResDao = daoMgr.getXXPolicyResource(); - for(XXResourceDef xResDef : resDefList) { - XXPolicyResource xPolRes = xPolResDao.findByResDefIdAndPolicyId( - xResDef.getId(), xPolicy.getId()); - if(xPolRes == null) { - continue; - } - List<String> values = new ArrayList<>(); - List<XXPolicyResourceMap> xPolResMapList = daoMgr - .getXXPolicyResourceMap() - .findByPolicyResId(xPolRes.getId()); - for(XXPolicyResourceMap xPolResMap : xPolResMapList) { - values.add(xPolResMap.getValue()); - } - RangerPolicyResource resource = new RangerPolicyResource(); - resource.setValues(values); - resource.setIsExcludes(xPolRes.getIsexcludes()); - resource.setIsRecursive(xPolRes.getIsrecursive()); - - resources.put(xResDef.getName(), resource); - } - return resources; - } - public RangerPolicy getPopulatedViewObject(XXPolicy xPolicy) { return this.populateViewBean(xPolicy); } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/53709aad/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyServiceBase.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyServiceBase.java index 58c2b69..290d85c 100644 --- a/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyServiceBase.java +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyServiceBase.java @@ -1,46 +1,98 @@ package org.apache.ranger.service; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import org.apache.commons.lang.StringUtils; import org.apache.ranger.common.GUIDUtil; import org.apache.ranger.common.MessageEnums; +import org.apache.ranger.common.SearchField; +import org.apache.ranger.common.SortField; +import org.apache.ranger.common.SearchField.DATA_TYPE; +import org.apache.ranger.common.SearchField.SEARCH_TYPE; +import org.apache.ranger.db.XXAccessTypeDefDao; +import org.apache.ranger.db.XXPolicyResourceDao; +import org.apache.ranger.entity.XXAccessTypeDef; import org.apache.ranger.entity.XXPolicy; +import org.apache.ranger.entity.XXPolicyBase; +import org.apache.ranger.entity.XXPolicyConditionDef; +import org.apache.ranger.entity.XXPolicyItem; +import org.apache.ranger.entity.XXPolicyItemAccess; +import org.apache.ranger.entity.XXPolicyItemCondition; +import org.apache.ranger.entity.XXPolicyResource; +import org.apache.ranger.entity.XXPolicyResourceMap; +import org.apache.ranger.entity.XXResourceDef; import org.apache.ranger.entity.XXService; import org.apache.ranger.plugin.model.RangerPolicy; +import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItem; +import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItemAccess; +import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItemCondition; +import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyResource; import org.apache.ranger.plugin.util.SearchFilter; import org.apache.ranger.view.RangerPolicyList; -public abstract class RangerPolicyServiceBase<T extends XXPolicy, V extends RangerPolicy> extends RangerBaseModelService<T, V> { - +public abstract class RangerPolicyServiceBase<T extends XXPolicyBase, V extends RangerPolicy> extends + RangerBaseModelService<T, V> { + + public RangerPolicyServiceBase() { + super(); + searchFields.add(new SearchField(SearchFilter.SERVICE_TYPE, "xSvcDef.name", DATA_TYPE.STRING, SEARCH_TYPE.FULL, + "XXServiceDef xSvcDef, XXService xSvc", "xSvc.type = xSvcDef.id and xSvc.id = obj.service")); + searchFields.add(new SearchField(SearchFilter.SERVICE_TYPE_ID, "xSvc.type", DATA_TYPE.INTEGER, + SEARCH_TYPE.FULL, "XXService xSvc", "xSvc.id = obj.service")); + searchFields.add(new SearchField(SearchFilter.SERVICE_NAME, "xSvc.name", DATA_TYPE.STRING, SEARCH_TYPE.FULL, + "XXService xSvc", "xSvc.id = obj.service")); + searchFields.add(new SearchField(SearchFilter.SERVICE_ID, "xSvc.id", DATA_TYPE.INTEGER, SEARCH_TYPE.FULL, + "XXService xSvc", "xSvc.id = obj.service")); + searchFields + .add(new SearchField(SearchFilter.IS_ENABLED, "obj.isEnabled", DATA_TYPE.BOOLEAN, SEARCH_TYPE.FULL)); + searchFields.add(new SearchField(SearchFilter.POLICY_ID, "obj.id", DATA_TYPE.INTEGER, SEARCH_TYPE.FULL)); + searchFields.add(new SearchField(SearchFilter.POLICY_NAME, "obj.name", DATA_TYPE.STRING, SEARCH_TYPE.FULL)); + searchFields.add(new SearchField(SearchFilter.USER, "xUser.name", DATA_TYPE.STRING, SEARCH_TYPE.FULL, + "XXUser xUser, XXPolicyItem xPolItem, XXPolicyItemUserPerm userPerm", "obj.id = xPolItem.policyId " + + "and userPerm.policyItemId = xPolItem.id and xUser.id = userPerm.userId")); + searchFields.add(new SearchField(SearchFilter.GROUP, "xGrp.name", DATA_TYPE.STRING, SEARCH_TYPE.FULL, + "XXGroup xGrp, XXPolicyItem xPolItem, XXPolicyItemGroupPerm grpPerm", "obj.id = xPolItem.policyId " + + "and grpPerm.policyItemId = xPolItem.id and xGrp.id = grpPerm.groupId")); + searchFields.add(new SearchField(SearchFilter.POL_RESOURCE, "resMap.value", DATA_TYPE.STRING, + SEARCH_TYPE.PARTIAL, "XXPolicyResourceMap resMap, XXPolicyResource polRes", + "resMap.resourceId = polRes.id and polRes.policyId = obj.id")); + searchFields.add(new SearchField(SearchFilter.POLICY_NAME_PARTIAL, "obj.name", DATA_TYPE.STRING, + SEARCH_TYPE.PARTIAL)); + + sortFields.add(new SortField(SearchFilter.CREATE_TIME, "obj.createTime")); + sortFields.add(new SortField(SearchFilter.UPDATE_TIME, "obj.updateTime")); + sortFields.add(new SortField(SearchFilter.POLICY_ID, "obj.id")); + sortFields.add(new SortField(SearchFilter.POLICY_NAME, "obj.name")); + } + @Override @SuppressWarnings("unchecked") - protected XXPolicy mapViewToEntityBean(RangerPolicy vObj, XXPolicy xObj, int OPERATION_CONTEXT) { + protected XXPolicyBase mapViewToEntityBean(RangerPolicy vObj, XXPolicyBase xObj, int OPERATION_CONTEXT) { String guid = (StringUtils.isEmpty(vObj.getGuid())) ? GUIDUtil.genGUI() : vObj.getGuid(); - + xObj.setGuid(guid); xObj.setVersion(vObj.getVersion()); - + XXService xService = daoMgr.getXXService().findByName(vObj.getService()); - if(xService == null) { - throw restErrorUtil.createRESTException( - "No corresponding service found for policyName: " - + vObj.getName() + "Service Not Found : " - + vObj.getName(), MessageEnums.INVALID_INPUT_DATA); + if (xService == null) { + throw restErrorUtil.createRESTException("No corresponding service found for policyName: " + vObj.getName() + + "Service Not Found : " + vObj.getName(), MessageEnums.INVALID_INPUT_DATA); } xObj.setService(xService.getId()); xObj.setName(vObj.getName()); xObj.setDescription(vObj.getDescription()); xObj.setIsAuditEnabled(vObj.getIsAuditEnabled()); xObj.setIsEnabled(vObj.getIsEnabled()); - + return xObj; } @Override @SuppressWarnings("unchecked") - protected RangerPolicy mapEntityToViewBean(RangerPolicy vObj, XXPolicy xObj) { + protected RangerPolicy mapEntityToViewBean(RangerPolicy vObj, XXPolicyBase xObj) { XXService xService = daoMgr.getXXService().getById(xObj.getService()); vObj.setGuid(xObj.getGuid()); vObj.setVersion(xObj.getVersion()); @@ -56,7 +108,7 @@ public abstract class RangerPolicyServiceBase<T extends XXPolicy, V extends Rang public RangerPolicyList searchRangerPolicies(SearchFilter searchFilter) { List<RangerPolicy> policyList = new ArrayList<RangerPolicy>(); RangerPolicyList retList = new RangerPolicyList(); - + List<XXPolicy> xPolList = (List<XXPolicy>) searchResources(searchFilter, searchFields, sortFields, retList); for (XXPolicy xPol : xPolList) { policyList.add(populateViewBean((T) xPol)); @@ -66,4 +118,91 @@ public abstract class RangerPolicyServiceBase<T extends XXPolicy, V extends Rang return retList; } + public List<RangerPolicyItem> getPolicyItemListForXXPolicy(XXPolicyBase xPolicy) { + + List<RangerPolicyItem> policyItems = new ArrayList<RangerPolicyItem>(); + List<XXPolicyItem> xPolicyItemList = daoMgr.getXXPolicyItem().findByPolicyId(xPolicy.getId()); + + for (XXPolicyItem xPolItem : xPolicyItemList) { + RangerPolicyItem policyItem = populateXXToRangerPolicyItem(xPolItem); + policyItems.add(policyItem); + } + return policyItems; + } + + public RangerPolicyItem populateXXToRangerPolicyItem(XXPolicyItem xPolItem) { + + RangerPolicyItem rangerPolItem = new RangerPolicyItem(); + + List<XXPolicyItemAccess> xPolItemAccList = daoMgr.getXXPolicyItemAccess().findByPolicyItemId(xPolItem.getId()); + List<RangerPolicyItemAccess> accesses = new ArrayList<RangerPolicyItemAccess>(); + + XXAccessTypeDefDao xAccDefDao = daoMgr.getXXAccessTypeDef(); + for (XXPolicyItemAccess xPolAccess : xPolItemAccList) { + RangerPolicyItemAccess access = new RangerPolicyItemAccess(); + access.setIsAllowed(xPolAccess.getIsallowed()); + XXAccessTypeDef xAccessType = xAccDefDao.getById(xPolAccess.getType()); + access.setType(xAccessType.getName()); + + accesses.add(access); + } + rangerPolItem.setAccesses(accesses); + + List<RangerPolicyItemCondition> conditions = new ArrayList<RangerPolicyItemCondition>(); + List<XXPolicyConditionDef> xConditionDefList = daoMgr.getXXPolicyConditionDef().findByPolicyItemId( + xPolItem.getId()); + for (XXPolicyConditionDef xCondDef : xConditionDefList) { + + List<XXPolicyItemCondition> xPolCondItemList = daoMgr.getXXPolicyItemCondition().findByPolicyItemAndDefId( + xPolItem.getId(), xCondDef.getId()); + List<String> values = new ArrayList<String>(); + + for (XXPolicyItemCondition polCond : xPolCondItemList) { + values.add(polCond.getValue()); + } + + RangerPolicyItemCondition condition = new RangerPolicyItemCondition(); + condition.setType(xCondDef.getName()); + condition.setValues(values); + + conditions.add(condition); + } + rangerPolItem.setConditions(conditions); + + List<String> userList = daoMgr.getXXUser().findByPolicyItemId(xPolItem.getId()); + List<String> grpList = daoMgr.getXXGroup().findByPolicyItemId(xPolItem.getId()); + + rangerPolItem.setUsers(userList); + rangerPolItem.setGroups(grpList); + + rangerPolItem.setDelegateAdmin(xPolItem.getDelegateAdmin()); + return rangerPolItem; + } + + public Map<String, RangerPolicyResource> getResourcesForXXPolicy(XXPolicyBase xPolicy) { + List<XXResourceDef> resDefList = daoMgr.getXXResourceDef().findByPolicyId(xPolicy.getId()); + Map<String, RangerPolicyResource> resources = new HashMap<String, RangerPolicyResource>(); + + XXPolicyResourceDao xPolResDao = daoMgr.getXXPolicyResource(); + for (XXResourceDef xResDef : resDefList) { + XXPolicyResource xPolRes = xPolResDao.findByResDefIdAndPolicyId(xResDef.getId(), xPolicy.getId()); + if (xPolRes == null) { + continue; + } + List<String> values = new ArrayList<>(); + List<XXPolicyResourceMap> xPolResMapList = daoMgr.getXXPolicyResourceMap().findByPolicyResId( + xPolRes.getId()); + for (XXPolicyResourceMap xPolResMap : xPolResMapList) { + values.add(xPolResMap.getValue()); + } + RangerPolicyResource resource = new RangerPolicyResource(); + resource.setValues(values); + resource.setIsExcludes(xPolRes.getIsexcludes()); + resource.setIsRecursive(xPolRes.getIsrecursive()); + + resources.put(xResDef.getName(), resource); + } + return resources; + } + } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/53709aad/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyWithAssignedIdService.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyWithAssignedIdService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyWithAssignedIdService.java new file mode 100644 index 0000000..589fc44 --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyWithAssignedIdService.java @@ -0,0 +1,61 @@ +package org.apache.ranger.service; + +import java.util.List; +import java.util.Map; + +import org.apache.ranger.common.JSONUtil; +import org.apache.ranger.entity.XXPolicyBase; +import org.apache.ranger.entity.XXPolicyWithAssignedId; +import org.apache.ranger.plugin.model.RangerPolicy; +import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItem; +import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyResource; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class RangerPolicyWithAssignedIdService extends RangerPolicyServiceBase<XXPolicyWithAssignedId, RangerPolicy> { + + @Autowired + JSONUtil jsonUtil; + + @Override + protected XXPolicyWithAssignedId mapViewToEntityBean(RangerPolicy vObj, XXPolicyWithAssignedId xObj, + int OPERATION_CONTEXT) { + return (XXPolicyWithAssignedId) super.mapViewToEntityBean(vObj, (XXPolicyBase) xObj, OPERATION_CONTEXT); + } + + @Override + protected RangerPolicy mapEntityToViewBean(RangerPolicy vObj, XXPolicyWithAssignedId xObj) { + return super.mapEntityToViewBean(vObj, (XXPolicyBase) xObj); + } + + @Override + protected void validateForCreate(RangerPolicy vObj) { + // TODO Auto-generated method stub + + } + + @Override + protected void validateForUpdate(RangerPolicy vObj, XXPolicyWithAssignedId entityObj) { + // TODO Auto-generated method stub + + } + + @Override + protected RangerPolicy populateViewBean(XXPolicyWithAssignedId xPolicy) { + RangerPolicy vPolicy = super.populateViewBean(xPolicy); + + Map<String, RangerPolicyResource> resources = getResourcesForXXPolicy(xPolicy); + vPolicy.setResources(resources); + + List<RangerPolicyItem> policyItems = getPolicyItemListForXXPolicy(xPolicy); + vPolicy.setPolicyItems(policyItems); + + return vPolicy; + } + + public RangerPolicy getPopulatedViewObject(XXPolicyWithAssignedId xPolicy) { + return this.populateViewBean(xPolicy); + } + +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/53709aad/security-admin/src/main/java/org/apache/ranger/service/RangerServiceService.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceService.java index 9d1ebd6..cbfb810 100644 --- a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceService.java +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceService.java @@ -10,18 +10,13 @@ import java.util.Map.Entry; import org.apache.ranger.common.AppConstants; import org.apache.ranger.common.JSONUtil; import org.apache.ranger.common.PropertiesUtil; -import org.apache.ranger.common.SearchField; -import org.apache.ranger.common.SearchField.DATA_TYPE; -import org.apache.ranger.common.SearchField.SEARCH_TYPE; -import org.apache.ranger.common.SearchUtil; -import org.apache.ranger.common.SortField; import org.apache.ranger.common.view.VTrxLogAttr; import org.apache.ranger.entity.XXService; +import org.apache.ranger.entity.XXServiceBase; import org.apache.ranger.entity.XXServiceConfigMap; import org.apache.ranger.entity.XXServiceDef; import org.apache.ranger.entity.XXTrxLog; import org.apache.ranger.plugin.model.RangerService; -import org.apache.ranger.plugin.util.SearchFilter; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Service; @@ -52,18 +47,16 @@ public class RangerServiceService extends RangerServiceServiceBase<XXService, Ra actionCreate = "create"; actionUpdate = "update"; actionDelete = "delete"; - - searchFields.add(new SearchField(SearchFilter.SERVICE_TYPE, "xSvcDef.name", DATA_TYPE.STRING, - SEARCH_TYPE.FULL, "XXServiceDef xSvcDef", "obj.type = xSvcDef.id")); - searchFields.add(new SearchField(SearchFilter.SERVICE_TYPE_ID, "obj.type", DATA_TYPE.INTEGER, SEARCH_TYPE.FULL)); - searchFields.add(new SearchField(SearchFilter.SERVICE_NAME, "obj.name", DATA_TYPE.STRING, SEARCH_TYPE.FULL)); - searchFields.add(new SearchField(SearchFilter.SERVICE_ID, "obj.id", DATA_TYPE.INTEGER, SEARCH_TYPE.FULL)); - searchFields.add(new SearchField(SearchFilter.IS_ENABLED, "obj.isEnabled", DATA_TYPE.BOOLEAN, SEARCH_TYPE.FULL)); - - sortFields.add(new SortField(SearchFilter.CREATE_TIME, "obj.createTime")); - sortFields.add(new SortField(SearchFilter.UPDATE_TIME, "obj.updateTime")); - sortFields.add(new SortField(SearchFilter.SERVICE_ID, "obj.id")); - sortFields.add(new SortField(SearchFilter.SERVICE_NAME, "obj.name")); + } + + @Override + protected XXService mapViewToEntityBean(RangerService vObj, XXService xObj, int OPERATION_CONTEXT) { + return (XXService)super.mapViewToEntityBean(vObj, (XXServiceBase)xObj, OPERATION_CONTEXT); + } + + @Override + protected RangerService mapEntityToViewBean(RangerService vObj, XXService xObj) { + return super.mapEntityToViewBean(vObj, (XXServiceBase)xObj); } @Override http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/53709aad/security-admin/src/main/java/org/apache/ranger/service/RangerServiceServiceBase.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceServiceBase.java index fb6142e..ad318fd 100644 --- a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceServiceBase.java +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceServiceBase.java @@ -6,17 +6,39 @@ import java.util.List; import org.apache.commons.lang.StringUtils; import org.apache.ranger.common.GUIDUtil; import org.apache.ranger.common.MessageEnums; +import org.apache.ranger.common.SearchField; +import org.apache.ranger.common.SortField; +import org.apache.ranger.common.SearchField.DATA_TYPE; +import org.apache.ranger.common.SearchField.SEARCH_TYPE; import org.apache.ranger.entity.XXService; +import org.apache.ranger.entity.XXServiceBase; import org.apache.ranger.entity.XXServiceDef; import org.apache.ranger.plugin.model.RangerService; import org.apache.ranger.plugin.util.SearchFilter; import org.apache.ranger.view.RangerServiceList; -public abstract class RangerServiceServiceBase<T extends XXService, V extends RangerService> extends RangerBaseModelService<T, V> { +public abstract class RangerServiceServiceBase<T extends XXServiceBase, V extends RangerService> extends RangerBaseModelService<T, V> { + + public RangerServiceServiceBase() { + super(); + + searchFields.add(new SearchField(SearchFilter.SERVICE_TYPE, "xSvcDef.name", DATA_TYPE.STRING, + SEARCH_TYPE.FULL, "XXServiceDef xSvcDef", "obj.type = xSvcDef.id")); + searchFields.add(new SearchField(SearchFilter.SERVICE_TYPE_ID, "obj.type", DATA_TYPE.INTEGER, SEARCH_TYPE.FULL)); + searchFields.add(new SearchField(SearchFilter.SERVICE_NAME, "obj.name", DATA_TYPE.STRING, SEARCH_TYPE.FULL)); + searchFields.add(new SearchField(SearchFilter.SERVICE_ID, "obj.id", DATA_TYPE.INTEGER, SEARCH_TYPE.FULL)); + searchFields.add(new SearchField(SearchFilter.IS_ENABLED, "obj.isEnabled", DATA_TYPE.BOOLEAN, SEARCH_TYPE.FULL)); + + sortFields.add(new SortField(SearchFilter.CREATE_TIME, "obj.createTime")); + sortFields.add(new SortField(SearchFilter.UPDATE_TIME, "obj.updateTime")); + sortFields.add(new SortField(SearchFilter.SERVICE_ID, "obj.id")); + sortFields.add(new SortField(SearchFilter.SERVICE_NAME, "obj.name")); + + } @Override @SuppressWarnings("unchecked") - protected XXService mapViewToEntityBean(RangerService vObj, XXService xObj, int OPERATION_CONTEXT) { + protected XXServiceBase mapViewToEntityBean(RangerService vObj, XXServiceBase xObj, int OPERATION_CONTEXT) { String guid = (StringUtils.isEmpty(vObj.getGuid())) ? GUIDUtil.genGUI() : vObj.getGuid(); xObj.setGuid(guid); @@ -39,7 +61,7 @@ public abstract class RangerServiceServiceBase<T extends XXService, V extends Ra @Override @SuppressWarnings("unchecked") - protected RangerService mapEntityToViewBean(RangerService vObj, XXService xObj) { + protected RangerService mapEntityToViewBean(RangerService vObj, XXServiceBase xObj) { XXServiceDef xServiceDef = daoMgr.getXXServiceDef().getById(xObj.getType()); vObj.setType(xServiceDef.getName()); vObj.setGuid(xObj.getGuid()); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/53709aad/security-admin/src/main/java/org/apache/ranger/service/RangerServiceWithAssignedIdService.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceWithAssignedIdService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceWithAssignedIdService.java new file mode 100644 index 0000000..5ba3f54 --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceWithAssignedIdService.java @@ -0,0 +1,60 @@ +package org.apache.ranger.service; + +import java.util.HashMap; +import java.util.List; + +import org.apache.ranger.common.JSONUtil; +import org.apache.ranger.entity.XXServiceBase; +import org.apache.ranger.entity.XXServiceWithAssignedId; +import org.apache.ranger.entity.XXServiceConfigMap; +import org.apache.ranger.plugin.model.RangerService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class RangerServiceWithAssignedIdService extends RangerServiceServiceBase<XXServiceWithAssignedId, RangerService> { + + @Autowired + JSONUtil jsonUtil; + + @Override + protected XXServiceWithAssignedId mapViewToEntityBean(RangerService vObj, XXServiceWithAssignedId xObj, int OPERATION_CONTEXT) { + return (XXServiceWithAssignedId)super.mapViewToEntityBean(vObj, (XXServiceBase)xObj, OPERATION_CONTEXT); + } + + @Override + protected RangerService mapEntityToViewBean(RangerService vObj, XXServiceWithAssignedId xObj) { + return super.mapEntityToViewBean(vObj, (XXServiceBase)xObj); + } + + @Override + protected void validateForCreate(RangerService vObj) { + // TODO Auto-generated method stub + + } + + @Override + protected void validateForUpdate(RangerService vService, XXServiceWithAssignedId xService) { + + } + + @Override + protected RangerService populateViewBean(XXServiceWithAssignedId xService) { + RangerService vService = super.populateViewBean(xService); + + HashMap<String, String> configs = new HashMap<String, String>(); + List<XXServiceConfigMap> svcConfigMapList = daoMgr.getXXServiceConfigMap() + .findByServiceId(xService.getId()); + for(XXServiceConfigMap svcConfMap : svcConfigMapList) { + configs.put(svcConfMap.getConfigkey(), svcConfMap.getConfigvalue()); + } + vService.setConfigs(configs); + + return vService; + } + + public RangerService getPopulatedViewObject(XXServiceWithAssignedId xService) { + return this.populateViewBean(xService); + } + +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/53709aad/security-admin/src/main/resources/META-INF/jpa_named_queries.xml ---------------------------------------------------------------------- diff --git a/security-admin/src/main/resources/META-INF/jpa_named_queries.xml b/security-admin/src/main/resources/META-INF/jpa_named_queries.xml index b94ef13..6a3d795 100644 --- a/security-admin/src/main/resources/META-INF/jpa_named_queries.xml +++ b/security-admin/src/main/resources/META-INF/jpa_named_queries.xml @@ -207,6 +207,10 @@ <named-query name="XXPolicy.findByServiceId"> <query>select obj from XXPolicy obj where obj.service = :serviceId</query> </named-query> + + <named-query name="XXPolicy.getMaxIdOfXXPolicy"> + <query>select MAX(obj.id) from XXPolicy obj</query> + </named-query> <!-- XXServiceDef --> <named-query name="XXServiceDef.findByName"> @@ -315,6 +319,10 @@ <named-query name="XXService.findByName"> <query>select obj from XXService obj where obj.name = :name</query> </named-query> + + <named-query name="XXService.getMaxIdOfXXService"> + <query>select MAX(obj.id) from XXService obj</query> + </named-query> <!-- XXPolicyResource --> <named-query name="XXPolicyResource.findByResDefIdAndPolicyId">
