# HG changeset patch # User cin # Date 1345444040 -14400 # Node ID bfce101e0a5a8310f3f5cbe38096bffb7e512607 # Parent e9fd7ff3f54cd9cee3228749b81cd1b674bc71f8# Parent 77a9934a44afa27cd5fc6510606ec7a20ef7a8ac Слияние diff -r e9fd7ff3f54c -r bfce101e0a5a Lib/IMPL/Web/RestContract.pm --- a/Lib/IMPL/Web/RestContract.pm Thu Aug 09 17:24:07 2012 +0400 +++ b/Lib/IMPL/Web/RestContract.pm Mon Aug 20 10:27:20 2012 +0400 @@ -63,4 +63,23 @@ ресурсов. Контракт описывает дерево ресурсов начиная с корневого ресурса, и далее. +Ресурсы состоят из нескольких описаний: C, C +которые описываю отображение самих ресурсов и операций над ресурсами в предметную +область. + +C представляет собой описание того, какой ресурс и с какими +параметрами должен быть создан. Например, может быть создан ресурс публикующий +методы родительского ресурса, или же ресурс может слжить контроллером для +работы с объектами предметной области. + +C описывает связь между методом объекта предметной области и +операцией возможной над ресурсом. Операция сводится к преобразованию запроса в +аргументы метода, затем вызову метода и преобразованию результата в ответ на запрос. + +Ответ на запрос может быть как сформирован полностью в виде C ответа, так и +в виде объекта, который будет в дальнейшем обработан нижележащими обработчиками +приложения. + + + =cut \ No newline at end of file diff -r e9fd7ff3f54c -r bfce101e0a5a _test/Resources/person.xsd --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/_test/Resources/person.xsd Mon Aug 20 10:27:20 2012 +0400 @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff -r e9fd7ff3f54c -r bfce101e0a5a _test/Resources/person_info.xml --- a/_test/Resources/person_info.xml Thu Aug 09 17:24:07 2012 +0400 +++ b/_test/Resources/person_info.xml Mon Aug 20 10:27:20 2012 +0400 @@ -1,5 +1,5 @@ - - + + Norman Freeman
diff -r e9fd7ff3f54c -r bfce101e0a5a _test/temp.pl --- a/_test/temp.pl Thu Aug 09 17:24:07 2012 +0400 +++ b/_test/temp.pl Mon Aug 20 10:27:20 2012 +0400 @@ -1,46 +1,24 @@ #!/usr/bin/perl use strict; +use XML::Compile::Schema; +use XML::Compile::Util qw(pack_type); +use Data::Dumper; use Time::HiRes qw(gettimeofday tv_interval); - -my $obj = {}; -my @vals = qw(a b c d e f g h i j k); -my @names = qw(one two three four five six); - -sub CreateMethod { - my ($dt) = @_; - $obj->{one} = $vals[1]; - $obj->{two} = $vals[2]; - $obj->{three} = $vals[3]; - $obj->{four} = $vals[4]; - $obj->{five} = $vals[5]; - $obj->{six} = $vals[6]; -} +my $schema = XML::Compile::Schema->new('Resources/person.xsd'); + +$schema->printIndex(); -my @pairs = map { [$names[$_],$_] } (1 .. $#names); +my $type = pack_type 'http://implab.org/person/', 'personInfo'; +my $reader = $schema->compile(READER => $type); -sub CreateMethodEval { - my ($dt) = @_; - my $i = 0; - map $obj->{$_} = $vals[$i++], @names; -} - my $t = [gettimeofday]; - - -CreateMethod($_) foreach (1..1000000); +my $obj = $reader->('Resources/person_info.xml'); -print "Build: ",tv_interval($t,[gettimeofday]),"\n"; - -$t = [gettimeofday]; +print "Parsing small Xml file: ",tv_interval($t,[gettimeofday]),"\n"; -CreateMethodEval($_) foreach (1..1000000); - -print "Eval: ",tv_interval($t,[gettimeofday]),"\n"; - -use URI::Escape; - -print uri_escape("/child///&?"), "\n"; - +print Dumper( $obj ); + +