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/03/27 00:54:04 UTC

incubator-ranger git commit: RANGER-339: Fix for potential NPE, remove dead code

Repository: incubator-ranger
Updated Branches:
  refs/heads/master 87446272e -> b1bfbc572


RANGER-339: Fix for potential NPE, remove dead code


Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/b1bfbc57
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/b1bfbc57
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/b1bfbc57

Branch: refs/heads/master
Commit: b1bfbc572cd2a2974403abb7c023b5390c21f55d
Parents: 8744627
Author: Abhay Kulkarni <ak...@hortonworks.com>
Authored: Thu Mar 26 16:52:54 2015 -0700
Committer: Madhan Neethiraj <ma...@apache.org>
Committed: Thu Mar 26 16:52:54 2015 -0700

----------------------------------------------------------------------
 .../java/org/apache/ranger/biz/AssetMgr.java    | 131 +++++++++----------
 .../java/org/apache/ranger/biz/UserMgr.java     |   7 +-
 .../org/apache/ranger/patch/BaseLoader.java     |   2 +-
 .../ranger/service/XAccessAuditService.java     |  25 ++--
 .../apache/ranger/service/XAssetService.java    |  56 ++++----
 .../apache/ranger/service/XAuditMapService.java |   2 +-
 .../apache/ranger/service/XGroupService.java    |   2 +-
 .../apache/ranger/service/XPermMapService.java  |   2 +-
 .../apache/ranger/service/XResourceService.java |   8 +-
 .../apache/ranger/service/XTrxLogService.java   |  34 ++---
 .../org/apache/ranger/service/XUserService.java |   6 +-
 .../process/PolicyMgrUserGroupBuilder.java      |  30 +++--
 .../config/UserGroupSyncConfig.java             |   6 +-
 .../poc/RangerClientUserGroupMapping.java       |  42 +++---
 .../unix/jaas/ConsolePromptCallbackHandler.java |  14 +-
 15 files changed, 190 insertions(+), 177 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b1bfbc57/security-admin/src/main/java/org/apache/ranger/biz/AssetMgr.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/biz/AssetMgr.java b/security-admin/src/main/java/org/apache/ranger/biz/AssetMgr.java
index 9d11256..4750081 100644
--- a/security-admin/src/main/java/org/apache/ranger/biz/AssetMgr.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/AssetMgr.java
@@ -68,22 +68,7 @@ import org.apache.ranger.service.XTrxLogService;
 import org.apache.ranger.service.XUserService;
 import org.apache.ranger.solr.SolrAccessAuditsService;
 import org.apache.ranger.util.RestUtil;
