1212namespace EventEngine \JsonSchema \Exception ;
1313
1414
15- use Opis \JsonSchema \ValidationError ;
15+ use Opis \JsonSchema \Errors \ErrorFormatter ;
16+ use Opis \JsonSchema \Errors \ValidationError ;
1617
1718class OpisJsonValidationError extends JsonValidationError
1819{
1920 /**
2021 * @var ValidationError[]
2122 */
22- private $ errors ;
23+ private array $ errors ;
24+ private ?ErrorFormatter $ errorFormatter = null ;
2325
2426 public static function withError (string $ objectName , ValidationError ...$ validationErrors ): OpisJsonValidationError
2527 {
@@ -28,15 +30,6 @@ public static function withError(string $objectName, ValidationError ...$validat
2830
2931 foreach ($ validationErrors as $ error ) {
3032 $ self ->message .= $ self ->errorMessage ($ error );
31-
32- if ($ error ->subErrorsCount ()) {
33- $ self ->message .= \array_reduce (
34- $ error ->subErrors (),
35- static function ($ message , ValidationError $ error ) use ($ self ) {
36- return $ message . "\n" . $ self ->errorMessage ($ error );
37- }
38- );
39- }
4033 }
4134
4235 return $ self ;
@@ -50,18 +43,13 @@ public function errors(): array
5043 return $ this ->errors ;
5144 }
5245
53- private function errorMessage ( ValidationError $ error ): string
46+ private function errorFormatter ( ): ErrorFormatter
5447 {
55- $ dataPointer = $ error ->dataPointer ();
56-
57- if (count ($ dataPointer ) === 0 ) {
58- return \sprintf ('[%s] %s ' , $ error ->keyword (), \json_encode ($ error ->keywordArgs (), JSON_PRETTY_PRINT ));
59- }
48+ return $ this ->errorFormatter ??= new ErrorFormatter ();
49+ }
6050
61- return \sprintf ('field "%s" [%s] %s ' ,
62- implode ('. ' , $ dataPointer ),
63- $ error ->keyword (),
64- \json_encode ($ error ->keywordArgs (), JSON_PRETTY_PRINT )
65- );
51+ private function errorMessage (ValidationError $ error ): string
52+ {
53+ return json_encode ($ this ->errorFormatter ()->formatOutput ($ error , "basic " ), JSON_PRETTY_PRINT );
6654 }
6755}
0 commit comments