Skip to content

Commit c88a637

Browse files
committed
* Removed most default occurences from switch-cases
* Switched from runtime_error or out_of_range to more specific Exceptions: EnumConversionException, StringToEnumException, EnumToStringException Signed-off-by: Piet Gömpel <pietgoempel@gmail.com>
1 parent d41b1a7 commit c88a637

16 files changed

+43
-119
lines changed

include/ocpp/common/evse_security.hpp

-1
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,6 @@ namespace evse_security_conversions {
127127

128128
ocpp::v2::GetCertificateIdUseEnum to_ocpp_v2(ocpp::CertificateType other);
129129
ocpp::v2::InstallCertificateUseEnum to_ocpp_v2(ocpp::CaCertificateType other);
130-
ocpp::v2::CertificateSigningUseEnum to_ocpp_v2(ocpp::CertificateSigningUseEnum other);
131130
ocpp::v2::HashAlgorithmEnum to_ocpp_v2(ocpp::HashAlgorithmEnumType other);
132131
ocpp::v2::InstallCertificateStatusEnum to_ocpp_v2(ocpp::InstallCertificateResult other);
133132
ocpp::v2::DeleteCertificateStatusEnum to_ocpp_v2(ocpp::DeleteCertificateResult other);

include/ocpp/common/evse_security_impl.hpp

-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ namespace conversions {
6464

6565
GetCertificateSignRequestStatus to_ocpp(evse_security::GetCertificateSignRequestStatus other);
6666
CaCertificateType to_ocpp(evse_security::CaCertificateType other);
67-
CertificateSigningUseEnum to_ocpp(evse_security::LeafCertificateType other);
6867
CertificateType to_ocpp(evse_security::CertificateType other);
6968
HashAlgorithmEnumType to_ocpp(evse_security::HashAlgorithm other);
7069
GetCertificateInfoStatus to_ocpp(evse_security::GetCertificateInfoStatus other);

include/ocpp/common/message_queue.hpp

-3
Original file line numberDiff line numberDiff line change
@@ -558,9 +558,6 @@ template <typename M> class MessageQueue {
558558
case QueueType::None:
559559
// do nothing
560560
break;
561-
562-
default:
563-
break;
564561
}
565562
}
566563
if (this->transaction_message_queue.empty() && this->normal_message_queue.empty()) {

lib/ocpp/common/evse_security.cpp

+13-26
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ ocpp::v2::GetCertificateIdUseEnum to_ocpp_v2(ocpp::CertificateType other) {
2121
return ocpp::v2::GetCertificateIdUseEnum::ManufacturerRootCertificate;
2222
}
2323

24-
throw std::runtime_error("Could not convert CertificateType to GetCertificateIdUseEnum");
24+
throw EnumConversionException("Could not convert CertificateType to GetCertificateIdUseEnum");
2525
}
2626

2727
ocpp::v2::InstallCertificateUseEnum to_ocpp_v2(ocpp::CaCertificateType other) {
@@ -36,22 +36,7 @@ ocpp::v2::InstallCertificateUseEnum to_ocpp_v2(ocpp::CaCertificateType other) {
3636
return ocpp::v2::InstallCertificateUseEnum::ManufacturerRootCertificate;
3737
}
3838

39-
throw std::runtime_error("Could not convert CaCertificateType to InstallCertificateUseEnum");
40-
}
41-
42-
ocpp::v2::CertificateSigningUseEnum to_ocpp_v2(ocpp::CertificateSigningUseEnum other) {
43-
switch (other) {
44-
case ocpp::CertificateSigningUseEnum::ChargingStationCertificate:
45-
return ocpp::v2::CertificateSigningUseEnum::ChargingStationCertificate;
46-
case ocpp::CertificateSigningUseEnum::V2GCertificate:
47-
return ocpp::v2::CertificateSigningUseEnum::V2GCertificate;
48-
case ocpp::CertificateSigningUseEnum::ManufacturerCertificate:
49-
// TODO: we don't have this value in ocpp
50-
throw std::runtime_error(
51-
"Could not convert ocpp::CertificateSigningUseEnum::ManufacturerCertificate missing type");
52-
}
53-
54-
throw std::runtime_error("Could not convert CertificateSigningUseEnum to CertificateSigningUseEnum");
39+
throw EnumConversionException("Could not convert CaCertificateType to InstallCertificateUseEnum");
5540
}
5641

5742
ocpp::v2::HashAlgorithmEnum to_ocpp_v2(ocpp::HashAlgorithmEnumType other) {
@@ -64,7 +49,7 @@ ocpp::v2::HashAlgorithmEnum to_ocpp_v2(ocpp::HashAlgorithmEnumType other) {
6449
return ocpp::v2::HashAlgorithmEnum::SHA512;
6550
}
6651

67-
throw std::runtime_error("Could not convert HashAlgorithmEnumType to HashAlgorithmEnum");
52+
throw EnumConversionException("Could not convert HashAlgorithmEnumType to HashAlgorithmEnum");
6853
}
6954

7055
ocpp::v2::InstallCertificateStatusEnum to_ocpp_v2(ocpp::InstallCertificateResult other) {
@@ -89,7 +74,7 @@ ocpp::v2::InstallCertificateStatusEnum to_ocpp_v2(ocpp::InstallCertificateResult
8974
return ocpp::v2::InstallCertificateStatusEnum::Accepted;
9075
}
9176

92-
throw std::runtime_error("Could not convert InstallCertificateResult to InstallCertificateStatusEnum");
77+
throw EnumConversionException("Could not convert InstallCertificateResult to InstallCertificateStatusEnum");
9378
}
9479

9580
ocpp::v2::DeleteCertificateStatusEnum to_ocpp_v2(ocpp::DeleteCertificateResult other) {
@@ -102,7 +87,7 @@ ocpp::v2::DeleteCertificateStatusEnum to_ocpp_v2(ocpp::DeleteCertificateResult o
10287
return ocpp::v2::DeleteCertificateStatusEnum ::NotFound;
10388
}
10489

105-
throw std::runtime_error("Could not convert DeleteCertificateResult to DeleteCertificateResult");
90+
throw EnumConversionException("Could not convert DeleteCertificateResult to DeleteCertificateResult");
10691
}
10792

10893
ocpp::v2::CertificateHashDataType to_ocpp_v2(ocpp::CertificateHashDataType other) {
@@ -161,7 +146,7 @@ ocpp::CertificateType from_ocpp_v2(ocpp::v2::GetCertificateIdUseEnum other) {
161146
return ocpp::CertificateType::MFRootCertificate;
162147
}
163148

164-
throw std::runtime_error("Could not convert GetCertificateIdUseEnum to CertificateType");
149+
throw EnumConversionException("Could not convert GetCertificateIdUseEnum to CertificateType");
165150
}
166151

167152
std::vector<ocpp::CertificateType> from_ocpp_v2(const std::vector<ocpp::v2::GetCertificateIdUseEnum>& other) {
@@ -184,7 +169,7 @@ ocpp::CaCertificateType from_ocpp_v2(ocpp::v2::InstallCertificateUseEnum other)
184169
return ocpp::CaCertificateType::MF;
185170
}
186171

187-
throw std::runtime_error("Could not convert CaCertificateType to InstallCertificateUseEnum");
172+
throw EnumConversionException("Could not convert CaCertificateType to InstallCertificateUseEnum");
188173
}
189174