-import org.apache.ranger.view.VXAccessAuditList;
-import org.apache.ranger.view.VXAsset;
-import org.apache.ranger.view.VXAuditMap;
-import org.apache.ranger.view.VXAuditMapList;
-import org.apache.ranger.view.VXLong;
-import org.apache.ranger.view.VXPermMap;
-import org.apache.ranger.view.VXPermMapList;
-import org.apache.ranger.view.VXPolicy;
-import org.apache.ranger.view.VXPolicyExportAuditList;
-import org.apache.ranger.view.VXResource;
-import org.apache.ranger.view.VXResourceList;
-import org.apache.ranger.view.VXResponse;
-import org.apache.ranger.view.VXStringList;
-import org.apache.ranger.view.VXTrxLog;
-import org.apache.ranger.view.VXTrxLogList;
-import org.apache.ranger.view.VXUser;
+import org.apache.ranger.view.*;
 import org.codehaus.jackson.JsonGenerationException;
 import org.codehaus.jackson.map.JsonMappingException;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -1756,39 +1741,42 @@ public class AssetMgr extends AssetMgrBase {
 
 	public VXAccessAuditList getAccessLogs(SearchCriteria searchCriteria) {
 
-		if (searchCriteria != null && searchCriteria.getParamList() != null
-				&& searchCriteria.getParamList().size() > 0) {
-			int clientTimeOffsetInMinute = RestUtil.getClientTimeOffset();
-			java.util.Date temp = null;
-			DateUtil dateUtil = new DateUtil();
-			if (searchCriteria.getParamList().containsKey("startDate")) {
-				temp = (java.util.Date) searchCriteria.getParamList().get(
-						"startDate");
-				temp = dateUtil.getDateFromGivenDate(temp, 0, 0, 0, 0);
-				temp = dateUtil.addTimeOffset(temp, clientTimeOffsetInMinute);
-				searchCriteria.getParamList().put("startDate", temp);
-			}
-			if (searchCriteria.getParamList().containsKey("endDate")) {
-				temp = (java.util.Date) searchCriteria.getParamList().get(
-						"endDate");
-				temp = dateUtil.getDateFromGivenDate(temp, 0, 23, 59, 59);
-				temp = dateUtil.addTimeOffset(temp, clientTimeOffsetInMinute);
-				searchCriteria.getParamList().put("endDate", temp);
-			}
+        if (searchCriteria == null) {
+            searchCriteria = new SearchCriteria();
+        }
+        if (searchCriteria.getParamList() != null
+                && searchCriteria.getParamList().size() > 0) {
+            int clientTimeOffsetInMinute = RestUtil.getClientTimeOffset();
+            java.util.Date temp = null;
+            DateUtil dateUtil = new DateUtil();
+            if (searchCriteria.getParamList().containsKey("startDate")) {
+                temp = (java.util.Date) searchCriteria.getParamList().get(
+                        "startDate");
+                temp = dateUtil.getDateFromGivenDate(temp, 0, 0, 0, 0);
+                temp = dateUtil.addTimeOffset(temp, clientTimeOffsetInMinute);
+                searchCriteria.getParamList().put("startDate", temp);
+            }
+            if (searchCriteria.getParamList().containsKey("endDate")) {
+                temp = (java.util.Date) searchCriteria.getParamList().get(
+                        "endDate");
+                temp = dateUtil.getDateFromGivenDate(temp, 0, 23, 59, 59);
+                temp = dateUtil.addTimeOffset(temp, clientTimeOffsetInMinute);
+                searchCriteria.getParamList().put("endDate", temp);
+            }
+
+        }
+        if (searchCriteria.getSortType() == null) {
+            searchCriteria.setSortType("desc");
+        } else if (!searchCriteria.getSortType().equalsIgnoreCase("asc") && !searchCriteria.getSortType().equalsIgnoreCase("desc")) {
+            searchCriteria.setSortType("desc");
+        }
+        if (xaBizUtil.getAuditDBType().equalsIgnoreCase(RangerBizUtil.AUDIT_STORE_SOLR)) {
+            return solrAccessAuditsService.searchXAccessAudits(searchCriteria);
+        } else {
+            return xAccessAuditService.searchXAccessAudits(searchCriteria);
+        }
+    }
 
-		}
-		if(searchCriteria.getSortType()==null){
-			searchCriteria.setSortType("desc");
-		}else if(!searchCriteria.getSortType().equalsIgnoreCase("asc")&& !searchCriteria.getSortType().equalsIgnoreCase("desc")){
-			searchCriteria.setSortType("desc");
-		}
-		if (xaBizUtil.getAuditDBType().equalsIgnoreCase(RangerBizUtil.AUDIT_STORE_SOLR)) {
-			return solrAccessAuditsService.searchXAccessAudits(searchCriteria);
-		} else {
-			return xAccessAuditService.searchXAccessAudits(searchCriteria);
-		}
-		//return xAccessAuditService.searchXAccessAudits(searchCriteria);
-	}
 
 	public VXTrxLogList getTransactionReport(String transactionId) {
 		List<XXTrxLog> xTrxLogList = rangerDaoManager.getXXTrxLog()
@@ -1854,30 +1842,29 @@ public class AssetMgr extends AssetMgrBase {
 	@Override
 	public VXPolicyExportAuditList searchXPolicyExportAudits(
 			SearchCriteria searchCriteria) {
-		if (searchCriteria != null && searchCriteria.getParamList() != null
-				&& searchCriteria.getParamList().size() > 0) {
-
-			int clientTimeOffsetInMinute = RestUtil.getClientTimeOffset();
-			java.util.Date temp = null;
-			DateUtil dateUtil = new DateUtil();
-			if (searchCriteria.getParamList().containsKey("startDate")) {
-				temp = (java.util.Date) searchCriteria.getParamList().get(
-						"startDate");
-				temp = dateUtil.getDateFromGivenDate(temp, 0, 0, 0, 0);
-				temp = dateUtil.addTimeOffset(temp, clientTimeOffsetInMinute);
-				searchCriteria.getParamList().put("startDate", temp);
-			}
-			if (searchCriteria.getParamList().containsKey("endDate")) {
-				temp = (java.util.Date) searchCriteria.getParamList().get(
-						"endDate");
-				temp = dateUtil.getDateFromGivenDate(temp, 0, 23, 59, 59);
-				temp = dateUtil.addTimeOffset(temp, clientTimeOffsetInMinute);
-				searchCriteria.getParamList().put("endDate", temp);
-			}
-		}
-	
-		return xPolicyExportAuditService.searchXPolicyExportAudits(searchCriteria);
-	}
+        if (searchCriteria != null && searchCriteria.getParamList() != null
+                && searchCriteria.getParamList().size() > 0) {
+
+            int clientTimeOffsetInMinute = RestUtil.getClientTimeOffset();
+            java.util.Date temp = null;
+            DateUtil dateUtil = new DateUtil();
+            if (searchCriteria.getParamList().containsKey("startDate")) {
+                temp = (java.util.Date) searchCriteria.getParamList().get(
+                        "startDate");
+                temp = dateUtil.getDateFromGivenDate(temp, 0, 0, 0, 0);
+                temp = dateUtil.addTimeOffset(temp, clientTimeOffsetInMinute);
+                searchCriteria.getParamList().put("startDate", temp);
+            }
+            if (searchCriteria.getParamList().containsKey("endDate")) {
+                temp = (java.util.Date) searchCriteria.getParamList().get(
+                        "endDate");
+                temp = dateUtil.getDateFromGivenDate(temp, 0, 23, 59, 59);
+                temp = dateUtil.addTimeOffset(temp, clientTimeOffsetInMinute);
+                searchCriteria.getParamList().put("endDate", temp);
+            }
+        }
+        return xPolicyExportAuditService.searchXPolicyExportAudits(searchCriteria);
+    }
 	
 	public VXAsset getXAsset(Long id){
 		UserSessionBase currentUserSession = ContextUtil

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b1bfbc57/security-admin/src/main/java/org/apache/ranger/biz/UserMgr.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/biz/UserMgr.java b/security-admin/src/main/java/org/apache/ranger/biz/UserMgr.java
index 78c6c00..420b37d 100644
--- a/security-admin/src/main/java/org/apache/ranger/biz/UserMgr.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/UserMgr.java
@@ -1081,8 +1081,11 @@ public class UserMgr {
 								MessageEnums.OPER_NOT_ALLOWED_FOR_STATE);*/
 			}
 		}
