13 Commits
Author SHA1 Message Date
github-actions 05e1514be0 Update package version to 0.12.0.NEXT
Create Release / release (push) Canceled after 0s
2026-09-28 09:30:49 +00:00
4a734ee822 Fix styling (#93)
* Fix styling

* Fix dependency with apex-common,

A method that exists in apex-extensions, is now added to the apex-commons.

IMPORTANT: this is introducing a breaking change, as the second paramter of the method is flipped in meaning. From `omitNulls` to `includeNulls`.

* New package version 0.11.0-1-code-reformat created

* New package version 0.11.0-2-code-reformat created

* New package version 0.11.0-3-code-reformat created

---------

Co-authored-by: WimVelzeboer <wvelzeb1@its.jnj.com>
Co-authored-by: github-actions <github-actions@github.com>
2026-09-28 10:30:22 +01:00
github-actions 98b0f97e24 Update package version to 0.11.0.NEXT
Create Release / release (push) Canceled after 0s
2026-08-13 11:06:34 +00:00
11abb61337 Upgrade API to 67.0 (#91)
* Upgrade API to 67.0

* Remove override due to build failure

* Fix test due to dependency changes

* Fix failing tests due to dependency changes

* New package version 0.10.0-1-api-upgrade-67 created

---------

Co-authored-by: Wim Velzeboer <wvelzeb1@its.jnj.com>
Co-authored-by: github-actions <github-actions@github.com>
2026-08-13 12:06:04 +01:00
William Velzeboer 415e1cb645 Update README.md 2026-08-05 09:37:46 +01:00
github-actions 27d903678c Update package version to 0.10.0.NEXT
Create Release / release (push) Canceled after 0s
2026-08-05 08:36:21 +00:00
94129a9791 Override getRecordsWithNotBlankFieldValues for non-String fields (#90)
* Override getRecordsWithNotBlankFieldValues in fflib_SObjects2

The base fflib_SObjects implementation casts every value to String, which
throws a TypeException on Date/Datetime/Number/Lookup fields. This override
generalises the check to "any non-null value, and for Strings also non-blank"
so the helper works for every field type.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Update fflib_SObjects2.cls

Rename method to getRecordsWithNonBlankFieldValues

* Update fflib_SObjects2Test.cls

Rename method to getRecordsWithNonBlankFieldValues

* Update fflib_SObjects2.cls

Rename variable

Co-authored-by: Robin Weymans <robin.weymans@mylighthouse.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: William Velzeboer <6429417+wimvelzeboer@users.noreply.github.com>
2026-08-05 09:23:06 +01:00
github-actions 368978bf20 Update package version to 0.10.0.NEXT 2026-04-13 14:46:02 +00:00
William Velzeboerandgithub-actions 9716a88489 Generic Selector class (#86)
* Generic Selector class

usage
```
List<SObject> records =
    fflib_SObjectsSelector.newElevatedInstance(
            Schema.Account.SObjectType,
            new List<SObjectType>{ Schema.Account.Id, Schema.Account.Name }
    )
        .selectById(idSet);
```

* New package version 0.9.0-1-feature/genericSelector created

---------

Co-authored-by: github-actions <github-actions@github.com>
2026-04-13 15:45:27 +01:00
github-actions b9f2bde59f Update package version to 0.9.0.NEXT
Create Release / release (push) Canceled after 0s
2026-03-31 11:51:16 +00:00
wim ea31aa49fc Fix build pipeline 2026-03-31 12:50:18 +01:00
William Velzeboer 3e89f74910 Upgrade API to 66.0 (#85)
* Upgrade API to 66.0

Upgrade API version of all components to Spring '26 release

* New package version 0.8.0-1-apiUpgrade created
2026-03-31 12:44:39 +01:00
wim 493bfc1eee Manually trigger pipeline 2026-03-30 14:56:11 +01:00
129 changed files with 544 additions and 254 deletions
+9 -3
View File
@@ -26,7 +26,13 @@ jobs:
run: npm install @salesforce/cli --global run: npm install @salesforce/cli --global
- name: Authorize with the dev hub - name: Authorize with the dev hub
run: echo "${{ secrets.SFDX_AUTH_URL }}" | sf org login sfdx-url --alias SFDX-ENV --set-default-dev-hub --sfdx-url-stdin env:
SFDX_AUTH_URL: ${{ secrets.SFDX_AUTH_URL }}
run: |
echo "$SFDX_AUTH_URL" | wc -c
echo "${{ secrets.SFDX_AUTH_URL }}" | wc -c
echo "$Env:SFDX_AUTH_URL" | wc -c
echo "${{ secrets.SFDX_AUTH_URL }}" | sf org login sfdx-url --alias SFDX-ENV --set-default-dev-hub --sfdx-url-stdin
- name: Setup the config parameters needed - name: Setup the config parameters needed
run: | run: |
@@ -34,8 +40,8 @@ jobs:
- name: Setup Git Configuration - name: Setup Git Configuration
run: | run: |
git config --global user.name 'WimVelzeboer' git config --local user.name github-actions
git config --global user.email 'wim@velzeboer.nl' git config --local user.email github-actions@github.com
- name: Fetch required dependency framework fflib-apex-mocks - name: Fetch required dependency framework fflib-apex-mocks
run: | run: |
+1 -2
View File
@@ -56,8 +56,7 @@ jobs:
- name: Promoting BETA Package Version - name: Promoting BETA Package Version
run: | run: |
echo "Promoting package version" sf package version promote --package $PACKAGE_VERSION_ID --target-dev-hub SFDX-ENV --no-prompt
#sf package version promote --package $PACKAGE_VERSION_ID --target-dev-hub SFDX-ENV --no-prompt
- name: Update package version - name: Update package version
run: | run: |
+12 -3
View File
@@ -10,10 +10,10 @@ This extension package is dependent on the following packages:
The package is available as an Unlocked Managed Package (2GP) with package ID `0HoJ8000000KyjfKAC`. The package is available as an Unlocked Managed Package (2GP) with package ID `0HoJ8000000KyjfKAC`.
Either clone the repository and import the package manually, use the [Package Installation URL](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tJ8000000kaKzIAI) Either clone the repository and import the package manually, use the [Package Installation URL](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tQy000000ZbKrIAK)
or execute the following SFDX CLI command in your terminal: or execute the following SFDX CLI command in your terminal:
```bash ```bash
sf package install --package 04tJ8000000kaKzIAI --wait=10 --target-org $YOUR_ORG_ALIAS sf package install --package 04tQy000000ZbKrIAK --wait=10 --target-org $YOUR_ORG_ALIAS
``` ```
_Replace `$YOUR_ORG_ALIAS` with the alias of your target org_ _Replace `$YOUR_ORG_ALIAS` with the alias of your target org_
@@ -60,6 +60,10 @@ You can also have a look at the open items in the [project(s)](./projects), feel
# Change Log # Change Log
Some of the changes that have major impact are listed here; Some of the changes that have major impact are listed here;
### Updated September 2026
- **fflib_SObjects2** <br/>
_getIdFieldValues_ **IMPORTANT BRACKING CHANGE** The method overload `Set<Id> getIdFieldValues(Schema.SObjectField field, Boolean omitNulls)` is now added to the fflib-apex-commons (and removed from the extensions), with the second parameter is flipped from `omitNulls` to `includeNulls`. So, when upgrading make sure to modify the `true` to `false` in your project!!!!
### Updates January 2026 ### Updates January 2026
- **fflib_ArrayUtils** <br/> - **fflib_ArrayUtils** <br/>
_copyFields_,<br/>Add method that copies field values in bulk from one domain to another related domain<br/> _copyFields_,<br/>Add method that copies field values in bulk from one domain to another related domain<br/>
@@ -123,4 +127,9 @@ Thank you for your donations!
| Package version | Package ID | Description | | Package version | Package ID | Description |
|-----------------------------------------------|--------------------|--------------------------------| |-----------------------------------------------|--------------------|--------------------------------|
| 0.1.0-2 | 04tJ8000000kaKVIAY | Created on 26/03/2026 20:07:07 || 0.7.0.1 | 04tJ8000000kaKzIAI | Created on 30/03/2026 13:49:28 | | 0.1.0-2 | 04tJ8000000kaKVIAY | Created on 26/03/2026 20:07:07 |
| 0.7.0.1 | 04tJ8000000kaKzIAI | Created on 30/03/2026 13:49:28 |
| 0.8.0.1 | 04tJ8000000kaL4IAI | Created on 31/03/2026 11:51:16 |
| 0.9.0.1 | 04tJ8000000kaPHIAY | Created on 05/08/2026 08:36:21 |
| 0.10.0.1 | 04tJ9000000YW1CIAW | Created on 13/08/2026 11:06:34 |
| 0.11.0.3 | 04tQy000000ZbKrIAK | Created on 28/09/2026 09:30:49 |
+10 -11
View File
@@ -1,8 +1,8 @@
{ {
"packageDirectories": [ "packageDirectories": [
{ {
"versionName": "ver 0.8", "versionName": "ver 0.12",
"versionNumber": "0.8.0.NEXT", "versionNumber": "0.12.0.NEXT",
"path": "sfdx-source", "path": "sfdx-source",
"default": true, "default": true,
"package": "fflibApexExtensions", "package": "fflibApexExtensions",
@@ -12,16 +12,15 @@
"name": "fflib-apex-extensions", "name": "fflib-apex-extensions",
"namespace": "", "namespace": "",
"sfdcLoginUrl": "https://login.salesforce.com", "sfdcLoginUrl": "https://login.salesforce.com",
"sourceApiVersion": "65.0", "sourceApiVersion": "67.0",
"packageAliases": { "packageAliases": {
"fflibApexExtensions": "0HoJ8000000KyjfKAC", "fflibApexExtensions": "0HoJ8000000KyjfKAC",
"fflibApexExtensions@0.1.0-1-feature/UnlockedManagedPackage": "04tJ8000000kaKQIAY", "fflibApexExtensions@0.7.0-1": "04tJ8000000kaKzIAI",
"fflibApexExtensions@0.1.0-2-feature/UnlockedManagedPackage": "04tJ8000000kaKVIAY", "fflibApexExtensions@0.8.0-1-apiUpgrade": "04tJ8000000kaL4IAI",
"fflibApexExtensions@0.2.0-1-bugfix/pipelineBug": "04tJ8000000kaKaIAI", "fflibApexExtensions@0.9.0-1-feature/genericSelector": "04tJ8000000kaPHIAY",
"fflibApexExtensions@0.3.0-1-bugfix/pipelineFix2": "04tJ8000000kaKfIAI", "fflibApexExtensions@0.10.0-1-api-upgrade-67": "04tJ9000000YW1CIAW",
"fflibApexExtensions@0.4.0-1": "04tJ8000000kaKkIAI", "fflibApexExtensions@0.11.0-1-code-reformat": "04tQy000000ZbBBIA0",
"fflibApexExtensions@0.5.0-1": "04tJ8000000kaKpIAI", "fflibApexExtensions@0.11.0-2-code-reformat": "04tQy000000ZbEPIA0",
"fflibApexExtensions@0.6.0-1": "04tJ8000000kaKuIAI", "fflibApexExtensions@0.11.0-3-code-reformat": "04tQy000000ZbKrIAK"
"fflibApexExtensions@0.7.0-1": "04tJ8000000kaKzIAI"
} }
} }
@@ -1,6 +1,5 @@
/** /**
* File Name: fflib_ClassicDomainFactory * Domain Factory for creating instances of Domain classes
* @description Domain Factory for creating instances of Domain classes
* using a static map for linking the SObjectType to its Domain Constructor implementation class * using a static map for linking the SObjectType to its Domain Constructor implementation class
* *
* @author architect ir. Wilhelmus G.J. Velzeboer * @author architect ir. Wilhelmus G.J. Velzeboer
@@ -46,7 +45,7 @@ public virtual class fflib_ClassicDomainFactory
* Note: this will not check if the Apex classes actually implements the * Note: this will not check if the Apex classes actually implements the
* interfaces since this is not possible in the Apex runtime at present * interfaces since this is not possible in the Apex runtime at present
* *
* @param selectorFactory, A reference to the Selector Factory instance, an instance of fflib_ISelectorFactory * @param selectorFactory A reference to the Selector Factory instance, an instance of fflib_ISelectorFactory
* @param constructorTypeByObject Map of Domain classes by Object Type * @param constructorTypeByObject Map of Domain classes by Object Type
**/ **/
public fflib_ClassicDomainFactory( public fflib_ClassicDomainFactory(
@@ -84,7 +83,8 @@ public virtual class fflib_ClassicDomainFactory
* @param recordIds A list of Id's of the same type * @param recordIds A list of Id's of the same type
* *
* @return Instance of a Domain containing the queried records * @return Instance of a Domain containing the queried records
* @exception Throws an exception via the Selector Factory if the Ids are not all of the same SObjectType *
* @throws DeveloperException If the Ids are not all of the same SObjectType
**/ **/
public virtual override fflib_IDomain newInstance(Set<Id> recordIds) public virtual override fflib_IDomain newInstance(Set<Id> recordIds)
{ {
@@ -100,7 +100,8 @@ public virtual class fflib_ClassicDomainFactory
* @param sObjectType The SObjectType of the given record Ids * @param sObjectType The SObjectType of the given record Ids
* *
* @return Instance of a Domain containing the queried records * @return Instance of a Domain containing the queried records
* @exception Throws an exception via the Selector Factory if the Ids are not all of the same SObjectType *
* @throws DeveloperException If the Ids are not all of the same SObjectType
**/ **/
public virtual fflib_IDomain newInstance(Set<Id> recordIds, Schema.SObjectType sObjectType) public virtual fflib_IDomain newInstance(Set<Id> recordIds, Schema.SObjectType sObjectType)
{ {
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,7 +1,4 @@
/** /**
* File Name: fflib_ClassicSelectorFactory
* @description
*
* @author architect ir. Wilhelmus G.J. Velzeboer * @author architect ir. Wilhelmus G.J. Velzeboer
* *
* Copyright (c), W.G.J. Velzeboer, * Copyright (c), W.G.J. Velzeboer,
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,7 +1,4 @@
/** /**
* File Name: fflib_ClassicServiceFactory
* @description
*
* @author architect ir. Wilhelmus G.J. Velzeboer * @author architect ir. Wilhelmus G.J. Velzeboer
* *
* Copyright (c), W.G.J. Velzeboer, * Copyright (c), W.G.J. Velzeboer,
@@ -35,7 +32,9 @@ public virtual class fflib_ClassicServiceFactory
/** /**
* Constructs a simple Service Factory * Constructs a simple Service Factory
**/ **/
public fflib_ClassicServiceFactory() {} public fflib_ClassicServiceFactory()
{
}
/** /**
* Constructs a simple Service Factory, * Constructs a simple Service Factory,
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,7 +1,4 @@
/** /**
* File Name: fflib_ClassicUnitOfWorkFactory
* @description
*
* @author architect ir. Wilhelmus G.J. Velzeboer * @author architect ir. Wilhelmus G.J. Velzeboer
* *
* Copyright (c), W.G.J. Velzeboer, * Copyright (c), W.G.J. Velzeboer,
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -867,26 +867,6 @@ public virtual class fflib_SObjects2
return result; return result;
} }
/**
* Gets the Id values, but with the option to omit null values
*
* @param field The Schema.SObjectField to get their Id values
* @param omitNulls If set to TRUE, null values will be removed from the result
*
* @return The Id values of the given sObjectField, null values are omitted
*/
@TestVisible
protected Set<Id> getIdFieldValues(Schema.SObjectField field, Boolean omitNulls)
{
Set<Id> result = getIdFieldValues(field);
if (omitNulls)
{
result.remove(null);
}
return result;
}
/** /**
* @param sObjectField The Schema.SObjectField to get their Id values * @param sObjectField The Schema.SObjectField to get their Id values
* @param criteria The criteria condition that must be met to include the value in the return * @param criteria The criteria condition that must be met to include the value in the return
@@ -1078,6 +1058,29 @@ public virtual class fflib_SObjects2
return getRecordsNotIn(sObjectField, new Set<String>{ value }); return getRecordsNotIn(sObjectField, new Set<String>{ value });
} }
/**
* Overrides the fflib_SObjects base implementation, which casts every value to `String` and
* uses `String.isNotBlank` — that throws a TypeException on Date / Datetime / Number / Lookup
* fields. This override generalises to "any non-null value, and for Strings also non-blank",
* so the helper works for every field type.
*
* @param sObjectField The field to check.
*
* @return The records whose value for `field` is non-null (and, for Strings, non-blank).
*/
protected List<SObject> getRecordsWithNonBlankFieldValues(Schema.SObjectField sObjectField)
{
List<SObject> result = new List<SObject>();
for (SObject record : getRecords())
{
Object value = record.get(sObjectField);
if (value == null) continue;
if (value instanceof String && String.isBlank((String) value)) continue;
result.add(record);
}
return result;
}
@TestVisible @TestVisible
protected virtual List<SObject> getRecordsNotIn(Schema.SObjectField sObjectField, Set<String> values) protected virtual List<SObject> getRecordsNotIn(Schema.SObjectField sObjectField, Set<String> values)
{ {
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -0,0 +1,209 @@
/**
* File Name: fflib_SObjectsSelector
*
* Generic SObject selector class
*
* @author architect ir. Wilhelmus G.J. Velzeboer
*
* Copyright (c), W.G.J. Velzeboer,
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above author notice,
* this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* - Neither the name of the author nor the names of its contributors
* may be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
public with sharing class fflib_SObjectsSelector
extends fflib_SObjectSelector {
/**
* The current implementation type of the service
*/
private static System.Type implementationType = fflib_SObjectsSelector.class;
/**
* The implementation replacement for the service,
*/
private static fflib_SObjectsSelector implementationReplacement;
/**
* The list of field that should be retrieved with each query
*/
private List<Schema.SObjectField> sObjectFields { get; set; }
/**
* Holds the SObjectType of the records to query
*/
private Schema.SObjectType sObjectType { get; set; }
/**
* Runs the query in System Mode, disabling FLS, CRUD & sharing rules
*
* @param sObjectType The SObjectType of the records to query
* @param sObjectFields a set of SObjectFields to get each time a Quote records is queried
*
* @return New instance of the selector
*/
public static fflib_SObjectsSelector newElevatedInstance(SObjectType sObjectType, Set<SObjectField> sObjectFields) {
fflib_SObjectsSelector selector =
(implementationReplacement == null) ? (fflib_SObjectsSelector) implementationType.newInstance() : implementationReplacement;
selector.setDataAccess(fflib_SObjectSelector.DataAccess.SYSTEM_MODE);
selector.setSObjectFields(sObjectFields);
selector.setSObjectType(sObjectType);
return selector;
}
/**
* Runs the query in System Mode, disabling FLS, CRUD & sharing rules
*
* @param sObjectType The SObjectType of the records to query
* @param sObjectFields a set of SObjectFields to get each time a Quote records is queried
*
* @return New instance of the selector
*/
public static fflib_SObjectsSelector newElevatedInstance(SObjectType sObjectType, Set<String> sObjectFields) {
fflib_SObjectsSelector selector =
(implementationReplacement == null) ? (fflib_SObjectsSelector) implementationType.newInstance() : implementationReplacement;
selector.setDataAccess(fflib_SObjectSelector.DataAccess.SYSTEM_MODE);
selector.setSObjectFields(sObjectType, sObjectFields);
selector.setSObjectType(sObjectType);
return selector;
}
/**
* Class constructor
* This should not be used directly by an application but only by fflib
*/
public fflib_SObjectsSelector() {
super();
}
/**
* The fields to always include in all queries
*
* @return Returns a list of default fields that are always queried
*/
public virtual List<Schema.SObjectField> getSObjectFieldList() {
return this.sObjectFields;
}
/**
* Defines the SObjectType for this selector
*
* @return the SObjectType of this selector
*/
public Schema.SObjectType getSObjectType() {
return this.sObjectType;
}
/**
* Replace the default implementation of the service
*
* @param systemType The System.Type of the replacement class
*/
public static void replaceWith(System.Type systemType) {
fflib_SObjectsSelector.implementationType = systemType;
}
/**
* Replace the default implementation of the service
*
* @param replacement A replacement instance
*
* @see fflib_SObjectsSelector
*/
public static void replaceWith(fflib_SObjectsSelector replacement) {
fflib_SObjectsSelector.implementationReplacement = replacement;
}
/**
* Queries records by their record Id
*
* @param idSet A set of record Id values
*
* @return A list of SObject records
*/
public virtual List<SObject> selectById(Set<Id> idSet) {
return Database.query(
newQueryFactory()
.setCondition('Id IN :idSet')
.toSOQL()
);
}
/**
* Queries SObject records by their record Id
*
* @param sObjectField The Id field to query
* @param ids A set of record Id values
*
* @return A list of SObject records
*/
public List<SObject> selectByIdField(SObjectField sObjectField, Set<Id> ids) {
return Database.query(
newQueryFactory()
.setCondition(sObjectField.getDescribe().getName() + ' IN :ids')
.toSOQL()
);
}
/**
* Sets the list of fields that are fetched on each query
*
* @param sObjectFields A set of SObjectFields from the SObjectType
*
* @return Returns an instance of itself to allow for method chaining
*/
public fflib_SObjectsSelector setSObjectFields(Set<SObjectField> sObjectFields) {
this.sObjectFields = new List<SObjectField>(sObjectFields);
return this;
}
/**
* Sets the list of fields that are fetched on each query
*
* @param sObjectType The SObjectType of the provided fields
* @param fieldNames A set of SObject field names
*
* @return Returns an instance of itself to allow for method chaining
*/
public fflib_SObjectsSelector setSObjectFields(SObjectType sObjectType, Set<String> fieldNames) {
Map<String, SObjectField> sObjectFieldsByName = sObjectType.getDescribe().fields.getMap();
Set<SObjectField> sObjectFields = new Set<SObjectField>();
for (String fieldName : fieldNames) {
if (sObjectFieldsByName.containsKey(fieldName) == false) continue;
sObjectFields.add(sObjectFieldsByName.get(fieldName));
}
setSObjectFields(sObjectFields);
return this;
}
/**
* Sets the SObjectType of the records to query
*
* @param sObjectType The SObjectType of the records to query
*
* @return Returns an instance of itself to allow for method chaining
*/
public fflib_SObjectsSelector setSObjectType(SObjectType sObjectType) {
this.sObjectType = sObjectType;
return this;
}
}
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>67.0</apiVersion>
<status>Active</status>
</ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -37,9 +37,8 @@ public abstract with sharing class fflib_ALogAppenderFilter implements fflib_ILo
protected System.LoggingLevel minLogLevel = DEFAULT_LEVEL; protected System.LoggingLevel minLogLevel = DEFAULT_LEVEL;
/** /**
* setLoggingLevel * Change the current minimum logging level
* *
* @description Change the current minimum logging level
* @param logLevel * @param logLevel
*/ */
public void setLoggingLevel(System.LoggingLevel logLevel) public void setLoggingLevel(System.LoggingLevel logLevel)
@@ -48,9 +47,8 @@ public abstract with sharing class fflib_ALogAppenderFilter implements fflib_ILo
} }
/** /**
* isValidLogLevel * Compares the Organisation, User and Apex logging level settings
* *
* @description Compares the Organisation, User and Apex logging level settings
* @param logLevel * @param logLevel
* *
* @return Returns true if one of the settings is equal or higher than the given loglevel * @return Returns true if one of the settings is equal or higher than the given loglevel
@@ -65,15 +63,14 @@ public abstract with sharing class fflib_ALogAppenderFilter implements fflib_ILo
} }
/** /**
* isValidLogLevel * Compares the given log level valueToCompare against the compareTo
* *
* @description Compares the given log level valueToCompare against the compareTo
* @param compareTo The log level to compare against * @param compareTo The log level to compare against
* @param valueToCompare The log level to compare * @param valueToCompare The log level to compare
* *
* @return Returns true if the valueToCompare is equal of higher then the compareTo * @return Returns true if the valueToCompare is equal of higher then the compareTo
*/ */
private Boolean isValidLogLevel(System.LoggingLevel compareTo, System.LoggingLevel valueToCompare) private static Boolean isValidLogLevel(System.LoggingLevel compareTo, System.LoggingLevel valueToCompare)
{ {
return compareTo != System.LoggingLevel.NONE return compareTo != System.LoggingLevel.NONE
&& &&
@@ -83,9 +80,8 @@ public abstract with sharing class fflib_ALogAppenderFilter implements fflib_ILo
} }
/** /**
* isValidApexClassLogLevel * Compare the given loglevel against the current Apex setting stored in this.minLogLevel
* *
* @description Compare the given loglevel against the current Apex setting stored in this.minLogLevel
* @param logLevel The log level to compare * @param logLevel The log level to compare
* *
* @return Returns true if the given log level is equal of higher then the Apex setting * @return Returns true if the given log level is equal of higher then the Apex setting
@@ -96,9 +92,8 @@ public abstract with sharing class fflib_ALogAppenderFilter implements fflib_ILo
} }
/** /**
* isValidOrganisationLogLevel * Compare the given loglevel against the Organisation setting stored in a Custom Setting
* *
* @description Compare the given loglevel against the Organisation setting stored in a Custom Setting
* @param logLevel The log level to compare * @param logLevel The log level to compare
* *
* @return Returns true if the given log level is equal of higher then the Organisation setting * @return Returns true if the given log level is equal of higher then the Organisation setting
@@ -112,9 +107,8 @@ public abstract with sharing class fflib_ALogAppenderFilter implements fflib_ILo
} }
/** /**
* isValidUserLogLevel * Compare the given loglevel against the User setting stored in a Custom Setting
* *
* @description Compare the given loglevel against the User setting stored in a Custom Setting
* @param logLevel The log level to compare * @param logLevel The log level to compare
* *
* @return Returns true if the given log level is equal of higher then the User setting * @return Returns true if the given log level is equal of higher then the User setting
@@ -158,15 +152,14 @@ public abstract with sharing class fflib_ALogAppenderFilter implements fflib_ILo
} }
/** /**
* hasSettingsValue * Validates if the Custom Setting has a value stored in the given field
* *
* @description Validates if the Custom Setting has a value stored in the given field
* @param setting The Custom Setting to validate * @param setting The Custom Setting to validate
* @param sObjectField The field to check * @param sObjectField The field to check
* *
* @return Returns true is the given field is set in the Custom Setting * @return Returns true is the given field is set in the Custom Setting
*/ */
private Boolean hasSettingsValue(fflib_LogLevelFilter__c setting, SObjectField sObjectField) private static Boolean hasSettingsValue(fflib_LogLevelFilter__c setting, SObjectField sObjectField)
{ {
return ( return (
null != setting null != setting
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -48,9 +48,8 @@ public virtual without sharing class fflib_LogEventAppender extends fflib_ALogAp
} }
/** /**
* publishEvents * Publish the given fflib_LogEvent__e events and report if there are any errors
* *
* @description Publish the given fflib_LogEvent__e events and report if there are any errors
* @param events The Platform events to publish * @param events The Platform events to publish
*/ */
protected virtual void publishEvents(List<fflib_LogEvent__e> events) protected virtual void publishEvents(List<fflib_LogEvent__e> events)
@@ -61,9 +60,8 @@ public virtual without sharing class fflib_LogEventAppender extends fflib_ALogAp
/** /**
* checkAndReportErrors * Iterate over the given Database.SaveResults and report any errors
* *
* @description Iterate over the given Database.SaveResults and report any errors
* @param saveResults * @param saveResults
*/ */
protected void checkAndReportErrors(List<Database.SaveResult> saveResults) protected void checkAndReportErrors(List<Database.SaveResult> saveResults)
@@ -79,9 +77,8 @@ public virtual without sharing class fflib_LogEventAppender extends fflib_ALogAp
} }
/** /**
* reportError * Construct the error message for the failing Database.SaveResult and throws an exception
* *
* @description Construct the error message for the failing Database.SaveResult and throws an exception
* @param saveResult * @param saveResult
* *
* @throws fflib_LogEventAppender.fflib_LogEventAppenderException * @throws fflib_LogEventAppender.fflib_LogEventAppenderException
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -35,6 +35,8 @@ public abstract with sharing class fflib_LogEventDomain extends fflib_PlatformEv
/** /**
* Class constructor * Class constructor
*
* @param records
*/ */
public fflib_LogEventDomain(List<SObject> records) public fflib_LogEventDomain(List<SObject> records)
{ {
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -32,6 +32,8 @@ public with sharing class fflib_LogEventStoreListener extends fflib_LogEventDoma
{ {
/** /**
* Class constructor * Class constructor
*
* @param records
*/ */
public fflib_LogEventStoreListener(List<SObject> records) public fflib_LogEventStoreListener(List<SObject> records)
{ {
@@ -55,6 +57,6 @@ public with sharing class fflib_LogEventStoreListener extends fflib_LogEventDoma
) )
); );
} }
insert logEntryRecords; insert as system logEntryRecords;
} }
} }
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -2,7 +2,8 @@
* File Name: sflib_LogEventTrigger * File Name: sflib_LogEventTrigger
* Description: Tigger to store Log events into a custom object * Description: Tigger to store Log events into a custom object
* Copyright (c) 2019 Johnson & Johnson * Copyright (c) 2019 Johnson & Johnson
* @author: architect ir. Wilhelmus G.J. Velzeboer | wvelzebo@its.jnj.com *
* @author architect ir. Wilhelmus G.J. Velzeboer | wvelzebo@its.jnj.com
*/ */
trigger fflib_LogEventTrigger on fflib_LogEvent__e (after insert) trigger fflib_LogEventTrigger on fflib_LogEvent__e (after insert)
{ {
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexTrigger xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexTrigger xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexTrigger> </ApexTrigger>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -52,7 +52,8 @@ public virtual inherited sharing class fflib_TriggerContext
* Provides access to the Trigger.new and allowing it to be mocked in unit-tests * Provides access to the Trigger.new and allowing it to be mocked in unit-tests
*/ */
@TestVisible @TestVisible
protected List<SObject> records { protected List<SObject> records
{
get get
{ {
if (records == null) if (records == null)
@@ -89,6 +90,8 @@ public virtual inherited sharing class fflib_TriggerContext
/** /**
* Provides access to the data represented by this Trigger Context * Provides access to the data represented by this Trigger Context
*
* @return
**/ **/
public System.TriggerOperation getTriggerOperation() public System.TriggerOperation getTriggerOperation()
{ {
@@ -133,6 +136,10 @@ public virtual inherited sharing class fflib_TriggerContext
/** /**
* Detects whether any values in context records have changed for given field as string * Detects whether any values in context records have changed for given field as string
* Returns list of SObject records that have changes in the specified fields * Returns list of SObject records that have changes in the specified fields
*
* @param fieldName
*
* @return
**/ **/
public List<SObject> getChangedRecords(String fieldName) public List<SObject> getChangedRecords(String fieldName)
{ {
@@ -142,6 +149,10 @@ public virtual inherited sharing class fflib_TriggerContext
/** /**
* Detects whether any values in context records have changed for given fields as strings * Detects whether any values in context records have changed for given fields as strings
* Returns list of SObject records that have changes in the specified fields * Returns list of SObject records that have changes in the specified fields
*
* @param fieldNames
*
* @return
**/ **/
public List<SObject> getChangedRecords(Set<String> fieldNames) public List<SObject> getChangedRecords(Set<String> fieldNames)
{ {
@@ -167,6 +178,10 @@ public virtual inherited sharing class fflib_TriggerContext
/** /**
* Detects whether any values in context records have changed for given field as token * Detects whether any values in context records have changed for given field as token
* Returns list of SObject records that have changes in the specified fields * Returns list of SObject records that have changes in the specified fields
*
* @param fieldToken
*
* @return
**/ **/
public List<SObject> getChangedRecords(Schema.SObjectField fieldToken) public List<SObject> getChangedRecords(Schema.SObjectField fieldToken)
{ {
@@ -176,6 +191,10 @@ public virtual inherited sharing class fflib_TriggerContext
/** /**
* Detects whether any values in context records have changed for given fields as tokens * Detects whether any values in context records have changed for given fields as tokens
* Returns list of SObject records that have changes in the specified fields * Returns list of SObject records that have changes in the specified fields
*
* @param fieldTokens
*
* @return
**/ **/
public List<SObject> getChangedRecords(Set<Schema.SObjectField> fieldTokens) public List<SObject> getChangedRecords(Set<Schema.SObjectField> fieldTokens)
{ {
@@ -200,6 +219,8 @@ public virtual inherited sharing class fflib_TriggerContext
/** /**
* Provides access to Trigger.oldMap or the mock when configured in a unit-test * Provides access to Trigger.oldMap or the mock when configured in a unit-test
*
* @return
**/ **/
public Map<Id, SObject> getExistingRecords() public Map<Id, SObject> getExistingRecords()
{ {
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>66.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -32,29 +32,47 @@ public interface fflib_ITriggerContext
/** /**
* Detects whether any values in context records have changed for given field as string * Detects whether any values in context records have changed for given field as string
* Returns list of SObject records that have changes in the specified fields * Returns list of SObject records that have changes in the specified fields
*
* @param fieldName
*
* @return
**/ **/
List<SObject> getChangedRecords(String fieldName); List<SObject> getChangedRecords(String fieldName);
/** /**
* Detects whether any values in context records have changed for given fields as strings * Detects whether any values in context records have changed for given fields as strings
* Returns list of SObject records that have changes in the specified fields * Returns list of SObject records that have changes in the specified fields
*
* @param fieldNames
*
* @return
**/ **/
List<SObject> getChangedRecords(Set<String> fieldNames); List<SObject> getChangedRecords(Set<String> fieldNames);
/** /**
* Detects whether any values in context records have changed for given field as token * Detects whether any values in context records have changed for given field as token
* Returns list of SObject records that have changes in the specified fields * Returns list of SObject records that have changes in the specified fields
*
* @param fieldToken
*
* @return
**/ **/
List<SObject> getChangedRecords(Schema.SObjectField fieldToken); List<SObject> getChangedRecords(Schema.SObjectField fieldToken);
/** /**
* Detects whether any values in context records have changed for given fields as tokens * Detects whether any values in context records have changed for given fields as tokens
* Returns list of SObject records that have changes in the specified fields * Returns list of SObject records that have changes in the specified fields
*
* @param fieldTokens
*
* @return
**/ **/
List<SObject> getChangedRecords(Set<Schema.SObjectField> fieldTokens); List<SObject> getChangedRecords(Set<Schema.SObjectField> fieldTokens);
/** /**
* Provides access to Trigger.oldMap or the mock when configured in a unit-test * Provides access to Trigger.oldMap or the mock when configured in a unit-test
*
* @return
**/ **/
Map<Id, SObject> getExistingRecords(); Map<Id, SObject> getExistingRecords();
@@ -65,6 +83,8 @@ public interface fflib_ITriggerContext
/** /**
* Provides access to the data represented by this Trigger Context * Provides access to the data represented by this Trigger Context
*
* @return
**/ **/
List<SObject> getRecords(); List<SObject> getRecords();
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>66.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>65.0</apiVersion> <apiVersion>67.0</apiVersion>
<status>Active</status> <status>Active</status>
</ApexClass> </ApexClass>

Some files were not shown because too many files have changed in this diff Show More