Mercurial > pub > Impl
view Lib/IMPL/DOM/Schema/Property.pm @ 23:716b287d4795
merge
author | Sergey |
---|---|
date | Wed, 30 Sep 2009 17:43:52 +0400 |
parents | fafe56cfcd69 |
children | 7f00786f8210 |
line wrap: on
line source
package IMPL::DOM::Schema::Property; use strict; use warnings; use base qw(IMPL::DOM::Schema::SimpleNode); require IMPL::DOM::Schema; require IMPL::DOM::Node; use IMPL::Class::Property; __PACKAGE__->PassThroughArgs; BEGIN { public property RequiredMessage => prop_all; } our %CTOR = { 'IMPL::DOM::Schema::SimleNode' => sub { my %args = @_; $args{maxOccur} = 1; $args{minOccur} = delete $args{optional} ? 0 : 1; $args{nodeName} ||= 'Property'; return %args; } }; sub CTOR { my ($this,%args) = @_; $this->RequiredMessage($args{RequiredMessage} || 'A property %Schema.name% is required'); } sub Validate { my ($this,$node) = @_; if ($this->minOccur) { my $prop = $this->name; my $nodeProp = new IMPL::DOM::Node(nodeName => '::property', nodeValue => $node->$prop() || $node->nodePropety($prop)); if (! $nodeProp->nodeValue) { return new IMPL::DOM::Schema::VaidationError( Message => ); } return $this->SUPER::Validate($nodeProp); } else { return (); } } 1;