-
-		return mapXXPortalUserToVXPortalUserForDefaultAccount(xXPortalUser);
+        if (xXPortalUser != null) {
+            return mapXXPortalUserToVXPortalUserForDefaultAccount(xXPortalUser);
+        }else {
+            return null;
+        }
 	}
 
 	private VXPortalUser mapXXPortalUserToVXPortalUserForDefaultAccount(XXPortalUser user) {

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b1bfbc57/security-admin/src/main/java/org/apache/ranger/patch/BaseLoader.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/patch/BaseLoader.java b/security-admin/src/main/java/org/apache/ranger/patch/BaseLoader.java
index 61b46af..014dedc 100644
--- a/security-admin/src/main/java/org/apache/ranger/patch/BaseLoader.java
+++ b/security-admin/src/main/java/org/apache/ranger/patch/BaseLoader.java
@@ -146,7 +146,7 @@ public abstract class BaseLoader {
 	long currTime =  DateUtil.getUTCDate().getTime();
 	String retStr = formatTimeTaken(currTime - startTime);
 	if (currTime - startTime > 0 && countSoFar > 0) {
-	    double rateSoFar = countSoFar * 1000 / (currTime - startTime);
+	    double rateSoFar = (double)(countSoFar * 1000) / (currTime - startTime);
 	    retStr = retStr + " " + ". Rate so far for " + countSoFar + " is "
 		    + twoDForm.format(rateSoFar);
 

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b1bfbc57/security-admin/src/main/java/org/apache/ranger/service/XAccessAuditService.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/service/XAccessAuditService.java b/security-admin/src/main/java/org/apache/ranger/service/XAccessAuditService.java
index ef9bc46..a8999a9 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/XAccessAuditService.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/XAccessAuditService.java
@@ -147,21 +147,22 @@ public class XAccessAuditService extends XAccessAuditServiceBase<XXAccessAudit,
 	 * @return
 	 */
 	public VXAccessAuditList searchXAccessAudits(SearchCriteria searchCriteria) {
-		VXAccessAuditList returnList = new VXAccessAuditList();
-		List<VXAccessAudit> xAccessAuditList = new ArrayList<VXAccessAudit>();
+        VXAccessAuditList returnList = new VXAccessAuditList();
+        List<VXAccessAudit> xAccessAuditList = new ArrayList<VXAccessAudit>();
 
-		List<XXAccessAudit> resultList = (List<XXAccessAudit>)searchResources(searchCriteria,
-				searchFields, sortFields, returnList);
+        List<XXAccessAudit> resultList = (List<XXAccessAudit>) searchResources(searchCriteria,
+                searchFields, sortFields, returnList);
 
-		// Iterate over the result list and create the return list
-		for (XXAccessAudit gjXAccessAudit : resultList) {
-			VXAccessAudit vXAccessAudit = populateViewBean(gjXAccessAudit);
-			xAccessAuditList.add(vXAccessAudit);
-		}
+        // Iterate over the result list and create the return list
+        for (XXAccessAudit gjXAccessAudit : resultList) {
+            VXAccessAudit vXAccessAudit = populateViewBean(gjXAccessAudit);
+            xAccessAuditList.add(vXAccessAudit);
+        }
 
-		returnList.setVXAccessAudits(xAccessAuditList);
-		return returnList;
-	}
+
+        returnList.setVXAccessAudits(xAccessAuditList);
+        return returnList;
+    }
 	
 	public VXAccessAudit populateViewBean(XXAccessAudit gjXAccessAudit) {
 		VXAccessAudit vXAccessAudit = new VXAccessAudit();

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b1bfbc57/security-admin/src/main/java/org/apache/ranger/service/XAssetService.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/service/XAssetService.java b/security-admin/src/main/java/org/apache/ranger/service/XAssetService.java
index 6c99705..1d6f42c 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/XAssetService.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/XAssetService.java
@@ -117,33 +117,35 @@ public class XAssetService extends XAssetServiceBase<XXAsset, VXAsset> {
 	@Override
 	protected XXAsset mapViewToEntityBean(VXAsset vObj, XXAsset mObj,
 			int OPERATION_CONTEXT) {
-		String oldConfig = (mObj != null) ? mObj.getConfig() : null;
-		super.mapViewToEntityBean(vObj, mObj, OPERATION_CONTEXT);
-		String config = vObj.getConfig();
-		if (config != null && !config.isEmpty()) {
-			Map<String, String> configMap = jsonUtil.jsonToMap(config);
-			Entry<String, String> passwordEntry = getPasswordEntry(configMap);
-			if (passwordEntry != null) {
-				// If "*****" then get password from db and update
-				String password = passwordEntry.getValue();
-				if (password != null) {
-					if (password.equals(hiddenPasswordString)) {
-						if (oldConfig != null && !oldConfig.isEmpty()) {
-							Map<String, String> oldConfigMap = jsonUtil
-									.jsonToMap(oldConfig);
-							Entry<String, String> oldPasswordEntry 
-									= getPasswordEntry(oldConfigMap);
-							if (oldPasswordEntry != null) {
-								configMap.put(oldPasswordEntry.getKey(),
-										oldPasswordEntry.getValue());
-							}
-						}
-					}
-					config = jsonUtil.readMapToString(configMap);
-				}
-			}
-		}
-		mObj.setConfig(config);
+        if (vObj != null && mObj != null) {
+            String oldConfig = (mObj != null) ? mObj.getConfig() : null;
+            super.mapViewToEntityBean(vObj, mObj, OPERATION_CONTEXT);
+            String config = vObj.getConfig();
+            if (config != null && !config.isEmpty()) {
+                Map<String, String> configMap = jsonUtil.jsonToMap(config);
+                Entry<String, String> passwordEntry = getPasswordEntry(configMap);
+                if (passwordEntry != null) {
+                    // If "*****" then get password from db and update
+                    String password = passwordEntry.getValue();
+                    if (password != null) {
+                        if (password.equals(hiddenPasswordString)) {
+                            if (oldConfig != null && !oldConfig.isEmpty()) {
+                                Map<String, String> oldConfigMap = jsonUtil
+                                        .jsonToMap(oldConfig);
+                                Entry<String, String> oldPasswordEntry
+                                        = getPasswordEntry(oldConfigMap);
+                                if (oldPasswordEntry != null) {
+                                    configMap.put(oldPasswordEntry.getKey(),
+                                            oldPasswordEntry.getValue());
+                                }
+                            }
+                        }
+                        config = jsonUtil.readMapToString(configMap);
+                    }
+                }
+            }
+            mObj.setConfig(config);
+        }
 		return mObj;
 	}
 

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b1bfbc57/security-admin/src/main/java/org/apache/ranger/service/XAuditMapService.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/service/XAuditMapService.java b/security-admin/src/main/java/org/apache/ranger/service/XAuditMapService.java
index a669280..c00ca74 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/XAuditMapService.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/XAuditMapService.java
@@ -78,7 +78,7 @@ public class XAuditMapService extends
 	}
 
 	public List<XXTrxLog> getTransactionLog(VXAuditMap vObj, VXAuditMap mObj, String action){
-		if(vObj == null && (action == null || !action.equalsIgnoreCase("update"))){
+		if(vObj == null || action == null || (action.equalsIgnoreCase("update") && mObj == null)){
 			return null;
 		}
 		

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b1bfbc57/security-admin/src/main/java/org/apache/ranger/service/XGroupService.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/service/XGroupService.java b/security-admin/src/main/java/org/apache/ranger/service/XGroupService.java
index 580c31c..d31e178 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/XGroupService.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/XGroupService.java
@@ -154,7 +154,7 @@ public class XGroupService extends XGroupServiceBase<XXGroup, VXGroup> {
 	}
 
 	public List<XXTrxLog> getTransactionLog(VXGroup vObj, XXGroup mObj, String action){
-		if(vObj == null && (action == null || !action.equalsIgnoreCase("update"))){
+		if(vObj == null || action == null || (action.equalsIgnoreCase("update") && mObj == null)){
 			return null;
 		}
 		

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b1bfbc57/security-admin/src/main/java/org/apache/ranger/service/XPermMapService.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/service/XPermMapService.java b/security-admin/src/main/java/org/apache/ranger/service/XPermMapService.java
index 9b8247c..34109ae 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/XPermMapService.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/XPermMapService.java
@@ -150,7 +150,7 @@ public class XPermMapService extends XPermMapServiceBase<XXPermMap, VXPermMap> {
 	}
 	
 	public List<XXTrxLog> getTransactionLog(VXPermMap vObj, VXPermMap mObj, String action){
-		if(vObj == null && (action == null || !action.equalsIgnoreCase("update"))){
+		if(vObj == null || action == null || (action.equalsIgnoreCase("update") && mObj == null)){
 			return null;
 		}
 		

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b1bfbc57/security-admin/src/main/java/org/apache/ranger/service/XResourceService.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/service/XResourceService.java b/security-admin/src/main/java/org/apache/ranger/service/XResourceService.java
index a7e2f12..1faec21 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/XResourceService.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/XResourceService.java
@@ -424,9 +424,9 @@ public class XResourceService extends
 
 	@Override
 	protected XXResource mapViewToEntityBean(VXResource vObj, XXResource mObj, int OPERATION_CONTEXT) {
-		super.mapViewToEntityBean(vObj, mObj, OPERATION_CONTEXT);
-		mObj.setUdfs(vObj.getUdfs());
-		if(vObj!=null && mObj!=null){
+        if(vObj!=null && mObj!=null){
+		    super.mapViewToEntityBean(vObj, mObj, OPERATION_CONTEXT);
+		    mObj.setUdfs(vObj.getUdfs());
 			XXPortalUser xXPortalUser= null;
 			if(mObj.getAddedByUserId()==null || mObj.getAddedByUserId()==0){
 				if(!stringUtil.isEmpty(vObj.getOwner())){
@@ -951,7 +951,7 @@ public class XResourceService extends
 	}
 	
 	public List<XXTrxLog> getTransactionLog(VXResource vObj, XXResource mObj, String action){
-		if(vObj == null && (action == null || !action.equalsIgnoreCase("update"))){
+		if(vObj == null || action == null || (action.equalsIgnoreCase("update") && mObj == null)) {
 			return null;
 		}
 

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b1bfbc57/security-admin/src/main/java/org/apache/ranger/service/XTrxLogService.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/service/XTrxLogService.java b/security-admin/src/main/java/org/apache/ranger/service/XTrxLogService.java
index 7edce5b..3c3ac64 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/XTrxLogService.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/XTrxLogService.java
@@ -438,22 +438,22 @@ public class XTrxLogService extends XTrxLogServiceBase<XXTrxLog, VXTrxLog> {
 
 	@Override
 	protected VXTrxLog mapEntityToViewBean(VXTrxLog vObj, XXTrxLog mObj) {
-		super.mapEntityToViewBean(vObj, mObj);
-		if(mObj!=null && vObj!=null){
-			XXPortalUser xXPortalUser=null;
-			if(stringUtil.isEmpty(vObj.getOwner())){
-				xXPortalUser= rangerDaoManager.getXXPortalUser().getById(mObj.getAddedByUserId());	
-				if(xXPortalUser!=null){
-					vObj.setOwner(xXPortalUser.getLoginId());
-				}
-			}
-			if(stringUtil.isEmpty(vObj.getUpdatedBy())){
-				xXPortalUser= rangerDaoManager.getXXPortalUser().getById(mObj.getUpdatedByUserId());		
-				if(xXPortalUser!=null){
-					vObj.setUpdatedBy(xXPortalUser.getLoginId());
-				}
-			}
-		}
-		return vObj;
+        if(mObj!=null && vObj!=null){
+            super.mapEntityToViewBean(vObj, mObj);
+            XXPortalUser xXPortalUser=null;
+            if(stringUtil.isEmpty(vObj.getOwner())){
+                xXPortalUser= rangerDaoManager.getXXPortalUser().getById(mObj.getAddedByUserId());
+                if(xXPortalUser!=null){
+                    vObj.setOwner(xXPortalUser.getLoginId());
+                }
+            }
+            if(stringUtil.isEmpty(vObj.getUpdatedBy())){
+                xXPortalUser= rangerDaoManager.getXXPortalUser().getById(mObj.getUpdatedByUserId());
+                if(xXPortalUser!=null){
+                    vObj.setUpdatedBy(xXPortalUser.getLoginId());
+                }
+            }
+        }
+        return vObj;
 	}
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b1bfbc57/security-admin/src/main/java/org/apache/ranger/service/XUserService.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/service/XUserService.java b/security-admin/src/main/java/org/apache/ranger/service/XUserService.java
index d847ca0..c70fbb8 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/XUserService.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/XUserService.java
@@ -261,8 +261,10 @@ public class XUserService extends XUserServiceBase<XXUser, VXUser> {
 
 	public List<XXTrxLog> getTransactionLog(VXUser vObj, VXPortalUser mObj,
 			String action) {
-		if (vObj == null || action == null || (action.equalsIgnoreCase("update") && mObj == null))
-	    		return null;
+
+		if (vObj == null || action == null || (action.equalsIgnoreCase("update") && mObj == null)) {
+			return null;
+		}
 
 		List<XXTrxLog> trxLogList = new ArrayList<XXTrxLog>();
 		try {

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b1bfbc57/ugsync/src/main/java/org/apache/ranger/ldapusersync/process/PolicyMgrUserGroupBuilder.java
----------------------------------------------------------------------
diff --git a/ugsync/src/main/java/org/apache/ranger/ldapusersync/process/PolicyMgrUserGroupBuilder.java b/ugsync/src/main/java/org/apache/ranger/ldapusersync/process/PolicyMgrUserGroupBuilder.java
index 44932ad..7cd06cc 100644
--- a/ugsync/src/main/java/org/apache/ranger/ldapusersync/process/PolicyMgrUserGroupBuilder.java
+++ b/ugsync/src/main/java/org/apache/ranger/ldapusersync/process/PolicyMgrUserGroupBuilder.java
@@ -126,7 +126,7 @@ public class PolicyMgrUserGroupBuilder implements UserGroupSink {
 	}
 
 	
-	public void init() throws Throwable {
+	public synchronized void init() throws Throwable {
 		recordsToPullPerCall = config.getMaxRecordsPerAPICall() ;
 		policyMgrBaseUrl = config.getPolicyManagerBaseURL() ;
 		isMockRun = config.isMockRunEnabled() ;
@@ -164,24 +164,28 @@ public class PolicyMgrUserGroupBuilder implements UserGroupSink {
 	
 	
 	private void rebuildUserGroupMap() {
-		
-		for(XUserInfo user : xuserList) {
-			addUserToList(user);
+
+        List<XUserInfo> newUsers = new ArrayList<XUserInfo>();
+        for(XUserInfo user : xuserList) {
+			addUserToList(user, newUsers);
 		}
-		
+        xuserList.addAll(newUsers);
+
+        List<XGroupInfo> newGroups = new ArrayList<XGroupInfo>();
 		for(XGroupInfo group : xgroupList) {
-			addGroupToList(group);
+			addGroupToList(group, newGroups);
 		}
-		
+        xgroupList.addAll(newGroups);
+
 		for(XUserGroupInfo ug : xusergroupList) {
 			addUserGroupToList(ug);
 		}
 	}
 	
 	
-	private void addUserToList(XUserInfo aUserInfo) {
+	private void addUserToList(XUserInfo aUserInfo, List<XUserInfo> newUsers) {
 		if (! xuserList.contains(aUserInfo)) {
-			xuserList.add(aUserInfo) ;
+            newUsers.add(aUserInfo);
 		}
 		
 		String userId = aUserInfo.getId() ;
@@ -198,10 +202,10 @@ public class PolicyMgrUserGroupBuilder implements UserGroupSink {
 	}
 	
 
-	private void addGroupToList(XGroupInfo aGroupInfo) {
+	private void addGroupToList(XGroupInfo aGroupInfo, List<XGroupInfo> newGroups) {
 		
 		if (! xgroupList.contains(aGroupInfo) ) {
-			xgroupList.add(aGroupInfo) ;
+            newGroups.add(aGroupInfo);
 		}
 
 		if (aGroupInfo.getName() != null) {
@@ -437,7 +441,7 @@ public class PolicyMgrUserGroupBuilder implements UserGroupSink {
 	    ret = gson.fromJson(response, XUserInfo.class) ;
 
 	    if (ret != null) {
-	    	addUserToList(ret);
+	    	addUserToList(ret, xuserList);
 	    }
 		
 		return ret ;
@@ -467,7 +471,7 @@ public class PolicyMgrUserGroupBuilder implements UserGroupSink {
 	    ret = gson.fromJson(response, XGroupInfo.class) ;
 	    
 	    if (ret != null) {
-	    	addGroupToList(ret);
+	    	addGroupToList(ret, xgroupList);
 	    }
 		
 		return ret ;

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b1bfbc57/ugsync/src/main/java/org/apache/ranger/unixusersync/config/UserGroupSyncConfig.java
----------------------------------------------------------------------
diff --git a/ugsync/src/main/java/org/apache/ranger/unixusersync/config/UserGroupSyncConfig.java b/ugsync/src/main/java/org/apache/ranger/unixusersync/config/UserGroupSyncConfig.java
index 204a39c..6e98b34 100644
--- a/ugsync/src/main/java/org/apache/ranger/unixusersync/config/UserGroupSyncConfig.java
+++ b/ugsync/src/main/java/org/apache/ranger/unixusersync/config/UserGroupSyncConfig.java
@@ -280,7 +280,7 @@ public class UserGroupSyncConfig  {
 	public long getSleepTimeInMillisBetweenCycle() throws Throwable {
 		String val =  prop.getProperty(UGSYNC_SLEEP_TIME_IN_MILLIS_BETWEEN_CYCLE_PARAM) ;
 		if (val == null) {
-			if (LGSYNC_SOURCE_CLASS.equals(getUserGroupSource())) {
+			if (LGSYNC_SOURCE_CLASS.equals(getUserGroupSource().getClass().getName())) {
 				return UGSYNC_SLEEP_TIME_IN_MILLIS_BETWEEN_CYCLE_LDAP_DEFAULT_VALUE ;
 			} else {
 				return UGSYNC_SLEEP_TIME_IN_MILLIS_BETWEEN_CYCLE_UNIX_DEFAULT_VALUE ;
@@ -389,9 +389,9 @@ public class UserGroupSyncConfig  {
 		}
 		
 		val = val.trim().toLowerCase();
-		if (val.equals(0) || val.startsWith("base")) {
+		if (val.equals("0") || val.startsWith("base")) {
 			return 0; // object scope
-		} else if (val.equals(1) || val.startsWith("one")) {
+		} else if (val.equals("1") || val.startsWith("one")) {
 			return 1; // one level scope
 		} else {
 			return 2; // subtree scope

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b1bfbc57/ugsync/src/main/java/org/apache/ranger/unixusersync/poc/RangerClientUserGroupMapping.java
----------------------------------------------------------------------
diff --git a/ugsync/src/main/java/org/apache/ranger/unixusersync/poc/RangerClientUserGroupMapping.java b/ugsync/src/main/java/org/apache/ranger/unixusersync/poc/RangerClientUserGroupMapping.java
index 4ac922d..408e861 100644
--- a/ugsync/src/main/java/org/apache/ranger/unixusersync/poc/RangerClientUserGroupMapping.java
+++ b/ugsync/src/main/java/org/apache/ranger/unixusersync/poc/RangerClientUserGroupMapping.java
@@ -1,22 +1,22 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
  package org.apache.ranger.unixusersync.poc;
 
 import java.io.BufferedReader;
@@ -44,6 +44,10 @@ public class RangerClientUserGroupMapping {
 	    while ((strLine = br.readLine()) != null)  {
 	    	
 	    	ListRangerUser userList = ListRangerUser.parseUser(strLine);
+
+            if (userList == null) {
+                continue;
+            }
 		 
 	    	HashMap<String, String> map = new HashMap<String, String>();
          

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/b1bfbc57/unixauthclient/src/main/java/org/apache/ranger/authentication/unix/jaas/ConsolePromptCallbackHandler.java
----------------------------------------------------------------------
diff --git a/unixauthclient/src/main/java/org/apache/ranger/authentication/unix/jaas/ConsolePromptCallbackHandler.java b/unixauthclient/src/main/java/org/apache/ranger/authentication/unix/jaas/ConsolePromptCallbackHandler.java
index 62a3d5a..f1400b2 100644
--- a/unixauthclient/src/main/java/org/apache/ranger/authentication/unix/jaas/ConsolePromptCallbackHandler.java
+++ b/unixauthclient/src/main/java/org/apache/ranger/authentication/unix/jaas/ConsolePromptCallbackHandler.java
@@ -42,13 +42,23 @@ public class ConsolePromptCallbackHandler implements CallbackHandler {
 		          NameCallback nc = (NameCallback)cb ;
 		          System.out.print(nc.getPrompt());
 		          System.out.flush();
-		          nc.setName(reader.readLine());
+                  String line = null;
+
+                  while (line == null) {
+                    line = reader.readLine();
+                  }
+		          nc.setName(line);
 			}
 			else if (cb instanceof PasswordCallback) {
 		          PasswordCallback pc = (PasswordCallback)cb;
 		          System.out.print(pc.getPrompt());
 		          System.out.flush();
-		          pc.setPassword(reader.readLine().toCharArray());				
+
+                  String line = null;
+                  while (line == null) {
+                    line = reader.readLine();
+                  }
+		          pc.setPassword(line.toCharArray());
 			}
 			else {
 				System.out.println("Unknown callbacl [" + cb.getClass().getName() + "]") ;