From 5ae972a201a38a75987da17d4bb64d3effccb713 Mon Sep 17 00:00:00 2001 From: Robert Baillie Date: Tue, 19 Apr 2022 14:02:44 +0100 Subject: [PATCH] Moved logger service into core Added ServiceUtils for logging an exception, stripping the context and then re-throwing it Changed all services over to the new standard that includes the exception handling --- TODO.txt | 13 ++++--- .../services/logger}/ILoggerService.cls | 0 .../logger}/ILoggerService.cls-meta.xml | 0 .../services/logger}/LoggerService.cls | 0 .../logger}/LoggerService.cls-meta.xml | 0 .../services/logger}/LoggerServiceImpl.cls | 0 .../logger}/LoggerServiceImpl.cls-meta.xml | 0 .../logger}/NullLoggerServiceImpl.cls | 0 .../NullLoggerServiceImpl.cls-meta.xml | 0 .../logger}/tests/LoggerServiceImplTest.cls | 0 .../tests/LoggerServiceImplTest.cls-meta.xml | 0 .../logger}/tests/LoggerServiceTest.cls | 0 .../tests/LoggerServiceTest.cls-meta.xml | 0 .../tests/NullLoggerServiceImplTest.cls | 0 .../NullLoggerServiceImplTest.cls-meta.xml | 0 .../logger}/tests/TestLoggerService.cls | 0 .../tests/TestLoggerService.cls-meta.xml | 0 .../logger}/tests/TestLoggerUtils.cls | 0 .../tests/TestLoggerUtils.cls-meta.xml | 0 .../search-service/SearchServiceImpl.cls | 34 ++++++++++++++----- .../default/classes/utils/ServiceUtils.cls | 27 +++++++++++++++ .../classes/utils/ServiceUtils.cls-meta.xml | 5 +++ .../Logging_Configuration__c.object-meta.xml | 0 ...Log_ERROR_Level_Messages__c.field-meta.xml | 0 .../Log_INFO_Level_Messages__c.field-meta.xml | 0 .../Log_WARN_Level_Messages__c.field-meta.xml | 0 .../LicensingServiceImpl.cls | 13 ++++++- .../limits-service/LimitsServiceImpl.cls | 28 +++++++++++---- .../OrganizationServiceImpl.cls | 33 ++++++++++++++++-- .../PermissionsServiceImpl.cls | 26 ++++++++++++-- 30 files changed, 153 insertions(+), 26 deletions(-) rename framework/default/{modules/logger/services/logger/classes => ortoo-core/default/classes/services/logger}/ILoggerService.cls (100%) rename framework/default/{modules/logger/services/logger/classes => ortoo-core/default/classes/services/logger}/ILoggerService.cls-meta.xml (100%) rename framework/default/{modules/logger/services/logger/classes => ortoo-core/default/classes/services/logger}/LoggerService.cls (100%) rename framework/default/{modules/logger/services/logger/classes => ortoo-core/default/classes/services/logger}/LoggerService.cls-meta.xml (100%) rename framework/default/{modules/logger/services/logger/classes => ortoo-core/default/classes/services/logger}/LoggerServiceImpl.cls (100%) rename framework/default/{modules/logger/services/logger/classes => ortoo-core/default/classes/services/logger}/LoggerServiceImpl.cls-meta.xml (100%) rename framework/default/{modules/logger/services/logger/classes => ortoo-core/default/classes/services/logger}/NullLoggerServiceImpl.cls (100%) rename framework/default/{modules/logger/services/logger/classes => ortoo-core/default/classes/services/logger}/NullLoggerServiceImpl.cls-meta.xml (100%) rename framework/default/{modules/logger/services/logger/classes => ortoo-core/default/classes/services/logger}/tests/LoggerServiceImplTest.cls (100%) rename framework/default/{modules/logger/services/logger/classes => ortoo-core/default/classes/services/logger}/tests/LoggerServiceImplTest.cls-meta.xml (100%) rename framework/default/{modules/logger/services/logger/classes => ortoo-core/default/classes/services/logger}/tests/LoggerServiceTest.cls (100%) rename framework/default/{modules/logger/services/logger/classes => ortoo-core/default/classes/services/logger}/tests/LoggerServiceTest.cls-meta.xml (100%) rename framework/default/{modules/logger/services/logger/classes => ortoo-core/default/classes/services/logger}/tests/NullLoggerServiceImplTest.cls (100%) rename framework/default/{modules/logger/services/logger/classes => ortoo-core/default/classes/services/logger}/tests/NullLoggerServiceImplTest.cls-meta.xml (100%) rename framework/default/{modules/logger/services/logger/classes => ortoo-core/default/classes/services/logger}/tests/TestLoggerService.cls (100%) rename framework/default/{modules/logger/services/logger/classes => ortoo-core/default/classes/services/logger}/tests/TestLoggerService.cls-meta.xml (100%) rename framework/default/{modules/logger/services/logger/classes => ortoo-core/default/classes/services/logger}/tests/TestLoggerUtils.cls (100%) rename framework/default/{modules/logger/services/logger/classes => ortoo-core/default/classes/services/logger}/tests/TestLoggerUtils.cls-meta.xml (100%) create mode 100644 framework/default/ortoo-core/default/classes/utils/ServiceUtils.cls create mode 100644 framework/default/ortoo-core/default/classes/utils/ServiceUtils.cls-meta.xml rename framework/default/{modules/logger/services/logger => ortoo-core/default}/objects/Logging_Configuration__c/Logging_Configuration__c.object-meta.xml (100%) rename framework/default/{modules/logger/services/logger => ortoo-core/default}/objects/Logging_Configuration__c/fields/Log_ERROR_Level_Messages__c.field-meta.xml (100%) rename framework/default/{modules/logger/services/logger => ortoo-core/default}/objects/Logging_Configuration__c/fields/Log_INFO_Level_Messages__c.field-meta.xml (100%) rename framework/default/{modules/logger/services/logger => ortoo-core/default}/objects/Logging_Configuration__c/fields/Log_WARN_Level_Messages__c.field-meta.xml (100%) diff --git a/TODO.txt b/TODO.txt index c387b66a6ff..f4fcbbb4ff6 100644 --- a/TODO.txt +++ b/TODO.txt @@ -1,10 +1,5 @@ Framework Catch-up * Start-up performance might need looking at - looks like it has a linear startup time based on the number of services / domains / etc configured. -* Docs to write up: - * Exception standards - * Logging standards - * How to test logging - * Potentially ServiceUtils.logAndRethrow( e ) Logger * Write up standards @@ -13,6 +8,14 @@ Docs for Logger: * Custom Setting - if it doesn't exist, will log everything. * TestLoggerService * ortoo_Exception - stripContext +* ServiceUtils.logAndRethrow + * All code other than the Contracts + * If you are returning a value, ensure you instantiate and set to a resonable default. Generally, it will never be used without being set. + * Logging standards + * How to test logging + +Tests: +* Each of the services need a test for the try / catch - where possible Licenses that are needed with the source code and binary: diff --git a/framework/default/modules/logger/services/logger/classes/ILoggerService.cls b/framework/default/ortoo-core/default/classes/services/logger/ILoggerService.cls similarity index 100% rename from framework/default/modules/logger/services/logger/classes/ILoggerService.cls rename to framework/default/ortoo-core/default/classes/services/logger/ILoggerService.cls diff --git a/framework/default/modules/logger/services/logger/classes/ILoggerService.cls-meta.xml b/framework/default/ortoo-core/default/classes/services/logger/ILoggerService.cls-meta.xml similarity index 100% rename from framework/default/modules/logger/services/logger/classes/ILoggerService.cls-meta.xml rename to framework/default/ortoo-core/default/classes/services/logger/ILoggerService.cls-meta.xml diff --git a/framework/default/modules/logger/services/logger/classes/LoggerService.cls b/framework/default/ortoo-core/default/classes/services/logger/LoggerService.cls similarity index 100% rename from framework/default/modules/logger/services/logger/classes/LoggerService.cls rename to framework/default/ortoo-core/default/classes/services/logger/LoggerService.cls diff --git a/framework/default/modules/logger/services/logger/classes/LoggerService.cls-meta.xml b/framework/default/ortoo-core/default/classes/services/logger/LoggerService.cls-meta.xml similarity index 100% rename from framework/default/modules/logger/services/logger/classes/LoggerService.cls-meta.xml rename to framework/default/ortoo-core/default/classes/services/logger/LoggerService.cls-meta.xml diff --git a/framework/default/modules/logger/services/logger/classes/LoggerServiceImpl.cls b/framework/default/ortoo-core/default/classes/services/logger/LoggerServiceImpl.cls similarity index 100% rename from framework/default/modules/logger/services/logger/classes/LoggerServiceImpl.cls rename to framework/default/ortoo-core/default/classes/services/logger/LoggerServiceImpl.cls diff --git a/framework/default/modules/logger/services/logger/classes/LoggerServiceImpl.cls-meta.xml b/framework/default/ortoo-core/default/classes/services/logger/LoggerServiceImpl.cls-meta.xml similarity index 100% rename from framework/default/modules/logger/services/logger/classes/LoggerServiceImpl.cls-meta.xml rename to framework/default/ortoo-core/default/classes/services/logger/LoggerServiceImpl.cls-meta.xml diff --git a/framework/default/modules/logger/services/logger/classes/NullLoggerServiceImpl.cls b/framework/default/ortoo-core/default/classes/services/logger/NullLoggerServiceImpl.cls similarity index 100% rename from framework/default/modules/logger/services/logger/classes/NullLoggerServiceImpl.cls rename to framework/default/ortoo-core/default/classes/services/logger/NullLoggerServiceImpl.cls diff --git a/framework/default/modules/logger/services/logger/classes/NullLoggerServiceImpl.cls-meta.xml b/framework/default/ortoo-core/default/classes/services/logger/NullLoggerServiceImpl.cls-meta.xml similarity index 100% rename from framework/default/modules/logger/services/logger/classes/NullLoggerServiceImpl.cls-meta.xml rename to framework/default/ortoo-core/default/classes/services/logger/NullLoggerServiceImpl.cls-meta.xml diff --git a/framework/default/modules/logger/services/logger/classes/tests/LoggerServiceImplTest.cls b/framework/default/ortoo-core/default/classes/services/logger/tests/LoggerServiceImplTest.cls similarity index 100% rename from framework/default/modules/logger/services/logger/classes/tests/LoggerServiceImplTest.cls rename to framework/default/ortoo-core/default/classes/services/logger/tests/LoggerServiceImplTest.cls diff --git a/framework/default/modules/logger/services/logger/classes/tests/LoggerServiceImplTest.cls-meta.xml b/framework/default/ortoo-core/default/classes/services/logger/tests/LoggerServiceImplTest.cls-meta.xml similarity index 100% rename from framework/default/modules/logger/services/logger/classes/tests/LoggerServiceImplTest.cls-meta.xml rename to framework/default/ortoo-core/default/classes/services/logger/tests/LoggerServiceImplTest.cls-meta.xml diff --git a/framework/default/modules/logger/services/logger/classes/tests/LoggerServiceTest.cls b/framework/default/ortoo-core/default/classes/services/logger/tests/LoggerServiceTest.cls similarity index 100% rename from framework/default/modules/logger/services/logger/classes/tests/LoggerServiceTest.cls rename to framework/default/ortoo-core/default/classes/services/logger/tests/LoggerServiceTest.cls diff --git a/framework/default/modules/logger/services/logger/classes/tests/LoggerServiceTest.cls-meta.xml b/framework/default/ortoo-core/default/classes/services/logger/tests/LoggerServiceTest.cls-meta.xml similarity index 100% rename from framework/default/modules/logger/services/logger/classes/tests/LoggerServiceTest.cls-meta.xml rename to framework/default/ortoo-core/default/classes/services/logger/tests/LoggerServiceTest.cls-meta.xml diff --git a/framework/default/modules/logger/services/logger/classes/tests/NullLoggerServiceImplTest.cls b/framework/default/ortoo-core/default/classes/services/logger/tests/NullLoggerServiceImplTest.cls similarity index 100% rename from framework/default/modules/logger/services/logger/classes/tests/NullLoggerServiceImplTest.cls rename to framework/default/ortoo-core/default/classes/services/logger/tests/NullLoggerServiceImplTest.cls diff --git a/framework/default/modules/logger/services/logger/classes/tests/NullLoggerServiceImplTest.cls-meta.xml b/framework/default/ortoo-core/default/classes/services/logger/tests/NullLoggerServiceImplTest.cls-meta.xml similarity index 100% rename from framework/default/modules/logger/services/logger/classes/tests/NullLoggerServiceImplTest.cls-meta.xml rename to framework/default/ortoo-core/default/classes/services/logger/tests/NullLoggerServiceImplTest.cls-meta.xml diff --git a/framework/default/modules/logger/services/logger/classes/tests/TestLoggerService.cls b/framework/default/ortoo-core/default/classes/services/logger/tests/TestLoggerService.cls similarity index 100% rename from framework/default/modules/logger/services/logger/classes/tests/TestLoggerService.cls rename to framework/default/ortoo-core/default/classes/services/logger/tests/TestLoggerService.cls diff --git a/framework/default/modules/logger/services/logger/classes/tests/TestLoggerService.cls-meta.xml b/framework/default/ortoo-core/default/classes/services/logger/tests/TestLoggerService.cls-meta.xml similarity index 100% rename from framework/default/modules/logger/services/logger/classes/tests/TestLoggerService.cls-meta.xml rename to framework/default/ortoo-core/default/classes/services/logger/tests/TestLoggerService.cls-meta.xml diff --git a/framework/default/modules/logger/services/logger/classes/tests/TestLoggerUtils.cls b/framework/default/ortoo-core/default/classes/services/logger/tests/TestLoggerUtils.cls similarity index 100% rename from framework/default/modules/logger/services/logger/classes/tests/TestLoggerUtils.cls rename to framework/default/ortoo-core/default/classes/services/logger/tests/TestLoggerUtils.cls diff --git a/framework/default/modules/logger/services/logger/classes/tests/TestLoggerUtils.cls-meta.xml b/framework/default/ortoo-core/default/classes/services/logger/tests/TestLoggerUtils.cls-meta.xml similarity index 100% rename from framework/default/modules/logger/services/logger/classes/tests/TestLoggerUtils.cls-meta.xml rename to framework/default/ortoo-core/default/classes/services/logger/tests/TestLoggerUtils.cls-meta.xml diff --git a/framework/default/ortoo-core/default/classes/services/search-service/SearchServiceImpl.cls b/framework/default/ortoo-core/default/classes/services/search-service/SearchServiceImpl.cls index 7a154a6fa3c..23e665acc1c 100644 --- a/framework/default/ortoo-core/default/classes/services/search-service/SearchServiceImpl.cls +++ b/framework/default/ortoo-core/default/classes/services/search-service/SearchServiceImpl.cls @@ -24,17 +24,25 @@ public with sharing class SearchServiceImpl implements ISearchService Contract.requires( window != null, 'search called with a null window' ); Contract.requires( orderBy != null, 'search called with a null orderBy' ); - ISearchConfiguration searchConfiguration = buildSearchConfiguration( searchConfigurationType ); + SearchResults searchResults = null; + try + { + ISearchConfiguration searchConfiguration = buildSearchConfiguration( searchConfigurationType ); - SobjectType sobjectType = searchConfiguration.getBaseSobjectType(); + SobjectType sobjectType = searchConfiguration.getBaseSobjectType(); - SearchResults searchResults = ((ISearchSelector)Application.SELECTOR.newInstance( sObjectType ) ) - .selectBySearchCriteria( searchConfiguration, criteria, window, orderBy ); + searchResults = ((ISearchSelector)Application.SELECTOR.newInstance( sObjectType ) ) + .selectBySearchCriteria( searchConfiguration, criteria, window, orderBy ); - if ( searchResults.hasRecords() ) + if ( searchResults.hasRecords() ) + { + ISearchResultBuilder searchResultsBuilder = ((ISearchResultBuilder)Application.DOMAIN.newInstance( (List)searchResults.records ) ); + searchResults.records = searchResultsBuilder.buildSearchResults( searchConfiguration ); + } + } + catch ( Exception e ) { - ISearchResultBuilder searchResultsBuilder = ((ISearchResultBuilder)Application.DOMAIN.newInstance( (List)searchResults.records ) ); - searchResults.records = searchResultsBuilder.buildSearchResults( searchConfiguration ); + ServiceUtils.logAndRethrow( e ); } Contract.ensures( searchResults != null, 'search attempted to return with a null searchResults' ); @@ -47,7 +55,17 @@ public with sharing class SearchServiceImpl implements ISearchService public List getSortableFields( Type searchConfigurationType ) { Contract.requires( searchConfigurationType != null, 'getSortableFields called with a null searchConfigurationType' ); - return buildSearchConfiguration( searchConfigurationType ).getSortableFields(); + + List sortableFields = new List(); + try + { + return buildSearchConfiguration( searchConfigurationType ).getSortableFields(); + } + catch ( Exception e ) + { + ServiceUtils.logAndRethrow( e ); + } + return sortableFields; } private ISearchConfiguration buildSearchConfiguration( Type searchConfigurationType ) diff --git a/framework/default/ortoo-core/default/classes/utils/ServiceUtils.cls b/framework/default/ortoo-core/default/classes/utils/ServiceUtils.cls new file mode 100644 index 00000000000..b4d473d18ed --- /dev/null +++ b/framework/default/ortoo-core/default/classes/utils/ServiceUtils.cls @@ -0,0 +1,27 @@ +/** + * Utility class that provides core capabilities related to Services + * + * @group Utils + */ + // TODO: test +public class ServiceUtils +{ + /** + * Logs the given exception using the LoggerService, strips the context (if it's an Ortoo Exception) + * and then rethrows the exception + * + * @param Exception The exception to log + */ + public static void logAndRethrow( Exception exceptionToLog ) + { + Contract.requires( exceptionToLog != null, 'logAndRethrow called with a null exceptionToLog' ); + + LoggerService.log( exceptionToLog ); + + if ( exceptionToLog instanceOf ortoo_Exception ) + { + ((ortoo_Exception)exceptionToLog).stripContexts(); + } + throw exceptionToLog; + } +} \ No newline at end of file diff --git a/framework/default/ortoo-core/default/classes/utils/ServiceUtils.cls-meta.xml b/framework/default/ortoo-core/default/classes/utils/ServiceUtils.cls-meta.xml new file mode 100644 index 00000000000..dd61d1f917e --- /dev/null +++ b/framework/default/ortoo-core/default/classes/utils/ServiceUtils.cls-meta.xml @@ -0,0 +1,5 @@ + + + 52.0 + Active + diff --git a/framework/default/modules/logger/services/logger/objects/Logging_Configuration__c/Logging_Configuration__c.object-meta.xml b/framework/default/ortoo-core/default/objects/Logging_Configuration__c/Logging_Configuration__c.object-meta.xml similarity index 100% rename from framework/default/modules/logger/services/logger/objects/Logging_Configuration__c/Logging_Configuration__c.object-meta.xml rename to framework/default/ortoo-core/default/objects/Logging_Configuration__c/Logging_Configuration__c.object-meta.xml diff --git a/framework/default/modules/logger/services/logger/objects/Logging_Configuration__c/fields/Log_ERROR_Level_Messages__c.field-meta.xml b/framework/default/ortoo-core/default/objects/Logging_Configuration__c/fields/Log_ERROR_Level_Messages__c.field-meta.xml similarity index 100% rename from framework/default/modules/logger/services/logger/objects/Logging_Configuration__c/fields/Log_ERROR_Level_Messages__c.field-meta.xml rename to framework/default/ortoo-core/default/objects/Logging_Configuration__c/fields/Log_ERROR_Level_Messages__c.field-meta.xml diff --git a/framework/default/modules/logger/services/logger/objects/Logging_Configuration__c/fields/Log_INFO_Level_Messages__c.field-meta.xml b/framework/default/ortoo-core/default/objects/Logging_Configuration__c/fields/Log_INFO_Level_Messages__c.field-meta.xml similarity index 100% rename from framework/default/modules/logger/services/logger/objects/Logging_Configuration__c/fields/Log_INFO_Level_Messages__c.field-meta.xml rename to framework/default/ortoo-core/default/objects/Logging_Configuration__c/fields/Log_INFO_Level_Messages__c.field-meta.xml diff --git a/framework/default/modules/logger/services/logger/objects/Logging_Configuration__c/fields/Log_WARN_Level_Messages__c.field-meta.xml b/framework/default/ortoo-core/default/objects/Logging_Configuration__c/fields/Log_WARN_Level_Messages__c.field-meta.xml similarity index 100% rename from framework/default/modules/logger/services/logger/objects/Logging_Configuration__c/fields/Log_WARN_Level_Messages__c.field-meta.xml rename to framework/default/ortoo-core/default/objects/Logging_Configuration__c/fields/Log_WARN_Level_Messages__c.field-meta.xml diff --git a/framework/default/standard-services/default/classes/services/licensing-service/LicensingServiceImpl.cls b/framework/default/standard-services/default/classes/services/licensing-service/LicensingServiceImpl.cls index c255b013aeb..479a06e2fdc 100644 --- a/framework/default/standard-services/default/classes/services/licensing-service/LicensingServiceImpl.cls +++ b/framework/default/standard-services/default/classes/services/licensing-service/LicensingServiceImpl.cls @@ -6,7 +6,18 @@ public with sharing class LicensingServiceImpl implements ILicensingService { public Boolean productIsLicensed() { - return ( licenseDetails != null || OrganizationService.inDevOrg() || OrganizationService.inSandbox() ); + Boolean productIsLicensed = false; + + try + { + productIsLicensed = ( licenseDetails != null || OrganizationService.inDevOrg() || OrganizationService.inSandbox() ); + } + catch ( Exception e ) + { + ServiceUtils.logAndRethrow( e ); + } + + return productIsLicensed; } private static PackageLicense licenseDetails diff --git a/framework/default/standard-services/default/classes/services/limits-service/LimitsServiceImpl.cls b/framework/default/standard-services/default/classes/services/limits-service/LimitsServiceImpl.cls index 82faef753bb..bedc906acec 100644 --- a/framework/default/standard-services/default/classes/services/limits-service/LimitsServiceImpl.cls +++ b/framework/default/standard-services/default/classes/services/limits-service/LimitsServiceImpl.cls @@ -2,17 +2,31 @@ public with sharing class LimitsServiceImpl implements ILimitsService { private static final Integer DML_ROWS_PERCENTAGE_LIMIT = 90; - public static Integer getAvailableDmlRecordsHeadroom( ortoo_SobjectUnitOfWork uow ) { + public static Integer getAvailableDmlRecordsHeadroom( ortoo_SobjectUnitOfWork uow ) + { + Contract.requires( uow != null, 'getAvailableDmlRecordsHeadroom called with a null uow' ); - Integer futureDmlRows = uow.getNumberOfPendingDmlRows(); - Integer currentDmlRows = Limits.getDmlRows(); + Integer headroom = 0; - Integer dmlRowsLimit = getEffectiveDmlRowsLimit(); + try + { + Integer futureDmlRows = uow.getNumberOfPendingDmlRows(); + Integer currentDmlRows = Limits.getDmlRows(); - return dmlRowsLimit - ( currentDmlRows + futureDmlRows ); + Integer dmlRowsLimit = getEffectiveDmlRowsLimit(); + + headroom = dmlRowsLimit - ( currentDmlRows + futureDmlRows ); + } + catch ( Exception e ) + { + ServiceUtils.logAndRethrow( e ); + } + + return headroom; } - private static Integer getEffectiveDmlRowsLimit() { - return Integer.valueOf( Limits.getLimitDmlRows() * DML_ROWS_PERCENTAGE_LIMIT / 100 ); + private static Integer getEffectiveDmlRowsLimit() + { + return Integer.valueOf( Limits.getLimitDmlRows() * DML_ROWS_PERCENTAGE_LIMIT / 100 ); } } \ No newline at end of file diff --git a/framework/default/standard-services/default/classes/services/organization-service/OrganizationServiceImpl.cls b/framework/default/standard-services/default/classes/services/organization-service/OrganizationServiceImpl.cls index 29ec56baba9..ba797c8effd 100644 --- a/framework/default/standard-services/default/classes/services/organization-service/OrganizationServiceImpl.cls +++ b/framework/default/standard-services/default/classes/services/organization-service/OrganizationServiceImpl.cls @@ -2,17 +2,44 @@ public with sharing class OrganizationServiceImpl implements IOrganizationServic { public Boolean inDevOrg() { - return org.OrganizationType == 'Developer Edition'; + Boolean inDevOrg = false; + try + { + inDevOrg = org.OrganizationType == 'Developer Edition'; + } + catch ( Exception e ) + { + ServiceUtils.logAndRethrow( e ); + } + return inDevOrg; } public Boolean inSandbox() { - return org.IsSandbox; + Boolean inSandbox = false; + try + { + inSandbox = org.IsSandbox; + } + catch ( Exception e ) + { + ServiceUtils.logAndRethrow( e ); + } + return inSandbox; } public String getOrgEdition() { - return org.OrganizationType; + String orgEdition; + try + { + orgEdition = org.OrganizationType; + } + catch ( Exception e ) + { + ServiceUtils.logAndRethrow( e ); + } + return orgEdition; } private static Organization org diff --git a/framework/default/standard-services/default/classes/services/permissions-service/PermissionsServiceImpl.cls b/framework/default/standard-services/default/classes/services/permissions-service/PermissionsServiceImpl.cls index fd86490b30f..e4ff0706eb9 100644 --- a/framework/default/standard-services/default/classes/services/permissions-service/PermissionsServiceImpl.cls +++ b/framework/default/standard-services/default/classes/services/permissions-service/PermissionsServiceImpl.cls @@ -7,7 +7,18 @@ public with sharing class PermissionsServiceImpl implements IPermissionsService */ public Boolean hasAccessToCorePlatformCache() { - return hasCustomPermission( 'ProcessesCanAccessCache' ); + Boolean hasAccessToCorePlatformCache = false; + + try + { + hasAccessToCorePlatformCache = hasCustomPermission( 'ProcessesCanAccessCache' ); + } + catch ( Exception e ) + { + ServiceUtils.logAndRethrow( e ); + } + + return hasAccessToCorePlatformCache; } /** @@ -18,6 +29,17 @@ public with sharing class PermissionsServiceImpl implements IPermissionsService */ private Boolean hasCustomPermission( String customPermissionName ) { - return FeatureManagement.checkPermission( customPermissionName ); + Boolean hasCustomPermission = false; + + try + { + hasCustomPermission = FeatureManagement.checkPermission( customPermissionName ); + } + catch ( Exception e ) + { + ServiceUtils.logAndRethrow( e ); + } + + return hasCustomPermission; } } \ No newline at end of file