190175
ocpp::CertificateSigningUseEnum from_ocpp_v2(ocpp::v2::CertificateSigningUseEnum other) {
@@ -195,7 +180,7 @@ ocpp::CertificateSigningUseEnum from_ocpp_v2(ocpp::v2::CertificateSigningUseEnum
195180
return ocpp::CertificateSigningUseEnum::V2GCertificate;
196181
}
197182

198-
throw std::runtime_error("Could not convert CertificateSigningUseEnum to CertificateSigningUseEnum");
183+
throw EnumConversionException("Could not convert CertificateSigningUseEnum to CertificateSigningUseEnum");
199184
}
200185

201186
ocpp::HashAlgorithmEnumType from_ocpp_v2(ocpp::v2::HashAlgorithmEnum other) {
@@ -208,7 +193,7 @@ ocpp::HashAlgorithmEnumType from_ocpp_v2(ocpp::v2::HashAlgorithmEnum other) {
208193
return ocpp::HashAlgorithmEnumType::SHA512;
209194
}
210195

211-
throw std::runtime_error("Could not convert HashAlgorithmEnum to HashAlgorithmEnumType");
196+
throw EnumConversionException("Could not convert HashAlgorithmEnum to HashAlgorithmEnumType");
212197
}
213198

214199
ocpp::InstallCertificateResult from_ocpp_v2(ocpp::v2::InstallCertificateStatusEnum other) {
@@ -221,7 +206,8 @@ ocpp::InstallCertificateResult from_ocpp_v2(ocpp::v2::InstallCertificateStatusEn
221206
return ocpp::InstallCertificateResult::Accepted;
222207
}
223208

224-
throw std::runtime_error("Could not convert InstallCertificateResult to evse_security::InstallCertificateResult");
209+
throw EnumConversionException(
210+
"Could not convert InstallCertificateResult to evse_security::InstallCertificateResult");
225211
}
226212

