@contiva/sap-integration-suite-client
Version:
SAP Cloud Platform Integration API Client
128 lines (127 loc) • 4.81 kB
JavaScript
;
/**
* Registry für benutzerdefinierte Client-Erweiterungen
*
* Diese Datei bietet eine zentrale Registry für alle verfügbaren
* benutzerdefinierten Client-Erweiterungen. Sie erleichtert das
* dynamische Laden und Instanziieren von erweiterten Clients.
*
* @module sap-integration-suite-client/custom-registry
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.CustomClientRegistry = exports.CustomClientType = void 0;
const integration_content_advanced_client_1 = require("./integration-content-advanced-client");
const message_processing_logs_advanced_client_1 = require("./message-processing-logs-advanced-client");
/**
* Typen von benutzerdefinierten Clients, die in der Registry registriert sind
*/
var CustomClientType;
(function (CustomClientType) {
/**
* Erweiterter Integration Content Client
*/
CustomClientType["INTEGRATION_CONTENT_ADVANCED"] = "integration-content-advanced";
/**
* Erweiterter Message Processing Logs Client
*/
CustomClientType["MESSAGE_PROCESSING_LOGS_ADVANCED"] = "message-processing-logs-advanced";
// In Zukunft weitere Custom Client Typen hier hinzufügen
})(CustomClientType || (exports.CustomClientType = CustomClientType = {}));
/**
* Registry für benutzerdefinierte Client-Factories
*
* Diese Klasse verwaltet alle verfügbaren benutzerdefinierten Client-Erweiterungen
* und ermöglicht den einheitlichen Zugriff darauf.
*/
class CustomClientRegistry {
/**
* Privater Konstruktor für Singleton-Pattern
*/
constructor() {
/**
* Map der registrierten Factory-Instanzen
*/
this.factories = new Map();
// Registriere Standard-Factories
this.registerDefaults();
}
/**
* Gibt die Singleton-Instanz der Registry zurück
*
* @returns Die CustomClientRegistry-Instanz
*/
static getInstance() {
if (!CustomClientRegistry.instance) {
CustomClientRegistry.instance = new CustomClientRegistry();
}
return CustomClientRegistry.instance;
}
/**
* Registriert die Standard-Factories
*/
registerDefaults() {
this.register(CustomClientType.INTEGRATION_CONTENT_ADVANCED, new integration_content_advanced_client_1.IntegrationContentAdvancedClientFactory());
this.register(CustomClientType.MESSAGE_PROCESSING_LOGS_ADVANCED, new message_processing_logs_advanced_client_1.MessageProcessingLogsAdvancedClientFactory());
// In Zukunft weitere Standard-Factories hier registrieren
}
/**
* Registriert eine benutzerdefinierte Client-Factory
*
* @param type - Der Typ des benutzerdefinierten Clients
* @param factory - Die Factory für die Erstellung des Clients
*/
register(type, factory) {
this.factories.set(type, factory);
}
/**
* Erstellt einen benutzerdefinierten Client mit dem angegebenen Typ
*
* @param type - Der Typ des zu erstellenden benutzerdefinierten Clients
* @param baseClient - Der zugrundeliegende Standard-Client
* @returns Eine Instanz des benutzerdefinierten Clients
* @throws Error, wenn kein passender Factory für den angegebenen Typ gefunden wurde
*/
create(type, baseClient) {
const factory = this.factories.get(type);
if (!factory) {
throw new Error(`Kein Factory für den Typ '${type}' registriert.`);
}
return factory.create(baseClient);
}
/**
* Erstellt einen IntegrationContentAdvancedClient
*
* @param baseClient - Der zugrundeliegende IntegrationContentClient
* @returns Eine Instanz des IntegrationContentAdvancedClient
*/
createIntegrationContentAdvancedClient(baseClient) {
return this.create(CustomClientType.INTEGRATION_CONTENT_ADVANCED, baseClient);
}
/**
* Erstellt einen MessageProcessingLogsAdvancedClient
*
* @param baseClient - Der zugrundeliegende MessageProcessingLogsClient
* @returns Eine Instanz des MessageProcessingLogsAdvancedClient
*/
createMessageProcessingLogsAdvancedClient(baseClient) {
return this.create(CustomClientType.MESSAGE_PROCESSING_LOGS_ADVANCED, baseClient);
}
/**
* Prüft, ob ein bestimmter benutzerdefinierter Client-Typ registriert ist
*
* @param type - Der zu prüfende Typ
* @returns true, wenn der Typ registriert ist, sonst false
*/
isRegistered(type) {
return this.factories.has(type);
}
/**
* Gibt alle registrierten benutzerdefinierten Client-Typen zurück
*
* @returns Ein Array der registrierten Typen
*/
getRegisteredTypes() {
return Array.from(this.factories.keys());
}
}
exports.CustomClientRegistry = CustomClientRegistry;