Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
05e1514be0 | ||
|
|
4a734ee822 | ||
|
|
98b0f97e24 | ||
|
|
11abb61337 | ||
|
|
415e1cb645 | ||
|
|
27d903678c | ||
|
|
94129a9791 | ||
|
|
368978bf20 | ||
|
|
9716a88489 | ||
|
|
b9f2bde59f | ||
|
|
ea31aa49fc | ||
|
|
3e89f74910 | ||
|
|
493bfc1eee | ||
|
|
e48df56aa8 | ||
|
|
44f31df4ad | ||
|
|
c892f821c7 | ||
|
|
132d7421a7 | ||
|
|
f02bce4979 | ||
|
|
7c9ee600ec | ||
|
|
a4e2d0ed84 | ||
|
|
8a6e7a37aa | ||
|
|
89d7ec5ac1 | ||
|
|
a1bcd4bef4 | ||
|
|
5e74fa5ab2 | ||
|
|
4d889fe8e1 |
@@ -20,13 +20,19 @@ jobs:
|
|||||||
- name: Install Node.js
|
- name: Install Node.js
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 20
|
node-version: 24
|
||||||
|
|
||||||
- name: Install Salesforce CLI with NPM
|
- name: Install Salesforce CLI with NPM
|
||||||
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: |
|
||||||
@@ -56,8 +62,10 @@ jobs:
|
|||||||
id: get-branch-name
|
id: get-branch-name
|
||||||
run: |
|
run: |
|
||||||
if [ "${{ github.event_name }}" == "pull_request" ]; then
|
if [ "${{ github.event_name }}" == "pull_request" ]; then
|
||||||
|
echo "Branch name: ${{ github.head_ref }}"
|
||||||
echo "BRANCH_NAME=${{ github.head_ref }}" >> $GITHUB_OUTPUT
|
echo "BRANCH_NAME=${{ github.head_ref }}" >> $GITHUB_OUTPUT
|
||||||
else
|
else
|
||||||
|
echo "Branch name: ${GITHUB_REF#refs/heads/}"
|
||||||
echo "BRANCH_NAME=${GITHUB_REF#refs/heads/}" >> $GITHUB_OUTPUT
|
echo "BRANCH_NAME=${GITHUB_REF#refs/heads/}" >> $GITHUB_OUTPUT
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -78,13 +86,6 @@ jobs:
|
|||||||
echo "PACKAGE_ID=$VERSION_ID" >> "$GITHUB_ENV"
|
echo "PACKAGE_ID=$VERSION_ID" >> "$GITHUB_ENV"
|
||||||
echo "PACKAGE_VERSION=$VERSION" >> "$GITHUB_ENV"
|
echo "PACKAGE_VERSION=$VERSION" >> "$GITHUB_ENV"
|
||||||
|
|
||||||
- name: Appending to package version log
|
|
||||||
run: |
|
|
||||||
DT=$(date '+%d/%m/%Y %H:%M:%S');
|
|
||||||
echo "|$PACKAGE_VERSION (BETA) | $PACKAGE_ID | Created on $DT |" >> README.md
|
|
||||||
git add README.md
|
|
||||||
git commit -am "Update Package Version Log with $PACKAGE_VERSION-Beta"
|
|
||||||
|
|
||||||
- name: Push changes to GIT
|
- name: Push changes to GIT
|
||||||
run: |
|
run: |
|
||||||
git push
|
git push
|
||||||
@@ -1,11 +1,12 @@
|
|||||||
name: Publish a new package version
|
name: Publish a new package version
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request_target:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
types:
|
types:
|
||||||
- closed
|
- closed
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
@@ -13,15 +14,17 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- name: Checkout main branch
|
||||||
|
uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
ref: ${{github.event.pull_request.head.ref}}
|
ref: main
|
||||||
repository: ${{github.event.pull_request.head.repo.full_name}}
|
token: ${{ secrets.CI_PAT }}
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Install Node.js
|
- name: Install Node.js
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 20
|
node-version: 24
|
||||||
|
|
||||||
- name: Install Salesforce CLI with NPM
|
- name: Install Salesforce CLI with NPM
|
||||||
run: npm install @salesforce/cli --global
|
run: npm install @salesforce/cli --global
|
||||||
@@ -33,33 +36,23 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
sf config set target-dev-hub SFDX-ENV --global
|
sf config set target-dev-hub SFDX-ENV --global
|
||||||
|
|
||||||
- name: Get branch name
|
|
||||||
id: get-branch-name
|
|
||||||
run: |
|
|
||||||
if [ "${{ github.event_name }}" == "pull_request" ]; then
|
|
||||||
echo "Branch name: ${{ github.head_ref }}"
|
|
||||||
echo "BRANCH_NAME=${{ github.head_ref }}" >> $GITHUB_ENV
|
|
||||||
else
|
|
||||||
echo "Branch name: ${GITHUB_REF#refs/heads/}"
|
|
||||||
echo "BRANCH_NAME=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Fetching Latest Package Version Id
|
- name: Fetching Latest Package Version Id
|
||||||
run: |
|
run: |
|
||||||
DATA=`sf package version list --packages "fflibApexExtensions" --target-dev-hub SFDX-ENV --branch $BRANCH_NAME --json`
|
VERSION_ID=`cat sfdx-project.json | jq -r '.packageAliases | to_entries | [last] | .[0].value '`
|
||||||
LATEST_VERSION=`echo "$DATA" | jq '.result[-1]'`
|
|
||||||
|
|
||||||
VERSION=`echo "$LATEST_VERSION" | jq -r '.Version'`
|
|
||||||
VERSION_NAME=`echo "$LATEST_VERSION" | jq -r '.Name'`
|
|
||||||
VERSION_ID=`echo "$LATEST_VERSION" | jq -r '.SubscriberPackageVersionId'`
|
|
||||||
|
|
||||||
echo "Version: $VERSION"
|
|
||||||
echo "Version Name: $VERSION_NAME"
|
|
||||||
echo "Version ID: $VERSION_ID"
|
echo "Version ID: $VERSION_ID"
|
||||||
|
|
||||||
|
JSON=`sf package version list --packages "fflibApexExtensions" --target-dev-hub SFDX-ENV --json`
|
||||||
|
DATA=`echo "$JSON" | jq -r --arg VERSION "$VERSION_ID" '.result | .[] | select(.SubscriberPackageVersionId == $VERSION)'`
|
||||||
|
|
||||||
|
VERSION_NUMBER=`echo "$DATA" | jq -r '.Version'`
|
||||||
|
echo "Version: $VERSION_NUMBER"
|
||||||
|
|
||||||
|
VERSION_NAME=`echo "$DATA" | jq -r '.Name'`
|
||||||
|
echo "Version Name: $VERSION_NAME"
|
||||||
|
|
||||||
echo "PACKAGE_VERSION_ID=$VERSION_ID" >> "$GITHUB_ENV"
|
echo "PACKAGE_VERSION_ID=$VERSION_ID" >> "$GITHUB_ENV"
|
||||||
echo "PACKAGE_VERSION_NAME=$VERSION_ID" >> "$GITHUB_ENV"
|
echo "PACKAGE_VERSION_NAME=$VERSION_NAME" >> "$GITHUB_ENV"
|
||||||
echo "PACKAGE_VERSION=$VERSION" >> "$GITHUB_ENV"
|
echo "PACKAGE_VERSION=$VERSION_NUMBER" >> "$GITHUB_ENV"
|
||||||
|
|
||||||
- name: Promoting BETA Package Version
|
- name: Promoting BETA Package Version
|
||||||
run: |
|
run: |
|
||||||
@@ -69,27 +62,35 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
echo "Increasing package versionName"
|
echo "Increasing package versionName"
|
||||||
NEW_PACKAGE_VERSION_NAME=`echo "ver $(echo "$PACKAGE_VERSION" | cut -d ' ' -f2 | cut -d '.' -f1).$(expr "$(echo "$PACKAGE_VERSION" | cut -d ' ' -f2 | cut -d '.' -f2)" + 1)"`
|
NEW_PACKAGE_VERSION_NAME=`echo "ver $(echo "$PACKAGE_VERSION" | cut -d ' ' -f2 | cut -d '.' -f1).$(expr "$(echo "$PACKAGE_VERSION" | cut -d ' ' -f2 | cut -d '.' -f2)" + 1)"`
|
||||||
|
echo "Current package version name: $PACKAGE_VERSION"
|
||||||
|
echo "New package version name: $NEW_PACKAGE_VERSION_NAME"
|
||||||
cat sfdx-project.json | jq -r --arg VERSION "$NEW_PACKAGE_VERSION_NAME" '.packageDirectories |= map(select(.package == "fflibApexExtensions").versionName = $VERSION)' > tmp.json
|
cat sfdx-project.json | jq -r --arg VERSION "$NEW_PACKAGE_VERSION_NAME" '.packageDirectories |= map(select(.package == "fflibApexExtensions").versionName = $VERSION)' > tmp.json
|
||||||
mv tmp.json sfdx-project.json
|
mv tmp.json sfdx-project.json
|
||||||
|
|
||||||
echo "Increasing package versionNumber"
|
echo "Increasing package versionNumber"
|
||||||
NEW_PACKAGE_VERSION=`echo "$(echo "$NEW_PACKAGE_VERSION_NAME" | cut -d ' ' -f2).0.NEXT"`
|
NEW_PACKAGE_VERSION=`echo "$(echo "$NEW_PACKAGE_VERSION_NAME" | cut -d ' ' -f2).0.NEXT"`
|
||||||
|
echo "Current package version: $PACKAGE_VERSION"
|
||||||
|
echo "New package version: $NEW_PACKAGE_VERSION"
|
||||||
cat sfdx-project.json | jq -r --arg VERSION "$NEW_PACKAGE_VERSION" '.packageDirectories |= map(select(.package == "fflibApexExtensions").versionNumber = $VERSION)' > tmp.json
|
cat sfdx-project.json | jq -r --arg VERSION "$NEW_PACKAGE_VERSION" '.packageDirectories |= map(select(.package == "fflibApexExtensions").versionNumber = $VERSION)' > tmp.json
|
||||||
mv tmp.json sfdx-project.json
|
mv tmp.json sfdx-project.json
|
||||||
|
|
||||||
echo "NEW_PACKAGE_VERSION_NAME=$NEW_PACKAGE_VERSION_NAME" >> "$GITHUB_ENV"
|
echo "NEW_PACKAGE_VERSION_NAME=$NEW_PACKAGE_VERSION_NAME" >> "$GITHUB_ENV"
|
||||||
echo "NEW_PACKAGE_VERSION=$NEW_PACKAGE_VERSION" >> "$GITHUB_ENV"
|
echo "NEW_PACKAGE_VERSION=$NEW_PACKAGE_VERSION" >> "$GITHUB_ENV"
|
||||||
|
|
||||||
- name: Updating Package Version Log
|
- name: Appending to package version log
|
||||||
run: |
|
run: |
|
||||||
sed -i "s/ (BETA) | $$PACKAGE_VERSION_ID/| $PACKAGE_VERSION_ID/g" README.md
|
DT=$(date '+%d/%m/%Y %H:%M:%S');
|
||||||
|
echo "| $PACKAGE_VERSION | $PACKAGE_VERSION_ID | Created on $DT |" >> README.md
|
||||||
|
REPLACEMENT="sf package install --package $PACKAGE_VERSION_I0--wait=10 --target-org YOUR_ORG_ALIAS"
|
||||||
|
sed -i 's|^sf package install.*|sf package install --package '$PACKAGE_VERSION_ID' --wait=10 --target-org $YOUR_ORG_ALIAS|' README.md
|
||||||
|
sed -i 's|^Either clone the repository.*|Either clone the repository and import the package manually, use the [Package Installation URL](https://login.salesforce.com/packaging/installPackage.apexp?p0='$PACKAGE_VERSION_ID')|' README.md
|
||||||
|
|
||||||
- name: Committing can pushing changes
|
- name: Committing and pushing changes
|
||||||
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
|
||||||
git add sfdx-project.json
|
git add sfdx-project.json
|
||||||
git add README.md
|
git add README.md
|
||||||
git commit -am "Update package version to $NEW_PACKAGE_VERSION"
|
git commit -am "Update package version to $NEW_PACKAGE_VERSION"
|
||||||
git tag -a "v$PACKAGE_VERSION" -m "Release Version $PACKAGE_VERSION\n\nPackage Version Id: $PACKAGE_VERSION_ID"
|
git tag -a "v$PACKAGE_VERSION" -m "Release Version $PACKAGE_VERSION" -m "" -m "Package Version Id: $PACKAGE_VERSION_ID"
|
||||||
git push --tags
|
git push origin main --tags
|
||||||
@@ -6,6 +6,17 @@ This extension package is dependent on the following packages:
|
|||||||
- [fflib-apex-mocks](https://github.com/apex-enterprise-patterns/fflib-apex-mocks)
|
- [fflib-apex-mocks](https://github.com/apex-enterprise-patterns/fflib-apex-mocks)
|
||||||
- [fflib-apex-common](https://github.com/apex-enterprise-patterns/fflib-apex-common)
|
- [fflib-apex-common](https://github.com/apex-enterprise-patterns/fflib-apex-common)
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
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=04tQy000000ZbKrIAK)
|
||||||
|
or execute the following SFDX CLI command in your terminal:
|
||||||
|
```bash
|
||||||
|
sf package install --package 04tQy000000ZbKrIAK --wait=10 --target-org $YOUR_ORG_ALIAS
|
||||||
|
```
|
||||||
|
_Replace `$YOUR_ORG_ALIAS` with the alias of your target org_
|
||||||
|
|
||||||
## Extensions pack contents
|
## Extensions pack contents
|
||||||
These features are offered in this extension package:
|
These features are offered in this extension package:
|
||||||
|
|
||||||
@@ -49,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/>
|
||||||
@@ -110,7 +125,11 @@ Thank you for your donations!
|
|||||||
|
|
||||||
## Package version log
|
## Package version log
|
||||||
|
|
||||||
| Package version | Package ID | Description |
|
| Package version | Package ID | Description |
|
||||||
|-----------------|--------------------|--------------------------|
|
|-----------------------------------------------|--------------------|--------------------------------|
|
||||||
|0.1.0-1-feature/UnlockedManagedPackage (BETA) | 04tJ8000000kaKQIAY | Created on 26/03/2026 18:14:51 |
|
| 0.1.0-2 | 04tJ8000000kaKVIAY | Created on 26/03/2026 20:07:07 |
|
||||||
|0.1.0-2-feature/UnlockedManagedPackage (BETA) | 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
-5
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"packageDirectories": [
|
"packageDirectories": [
|
||||||
{
|
{
|
||||||
"versionName": "ver 0.2",
|
"versionName": "ver 0.12",
|
||||||
"versionNumber": "0.2.0.NEXT",
|
"versionNumber": "0.12.0.NEXT",
|
||||||
"path": "sfdx-source",
|
"path": "sfdx-source",
|
||||||
"default": true,
|
"default": true,
|
||||||
"package": "fflibApexExtensions",
|
"package": "fflibApexExtensions",
|
||||||
@@ -12,10 +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.9.0-1-feature/genericSelector": "04tJ8000000kaPHIAY",
|
||||||
|
"fflibApexExtensions@0.10.0-1-api-upgrade-67": "04tJ9000000YW1CIAW",
|
||||||
|
"fflibApexExtensions@0.11.0-1-code-reformat": "04tQy000000ZbBBIA0",
|
||||||
|
"fflibApexExtensions@0.11.0-2-code-reformat": "04tQy000000ZbEPIA0",
|
||||||
|
"fflibApexExtensions@0.11.0-3-code-reformat": "04tQy000000ZbKrIAK"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-7
@@ -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
|
||||||
@@ -38,7 +37,7 @@ public virtual class fflib_ClassicDomainFactory
|
|||||||
/**
|
/**
|
||||||
* Constructs a Domain factory
|
* Constructs a Domain factory
|
||||||
**/
|
**/
|
||||||
public fflib_ClassicDomainFactory() {}
|
public fflib_ClassicDomainFactory(){ }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a Domain factory, based on a map linking the ObjectType to the
|
* Constructs a Domain factory, based on a map linking the ObjectType to the
|
||||||
@@ -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,12 +100,13 @@ 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)
|
||||||
{
|
{
|
||||||
// Avoid unexpected exceptions when the recordIds contains incorrect data
|
// Avoid unexpected exceptions when the recordIds contains incorrect data
|
||||||
if (recordIds.isEmpty() || new List<Id>(recordIds).get(0) == null )
|
if (recordIds.isEmpty() || new List<Id>(recordIds).get(0) == null)
|
||||||
return newInstance(new List<SObject>(), sObjectType);
|
return newInstance(new List<SObject>(), sObjectType);
|
||||||
|
|
||||||
return newInstance(selectorFactory.selectById(recordIds));
|
return newInstance(selectorFactory.selectById(recordIds));
|
||||||
|
|||||||
+1
-1
@@ -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>
|
||||||
|
|||||||
-3
@@ -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
-1
@@ -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>
|
||||||
|
|||||||
+3
-4
@@ -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
-1
@@ -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
-1
@@ -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>
|
||||||
|
|||||||
-3
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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>
|
||||||
|
|||||||
+209
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
+5
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
|
||||||
@@ -59,33 +57,31 @@ public abstract with sharing class fflib_ALogAppenderFilter implements fflib_ILo
|
|||||||
{
|
{
|
||||||
return (
|
return (
|
||||||
isValidOrganisationLogLevel(logLevel) ||
|
isValidOrganisationLogLevel(logLevel) ||
|
||||||
isValidUserLogLevel(logLevel) ||
|
isValidUserLogLevel(logLevel) ||
|
||||||
isValidApexClassLogLevel(logLevel)
|
isValidApexClassLogLevel(logLevel)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 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
|
||||||
&&
|
&&
|
||||||
valueToCompare != System.LoggingLevel.NONE
|
valueToCompare != System.LoggingLevel.NONE
|
||||||
&&
|
&&
|
||||||
valueToCompare.ordinal() >= compareTo.ordinal();
|
valueToCompare.ordinal() >= compareTo.ordinal();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 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,20 +152,19 @@ 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
|
||||||
&&
|
&&
|
||||||
setting.getPopulatedFieldsAsMap().containsKey(sObjectField.getDescribe().getName())
|
setting.getPopulatedFieldsAsMap().containsKey(sObjectField.getDescribe().getName())
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -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
-1
@@ -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>
|
||||||
|
|||||||
@@ -206,7 +206,7 @@ public with sharing class fflib_Logger implements fflib_ILogger
|
|||||||
{
|
{
|
||||||
public void append(fflib_LogEntry logEntry)
|
public void append(fflib_LogEntry logEntry)
|
||||||
{
|
{
|
||||||
System.debug(logEntry.className + ' #' + logEntry.lineNumber + ' @'+ logEntry.methodName + ' ' + logEntry.message);
|
System.debug(logEntry.className + ' #' + logEntry.lineNumber + ' @' + logEntry.methodName + ' ' + logEntry.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-2
@@ -68,8 +68,8 @@ public virtual inherited sharing class fflib_TriggerActionConfig
|
|||||||
// Get SObjectType
|
// Get SObjectType
|
||||||
String ObjectTypeApiName =
|
String ObjectTypeApiName =
|
||||||
String.isNotBlank(triggerAction.ObjectType__c)
|
String.isNotBlank(triggerAction.ObjectType__c)
|
||||||
? triggerAction.ObjectType__r?.QualifiedApiName?.toLowerCase().trim()
|
? triggerAction.ObjectType__r?.QualifiedApiName?.toLowerCase().trim()
|
||||||
: triggerAction.ObjectTypeAlternate__c.toLowerCase().trim();
|
: triggerAction.ObjectTypeAlternate__c.toLowerCase().trim();
|
||||||
this.sObjectType = Schema.describeSObjects(new List<String> {ObjectTypeApiName}).get(0).getSObjectType();
|
this.sObjectType = Schema.describeSObjects(new List<String> {ObjectTypeApiName}).get(0).getSObjectType();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -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>
|
||||||
|
|||||||
+7
-7
@@ -78,15 +78,15 @@ public virtual without sharing class fflib_TriggerActionConfigSelector
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
/* Please replace the above String.format method call for that below,
|
/* Please replace the above String.format method call for that below,
|
||||||
when the following issue in fflib-apex-commons is resolved:
|
when the following issue in fflib-apex-commons is resolved:
|
||||||
https://github.com/apex-enterprise-patterns/fflib-apex-common/issues/208
|
https://github.com/apex-enterprise-patterns/fflib-apex-common/issues/208
|
||||||
|
|
||||||
newQueryFactory()
|
newQueryFactory()
|
||||||
.selectField('ObjectType__r.QualifiedApiName')
|
.selectField('ObjectType__r.QualifiedApiName')
|
||||||
.toSOQL()
|
.toSOQL()
|
||||||
|
|
||||||
*/
|
*/
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+1
-1
@@ -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)
|
||||||
@@ -88,8 +89,10 @@ 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()
|
||||||
{
|
{
|
||||||
return triggerOperation;
|
return triggerOperation;
|
||||||
@@ -131,18 +134,26 @@ 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)
|
||||||
{
|
{
|
||||||
return getChangedRecords(new Set<String> {fieldName});
|
return getChangedRecords(new Set<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
|
||||||
|
**/
|
||||||
public List<SObject> getChangedRecords(Set<String> fieldNames)
|
public List<SObject> getChangedRecords(Set<String> fieldNames)
|
||||||
{
|
{
|
||||||
List<SObject> changedRecords = new List<SObject>();
|
List<SObject> changedRecords = new List<SObject>();
|
||||||
@@ -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
-1
@@ -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>
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ public virtual with sharing class fflib_TriggerHandler
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Retains the trigger tracking configuration used for each domain
|
* Retains the trigger tracking configuration used for each domain
|
||||||
**/
|
**/
|
||||||
private static Map<Type, fflib_SObjectDomain.TriggerEvent> triggerEventByClass;
|
private static Map<Type, fflib_SObjectDomain.TriggerEvent> triggerEventByClass;
|
||||||
private static Boolean disabled = false;
|
private static Boolean disabled = false;
|
||||||
|
|
||||||
@@ -90,7 +90,7 @@ public virtual with sharing class fflib_TriggerHandler
|
|||||||
|
|
||||||
public static fflib_SObjectDomain.TriggerEvent getTriggerEvent(Type triggerActionClass)
|
public static fflib_SObjectDomain.TriggerEvent getTriggerEvent(Type triggerActionClass)
|
||||||
{
|
{
|
||||||
if(!triggerEventByClass.containsKey(triggerActionClass))
|
if (!triggerEventByClass.containsKey(triggerActionClass))
|
||||||
{
|
{
|
||||||
triggerEventByClass.put(triggerActionClass, new fflib_SObjectDomain.TriggerEvent());
|
triggerEventByClass.put(triggerActionClass, new fflib_SObjectDomain.TriggerEvent());
|
||||||
}
|
}
|
||||||
@@ -191,7 +191,7 @@ public virtual with sharing class fflib_TriggerHandler
|
|||||||
|
|
||||||
for (fflib_TriggerAction__mdt action : selector.selectAllActive())
|
for (fflib_TriggerAction__mdt action : selector.selectAllActive())
|
||||||
{
|
{
|
||||||
configs.add( new fflib_TriggerActionConfig(action));
|
configs.add(new fflib_TriggerActionConfig(action));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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>
|
||||||
|
|||||||
+30
-10
@@ -30,31 +30,49 @@
|
|||||||
public interface fflib_ITriggerContext
|
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();
|
||||||
|
|
||||||
@@ -64,8 +82,10 @@ public interface fflib_ITriggerContext
|
|||||||
System.TriggerOperation getTriggerOperation();
|
System.TriggerOperation getTriggerOperation();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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>
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user