227213
ocpp::DeleteCertificateResult from_ocpp_v2(ocpp::v2::DeleteCertificateStatusEnum other) {
@@ -234,7 +220,8 @@ ocpp::DeleteCertificateResult from_ocpp_v2(ocpp::v2::DeleteCertificateStatusEnum
234220
return ocpp::DeleteCertificateResult::NotFound;
235221
}
236222

237-
throw std::runtime_error("Could not convert DeleteCertificateResult to evse_security::DeleteCertificateResult");
223+
throw EnumConversionException(
224+
"Could not convert DeleteCertificateResult to evse_security::DeleteCertificateResult");
238225
}
239226

240227
ocpp::CertificateHashDataType from_ocpp_v2(ocpp::v2::CertificateHashDataType other) {

lib/ocpp/common/evse_security_impl.cpp

+21-49
Original file line numberDiff line numberDiff line change
@@ -154,10 +154,9 @@ GetCertificateSignRequestStatus to_ocpp(evse_security::GetCertificateSignRequest
154154
return GetCertificateSignRequestStatus::KeyGenError;
155155
case evse_security::GetCertificateSignRequestStatus::GenerationError:
156156
return GetCertificateSignRequestStatus::GenerationError;
157-
default:
158-
throw std::runtime_error(
159-
"Could not convert evse_security::GetCertificateSignRequestStatus to GetCertificateSignRequestStatus");
160157
}
158+
throw EnumConversionException(
159+
"Could not convert evse_security::GetCertificateSignRequestStatus to GetCertificateSignRequestStatus");
161160
}
162161

163162
CaCertificateType to_ocpp(evse_security::CaCertificateType other) {
@@ -172,23 +171,7 @@ CaCertificateType to_ocpp(evse_security::CaCertificateType other) {
172171
return CaCertificateType::MF;
173172
}
174173

175-
throw std::runtime_error("Could not convert evse_security::CaCertificateType to CaCertificateType");
176-
}
177-
178-
CertificateSigningUseEnum to_ocpp(evse_security::LeafCertificateType other) {
179-
switch (other) {
180-
case evse_security::LeafCertificateType::CSMS:
181-
return CertificateSigningUseEnum::ChargingStationCertificate;
182-
case evse_security::LeafCertificateType::V2G:
183-
return CertificateSigningUseEnum::V2GCertificate;
184-
case evse_security::LeafCertificateType::MF:
185-
return CertificateSigningUseEnum::ManufacturerCertificate;
186-
case evse_security::LeafCertificateType::MO:
187-
throw std::runtime_error(
188-
"Could not convert evse_security::LeafCertificateType to CertificateSigningUseEnum. Missing type");
189-
}
190-
191-
throw std::runtime_error("Could not convert evse_security::LeafCertificateType to CertificateSigningUseEnum");
174+
throw EnumConversionException("Could not convert evse_security::CaCertificateType to CaCertificateType");
192175
}
193176

