From da86a1b479f7301830e9c19a205e884d5f05067c Mon Sep 17 00:00:00 2001 From: davedudek Date: Mon, 31 Oct 2016 10:56:43 -0400 Subject: [PATCH 1/3] Update UserAccessDetailsController.cls this solves System.NullPointerException: Attempt to de-reference a null object Class.UserAccessDetailsController.getObjectLabels --- .../src/classes/UserAccessDetailsController.cls | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/UserAccessVisualization/src/classes/UserAccessDetailsController.cls b/UserAccessVisualization/src/classes/UserAccessDetailsController.cls index 3eca8b6..00ec1c3 100644 --- a/UserAccessVisualization/src/classes/UserAccessDetailsController.cls +++ b/UserAccessVisualization/src/classes/UserAccessDetailsController.cls @@ -284,11 +284,11 @@ public class UserAccessDetailsController { // // Note: this is likely not a viable long-term solution, but it works // for now. - for (ObjectPermissions op : [SELECT SObjectType FROM ObjectPermissions - WHERE Parent.Profile.Name = 'System Administrator']) { - result.add(new NameLabel(op.SObjectType, - describe.get(op.SObjectType).getDescribe().getLabel())); - } +for (ObjectPermissions op : [SELECT SObjectType FROM ObjectPermissions WHERE Parent.Profile.Name = 'System Administrator']) { + if(op.SObjectType!=null && describe.get(op.SObjectType)!=null){ + result.add(new NameLabel(op.SObjectType, describe.get(op.SObjectType).getDescribe().getLabel())); + } +} result.sort(); xObjectLabels = result; } @@ -564,4 +564,4 @@ public class UserAccessDetailsController { return result; } -} \ No newline at end of file +} From 1d22e9d8b2068af023b2d742f25f98101fb082d2 Mon Sep 17 00:00:00 2001 From: Johan Karlsteen Date: Wed, 1 Feb 2017 10:10:19 +0100 Subject: [PATCH 2/3] Fixed null pointer exception in getObjectPerms() --- .../classes/UserAccessDetailsController.cls | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/UserAccessVisualization/src/classes/UserAccessDetailsController.cls b/UserAccessVisualization/src/classes/UserAccessDetailsController.cls index 00ec1c3..20482c4 100644 --- a/UserAccessVisualization/src/classes/UserAccessDetailsController.cls +++ b/UserAccessVisualization/src/classes/UserAccessDetailsController.cls @@ -284,11 +284,11 @@ public class UserAccessDetailsController { // // Note: this is likely not a viable long-term solution, but it works // for now. -for (ObjectPermissions op : [SELECT SObjectType FROM ObjectPermissions WHERE Parent.Profile.Name = 'System Administrator']) { - if(op.SObjectType!=null && describe.get(op.SObjectType)!=null){ - result.add(new NameLabel(op.SObjectType, describe.get(op.SObjectType).getDescribe().getLabel())); - } -} + for (ObjectPermissions op : [SELECT SObjectType FROM ObjectPermissions WHERE Parent.Profile.Name = 'System Administrator']) { + if(op.SObjectType!=null && describe.get(op.SObjectType)!=null){ + result.add(new NameLabel(op.SObjectType, describe.get(op.SObjectType).getDescribe().getLabel())); + } + } result.sort(); xObjectLabels = result; } @@ -352,8 +352,10 @@ for (ObjectPermissions op : [SELECT SObjectType FROM ObjectPermissions WHERE Par Map opMap = result.get(op.ParentId); opMap.put(op.SObjectType, op); ObjectPermissions totalOp = totalAccess.get(op.SObjectType); - for (String apiName : getObjectPermFieldNames()) { - totalOp.put(apiName, getWithDefault(totalOp, apiName, false) || getWithDefault(op, apiName, false)); + if(totalOp != null) { + for (String apiName : getObjectPermFieldNames()) { + totalOp.put(apiName, getWithDefault(totalOp, apiName, false) || getWithDefault(op, apiName, false)); + } } } @@ -564,4 +566,4 @@ for (ObjectPermissions op : [SELECT SObjectType FROM ObjectPermissions WHERE Par return result; } -} +} \ No newline at end of file From b27be132b0c1b241e223f27567bcad085848a608 Mon Sep 17 00:00:00 2001 From: Johan Karlsteen Date: Wed, 1 Feb 2017 11:09:31 +0100 Subject: [PATCH 3/3] Fixed issue with duplicates showing up in the Object Information section. --- .../src/classes/UserAccessDetailsController.cls | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/UserAccessVisualization/src/classes/UserAccessDetailsController.cls b/UserAccessVisualization/src/classes/UserAccessDetailsController.cls index 20482c4..db41e72 100644 --- a/UserAccessVisualization/src/classes/UserAccessDetailsController.cls +++ b/UserAccessVisualization/src/classes/UserAccessDetailsController.cls @@ -283,10 +283,16 @@ public class UserAccessDetailsController { // the system administrator profile to tell us what those objects are. // // Note: this is likely not a viable long-term solution, but it works - // for now. + // for now. + Set objectNames = new Set(); for (ObjectPermissions op : [SELECT SObjectType FROM ObjectPermissions WHERE Parent.Profile.Name = 'System Administrator']) { if(op.SObjectType!=null && describe.get(op.SObjectType)!=null){ - result.add(new NameLabel(op.SObjectType, describe.get(op.SObjectType).getDescribe().getLabel())); + String objectName = describe.get(op.SObjectType).getDescribe().getLabel(); + if(!objectNames.contains(objectName)) { + objectNames.add(objectName); + System.debug('Adding ' + objectName); + result.add(new NameLabel(op.SObjectType, describe.get(op.SObjectType).getDescribe().getLabel())); + } } } result.sort();