[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