Allow Replacement Of BuiltinKindsEntityProcessor

Signed-off-by: Jacob Bolda <me@jacobbolda.com>
This commit is contained in:
Jacob Bolda
2023-03-21 16:32:35 -05:00
parent c3330f909e
commit c4b846359c
3 changed files with 18 additions and 2 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog-backend': patch
---
Allow replacement of the BuiltinKindsEntityProcessor which enables customization of schema validation and connections emitted.
@@ -170,6 +170,7 @@ its schema. There is a builtin processor that implements this for all known core
kinds and matches the data against their fixed validation schema. This processor
can be replaced when building the backend catalog using the `CatalogBuilder`,
with a processor of your own that validates the data differently.
This replacement processor must have a name that matches the builtin processor, `BuiltinKindsEntityProcessor`.
This type of extension is high risk, and may have high impact across the
ecosystem depending on the type of change that is made. It is therefore not
@@ -599,16 +599,26 @@ export class CatalogBuilder {
...this.placeholderResolvers,
};
// These are always there no matter what
// The placeholder is always there no matter what
const processors: CatalogProcessor[] = [
new PlaceholderProcessor({
resolvers: placeholderResolvers,
reader,
integrations,
}),
new BuiltinKindsEntityProcessor(),
];
// If the user adds a processor named 'BuiltinKindsEntityProcessor',
// skip inclusion of the catalog-backend version.
if (
!this.processors.find(
processor =>
processor.getProcessorName() === 'BuiltinKindsEntityProcessor',
)
) {
processors.push(new BuiltinKindsEntityProcessor());
}
// These are only added unless the user replaced them all
if (!this.processorsReplace) {
processors.push(...this.getDefaultProcessors());