UNPKG

@contiva/sap-integration-suite-client

Version:
128 lines (127 loc) 4.81 kB
"use strict"; /** * 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;