aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgroditi <groditi@03d0b0b2-0e1a-0410-a411-fdb2f4bd65d7>2007-10-05 19:28:51 +0000
committergroditi <groditi@03d0b0b2-0e1a-0410-a411-fdb2f4bd65d7>2007-10-05 19:28:51 +0000
commita5200252cbe43d0d240e75e95d9dfd1623975172 (patch)
tree2e6bae8f6c6cdee2f762c716bd33c98b632fba5b
parentde48f4e69aef2efba652b10994a920d6a61e856d (diff)
downloadreaction-a5200252cbe43d0d240e75e95d9dfd1623975172.tar.gz
reaction-a5200252cbe43d0d240e75e95d9dfd1623975172.zip
simplify value widgets to reduce PROCESS calls, make some classes immutable which were not before. nice increase in performance.
-rw-r--r--lib/ComponentUI/Model/TestModel.pm8
-rw-r--r--lib/ComponentUI/TestModel.pm2
-rw-r--r--lib/ComponentUI/View/Site.pm26
-rw-r--r--lib/Reaction/Meta/Attribute.pm2
-rw-r--r--lib/Reaction/Meta/Class.pm3
-rw-r--r--lib/Reaction/UI/Widget/DisplayField/List.pm2
-rw-r--r--lib/Reaction/UI/Widget/Field.pm4
-rw-r--r--lib/Reaction/UI/Widget/Value.pm8
-rw-r--r--lib/Reaction/UI/Widget/Value/Boolean.pm2
-rw-r--r--lib/Reaction/UI/Widget/Value/Collection.pm2
-rw-r--r--lib/Reaction/UI/Widget/Value/DateTime.pm2
-rw-r--r--lib/Reaction/UI/Widget/Value/List.pm4
-rw-r--r--lib/Reaction/UI/Widget/Value/RelatedObject.pm2
-rw-r--r--share/skin/default/layout/value/boolean.tt6
-rw-r--r--share/skin/default/layout/value/collection.tt4
-rw-r--r--share/skin/default/layout/value/date_time.tt6
-rw-r--r--share/skin/default/layout/value/list.tt4
-rw-r--r--share/skin/default/layout/value/number.tt6
-rw-r--r--share/skin/default/layout/value/related_object.tt6
-rw-r--r--share/skin/default/layout/value/string.tt6
-rw-r--r--share/skin/default/layout/value/text.tt6
-rw-r--r--t/lib/RTest/TestDB/Bar.pm3
-rw-r--r--t/lib/RTest/TestDB/Baz.pm2
-rw-r--r--t/lib/RTest/TestDB/Foo.pm3
24 files changed, 46 insertions, 73 deletions
diff --git a/lib/ComponentUI/Model/TestModel.pm b/lib/ComponentUI/Model/TestModel.pm
index deef6d0..3d633f3 100644
--- a/lib/ComponentUI/Model/TestModel.pm
+++ b/lib/ComponentUI/Model/TestModel.pm
@@ -1,7 +1,13 @@
package ComponentUI::Model::TestModel;
use lib 't/lib';
-use base 'Catalyst::Model::Reaction::InterfaceModel::DBIC';
+use aliased 'Catalyst::Model::Reaction::InterfaceModel::DBIC';
+
+use Reaction::Class;
+
+class TestModel is DBIC, which {
+
+};
__PACKAGE__->config
(
diff --git a/lib/ComponentUI/TestModel.pm b/lib/ComponentUI/TestModel.pm
index 71c9672..2559776 100644
--- a/lib/ComponentUI/TestModel.pm
+++ b/lib/ComponentUI/TestModel.pm
@@ -5,7 +5,6 @@ use base 'Reaction::InterfaceModel::Object';
use Reaction::Class;
use Reaction::InterfaceModel::Reflector::DBIC;
-
my $reflector = Reaction::InterfaceModel::Reflector::DBIC->new;
$reflector->reflect_schema
@@ -15,4 +14,5 @@ $reflector->reflect_schema
sources => [qw/Foo Bar Baz/],
);
+
1;
diff --git a/lib/ComponentUI/View/Site.pm b/lib/ComponentUI/View/Site.pm
index fa89c0a..280b41e 100644
--- a/lib/ComponentUI/View/Site.pm
+++ b/lib/ComponentUI/View/Site.pm
@@ -11,29 +11,3 @@ class Site is TT, which {
__END__;
-use Class::MOP;
-
-{
- my @reflect_widgets = qw(ActionForm ObjectView ListView
- Field::File
- Field::Password
- Field::Text DisplayField::Text
- Field::Number DisplayField::Number
- Field::String DisplayField::String
- Field::Boolean DisplayField::Boolean
- Field::DateTime DisplayField::DateTime
- Field::ChooseOne DisplayField::RelatedObject
- Field::ChooseMany DisplayField::Collection
- Field::HiddenArray DisplayField::List
- );
-
-
- for (@reflect_widgets){
- my $base = "Reaction::UI::Widget::${_}";
- my $target = "ComponentUI::View::Site::Widget::${_}";
- Class::MOP::load_class( $base );
- $base->meta->create($target, superclasses => [$base]);
- }
-}
-
-1;
diff --git a/lib/Reaction/Meta/Attribute.pm b/lib/Reaction/Meta/Attribute.pm
index 9f444df..01540e0 100644
--- a/lib/Reaction/Meta/Attribute.pm
+++ b/lib/Reaction/Meta/Attribute.pm
@@ -43,6 +43,8 @@ around _process_options => sub {
$super->($class, $name, $options);
};
+__PACKAGE__->meta->make_immutable(inline_constructor => 0);
+
1;
__END__;
diff --git a/lib/Reaction/Meta/Class.pm b/lib/Reaction/Meta/Class.pm
index e963586..27c084f 100644
--- a/lib/Reaction/Meta/Class.pm
+++ b/lib/Reaction/Meta/Class.pm
@@ -12,4 +12,7 @@ around initialize => sub {
$super->($class, $pkg, 'attribute_metaclass' => 'Reaction::Meta::Attribute', @_ );
};
+
+__PACKAGE__->meta->make_immutable;
+
1;
diff --git a/lib/Reaction/UI/Widget/DisplayField/List.pm b/lib/Reaction/UI/Widget/DisplayField/List.pm
index 3b3d779..e444bd5 100644
--- a/lib/Reaction/UI/Widget/DisplayField/List.pm
+++ b/lib/Reaction/UI/Widget/DisplayField/List.pm
@@ -6,7 +6,7 @@ class List, which {
widget renders [ qw/label list item/ => { viewport => func(self => 'viewport') } ];
label renders [ string { $_{viewport}->label } ];
list renders [ item over func('viewport', 'value_names') ];
- item renders [ string { $_{_} } ];
+ item renders [ string { $_ } ];
};
1;
diff --git a/lib/Reaction/UI/Widget/Field.pm b/lib/Reaction/UI/Widget/Field.pm
index 11f2c67..aa0abf9 100644
--- a/lib/Reaction/UI/Widget/Field.pm
+++ b/lib/Reaction/UI/Widget/Field.pm
@@ -16,11 +16,11 @@ class Field, which {
viewport => func('self', 'viewport'), }
];
+ field renders [ string { $_{viewport}->value }, ];
+
label renders [ string { $_{viewport}->label }, ];
message renders [ string { $_{viewport}->message }, ];
- field renders [ string { $_{viewport}->value }, ];
-
};
1;
diff --git a/lib/Reaction/UI/Widget/Value.pm b/lib/Reaction/UI/Widget/Value.pm
index 07db1c0..a968279 100644
--- a/lib/Reaction/UI/Widget/Value.pm
+++ b/lib/Reaction/UI/Widget/Value.pm
@@ -3,8 +3,12 @@ package Reaction::UI::Widget::Value;
use Reaction::UI::WidgetClass;
class Value, which {
- widget renders [ qw/value/ => { viewport => func(self => 'viewport') } ];
- value renders [ string { $_{viewport}->value } ];
+ widget renders [ string {""} ],
+ { value => sub{
+ my $vp = $_{self}->{viewport};
+ $vp->can('value_string') ? $vp->value_string : $vp->value;
+ }
+ };
};
1;
diff --git a/lib/Reaction/UI/Widget/Value/Boolean.pm b/lib/Reaction/UI/Widget/Value/Boolean.pm
index 21a0f3f..392f79d 100644
--- a/lib/Reaction/UI/Widget/Value/Boolean.pm
+++ b/lib/Reaction/UI/Widget/Value/Boolean.pm
@@ -3,7 +3,7 @@ package Reaction::UI::Widget::Value::Boolean;
use Reaction::UI::WidgetClass;
class Boolean is 'Reaction::UI::Widget::Value', which {
- value renders [ string { $_{viewport}->value_string } ];
+
};
1;
diff --git a/lib/Reaction/UI/Widget/Value/Collection.pm b/lib/Reaction/UI/Widget/Value/Collection.pm
index 073911d..caae18a 100644
--- a/lib/Reaction/UI/Widget/Value/Collection.pm
+++ b/lib/Reaction/UI/Widget/Value/Collection.pm
@@ -5,7 +5,7 @@ use Reaction::UI::WidgetClass;
class Collection, which {
widget renders [ qw/list/ => { viewport => func(self => 'viewport') } ];
list renders [ item over func('viewport', 'value_names') ];
- item renders [ string { $_ } ];
+ item renders [ string {""} ], { value => $_ };
};
1;
diff --git a/lib/Reaction/UI/Widget/Value/DateTime.pm b/lib/Reaction/UI/Widget/Value/DateTime.pm
index 63159c5..b598c71 100644
--- a/lib/Reaction/UI/Widget/Value/DateTime.pm
+++ b/lib/Reaction/UI/Widget/Value/DateTime.pm
@@ -3,7 +3,7 @@ package Reaction::UI::Widget::Value::DateTime;
use Reaction::UI::WidgetClass;
class DateTime is 'Reaction::UI::Widget::Value', which {
- value renders [ string { $_{viewport}->value_string } ];
+
};
1;
diff --git a/lib/Reaction/UI/Widget/Value/List.pm b/lib/Reaction/UI/Widget/Value/List.pm
index bd713e4..638cbfb 100644
--- a/lib/Reaction/UI/Widget/Value/List.pm
+++ b/lib/Reaction/UI/Widget/Value/List.pm
@@ -3,9 +3,9 @@ package Reaction::UI::Widget::Value::List;
use Reaction::UI::WidgetClass;
class List, which {
- widget renders [ qw/list item/ => { viewport => func(self => 'viewport') } ];
+ widget renders [ qw/list/ => { viewport => func(self => 'viewport') } ];
list renders [ item over func('viewport', 'value_names') ];
- item renders [ string { $_{_} } ];
+ item renders [ string {""} ], { value => $_ };
};
1;
diff --git a/lib/Reaction/UI/Widget/Value/RelatedObject.pm b/lib/Reaction/UI/Widget/Value/RelatedObject.pm
index 4617514..b7fbd6f 100644
--- a/lib/Reaction/UI/Widget/Value/RelatedObject.pm
+++ b/lib/Reaction/UI/Widget/Value/RelatedObject.pm
@@ -3,7 +3,7 @@ package Reaction::UI::Widget::Value::RelatedObject;
use Reaction::UI::WidgetClass;
class RelatedObject is 'Reaction::UI::Widget::Value', which {
- value renders [ string { $_{viewport}->value_string } ];
+
};
1;
diff --git a/share/skin/default/layout/value/boolean.tt b/share/skin/default/layout/value/boolean.tt
index 1ce3367..310783b 100644
--- a/share/skin/default/layout/value/boolean.tt
+++ b/share/skin/default/layout/value/boolean.tt
@@ -1,9 +1,5 @@
=for layout widget
-[% content %]
-
-=for layout value
-
-[% content | html %]
+[% value | html %]
=cut \ No newline at end of file
diff --git a/share/skin/default/layout/value/collection.tt b/share/skin/default/layout/value/collection.tt
index d376ecc..c866aa8 100644
--- a/share/skin/default/layout/value/collection.tt
+++ b/share/skin/default/layout/value/collection.tt
@@ -1,6 +1,6 @@
=for layout widget
-[% list %]
+[% list %]
=for layout list
@@ -10,6 +10,6 @@
=for layout item
-<li>[% content | html %]</li>
+<li>[% value | html %]</li>
=cut
diff --git a/share/skin/default/layout/value/date_time.tt b/share/skin/default/layout/value/date_time.tt
index e35741c..0ee0d75 100644
--- a/share/skin/default/layout/value/date_time.tt
+++ b/share/skin/default/layout/value/date_time.tt
@@ -1,9 +1,5 @@
=for layout widget
-[% content %]
-
-=for layout value
-
-[% content | html %]
+[% value | html %]
=cut
diff --git a/share/skin/default/layout/value/list.tt b/share/skin/default/layout/value/list.tt
index eea4e02..bd8ad27 100644
--- a/share/skin/default/layout/value/list.tt
+++ b/share/skin/default/layout/value/list.tt
@@ -1,6 +1,6 @@
=for layout widget
-[% list %]
+[% list %]
=for layout list
@@ -10,6 +10,6 @@
=for layout item
-<li>[% content | html %]</li>
+<li>[% value | html %]</li>
=cut \ No newline at end of file
diff --git a/share/skin/default/layout/value/number.tt b/share/skin/default/layout/value/number.tt
index e35741c..0ee0d75 100644
--- a/share/skin/default/layout/value/number.tt
+++ b/share/skin/default/layout/value/number.tt
@@ -1,9 +1,5 @@
=for layout widget
-[% content %]
-
-=for layout value
-
-[% content | html %]
+[% value | html %]
=cut
diff --git a/share/skin/default/layout/value/related_object.tt b/share/skin/default/layout/value/related_object.tt
index e35741c..0ee0d75 100644
--- a/share/skin/default/layout/value/related_object.tt
+++ b/share/skin/default/layout/value/related_object.tt
@@ -1,9 +1,5 @@
=for layout widget
-[% content %]
-
-=for layout value
-
-[% content | html %]
+[% value | html %]
=cut
diff --git a/share/skin/default/layout/value/string.tt b/share/skin/default/layout/value/string.tt
index 1ce3367..310783b 100644
--- a/share/skin/default/layout/value/string.tt
+++ b/share/skin/default/layout/value/string.tt
@@ -1,9 +1,5 @@
=for layout widget
-[% content %]
-
-=for layout value
-
-[% content | html %]
+[% value | html %]
=cut \ No newline at end of file
diff --git a/share/skin/default/layout/value/text.tt b/share/skin/default/layout/value/text.tt
index 1ce3367..310783b 100644
--- a/share/skin/default/layout/value/text.tt
+++ b/share/skin/default/layout/value/text.tt
@@ -1,9 +1,5 @@
=for layout widget
-[% content %]
-
-=for layout value
-
-[% content | html %]
+[% value | html %]
=cut \ No newline at end of file
diff --git a/t/lib/RTest/TestDB/Bar.pm b/t/lib/RTest/TestDB/Bar.pm
index 4e22d06..1af3f05 100644
--- a/t/lib/RTest/TestDB/Bar.pm
+++ b/t/lib/RTest/TestDB/Bar.pm
@@ -31,4 +31,7 @@ __PACKAGE__->belongs_to(
{ 'foreign.id' => 'self.foo_id' }
);
+__PACKAGE__->meta->make_immutable;
+
+
1;
diff --git a/t/lib/RTest/TestDB/Baz.pm b/t/lib/RTest/TestDB/Baz.pm
index 848cb4f..47cc019 100644
--- a/t/lib/RTest/TestDB/Baz.pm
+++ b/t/lib/RTest/TestDB/Baz.pm
@@ -26,4 +26,6 @@ __PACKAGE__->set_primary_key('id');
__PACKAGE__->has_many('links_to_foo_list' => 'RTest::TestDB::FooBaz', 'baz');
__PACKAGE__->many_to_many('foo_list' => 'links_to_foo_list' => 'foo');
+__PACKAGE__->meta->make_immutable;
+
1;
diff --git a/t/lib/RTest/TestDB/Foo.pm b/t/lib/RTest/TestDB/Foo.pm
index 5733054..7e3cd2f 100644
--- a/t/lib/RTest/TestDB/Foo.pm
+++ b/t/lib/RTest/TestDB/Foo.pm
@@ -39,4 +39,7 @@ __PACKAGE__->many_to_many('baz_list' => 'links_to_baz_list' => 'baz');
*get_baz_list = sub { [ shift->baz_list->all ] };
}
+
+__PACKAGE__->meta->make_immutable;
+
1;