194177
CertificateType to_ocpp(evse_security::CertificateType other) {
@@ -203,9 +186,8 @@ CertificateType to_ocpp(evse_security::CertificateType other) {
203186
return CertificateType::V2GCertificateChain;
204187
case evse_security::CertificateType::MFRootCertificate:
205188
return CertificateType::MFRootCertificate;
206-
default:
207-
throw std::runtime_error("Could not convert evse_security::CertificateType to CertificateType");
208189
}
190+
throw EnumConversionException("Could not convert evse_security::CertificateType to CertificateType");
209191
}
210192

211193
HashAlgorithmEnumType to_ocpp(evse_security::HashAlgorithm other) {
@@ -216,9 +198,8 @@ HashAlgorithmEnumType to_ocpp(evse_security::HashAlgorithm other) {
216198
return HashAlgorithmEnumType::SHA384;
217199
case evse_security::HashAlgorithm::SHA512:
218200
return HashAlgorithmEnumType::SHA512;
219-
default:
220-
throw std::runtime_error("Could not convert evse_security::HashAlgorithm to HashAlgorithmEnumType");
221201
}
202+
throw EnumConversionException("Could not convert evse_security::HashAlgorithm to HashAlgorithmEnumType");
222203
}
223204

224205
GetCertificateInfoStatus to_ocpp(evse_security::GetCertificateInfoStatus other) {
@@ -233,10 +214,9 @@ GetCertificateInfoStatus to_ocpp(evse_security::GetCertificateInfoStatus other)
233214
return GetCertificateInfoStatus::NotFoundValid;
234215
case evse_security::GetCertificateInfoStatus::PrivateKeyNotFound:
235216
return GetCertificateInfoStatus::PrivateKeyNotFound;
236-
default:
237-
throw std::runtime_error(
238-
"Could not convert evse_security::GetCertificateInfoStatus to GetCertificateInfoStatus");
239217
}
218+
throw EnumConversionException(
219+
"Could not convert evse_security::GetCertificateInfoStatus to GetCertificateInfoStatus");
240220
}
241221

242222
InstallCertificateResult to_ocpp(evse_security::InstallCertificateResult other) {
@@ -259,10 +239,9 @@ InstallCertificateResult to_ocpp(evse_security::InstallCertificateResult other)
259239
return InstallCertificateResult::WriteError;
260240
case evse_security::InstallCertificateResult::Accepted:
261241
return InstallCertificateResult::Accepted;
262-
default:
263-
throw std::runtime_error(
264-
"Could not convert evse_security::InstallCertificateResult to InstallCertificateResult");
265242
}
243+
throw EnumConversionException(
244+
"Could not convert evse_security::InstallCertificateResult to InstallCertificateResult");
266245
}
267246

268247
CertificateValidationResult to_ocpp(evse_security::CertificateValidationResult other) {
@@ -282,8 +261,7 @@ CertificateValidationResult to_ocpp(evse_security::CertificateValidationResult o
282261
case evse_security::CertificateValidationResult::Expired:
283262
return CertificateValidationResult::Expired;
284263
}
285-
286-
throw std::runtime_error(
264+
throw EnumConversionException(
287265
"Could not convert evse_security::CertificateValidationResult to CertificateValidationResult");
288266
}
289267

@@ -295,9 +273,9 @@ DeleteCertificateResult to_ocpp(evse_security::DeleteCertificateResult other) {
295273
return DeleteCertificateResult::Failed;
296274
case evse_security::DeleteCertificateResult::NotFound:
297275
return DeleteCertificateResult::NotFound;
298-
default:
299-
throw std::runtime_error("Could not convert evse_security::DeleteCertificateResult to DeleteCertificateResult");
300276
}
277+
throw EnumConversionException(
278+
"Could not convert evse_security::DeleteCertificateResult to DeleteCertificateResult");
301279
}
302280

