Skip to content

Commit

Permalink
Revert "RANGER-2732: Batch lookup role, group, and user IDs during po…
Browse files Browse the repository at this point in the history
…licy creation"

This reverts commit 51c5846.
  • Loading branch information
pradeepagrawal8184 committed Feb 26, 2020
1 parent 51c5846 commit 575f709
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 142 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,7 @@
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;

import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
Expand All @@ -33,6 +31,7 @@
import org.apache.ranger.db.RangerDaoManager;
import org.apache.ranger.entity.XXAccessTypeDef;
import org.apache.ranger.entity.XXDataMaskTypeDef;
import org.apache.ranger.entity.XXGroup;
import org.apache.ranger.entity.XXPolicy;
import org.apache.ranger.entity.XXPolicyConditionDef;
import org.apache.ranger.entity.XXPolicyRefAccessType;
Expand All @@ -43,7 +42,9 @@
import org.apache.ranger.entity.XXPolicyRefRole;
import org.apache.ranger.entity.XXPolicyRefUser;
import org.apache.ranger.entity.XXResourceDef;
import org.apache.ranger.entity.XXRole;
import org.apache.ranger.entity.XXServiceDef;
import org.apache.ranger.entity.XXUser;
import org.apache.ranger.plugin.model.RangerPolicy;
import org.apache.ranger.plugin.model.RangerPolicy.RangerDataMaskPolicyItem;
import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItem;
Expand Down Expand Up @@ -148,83 +149,80 @@ public void createNewPolMappingForRefTable(RangerPolicy policy, XXPolicy xPolicy
}
daoMgr.getXXPolicyRefResource().batchCreate(xPolResources);

final Set<String> filteredRoleNames = roleNames.stream()
.filter(str -> !StringUtils.isBlank(str)).collect(Collectors.toSet());
Map<String, Long> roleNameIdMap = daoMgr.getXXRole().getIdsByRoleNames(filteredRoleNames);
if (roleNameIdMap.size() != filteredRoleNames.size()) {
RangerBizUtil.setBulkMode(false);
for (String roleName : filteredRoleNames) {
if (roleNameIdMap.containsKey(roleName)) {
continue;
}

Long roleId = createRoleForPolicy(roleName);
roleNameIdMap.put(roleName, roleId);
}
}

List<XXPolicyRefRole> xPolRoles = new ArrayList<>();
for (String role : roleNames) {
if (StringUtils.isBlank(role)) {
continue;
}

XXRole xRole = daoMgr.getXXRole().findByRoleName(role);
Long roleId = null;
if (xRole != null) {
roleId = xRole.getId();
}
else {
RangerBizUtil.setBulkMode(false);
roleId = createRoleForPolicy(role);
}
XXPolicyRefRole xPolRole = new XXPolicyRefRole();

xPolRole.setPolicyId(policy.getId());
xPolRole.setRoleId(roleNameIdMap.get(role));
xPolRole.setRoleId(roleId);
xPolRole.setRoleName(role);

xPolRoles.add(xPolRole);
}
RangerBizUtil.setBulkMode(oldBulkMode);
daoMgr.getXXPolicyRefRole().batchCreate(xPolRoles);

