refactor: improve debug log messages
[e-mobility-charging-stations-simulator.git] / src / charging-station / ocpp / 2.0 / OCPP20IncomingRequestService.ts
index 143eee889aba3c47d07d8f76684c0af191fe5bda..bda78d54f3147f5eb621ae5108836c34eea8ee6d 100644 (file)
@@ -35,26 +35,26 @@ export class OCPP20IncomingRequestService extends OCPPIncomingRequestService {
       [
         OCPP20IncomingRequestCommand.CLEAR_CACHE,
         OCPP20ServiceUtils.parseJsonSchemaFile<OCPP20ClearCacheRequest>(
-          '../../../assets/json-schemas/ocpp/2.0/ClearCacheRequest.json',
+          'assets/json-schemas/ocpp/2.0/ClearCacheRequest.json',
           moduleName,
-          'constructor'
+          'constructor',
         ),
       ],
     ]);
     this.validatePayload = this.validatePayload.bind(this) as (
       chargingStation: ChargingStation,
       commandName: OCPP20IncomingRequestCommand,
-      commandPayload: JsonType
+      commandPayload: JsonType,
     ) => boolean;
   }
 
-  public async incomingRequestHandler(
+  public async incomingRequestHandler<ReqType extends JsonType, ResType extends JsonType>(
     chargingStation: ChargingStation,
     messageId: string,
     commandName: OCPP20IncomingRequestCommand,
-    commandPayload: JsonType
+    commandPayload: ReqType,
   ): Promise<void> {
-    let response: JsonType;
+    let response: ResType;
     if (
       chargingStation.getOcppStrictCompliance() === true &&
       chargingStation.inPendingState() === true &&
@@ -66,10 +66,10 @@ export class OCPP20IncomingRequestService extends OCPPIncomingRequestService {
         `${commandName} cannot be issued to handle request PDU ${JSON.stringify(
           commandPayload,
           null,
-          2
+          2,
         )} while the charging station is in pending state on the central server`,
         commandName,
-        commandPayload
+        commandPayload,
       );
     }
     if (
@@ -84,15 +84,15 @@ export class OCPP20IncomingRequestService extends OCPPIncomingRequestService {
         try {
           this.validatePayload(chargingStation, commandName, commandPayload);
           // Call the method to build the response
-          response = await this.incomingRequestHandlers.get(commandName)(
+          response = (await this.incomingRequestHandlers.get(commandName)!(
             chargingStation,
-            commandPayload
-          );
+            commandPayload,
+          )) as ResType;
         } catch (error) {
           // Log
           logger.error(
             `${chargingStation.logPrefix()} ${moduleName}.incomingRequestHandler: Handle incoming request error:`,
-            error
+            error,
           );
           throw error;
         }
@@ -103,10 +103,10 @@ export class OCPP20IncomingRequestService extends OCPPIncomingRequestService {
           `${commandName} is not implemented to handle request PDU ${JSON.stringify(
             commandPayload,
             null,
-            2
+            2,
           )}`,
           commandName,
-          commandPayload
+          commandPayload,
         );
       }
     } else {
@@ -115,10 +115,10 @@ export class OCPP20IncomingRequestService extends OCPPIncomingRequestService {
         `${commandName} cannot be issued to handle request PDU ${JSON.stringify(
           commandPayload,
           null,
-          2
+          2,
         )} while the charging station is not registered on the central server.`,
         commandName,
-        commandPayload
+        commandPayload,
       );
     }
     // Send the built response
@@ -126,25 +126,25 @@ export class OCPP20IncomingRequestService extends OCPPIncomingRequestService {
       chargingStation,
       messageId,
       response,
-      commandName
+      commandName,
     );
   }
 
   private validatePayload(
     chargingStation: ChargingStation,
     commandName: OCPP20IncomingRequestCommand,
-    commandPayload: JsonType
+    commandPayload: JsonType,
   ): boolean {
     if (this.jsonSchemas.has(commandName) === true) {
       return this.validateIncomingRequestPayload(
         chargingStation,
         commandName,
-        this.jsonSchemas.get(commandName),
-        commandPayload
+        this.jsonSchemas.get(commandName)!,
+        commandPayload,
       );
     }
     logger.warn(
-      `${chargingStation.logPrefix()} ${moduleName}.validatePayload: No JSON schema found for command '${commandName}' PDU validation`
+      `${chargingStation.logPrefix()} ${moduleName}.validatePayload: No JSON schema found for command '${commandName}' PDU validation`,
     );
     return false;
   }