[Rt-commit] r2248 - in experiments/Bamboo: . ex/trivial/lib/lib lib/Bamboo lib/Bamboo/Controller lib/Bamboo/Model lib/Bamboo/Validator t

jesse at bestpractical.com jesse at bestpractical.com
Mon Feb 21 02:53:12 EST 2005


Author: jesse
Date: Mon Feb 21 02:53:09 2005
New Revision: 2248

Added:
   experiments/Bamboo/lib/Bamboo/Validator/
   experiments/Bamboo/lib/Bamboo/Validator/integer.pm
Removed:
   experiments/Bamboo/ex/trivial/lib/lib/
Modified:
   experiments/Bamboo/   (props changed)
   experiments/Bamboo/lib/Bamboo/Controller.pm
   experiments/Bamboo/lib/Bamboo/Controller/Object.pm
   experiments/Bamboo/lib/Bamboo/Model/Facade.pm
   experiments/Bamboo/t/0smoke.t
   experiments/Bamboo/t/1basicparse.t
Log:
 r4835 at hualien:  jesse | 2005-02-17T07:12:16.004242Z
 Too tired to make it work right, checking in instead


Modified: experiments/Bamboo/lib/Bamboo/Controller.pm
==============================================================================
--- experiments/Bamboo/lib/Bamboo/Controller.pm	(original)
+++ experiments/Bamboo/lib/Bamboo/Controller.pm	Mon Feb 21 02:53:09 2005
@@ -25,7 +25,7 @@
             my $param          = $5;
 
             my $object =
-              $self->{'obj_cache'}->get( $object_type, $object_moniker );
+              $self->objects->get( $object_type, $object_moniker );
 
             $object->add_method_param(
                 method  => $method,
@@ -39,17 +39,15 @@
     }
 }
 
-sub validate_method_calls {
-
-
-}
 
 sub process_method_calls {
     my $self = shift;
     #figure out which objects we have to look at
     foreach my $object ($self->objects->as_array()){ 
         foreach my $method ($object->methods->as_array()) {
-            if ($object->validate_method($method)) {
+            warn "Validating $method";
+            if ($object->validate_method_call($method)) {
+                warn "Calling $method";
                 $object->call_method($method);
             }
         }

Modified: experiments/Bamboo/lib/Bamboo/Controller/Object.pm
==============================================================================
--- experiments/Bamboo/lib/Bamboo/Controller/Object.pm	(original)
+++ experiments/Bamboo/lib/Bamboo/Controller/Object.pm	Mon Feb 21 02:53:09 2005
@@ -44,24 +44,24 @@
 sub call_method {
     my $self = shift;
     my $method = shift;
-    my $name = $method->name;
-    $self->real_object->$name($method->params->params);
+    $self->facade->call_method( $method->name => $method->params->as_array);
 
 }
 
-sub real_object {
+sub facade {
     my $self = shift;
     unless ( $self->{obj} ) {
-        $self->{obj} = $self->{type}->new();
-        $self->{obj}->Load( $self->{moniker} )
-          if ( $self->{moniker} =~ /^\d+$/ );
+        my $type = "Bamboo::Facade::".$self->{type};
+        $self->{obj} = $type->new();
     }
     return ( $self->{obj} );
 }
 
 
-sub validate_method {
-    return 1;
+sub validate_method_call {
+    my $self =shift;
+    my $method = shift;
+    $self->facade->validate_method_call( $method->name => $method->params->params);
 }
 
 

Modified: experiments/Bamboo/lib/Bamboo/Model/Facade.pm
==============================================================================
--- experiments/Bamboo/lib/Bamboo/Model/Facade.pm	(original)
+++ experiments/Bamboo/lib/Bamboo/Model/Facade.pm	Mon Feb 21 02:53:09 2005
@@ -113,11 +113,17 @@
         return(undef);
     }
     if ($args{'validator'}) {
+
+        if (UNIVERSAL::can($args{'validator'},'is_valid')) { 
+        } elsif ( ref($args{'validator'} eq "CODE")) {}
+        else {
+
         eval "require $args{'validator'}";
         if ($@) {
             warn "Invalid validator (Couldn't load module): $@";
             return undef;
         }
+        }
     }
     if (!$args{'name'}) {
         unless ($args{'position'}) {
@@ -190,7 +196,7 @@
 # methods dealing with actually making method calls  {{{
 
 
-sub call {
+sub call_method {
     my $self = shift;
     my $method = shift;
 

Added: experiments/Bamboo/lib/Bamboo/Validator/integer.pm
==============================================================================
--- (empty file)
+++ experiments/Bamboo/lib/Bamboo/Validator/integer.pm	Mon Feb 21 02:53:09 2005
@@ -0,0 +1,17 @@
+use warnings;
+use strict;
+
+package Bamboo::Validator::integer;
+
+sub is_valid {
+
+    my $value = shift;
+
+    if ($value =~ /^\d+$/) {
+            return 1;
+    } else {
+        return undef;
+    }
+}
+
+1;

Modified: experiments/Bamboo/t/0smoke.t
==============================================================================
--- experiments/Bamboo/t/0smoke.t	(original)
+++ experiments/Bamboo/t/0smoke.t	Mon Feb 21 02:53:09 2005
@@ -9,7 +9,5 @@
 use_ok('Bamboo::Controller::ParamCollection');
 use_ok('Bamboo::Controller::WebForms');
 use_ok('Bamboo::Controller');
-use_ok('Bamboo::Model::ProxyObject::RT::Queue');
-use_ok('Bamboo::Model::ProxyObject::RT::Ticket');
-use_ok('Bamboo::Model::ProxyObject');
+use_ok('Bamboo::Model::Facade');
 use_ok('Bamboo');

Modified: experiments/Bamboo/t/1basicparse.t
==============================================================================
--- experiments/Bamboo/t/1basicparse.t	(original)
+++ experiments/Bamboo/t/1basicparse.t	Mon Feb 21 02:53:09 2005
@@ -16,6 +16,33 @@
     $self->{Status} = shift;
 }
 
+
+package Bamboo::Facade::RT::MockTicket;
+use base qw/Bamboo::Model::Facade/;
+__PACKAGE__->facade_for('RT::MockTicket');
+
+
+__PACKAGE__->register_method('Load');
+__PACKAGE__->register_method('SetStatus');
+__PACKAGE__->register_parameter( method => 'SetStatus',
+                    position => 1,
+                    validator => 'Bamboo::Validator::RT::MockStatus'
+                ); 
+
+
+package Bamboo::Validator::RT::MockStatus;
+
+sub is_valid {
+    my $status = shift;
+    if ($status =~ /^(?:new|open|stalled::resolved)$/) {
+        return 1; 
+    } else {
+        return 0;
+    }
+}
+
+
+
 package main;
 
 use Test::More qw/no_plan/;


More information about the Rt-commit mailing list