303281
CertificateHashDataType to_ocpp(evse_security::CertificateHashData other) {
@@ -371,9 +349,8 @@ evse_security::CaCertificateType from_ocpp(CaCertificateType other) {
371349
return evse_security::CaCertificateType::CSMS;
372350
case CaCertificateType::MF:
373351
return evse_security::CaCertificateType::MF;
374-
default:
375-
throw std::runtime_error("Could not convert evse_security::CaCertificateType to CaCertificateType");
376352
}
353+
throw EnumConversionException("Could not convert evse_security::CaCertificateType to CaCertificateType");
377354
}
378355

379356
evse_security::LeafCertificateType from_ocpp(LeafCertificateType other) {
@@ -386,9 +363,8 @@ evse_security::LeafCertificateType from_ocpp(LeafCertificateType other) {
386363
return evse_security::LeafCertificateType::CSMS;
387364
case LeafCertificateType::MF:
388365
return evse_security::LeafCertificateType::MF;
389-
default:
390-
throw std::runtime_error("Could not convert evse_security::CaCertificateType to CaCertificateType");
391366
}
367+
throw EnumConversionException("Could not convert evse_security::CaCertificateType to CaCertificateType");
392368
}
393369

394370
evse_security::LeafCertificateType from_ocpp(CertificateSigningUseEnum other) {
@@ -399,9 +375,8 @@ evse_security::LeafCertificateType from_ocpp(CertificateSigningUseEnum other) {
399375
return evse_security::LeafCertificateType::V2G;
400376
case CertificateSigningUseEnum::ManufacturerCertificate:
401377
return evse_security::LeafCertificateType::MF;
402-
default:
403-
throw std::runtime_error("Could not convert CertificateSigningUseEnum to evse_security::LeafCertificateType");
404378
}
379+
throw EnumConversionException("Could not convert CertificateSigningUseEnum to evse_security::LeafCertificateType");
405380
}
406381

407382
evse_security::CertificateType from_ocpp(CertificateType other) {
@@ -416,9 +391,8 @@ evse_security::CertificateType from_ocpp(CertificateType other) {
416391
return evse_security::CertificateType::V2GCertificateChain;
417392
case CertificateType::MFRootCertificate:
418393
return evse_security::CertificateType::MFRootCertificate;
419-
default:
420-
throw std::runtime_error("Could not convert CertificateType to evse_security::CertificateType");
421394
}
395+
throw EnumConversionException("Could not convert CertificateType to evse_security::CertificateType");
422396
}
423397

424398
evse_security::HashAlgorithm from_ocpp(HashAlgorithmEnumType other) {
@@ -429,9 +403,8 @@ evse_security::HashAlgorithm from_ocpp(HashAlgorithmEnumType other) {
429403
return evse_security::HashAlgorithm::SHA384;
430404
case HashAlgorithmEnumType::SHA512:
431405
return evse_security::HashAlgorithm::SHA512;
432-
default:
433-
throw std::runtime_error("Could not convert HashAlgorithmEnumType to evse_security::HashAlgorithm");
434406
}
407+
throw EnumConversionException("Could not convert HashAlgorithmEnumType to evse_security::HashAlgorithm");
435408
}
436409

437410
evse_security::InstallCertificateResult from_ocpp(InstallCertificateResult other) {
@@ -454,10 +427,9 @@ evse_security::InstallCertificateResult from_ocpp(InstallCertificateResult other
454427
return evse_security::InstallCertificateResult::WriteError;
455428
case InstallCertificateResult::Accepted:
456429
return evse_security::InstallCertificateResult::Accepted;
457-
default:
458-
throw std::runtime_error(
459-
"Could not convert InstallCertificateResult to evse_security::InstallCertificateResult");
460430
}
431+
throw EnumConversionException(
432+
"Could not convert InstallCertificateResult to evse_security::InstallCertificateResult");
461433
}
462434

