Mercurial > pub > Impl
view Lib/IMPL/Class/PropertyInfo.pm @ 134:44977efed303
Significant performance optimizations
Fixed recursion problems due converting objects to JSON
Added cache support for the templates
Added discovery feature for the web methods
author | wizard |
---|---|
date | Mon, 21 Jun 2010 02:39:53 +0400 |
parents | b0c068da93ac |
children | 6ce1f052b90a |
line wrap: on
line source
package IMPL::Class::PropertyInfo; use strict; use base qw(IMPL::Class::MemberInfo); __PACKAGE__->mk_accessors(qw(Type Mutators canGet canSet ownerSet)); __PACKAGE__->PassThroughArgs; my %LoadedModules; sub CTOR { my $this = shift; if ( my $type = $this->Attributes ? delete $this->Attributes->{type} : undef ) { $this->Type($type); } $this->Mutators(0) unless defined $this->Mutators; } sub Implementor { my $this = shift; if (@_) { $this->SUPER::Implementor(@_); } else { my $implementor = $this->SUPER::Implementor; return $implementor if $implementor; $implementor = $this->SelectImplementor(); if (my $class = ref $implementor ? undef : $implementor) { eval "require $class; 1;" or die $@ unless $LoadedModules{$class}++; } $this->Implementor($implementor); } } sub SelectImplementor { eval {$_[0]->Class->_PropertyImplementor} or die new IMPL::Exception('Can\'t find a property implementor for the specified class',$_[0]->Class); } 1;