final Set<String> filteredGroupNames = groupNames.stream()
.filter(str -> !StringUtils.isBlank(str)).collect(Collectors.toSet());
Map<String, Long> groupNameIdMap = daoMgr.getXXGroup().getIdsByGroupNames(filteredGroupNames);
if (groupNameIdMap.size() != filteredGroupNames.size()) {
RangerBizUtil.setBulkMode(false);
for (String groupName : filteredGroupNames) {
if (groupNameIdMap.containsKey(groupName)) {
continue;
}
List<XXPolicyRefGroup> xPolGroups = new ArrayList<>();
for (String group : groupNames) {
if (StringUtils.isBlank(group)) {
continue;
}

Long groupId = createGroupForPolicy(groupName);
groupNameIdMap.put(groupName, groupId);
XXGroup xGroup = daoMgr.getXXGroup().findByGroupName(group);
Long groupId = null;
if (xGroup != null) {
groupId = xGroup.getId();
}
else {
RangerBizUtil.setBulkMode(false);
groupId = createGroupForPolicy(group);
}
}

List<XXPolicyRefGroup> xPolGroups = new ArrayList<>();
for (String group : filteredGroupNames) {
XXPolicyRefGroup xPolGroup = new XXPolicyRefGroup();

xPolGroup.setPolicyId(policy.getId());
xPolGroup.setGroupId(groupNameIdMap.get(group));
xPolGroup.setGroupId(groupId);
xPolGroup.setGroupName(group);

xPolGroups.add(xPolGroup);
}
RangerBizUtil.setBulkMode(oldBulkMode);
daoMgr.getXXPolicyRefGroup().batchCreate(xPolGroups);

final Set<String> filteredUserNames = userNames.stream()
.filter(str -> !StringUtils.isBlank(str)).collect(Collectors.toSet());
Map<String, Long> userNameIdMap = daoMgr.getXXUser().getIdsByUserNames(filteredUserNames);
if (userNameIdMap.size() != filteredUserNames.size()) {
RangerBizUtil.setBulkMode(false);
for (String userName : filteredUserNames) {
if (userNameIdMap.containsKey(userName)) {
continue;
}
List<XXPolicyRefUser> xPolUsers = new ArrayList<>();
for (String user : userNames) {
if (StringUtils.isBlank(user)) {
continue;
}

Long userId = createUserForPolicy(userName);
userNameIdMap.put(userName, userId);
XXUser xUser = daoMgr.getXXUser().findByUserName(user);
Long userId = null;
if(xUser != null){
userId = xUser.getId();
}
else {
RangerBizUtil.setBulkMode(false);

userId = createUserForPolicy(user);
}
}

List<XXPolicyRefUser> xPolUsers = new ArrayList<>();
for (String user : filteredUserNames) {
XXPolicyRefUser xPolUser = new XXPolicyRefUser();

xPolUser.setPolicyId(policy.getId());
xPolUser.setUserId(userNameIdMap.get(user));
xPolUser.setUserId(userId);
xPolUser.setUserName(user);

xPolUsers.add(xPolUser);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,21 +21,15 @@


import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import javax.persistence.NoResultException;

import org.apache.commons.collections.CollectionUtils;
import org.apache.ranger.common.db.BaseDao;
import org.apache.ranger.entity.XXGroup;
import org.springframework.stereotype.Service;

@Service
public class XXGroupDao extends BaseDao<XXGroup> {

public XXGroupDao(RangerDaoManagerBase daoManager) {
super(daoManager);
}
Expand Down Expand Up @@ -73,22 +67,4 @@ public XXGroup findByGroupName(String groupName) {
return null;
}

public Map<String, Long> getIdsByGroupNames(Collection<String> groupNames) {
Map<String, Long> ret = Collections.emptyMap();
if (!CollectionUtils.isEmpty(groupNames)) {
try {
Collection<Object[]> result = getEntityManager()
.createNamedQuery("XXGroup.getIdsByGroupNames", Object[].class)
.setParameter("names", groupNames)
.getResultList();
ret = result.stream().collect(
Collectors.toMap(
object -> (String)(object[1]),
object -> (Long)(object[0])));
} catch (NoResultException e) {
// ignore
}
}
return ret;
}
}
23 changes: 0 additions & 23 deletions security-admin/src/main/java/org/apache/ranger/db/XXRoleDao.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@

package org.apache.ranger.db;

import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.ListUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.ranger.common.db.BaseDao;
Expand All @@ -26,11 +25,7 @@

import javax.persistence.NoResultException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

@Service
public class XXRoleDao extends BaseDao<XXRole> {
Expand Down Expand Up @@ -68,24 +63,6 @@ public XXRole findByRoleName(String roleName) {
return null;
}
}
public Map<String, Long> getIdsByRoleNames(Collection<String> roleNames) {
Map<String, Long> ret = Collections.emptyMap();
if (!CollectionUtils.isEmpty(roleNames)) {
try {
Collection<Object[]> result = getEntityManager()
.createNamedQuery("XXRole.getIdsByRoleNames", Object[].class)
.setParameter("roleNames", roleNames)
.getResultList();
ret = result.stream().collect(
Collectors.toMap(
object -> (String)(object[1]),
object -> (Long)(object[0])));
} catch (NoResultException e) {
// ignore
}
}
return ret;
}
public List<XXRole> findByServiceId(Long serviceId) {
List<XXRole> ret;
try {
Expand Down
29 changes: 1 addition & 28 deletions security-admin/src/main/java/org/apache/ranger/db/XXUserDao.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,22 +19,16 @@

package org.apache.ranger.db;

import java.util.Collection;
import java.util.Collections;
import java.util.Map;
import java.util.stream.Collectors;

import javax.persistence.NoResultException;

import org.apache.commons.collections.CollectionUtils;
import org.apache.log4j.Logger;
import org.apache.ranger.common.db.BaseDao;
import org.apache.ranger.entity.XXUser;
import org.springframework.stereotype.Service;

@Service
public class XXUserDao extends BaseDao<XXUser> {
private static final Logger logger = Logger.getLogger(XXUserDao.class);
private static final Logger logger = Logger.getLogger(XXResourceDao.class);

public XXUserDao(RangerDaoManagerBase daoManager) {
super(daoManager);
Expand All @@ -56,27 +50,6 @@ public XXUser findByUserName(String name) {
return null;
}

public Map<String, Long> getIdsByUserNames(Collection<String> names) {
Map<String, Long> ret = Collections.emptyMap();
if (CollectionUtils.isEmpty(names)) {
logger.debug("names is null or empty");
} else {
try {
Collection<Object[]> result = getEntityManager()
.createNamedQuery("XXUser.getIdsByUserNames", Object[].class)
.setParameter("names", names)
.getResultList();
ret = result.stream().collect(
Collectors.toMap(
object -> (String)(object[1]),
object -> (Long)(object[0])));
} catch (NoResultException e) {
// ignore
}
}
return ret;
}

public XXUser findByPortalUserId(Long portalUserId) {
if (portalUserId == null) {
return null;
Expand Down
18 changes: 0 additions & 18 deletions security-admin/src/main/resources/META-INF/jpa_named_queries.xml
Original file line number Diff line number Diff line change
Expand Up @@ -198,24 +198,12 @@
</query>
</named-query>

<named-query name="XXUser.getIdsByUserNames">
<query>SELECT Obj.id, Obj.name FROM XXUser obj
WHERE obj.name IN :names
</query>
</named-query>

<named-query name="XXGroup.findByGroupName">
<query>SELECT Obj FROM XXGroup obj
WHERE obj.name=:name
</query>
</named-query>

<named-query name="XXGroup.getIdsByGroupNames">
<query>SELECT Obj.id, Obj.name FROM XXGroup obj
WHERE obj.name IN :names
</query>
</named-query>

<named-query name="XXGroupUser.deleteByGroupIdAndUserId">
<query>DELETE FROM XXGroupUser obj
WHERE obj.parentGroupId=:parentGroupId
Expand Down Expand Up @@ -1552,12 +1540,6 @@
<query>select obj from XXRole obj where obj.name = :roleName</query>
</named-query>

<named-query name="XXRole.getIdsByRoleNames">
<query>SELECT Obj.id, Obj.name FROM XXRole obj
WHERE obj.name IN :roleNames
</query>
</named-query>

<named-query name="XXRole.findByServiceId">
<query>select obj from XXRole obj, XXPolicyRefRole policyRefRole, XXPolicy policy where obj.id = policyRefRole.roleId and policyRefRole.policyId = policy.id and policy.service = :serviceId </query>
</named-query>
Expand Down

0 comments on commit 575f709

Please sign in to comment.