You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ma...@apache.org on 2015/06/08 10:14:40 UTC
[5/6] incubator-ranger git commit: RANGER-537: next-ID sequence
updated after creating service-def with pre-defined ID
RANGER-537: next-ID sequence updated after creating service-def with pre-defined ID
Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/0512610e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/0512610e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/0512610e
Branch: refs/heads/tag-policy
Commit: 0512610e19c69188ca9f0e44a0f7701888c1b404
Parents: e3bc661
Author: Madhan Neethiraj <ma...@apache.org>
Authored: Mon Jun 8 00:16:15 2015 -0700
Committer: Madhan Neethiraj <ma...@apache.org>
Committed: Mon Jun 8 00:16:15 2015 -0700
----------------------------------------------------------------------
.../org/apache/ranger/biz/RangerBizUtil.java | 50 ++++++++++----------
.../org/apache/ranger/biz/ServiceDBStore.java | 1 +
.../org/apache/ranger/common/AppConstants.java | 8 ++++
.../org/apache/ranger/common/db/BaseDao.java | 21 ++++++++
.../java/org/apache/ranger/db/XXPolicyDao.java | 10 ++++
.../java/org/apache/ranger/db/XXServiceDao.java | 11 +++++
.../org/apache/ranger/db/XXServiceDefDao.java | 21 ++++++++
.../ranger/patch/PatchMigration_J10002.java | 44 ++---------------
.../resources/META-INF/jpa_named_queries.xml | 4 ++
9 files changed, 104 insertions(+), 66 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/0512610e/security-admin/src/main/java/org/apache/ranger/biz/RangerBizUtil.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/biz/RangerBizUtil.java b/security-admin/src/main/java/org/apache/ranger/biz/RangerBizUtil.java
index 2cae01d..6ffcd66 100644
--- a/security-admin/src/main/java/org/apache/ranger/biz/RangerBizUtil.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/RangerBizUtil.java
@@ -31,6 +31,7 @@ import java.util.Set;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.IOCase;
+import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.apache.ranger.common.AppConstants;
import org.apache.ranger.common.ContextUtil;
@@ -1344,38 +1345,37 @@ public class RangerBizUtil {
}
public static int getDBFlavor() {
+ String[] propertyNames = { "xa.db.flavor",
+ "ranger.jpa.jdbc.dialect",
+ "ranger.jpa.jdbc.url",
+ "ranger.jpa.jdbc.driver"
+ };
- String dbFlavor = "";
- boolean dbFlavorPropFound = true;
+ for(String propertyName : propertyNames) {
+ String propertyValue = PropertiesUtil.getProperty(propertyName);
- dbFlavor = PropertiesUtil.getProperty("xa.db.flavor");
- if (dbFlavor == null || dbFlavor.trim().isEmpty()) {
- dbFlavor = PropertiesUtil.getProperty("ranger.jpa.jdbc.dialect");
- dbFlavorPropFound = false;
- }
+ if(StringUtils.isBlank(propertyValue)) {
+ continue;
+ }
- if (dbFlavor != null && !dbFlavor.trim().isEmpty()) {
- if (dbFlavorPropFound) {
- if ("MYSQL".equalsIgnoreCase(dbFlavor)) {
- return AppConstants.DB_FLAVOR_MYSQL;
- } else if ("ORACLE".equalsIgnoreCase(dbFlavor)) {
- return AppConstants.DB_FLAVOR_ORACLE;
- } else {
- return AppConstants.DB_FLAVOR_UNKNOWN;
- }
+ if (StringUtils.containsIgnoreCase(propertyValue, "mysql")) {
+ return AppConstants.DB_FLAVOR_MYSQL;
+ } else if (StringUtils.containsIgnoreCase(propertyValue, "oracle")) {
+ return AppConstants.DB_FLAVOR_ORACLE;
+ } else if (StringUtils.containsIgnoreCase(propertyValue, "postgresql")) {
+ return AppConstants.DB_FLAVOR_POSTGRES;
+ } else if (StringUtils.containsIgnoreCase(propertyValue, "sqlserver")) {
+ return AppConstants.DB_FLAVOR_SQLSERVER;
} else {
- if (dbFlavor.toUpperCase().contains("MYSQL")) {
- return AppConstants.DB_FLAVOR_MYSQL;
- } else if (dbFlavor.toUpperCase().contains("ORACLE")) {
- return AppConstants.DB_FLAVOR_ORACLE;
- } else {
- return AppConstants.DB_FLAVOR_UNKNOWN;
+ if(logger.isDebugEnabled()) {
+ logger.debug("DB Falvor could not be determined from property - " + propertyName + "=" + propertyValue);
}
}
- } else {
- logger.error("Property : xa.db.flavor or ranger.jpa.jdbc.dialect, not found");
- return AppConstants.DB_FLAVOR_UNKNOWN;
}
+
+ logger.error("DB Falvor could not be determined");
+
+ return AppConstants.DB_FLAVOR_UNKNOWN;
}
public String getAuditDBType() {
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/0512610e/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 e213937..d57f0be 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
@@ -263,6 +263,7 @@ public class ServiceDBStore implements ServiceStore {
svcDefServiceWithAssignedId.setPopulateExistingBaseFields(true);
svcDefServiceWithAssignedId.create(serviceDef);
svcDefServiceWithAssignedId.setPopulateExistingBaseFields(false);
+ daoMgr.getXXServiceDef().updateSequence();
} else {
// following fields will be auto populated
serviceDef.setId(null);
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/0512610e/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 59ab3db..491726f 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
@@ -364,6 +364,14 @@ public class AppConstants extends RangerCommonEnums {
* DB Favor Oracle
*/
public static final int DB_FLAVOR_ORACLE = 2;
+ /**
+ * DB Favor Postgres
+ */
+ public static final int DB_FLAVOR_POSTGRES = 3;
+ /**
+ * DB Favor SQLServer
+ */
+ public static final int DB_FLAVOR_SQLSERVER = 4;
/***************************************************************
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/0512610e/security-admin/src/main/java/org/apache/ranger/common/db/BaseDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/common/db/BaseDao.java b/security-admin/src/main/java/org/apache/ranger/common/db/BaseDao.java
index 8ef9e08..bfa4c40 100644
--- a/security-admin/src/main/java/org/apache/ranger/common/db/BaseDao.java
+++ b/security-admin/src/main/java/org/apache/ranger/common/db/BaseDao.java
@@ -32,6 +32,8 @@ import javax.persistence.Query;
import javax.persistence.TypedQuery;
import org.apache.log4j.Logger;
+import org.apache.ranger.biz.RangerBizUtil;
+import org.apache.ranger.common.AppConstants;
import org.apache.ranger.db.RangerDaoManager;
import org.apache.ranger.db.RangerDaoManagerBase;
@@ -210,4 +212,23 @@ public abstract class BaseDao<T> {
return ret;
}
+ public void updateSequence(String seqName, long nextValue) {
+ if(RangerBizUtil.getDBFlavor() == AppConstants.DB_FLAVOR_ORACLE) {
+ String[] queries = {
+ "ALTER SEQUENCE " + seqName + " INCREMENT BY " + (nextValue - 1),
+ "select " + seqName + ".nextval from dual",
+ "ALTER SEQUENCE " + seqName + " INCREMENT BY 1 NOCACHE NOCYCLE"
+ };
+
+ for(String query : queries) {
+ getEntityManager().createNativeQuery(query).executeUpdate();
+ }
+ } else if(RangerBizUtil.getDBFlavor() == AppConstants.DB_FLAVOR_POSTGRES) {
+ String query = "SELECT setval('" + seqName + "', " + nextValue + ")";
+
+ getEntityManager().createNativeQuery(query).getSingleResult();
+ }
+
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/0512610e/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 9901832..006964c 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
@@ -113,4 +113,14 @@ public class XXPolicyDao extends BaseDao<XXPolicy> {
}
}
+ public void updateSequence() {
+ Long maxId = getMaxIdOfXXPolicy();
+
+ if(maxId == null) {
+ return;
+ }
+
+ updateSequence("X_POLICY_SEQ", maxId + 1);
+ }
+
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/0512610e/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 4f35ad3..0a0e44a 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
@@ -22,6 +22,8 @@ import java.util.List;
import javax.persistence.NoResultException;
+import org.apache.ranger.biz.RangerBizUtil;
+import org.apache.ranger.common.AppConstants;
import org.apache.ranger.common.db.BaseDao;
import org.apache.ranger.entity.XXService;
@@ -69,4 +71,13 @@ public class XXServiceDao extends BaseDao<XXService> {
}
}
+ public void updateSequence() {
+ Long maxId = getMaxIdOfXXService();
+
+ if(maxId == null) {
+ return;
+ }
+
+ updateSequence("X_SERVICE_SEQ", maxId + 1);
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/0512610e/security-admin/src/main/java/org/apache/ranger/db/XXServiceDefDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXServiceDefDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXServiceDefDao.java
index 1affbf7..d4f182c 100644
--- a/security-admin/src/main/java/org/apache/ranger/db/XXServiceDefDao.java
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXServiceDefDao.java
@@ -17,6 +17,9 @@
package org.apache.ranger.db;
+import java.util.ArrayList;
+import java.util.List;
+
import javax.persistence.NoResultException;
import org.apache.ranger.common.db.BaseDao;
@@ -44,4 +47,22 @@ public class XXServiceDefDao extends BaseDao<XXServiceDef> {
}
}
+ public Long getMaxIdOfXXServiceDef() {
+ try {
+ return (Long) getEntityManager().createNamedQuery("XXServiceDef.getMaxIdOfXXServiceDef").getSingleResult();
+ } catch (NoResultException e) {
+ return null;
+ }
+ }
+
+ public void updateSequence() {
+ Long maxId = getMaxIdOfXXServiceDef();
+
+ if(maxId == null) {
+ return;
+ }
+
+ updateSequence("X_SERVICE_DEF_SEQ", maxId + 1);
+ }
+
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/0512610e/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 c33b39d..1747324 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
@@ -485,47 +485,9 @@ public class PatchMigration_J10002 extends BaseLoader {
}
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();
- }
-
+ daoMgr.getXXServiceDef().updateSequence();
+ daoMgr.getXXService().updateSequence();
+ daoMgr.getXXPolicy().updateSequence();
}
private String getUserName(VXPermMap permMap) {
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/0512610e/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 054a0bd..7761756 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
@@ -227,6 +227,10 @@
<query>select obj from XXServiceDef obj where obj.name = :name</query>
</named-query>
+ <named-query name="XXServiceDef.getMaxIdOfXXServiceDef">
+ <query>select MAX(obj.id) from XXServiceDef obj</query>
+ </named-query>
+
<!-- XXResourceDef -->
<named-query name="XXResourceDef.findByNameAndDefId">
<query>select obj from XXResourceDef obj where obj.name = :name and obj.defId = :defId order by obj.level</query>