Mercurial > pub > Impl
comparison Lib/IMPL/DOM/Navigator/Builder.pm @ 194:4d0e1962161c
Replaced tabs with spaces
IMPL::Web::View - fixed document model, new features (control classes, document constructor parameters)
| author | cin | 
|---|---|
| date | Tue, 10 Apr 2012 20:08:29 +0400 | 
| parents | d1676be8afcc | 
| children | c8fe3f84feba | 
   comparison
  equal
  deleted
  inserted
  replaced
| 193:8e8401c0aea4 | 194:4d0e1962161c | 
|---|---|
| 49 $this->Current->appendChild($node); | 49 $this->Current->appendChild($node); | 
| 50 $this->internalNavigateNodeSet($node); | 50 $this->internalNavigateNodeSet($node); | 
| 51 } | 51 } | 
| 52 | 52 | 
| 53 if (@errors) { | 53 if (@errors) { | 
| 54 $this->BuildErrors->Append( | 54 $this->BuildErrors->Append( | 
| 55 map { | 55 map { | 
| 56 IMPL::DOM::Schema::ValidationError->new( | 56 IMPL::DOM::Schema::ValidationError->new( | 
| 57 Node => $node, | 57 Node => $node, | 
| 58 Source => $schemaSource, | 58 Source => $schemaSource, | 
| 59 Schema => $schemaNode, | 59 Schema => $schemaNode, | 
| 60 Message => $schemaNode->messageInflateError, | 60 Message => $schemaNode->messageInflateError, | 
| 61 Error => $_ | 61 Error => $_ | 
| 62 ) | 62 ) | 
| 63 } @errors | 63 } @errors | 
| 64 ); | 64 ); | 
| 65 } | 65 } | 
| 66 | 66 | 
| 67 return $node; | 67 return $node; | 
| 68 } else { | 68 } else { | 
| 69 die new IMPL::InvalidOperationException("The specified node is undefined", $nodeName); | 69 die new IMPL::InvalidOperationException("The specified node is undefined", $nodeName); | 
| 70 } | 70 } | 
| 71 } | 71 } | 
| 72 | 72 | 
| 73 sub inflateProperties { | 73 sub inflateProperties { | 
| 74 my ($this,$schemaNode,$refProps) = @_; | 74 my ($this,$schemaNode,$refProps) = @_; | 
| 75 my @errors; | 75 my @errors; | 
| 76 foreach my $schemaProp ( $schemaNode->selectNodes('Property') ) { | 76 foreach my $schemaProp ( $schemaNode->selectNodes('Property') ) { | 
| 77 next if not exists $refProps->{$schemaProp->name}; | 77 next if not exists $refProps->{$schemaProp->name}; | 
| 78 my $result = eval {$schemaProp->inflateValue($refProps->{$schemaProp->name}) }; | 78 my $result = eval {$schemaProp->inflateValue($refProps->{$schemaProp->name}) }; | 
| 79 if (my $e = $@) { | 79 if (my $e = $@) { | 
| 80 push @errors, $e; | 80 push @errors, $e; | 
| 81 } else { | 81 } else { | 
| 82 $refProps->{$schemaProp->name} = $result; | 82 $refProps->{$schemaProp->name} = $result; | 
| 83 } | 83 } | 
| 84 } | 84 } | 
| 85 return @errors; | 85 return @errors; | 
| 86 } | 86 } | 
| 87 | 87 | 
| 88 sub inflateValue { | 88 sub inflateValue { | 
| 89 my ($this,$value,$node) = @_; | 89 my ($this,$value,$node) = @_; | 
| 90 | 90 | 
| 91 $node ||= $this->Current; | 91 $node ||= $this->Current; | 
| 92 | 92 | 
| 93 my $nodeSchema = $this->{$_schemaNavi}->Current; | 93 my $nodeSchema = $this->{$_schemaNavi}->Current; | 
| 94 | 94 | 
| 95 my $result = eval { $nodeSchema->inflateValue($value) }; | 95 my $result = eval { $nodeSchema->inflateValue($value) }; | 
| 96 if (my $e=$@) { | 96 if (my $e=$@) { | 
| 97 $this->BuildErrors->Append(new IMPL::DOM::Schema::ValidationError( | 97 $this->BuildErrors->Append(new IMPL::DOM::Schema::ValidationError( | 
| 98 Schema => $nodeSchema, | 98 Schema => $nodeSchema, | 
| 99 Node => $node, | 99 Node => $node, | 
| 100 Error => $e, | 100 Error => $e, | 
| 101 Message => $nodeSchema->messageInflateError, | 101 Message => $nodeSchema->messageInflateError, | 
| 102 Source => $this->{$_schemaNavi}->SourceSchemaNode | 102 Source => $this->{$_schemaNavi}->SourceSchemaNode | 
| 103 )); | 103 )); | 
| 104 return $value; | 104 return $value; | 
| 105 } else { | 105 } else { | 
| 106 return $result; | 106 return $result; | 
| 107 } | 107 } | 
| 108 } | 108 } | 
| 109 | 109 | 
| 110 sub Back { | 110 sub Back { | 
| 111 my ($this) = @_; | 111 my ($this) = @_; | 
| 112 | 112 | 
| 113 $this->{$_schemaNavi}->SchemaBack(); | 113 $this->{$_schemaNavi}->SchemaBack(); | 
| 114 $this->SUPER::Back(); | 114 $this->SUPER::Back(); | 
| 115 } | 115 } | 
| 116 | 116 | 
| 117 sub saveState { | 117 sub saveState { | 
| 118 my ($this) = @_; | 118 my ($this) = @_; | 
| 119 | 119 | 
| 120 $this->{$_schemaNavi}->saveState; | 120 $this->{$_schemaNavi}->saveState; | 
| 121 $this->SUPER::saveState; | 121 $this->SUPER::saveState; | 
| 122 } | 122 } | 
| 123 | 123 | 
| 124 sub restoreState { | 124 sub restoreState { | 
| 125 my ($this) = @_; | 125 my ($this) = @_; | 
| 126 | 126 | 
| 127 $this->{$_schemaNavi}->restoreState; | 127 $this->{$_schemaNavi}->restoreState; | 
| 128 $this->SUPER::restoreState; | 128 $this->SUPER::restoreState; | 
| 129 } | 129 } | 
| 130 | 130 | 
| 131 1; | 131 1; | 
| 132 | 132 | 
| 133 __END__ | 133 __END__ | 