463435
evse_security::DeleteCertificateResult from_ocpp(DeleteCertificateResult other) {
@@ -468,9 +440,9 @@ evse_security::DeleteCertificateResult from_ocpp(DeleteCertificateResult other)
468440
return evse_security::DeleteCertificateResult::Failed;
469441
case DeleteCertificateResult::NotFound:
470442
return evse_security::DeleteCertificateResult::NotFound;
471-
default:
472-
throw std::runtime_error("Could not convert DeleteCertificateResult to evse_security::DeleteCertificateResult");
473443
}
444+
throw EnumConversionException(
445+
"Could not convert DeleteCertificateResult to evse_security::DeleteCertificateResult");
474446
}
475447

476448
evse_security::CertificateHashData from_ocpp(CertificateHashDataType other) {

lib/ocpp/common/types.cpp

+7-9
Original file line numberDiff line numberDiff line change
@@ -637,7 +637,7 @@ RunningCostState string_to_running_cost_state(const std::string& state) {
637637
return RunningCostState::Finished;
638638
}
639639

640-
throw std::out_of_range("No known string conversion for provided enum of type RunningCostState");
640+
throw StringToEnumException(state, "No known string conversion for provided enum of type RunningCostState");
641641
}
642642

643643
std::string running_cost_state_to_string(const RunningCostState& state) {
@@ -649,8 +649,7 @@ std::string running_cost_state_to_string(const RunningCostState& state) {
649649
case RunningCostState::Finished:
650650
return "Finished";
651651
}
652-
653-
throw std::out_of_range("No known enum value of type RunningCostState");
652+
throw EnumToStringException(state, "No known enum value of type RunningCostState");
654653
}
655654
} // namespace conversions
656655

@@ -1215,9 +1214,8 @@ std::string generate_certificate_signing_request_status_to_string(const GetCerti
12151214
return "KeyGenError";
12161215
case GetCertificateSignRequestStatus::GenerationError:
12171216
return "GenerationError";
1218-
default:
1219-
throw EnumToStringException(status, "GetCertificateSignRequestStatus");
12201217
}
1218+
throw EnumToStringException(status, "GetCertificateSignRequestStatus");
12211219
}
12221220
} // namespace conversions
12231221

@@ -1245,10 +1243,11 @@ v16::FirmwareStatus firmware_status_notification_to_firmware_status(const Firmwa
12451243
case FirmwareStatusNotification::InstallVerificationFailed:
12461244
case FirmwareStatusNotification::InvalidSignature:
12471245
case FirmwareStatusNotification::SignatureVerified:
1248-
throw std::out_of_range("Could not convert FirmwareStatusNotification to v16::FirmwareStatus. Missing type");
1246+
throw EnumConversionException(
1247+
"Could not convert FirmwareStatusNotification to v16::FirmwareStatus. Missing type");
12491248
}
12501249

1251-
throw std::out_of_range("Could not convert to v16::FirmwareStatus");
1250+
throw EnumConversionException("Could not convert to v16::FirmwareStatus");
12521251
}
12531252

12541253
v16::FirmwareStatusEnumType
@@ -1282,9 +1281,8 @@ firmware_status_notification_to_firmware_status_enum_type(const FirmwareStatusNo
12821281
return v16::FirmwareStatusEnumType::InvalidSignature;
12831282
case FirmwareStatusNotification::SignatureVerified:
12841283
return v16::FirmwareStatusEnumType::SignatureVerified;
1285-
default:
1286-
throw std::out_of_range("Could not convert to v16::FirmwareStatusEnumType");
12871284
}
1285+
throw EnumConversionException("Could not convert to v16::FirmwareStatusEnumType");
12881286
}
12891287

12901288
} // namespace conversions

0 commit comments

Comments
 (0)