This is a public, read-only report. Striff reads this repository's docs, turns each sentence that makes a claim about the code into a rule, and checks the rule against the code on the default branch. How this works
Each sentence below has a stale name: a type the default branch doesn't declare, or declares somewhere else. Edit the doc so it matches the code, or bring the type back.
GonePagedAndSortedResultRequestInput
Here we inherit from PagedAndSortedResultRequestInput.
The repository once had src/Abp/Application/Services/Dto/PagedAndSortedResultRequestInput.cs. It doesn't now. Closest names there: IPagedAndSortedResultRequest, PagedAndSortedResultRequestDto.
Besides the framework's own startup configuration, a module can extend the IAbpModuleConfigurations interface to provide configuration points for the module.
The repository once had src/Abp/Configuration/Startup/IAbpModuleConfigurations.cs. It doesn't now. Closest names there: IModuleConfigurations, ModuleConfigurations.
Important:SettingEncryptionConfiguration is independent from the static > SimpleStringCipher.DefaultPassPhrase, SimpleStringCipher.DefaultSalt and > SimpleStringCipher.DefaultInitVectorBytes properties.
SettingEncryptionConfiguration may not depend on SimpleStringCipher
Holds
Read Oct 2
FullAuditedEntity also implements ISoftDelete, so events can not be deleted from database.
FullAuditedEntity implements ISoftDelete
HoldsPR #7211 · Sep 30
Read Oct 2
AbpDateTimeModelBinder is used to normalize DateTime (and Nullable<DateTime>) inputs using the Clock.Normalize method.
AbpDateTimeModelBinder depends on Clock
HoldsPR #7211 · Sep 30
Read Oct 2
Since authorization is widely used, ApplicationService and some common base classes inject and define the PermissionChecker property.
ApplicationService has PermissionChecker
HoldsPR #7211 · Sep 30
Read Oct 2
IBackgroundJobManager is implemented by BackgroundJobManager, by default.
It uses IBackgroundJobStore to persist jobs (see the next section).
BackgroundJobManager depends on IBackgroundJobStore
Holds
Read Oct 2
If you derive from PeriodicBackgroundWorkerBase (as in this sample), you should implement the DoWork method to perform your periodic working code.
PeriodicBackgroundWorkerBase has a DoWork method
Holds
Read Oct 2
If you derive from the BackgroundWorkerBase or directly implement IBackgroundWorker, you will override/implement the Start, Stop and WaitToStop methods.
6 rules from this sentence
BackgroundWorkerBase has a Start method
Holds
BackgroundWorkerBase has a Stop method
Holds
BackgroundWorkerBase has a WaitToStop method
Holds
IBackgroundWorker has a Start method
Holds
IBackgroundWorker has a Stop method
Holds
IBackgroundWorker has a WaitToStop method
Holds
Read Oct 2
The ICacheManager.GetCache method returns an ICache.
ICacheManager has a GetCache method
Holds
Read Oct 2
The ICache interface also has methods like GetOrDefault, Set, Remove and Clear.
4 rules from this sentence
ICache has a GetOrDefault method
Holds
ICache has a Set method
Holds
ICache has a Remove method
Holds
ICache has a Clear method
Holds
Read Oct 2
ITypedCache is a wrapper to ICache to provide a type safe, generic cache.
ITypedCache depends on ICache
Holds
Read Oct 2
Property PropertyName (string), Summary Unique name of the dynamic property
DynamicProperty has PropertyName
Holds
Read Oct 2
Property Permission (string), Summary Required permission to manage anything about that property (DynamicPropertyValue, DynamicEntityProperty, DynamicEntityPropertyValue)
DynamicProperty has Permission
Holds
Read Oct 2
Property TenantId (int?), Summary Tenant's unique identifier (For example you can use (IAbpSession).TenantId to get current tenant's id)
DynamicProperty has TenantId
Holds
Read Oct 2
Property DynamicPropertyId (int), Summary Unique indentifier of DynamicProperty
DynamicPropertyValue has DynamicPropertyId
Holds
Read Oct 2
Property Value (string), Summary Value
DynamicPropertyValue has Value
Holds
Read Oct 2
Property TenantId (int?), Summary Tenant's unique identifier (For example you can use (IAbpSession).TenantId to get current tenant's id)
DynamicPropertyValue has TenantId
Holds
Read Oct 2
Property DynamicPropertyId (int), Summary Unique indentifier of DynamicProperty
DynamicEntityProperty has DynamicPropertyId
Holds
Read Oct 2
Property EntityFullName (string), Summary Full name of type of entity (For example "typeof(MyEntity).FullName")
DynamicEntityProperty has EntityFullName
Holds
Read Oct 2
Property TenantId (int?), Summary Tenant's unique identifier (For example you can use (IAbpSession).TenantId to get current tenant's id)
DynamicEntityProperty has TenantId
Holds
Read Oct 2
Property DynamicEntityPropertyId (int), Summary Unique indentifier of DynamicEntityPropertyId
DynamicEntityPropertyValue has DynamicEntityPropertyId
Holds
Read Oct 2
Property EntityId (string), Summary Unique idenfier of entity row
DynamicEntityPropertyValue has EntityId
Holds
Read Oct 2
Property Value (string), Summary Value
DynamicEntityPropertyValue has Value
Holds
Read Oct 2
Property TenantId (int?), Summary Tenant's unique identifier (For example you can use (IAbpSession).TenantId to get current tenant's id)
DynamicEntityPropertyValue has TenantId
Holds
Read Oct 2
The entity change set has a Reason property that can be used to understand why a set of changes has occurred, i.e. the use case that resulted in these changes.
EntityChangeSet has Reason
Holds
Read Oct 2
The Abp.AspNetCore package implements HttpRequestEntityChangeSetReasonProvider, which returns the HttpContext.Request's URL as the Reason.
HttpRequestEntityChangeSetReasonProvider is in Abp.AspNetCore
Holds
Read Oct 2
You can use the IEntityChangeSetReasonProvider.Use(...) method as shown below:
IEntityChangeSetReasonProvider has an Use method
Holds
Read Oct 2
You can use the IEntitySnapshotManager.GetSnapshotAsync(...) method as shown below:
IEntitySnapshotManager has a GetSnapshotAsync method
Holds
Read Oct 2
The EventData class defines the EventSource (the object that triggered the event) and the EventTime (when it's triggered) properties.
2 rules from this sentence
EventData has EventSource
Holds
EventData has EventTime
Holds
Read Oct 2
A handler factory has two methods: GetHandler and ReleaseHandler.
2 rules from this sentence
IEventHandlerFactory has a GetHandler method
Holds
IEventHandlerFactory has a ReleaseHandler method
Holds
Read Oct 2
The EventBus also provides the Unregister method.
EventBus has an Unregister method
Holds
Read Oct 2
Lastly, EventBus provides a UnregisterAll<T>() method to unregister all the handlers of an event and a UnregisterAll() method to unregister all the handlers of all the events.
EventBus has an UnregisterAll method
Holds
Read Oct 2
Instead of always repeating your source name, you can first get the source and then get a string from the source: var source = _localizationManager.GetSource("SimpleTaskSystem");
ILocalizationManager has a GetSource method
Holds
Read Oct 2
The ILocalizationSource interface should be implemented by a localization source.
ILocalizationSource is a contract
Holds
Read Oct 2
AbpUserRequestCultureProvider (ABP's provider): If the user is known via IAbpSession and has explicitly selected a language before (and saved to ISettingManager), then use the user's preferred language.
2 rules from this sentence
AbpUserRequestCultureProvider depends on IAbpSession
Holds
AbpUserRequestCultureProvider depends on ISettingManager
Holds
Read Oct 2
ABP has built-in AbpLocalizationController, its ChangeCulture method changes the current language by writing cookies.
AbpLocalizationController has a ChangeCulture method
HoldsPR #7211 · Sep 30
Read Oct 2
If we can not inject ILocalizationManager (maybe it's in a static context that can not be reached by the dependency injection), we can simply use the LocalizationHelper static class.
LocalizationHelper is declared static
Holds
Read Oct 2
If you need localization in an application service, in an MVC Controller, in a Razor View, or in another class derived from AbpServiceBase, there are shortcut L methods.
AbpServiceBase has a L method
Holds
Read Oct 2
Note that it is derived from AbpController and therefore, you can easily localize text with the L method.
AbpController has a L method
Holds
Read Oct 2
ASP.NET Boilerplate defines the IAbpSession interface to obtain the current user and tenant ids.
IAbpSession is a contract
Holds
Read Oct 2
The DomainTenantResolveContributor uses ITenantStore to find the tenant id by tenancy name.
DomainTenantResolveContributor depends on ITenantStore
Holds
Read Oct 2
The default implementation of ITenantStore is NullTenantStore which does not contain any tenant and returns null for queries.
NullTenantStore implements ITenantStore
Holds
Read Oct 2
ASP.NET Boilerplate automatically does it when you implement one of the two interfaces for your entity: IMustHaveTenant and IMayHaveTenant.
2 rules from this sentence
IMustHaveTenant is a contract
Holds
IMayHaveTenant is a contract
Holds
Read Oct 2
This interface is used to distinguish the entities of different tenants by defining a TenantId property.
IMustHaveTenant has TenantId
Holds
Read Oct 2
The IMayHaveTenant interface also defines TenantId (similar to IMustHaveTenant), but it is nullable in this case.
IMayHaveTenant has TenantId
Holds
Read Oct 2
There are 5 levels of notification severity, defined in NotificationSeverity enum: Info, Success, Warn, Error and Fatal.
6 rules from this sentence
NotificationSeverity has Info
Holds
NotificationSeverity has Success
Holds
NotificationSeverity has Warn
Holds
NotificationSeverity has Error
Holds
NotificationSeverity has Fatal
Holds
NotificationSeverity is an enumeration
Holds
Read Oct 2
The INotificationSubscriptionManager also has the UnsubscribeAsync, IsSubscribedAsync, GetSubscriptionsAsync...
3 rules from this sentence
INotificationSubscriptionManager has UnsubscribeAsync
Holds
INotificationSubscriptionManager has IsSubscribedAsync
Holds
INotificationSubscriptionManager has GetSubscriptionsAsync
Holds
Read Oct 2
LocalizableMessageNotificationData can store dictionary-based arbitrary data (this is also true for custom notification data classes since they also inherit from NotificationData class).
The GetSettingDefinitions method returns the SettingDefinition objects.
SettingProvider has a GetSettingDefinitions method
Holds
Read Oct 2
The SettingScopes enum has a Flags attribute, so we can define a setting with more than one scope.
SettingScopes is annotated with Flags
Holds
Read Oct 2
The most-used method is GetSettingValue (or GetSettingValueAsync for an async call).
2 rules from this sentence
ISettingManager has a GetSettingValue method
Holds
ISettingManager has a GetSettingValueAsync method
Holds
Read Oct 2
Since ISettingManager is widely used, some special base classes (like ApplicationService, DomainService and AbpController) have a property named SettingManager.
3 rules from this sentence
ApplicationService has SettingManager
Holds
DomainService has SettingManager
Holds
AbpController has SettingManager
Holds
Read Oct 2
ClientVisibilityProvider property of a setting definition determines the visibility of a setting for the client-side.
SettingDefinition has ClientVisibilityProvider
Holds
Read Oct 2
The ISettingManager defines the ChangeSettingForApplicationAsync, ChangeSettingForTenantAsync and ChangeSettingForUserAsync methods (and sync versions) to change settings for the application, for a tenant and for a user respectively.
3 rules from this sentence
ISettingManager has a ChangeSettingForApplicationAsync method
Holds
ISettingManager has a ChangeSettingForTenantAsync method
Holds
ISettingManager has a ChangeSettingForUserAsync method
Holds
Read Oct 2
Parameter Name (string), Summary Unique name of the webhook Must be unique (You can use IWebhookDefinitionManager.Contains method to check whether it is already exists)
WebhookDefinition has Name
Holds
Read Oct 2
Parameter DisplayName (ILocalizableString), Summary Display name of the webhook
WebhookDefinition has DisplayName
Holds
Read Oct 2
Parameter Description (ILocalizableString), Summary Description for the webhook
WebhookDefinition has Description
Holds
Read Oct 2
Parameter FeatureDependency (IFeatureDependency), Summary A Feature Dependency A defined webhook will be available to a tenant if this feature is enabled on the tenant (All webhooks are available for the host)
Parameter WebhookUri (string), Summary Your webhook endpoint
WebhookSubscription has WebhookUri
Holds
Read Oct 2
Parameter Webhooks (list of string), Summary List of subscribed webhook names ( WebhookDefinition.Name ) You can receive a webhook event if you subscribe it
WebhookSubscription has Webhooks
Holds
Read Oct 2
Parameter Headers (Dictionary), Summary Additional headers You can add an additional header to the subscription Your webhook will contain that header(s) additionally
WebhookSubscription has Headers
Holds
Read Oct 2
Parameter Secret (string), Summary Your private webhook secret You can verify the received webhook by using that key Do not share it publicly (This value is automatically generated when you create a secret Modification not recommended)
WebhookSubscription has Secret
Holds
Read Oct 2
MultiTenantLocalizationSource wraps existing DictionaryBasedLocalizationSource based sources.
MultiTenantLocalizationSource depends on DictionaryBasedLocalizationSource
Holds
Read Oct 2
[Serializable] [Table("AbpLanguages")] public class ApplicationLanguage : FullAuditedEntity, IMayHaveTenant { //... }
4 rules from this sentence
ApplicationLanguage extends FullAuditedEntity
Holds
ApplicationLanguage implements IMayHaveTenant
Holds
ApplicationLanguage is annotated with Serializable
Holds
ApplicationLanguage is annotated with Table
Holds
Read Oct 2
[Serializable] [Table("AbpLanguageTexts")] public class ApplicationLanguageText : AuditedEntity<long>, IMayHaveTenant { //... }
4 rules from this sentence
ApplicationLanguageText extends AuditedEntity
Holds
ApplicationLanguageText implements IMayHaveTenant
Holds
ApplicationLanguageText is annotated with Serializable
Holds
ApplicationLanguageText is annotated with Table
Holds
Read Oct 2
The OrganizationUnit entity's primary key (Id) is a long type and it derives from the FullAuditedEntity class which provides audit information and implements the ISoftDelete interface (OUs are not deleted from the database, they are just marked as deleted).
2 rules from this sentence
OrganizationUnit extends FullAuditedEntity
Holds
OrganizationUnit implements ISoftDelete
Holds
Read Oct 2
Maximum depth of the tree is defined as a constant as OrganizationUnit.MaxDepth.
OrganizationUnit has MaxDepth
Holds
Read Oct 2
The IMustHaveOrganizationUnit defines the OrganizationUnitId property.
IMustHaveOrganizationUnit has OrganizationUnitId
Holds
Read Oct 2
The product entity must have a TenantId (which is a property of IMustHaveTenant) to distinguish it from products of different tenants in a multi-tenant application (see the Multi-Tenancy document for more info).
IMustHaveTenant has TenantId
Holds
Read Oct 2
There are also some properties like Roles, Permissions, Tenant, Settings, IsEmailConfirmed, and so on.
4 rules from this sentence
AbpUser has Roles
Holds
AbpUser has Permissions
Holds
AbpUser has Settings
Holds
AbpUser has IsEmailConfirmed
Holds
Read Oct 2
The AbpUser class implements the IMayHaveTenant filter to properly work in a multi-tenant application.
AbpUser implements IMayHaveTenant
HoldsPR #7211 · Sep 30
Read Oct 2
The AbpUser entity has an AuthenticationSource property that shows which source authenticated this user.
AbpUser has AuthenticationSource
HoldsPR #7211 · Sep 30
Read Oct 2
As you can see in the MyLdapAuthenticationSource constructor, LdapAuthenticationSource expects ILdapSettings as a constructor argument.
LdapAuthenticationSource depends on ILdapSettings
Holds
Read Oct 2
As you can see in the MyLdapAuthenticationSource constructor, LdapAuthenticationSource expects ILdapSettings as a constructor argument. This interface is used to get the LDAP settings like domain, user name and password to connect to Active Directory.
LdapSettings implements ILdapSettings
HoldsPR #7211 · Sep 30
109 rules from 16 docs
See these where the change is. The browser extension puts a pull request's doc findings, and a diagram of what it changed, on the GitHub page itself, so the code and what your docs say about it are side by side.