comparison Lib/IMPL/DOM/Schema/ValidationError.pm @ 236:2904da230022

DOM refactoring
author sergey
date Mon, 15 Oct 2012 04:23:01 +0400
parents 6d8092d8ce1b
children 6b6d4b2275a1
comparison
equal deleted inserted replaced
235:a4d9126edcbb 236:2904da230022
10 use IMPL::Class::Property; 10 use IMPL::Class::Property;
11 use IMPL::Class::Property::Direct; 11 use IMPL::Class::Property::Direct;
12 use IMPL::Resources::Format qw(FormatMessage); 12 use IMPL::Resources::Format qw(FormatMessage);
13 13
14 BEGIN { 14 BEGIN {
15 public _direct property Node => prop_get; # target document node (if exists) 15 public _direct property node => prop_get; # target document node (if exists)
16 public _direct property Schema => prop_get; # a schema for the target node (if exists) 16 public _direct property schema => prop_get; # a schema for the target node (if exists)
17 public _direct property Source => prop_get; # a schema which triggered this error (can be equal to the Schema) 17 public _direct property source => prop_get; # a schema which triggered this error (can be equal to the Schema)
18 public _direct property Parent => prop_get; 18 public _direct property parent => prop_get;
19 public _direct property Message => prop_get; # displayable message 19 public _direct property message => prop_get; # displayable message
20 } 20 }
21 21
22 sub CTOR { 22 sub CTOR {
23 my ($this,%args) = @_; 23 my ($this,%args) = @_;
24 24
25 $this->{$Node} = $args{Node}; 25 $this->{$node} = $args{node};
26 $this->{$Schema} = $args{Schema} if $args{Schema}; 26 $this->{$schema} = $args{schema} if $args{schema};
27 $this->{$Source} = $args{Source} if $args{Source}; 27 $this->{$source} = $args{source} if $args{source};
28 if ($args{Parent}) { 28 if ($args{parent}) {
29 $this->{$Parent} = $args{Parent}; 29 $this->{$parent} = $args{parent};
30 } elsif ($args{Node}) { 30 } elsif ($args{node}) {
31 $this->{$Parent} = $args{Node}->parentNode; 31 $this->{$parent} = $args{node}->parentNode;
32 } else { 32 } else {
33 die new IMPL::InvalidArgumentException("A 'Parent' or a 'Node' parameter is required"); 33 die new IMPL::InvalidArgumentException("A 'parent' or a 'node' parameter is required");
34 } 34 }
35 $this->{$Message} = FormatMessage(delete $args{Message}, \%args) if $args{Message}; 35 $this->{$message} = FormatMessage(delete $args{message}, \%args) if $args{message};
36 } 36 }
37 37
38 sub toString { 38 sub toString {
39 (my $this) = @_; 39 (my $this) = @_;
40 return $this->Message; 40 return $this->message;
41 } 41 }
42 42
43 1; 43 1;
44 44
45 __END__ 45 __END__
56 C<IMPL::DOM::Schema::ValidationError>, каждая из которых описывает одну ошибку 56 C<IMPL::DOM::Schema::ValidationError>, каждая из которых описывает одну ошибку
57 в документе. 57 в документе.
58 58
59 С помощью данного объекта осущетсвляется привязка элемента схемы, элемента документа 59 С помощью данного объекта осущетсвляется привязка элемента схемы, элемента документа
60 и сообщения о причине возникновения ошибки. 60 и сообщения о причине возникновения ошибки.
61
62 Часть ошибок, таких как проверка содержимого на регулярные выражения, привязаны
63 непосредственно к элементу. Но есть ошибки которые привязываются к родительскому
64 контейнеру, например отсутсвие обязательного элемента. В таком случае ошибка
65 содержит свойство C<parent> и по свойству C<source> можно определить элемент
66 (например его имя), к которому относится ошибка.
61 67
62 =head1 MEMBERS 68 =head1 MEMBERS
63 69
64 =over 70 =over
65 71