X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FX.pm;h=e1707cd0e3bfef0ff5b4137f892246e2a71e3047;hb=958b82d600cebec78ff208257b1fd348ee0439bf;hp=6da12dcfd52fcbc23a77b5274b49b82d59620083;hpb=6aeb25c506e856dcabb3d943876a6c8b540c4428;p=kivitendo-erp.git diff --git a/SL/X.pm b/SL/X.pm index 6da12dcfd..e1707cd0e 100644 --- a/SL/X.pm +++ b/SL/X.pm @@ -1,13 +1,48 @@ package SL::X; use strict; +use warnings; -use Exception::Lite qw(declareExceptionClass); +use SL::X::Base; -declareExceptionClass('SL::X::FormError'); -declareExceptionClass('SL::X::DBError', [ '%s', qw(error) ]); -declareExceptionClass('SL::X::DBHookError', 'SL::X::DBError', [ '%s hook \'%s\' for object type \'%s\' failed', qw(when hook object_type object) ]); -declareExceptionClass('SL::X::DBRoseError', 'SL::X::DBError', [ '\'%s\' in object of type \'%s\' occured', qw(error class) ]); -declareExceptionClass('SL::X::DBUtilsError', 'SL::X::DBError', [ '%s: %s', qw(msg error) ]); + +# note! the default fields "message", "error" and "show_trace" are created by +# Exception::Class if message or error are given, they are used for +# stringification, so don't use them in error_templates +# +use Exception::Class ( + 'SL::X::FormError' => { + isa => 'SL::X::Base', + }, + 'SL::X::DBError' => { + isa => 'SL::X::Base', + fields => [ qw(msg db_error) ], + defaults => { error_template => [ '%s: %s', qw(msg db_error) ] }, + }, + 'SL::X::DBHookError' => { + isa => 'SL::X::DBError', + fields => [ qw(when hook object object_type) ], + defaults => { error_template => [ '%s hook \'%s\' for object type \'%s\' failed', qw(when hook object_type object) ] }, + }, + 'SL::X::DBRoseError' => { + isa => 'SL::X::DBError', + fields => [ qw(class metaobject object) ], + defaults => { error_template => [ '\'%s\' in object of type \'%s\' occurred', qw(db_error class) ] }, + }, + 'SL::X::DBUtilsError' => { + isa => 'SL::X::DBError', + }, + 'SL::X::ZUGFeRDValidation' => { + isa => 'SL::X::Base', + }, + 'SL::X::Inventory' => { + isa => 'SL::X::Base', + fields => [ qw(code) ], + }, + 'SL::X::Inventory::Allocation' => { + isa => 'SL::X::Base', + fields => [ qw(code) ], + }, +); 1;