[Jifty-commit] r457 - jifty/trunk/lib/Jifty

jifty-commit at lists.jifty.org jifty-commit at lists.jifty.org
Wed Jan 4 13:35:35 EST 2006


Author: jesse
Date: Wed Jan  4 13:35:34 2006
New Revision: 457

Modified:
   /   (props changed)
   jifty/trunk/lib/Jifty/ClassLoader.pm
   jifty/trunk/lib/Jifty/Manual/ObjectModel.pod

Log:
 r22110 at truegrounds:  jesse | 2006-01-04 17:55:19 +0100
 * Autoinstantiate a "blank" dispatcher if necessary.
 * Doc the dispatcher (a bit) in the objectmodel


Modified: jifty/trunk/lib/Jifty/ClassLoader.pm
==============================================================================
--- jifty/trunk/lib/Jifty/ClassLoader.pm	(original)
+++ jifty/trunk/lib/Jifty/ClassLoader.pm	Wed Jan  4 13:35:34 2006
@@ -54,6 +54,10 @@
 
 An empty class that descends from L<Jifty::Notification>.
 
+=item I<ApplicationClass::Dispatcher>.
+
+An empty class that descends from L<Jifty::Dispatcher>
+
 =item I<CurrentUserClass> (generally I<Application>::CurrentUser)
 
 ...where I<CurrentUserClass> is defined by the C<CurrentUserClass>
@@ -80,19 +84,19 @@
 # This subroutine's name is fully qualified, as perl will ignore a 'sub INC'
 sub Jifty::ClassLoader::INC {
     my ( $self, $module ) = @_;
-    my $ApplicationClass = Jifty->config->framework('ApplicationClass');
+    my $ApplicationClassPrefix = Jifty->config->framework('ApplicationClass');
     my $ActionBasePath   = Jifty->config->framework('ActionBasePath');
     my $CurrentUserClass = Jifty->config->framework('CurrentUserClass');
     my $CurrentUserClassPath =Jifty->config->framework('CurrentUserClass') .".pm";
     $CurrentUserClassPath =~ s!::!/!g;
-    return undef unless ( $module and $ApplicationClass );
+    return undef unless ( $module and $ApplicationClassPrefix );
 
 
-    if ( $module =~ m!^($ApplicationClass)(\.pm)?$! ) {
-        return $self->return_class( "use warnings; use strict; package " . $ApplicationClass . ";\n"." 1;" );
+    if ( $module =~ m!^($ApplicationClassPrefix)(\.pm)?$! ) {
+        return $self->return_class( "use warnings; use strict; package " . $ApplicationClassPrefix . ";\n"." 1;" );
     } 
-    elsif ( $module =~ m!^(?:$ApplicationClass)(?:/|::)(Record|Collection|Notification)(\.pm)?$! ) {
-        return $self->return_class( "use warnings; use strict; package " . $ApplicationClass . "::". $1.";\n".
+    elsif ( $module =~ m!^(?:$ApplicationClassPrefix)(?:/|::)(Record|Collection|Notification|Dispatcher)(\.pm)?$! ) {
+        return $self->return_class( "use warnings; use strict; package " . $ApplicationClassPrefix . "::". $1.";\n".
             "use base qw/Jifty::$1/; sub _autogenerated { 1 };\n"."1;" );
     } 
 
@@ -100,24 +104,24 @@
       return $self->return_class( "package " . $CurrentUserClass . ";\n" . "use base 'Jifty::CurrentUser';\n" . " 1;" );
       }
     elsif ( $module
-        =~ m!^($ApplicationClass)(?:/|::)Model(?:/|::)([^:]+)Collection(\.pm)?$!
+        =~ m!^($ApplicationClassPrefix)(?:/|::)Model(?:/|::)([^:]+)Collection(\.pm)?$!
         )
     {
 
         # Auto-create Collection classes
-        my $record_class = $ApplicationClass . "::Model::" . $2;
+        my $record_class = $ApplicationClassPrefix . "::Model::" . $2;
         return undef unless $self->{models}{$record_class} || $record_class->require();
 
-        return $self->return_class( "package " . $ApplicationClass . "::Model::" . $2 . "Collection;\n"."use base qw/@{[$ApplicationClass]}::Collection/;\n sub record_class { '@{[$ApplicationClass]}::Model::$2' }\n"." 1;"
+        return $self->return_class( "package " . $ApplicationClassPrefix . "::Model::" . $2 . "Collection;\n"."use base qw/@{[$ApplicationClassPrefix]}::Collection/;\n sub record_class { '@{[$ApplicationClassPrefix]}::Model::$2' }\n"." 1;"
         );
 
     } elsif ( $module
-        =~ m!^($ApplicationClass)(?:/|::)Action(?:/|::)(Create|Update|Delete)([^\.:]+)(\.pm)?$!
+        =~ m!^($ApplicationClassPrefix)(?:/|::)Action(?:/|::)(Create|Update|Delete)([^\.:]+)(\.pm)?$!
         )
     {
          
         # Auto-create CRUD classes
-        my $modelclass = $ApplicationClass . "::Model::" . $3;
+        my $modelclass = $ApplicationClassPrefix . "::Model::" . $3;
         $modelclass->require;
         return undef unless eval {$modelclass->table}; #self->{models}{$modelclass};
 
@@ -159,10 +163,10 @@
 sub require {
     my $self = shift;
     
-    my $ApplicationClass = Jifty->config->framework('ApplicationClass');
+    my $ApplicationClassPrefix = Jifty->config->framework('ApplicationClass');
     # if we don't even have an application class, this trick will not work
-    return unless  ($ApplicationClass); 
-    $ApplicationClass->require;
+    return unless  ($ApplicationClassPrefix); 
+    $ApplicationClassPrefix->require;
 
     Jifty->config->framework('CurrentUserClass')->require;
 
@@ -170,11 +174,11 @@
 
     Module::Pluggable->import(
         search_path =>
-          [ $ActionBasePath, map { $ApplicationClass . "::" . $_ } 'Model', 'Action', 'Notification' ],
+          [ $ActionBasePath, map { $ApplicationClassPrefix . "::" . $_ } 'Model', 'Action', 'Notification' ],
         require => 1,
         inner => 0
     );
-    $self->{models} = {map {($_ => 1)} grep {/^($ApplicationClass)::Model::([^:]+)$/ and not /Collection$/} $self->plugins};
+    $self->{models} = {map {($_ => 1)} grep {/^($ApplicationClassPrefix)::Model::([^:]+)$/ and not /Collection$/} $self->plugins};
     for my $full (keys %{$self->{models}}) {
         my($short) = $full =~ /::Model::(.*)/;
          ($full . "Collection")->require;

Modified: jifty/trunk/lib/Jifty/Manual/ObjectModel.pod
==============================================================================
--- jifty/trunk/lib/Jifty/Manual/ObjectModel.pod	(original)
+++ jifty/trunk/lib/Jifty/Manual/ObjectModel.pod	Wed Jan  4 13:35:34 2006
@@ -117,6 +117,13 @@
 class if you want to set an application-specific header or footer for
 all outgoing email.
 
+=item MyWeblog::Dispatcher>
+
+C<MyWeblog::Dispatcher> is an application-speciific "dispatcher" class that
+allows you to write code that runs when a client makes a request to the server
+I<before> Jifty runs I<actions> or renders I<templates>.  See L<Jifty::Dispatcher>
+for more information about the dispatcher.
+
 =item MyWeblog::CurrentUser
 
 Most every web application that grows past a personal hack eventually


More information about the Jifty-commit mailing list