Service.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import { JavaObject, cast_java_lang_Object } from '../java/lang/JavaObject';
  2. import { Logger, cast_de_nrw_schule_svws_logger_Logger } from '../logger/Logger';
  3. import { LogConsumerVector, cast_de_nrw_schule_svws_logger_LogConsumerVector } from '../logger/LogConsumerVector';
  4. export abstract class Service<T_IN, T_OUT> extends JavaObject {
  5. protected logger : Logger = new Logger();
  6. protected log : LogConsumerVector = new LogConsumerVector();
  7. /**
  8. * Erstellt einen neuen Service, dessen Logger automatisch in einen Vector loggt.
  9. */
  10. protected constructor() {
  11. super();
  12. this.logger.addConsumer(this.log);
  13. }
  14. /**
  15. * Diese Methode muss von dem erbenden Service impelemntiert werden
  16. * und handhabt das übergebene Input-Objekt und erzeugt das zugehörige
  17. * Output-Objekt.
  18. *
  19. * @param input das Input-Objekt
  20. *
  21. * @return das Output-Objekt
  22. */
  23. public abstract handle(input : T_IN | null) : T_OUT | null;
  24. /**
  25. * Gibt die Logger-Instanz von diesem Service zurück.
  26. *
  27. * @return die Logger-Instanz.
  28. */
  29. public getLogger() : Logger {
  30. return this.logger;
  31. }
  32. /**
  33. * Gibt das Log dieses Services zurück.
  34. *
  35. * @return das Log dieses Services
  36. */
  37. public getLog() : LogConsumerVector {
  38. return this.log;
  39. }
  40. isTranspiledInstanceOf(name : string): boolean {
  41. return ['de.nrw.schule.svws.core.Service'].includes(name);
  42. }
  43. }
  44. export function cast_de_nrw_schule_svws_core_Service<T_IN, T_OUT>(obj : unknown) : Service<T_IN, T_OUT> {
  45. return obj as Service<T_IN, T_OUT>;
  46. }