aboutsummaryrefslogtreecommitdiff
path: root/lib/WebCoso
diff options
context:
space:
mode:
authordakkar <dakkar@luxion>2005-11-05 15:11:33 +0000
committerdakkar <dakkar@luxion>2005-11-05 15:11:33 +0000
commit2fc2d3eb7edf6ac03b9506b719758e9e6f13c7d3 (patch)
tree7c7e1e6bf88f0aa59cbaf095f0f476aa2a6a851a /lib/WebCoso
parentaggiunta gestione pipeline e test relativi (diff)
downloadWebCoso-2fc2d3eb7edf6ac03b9506b719758e9e6f13c7d3.tar.gz
WebCoso-2fc2d3eb7edf6ac03b9506b719758e9e6f13c7d3.tar.bz2
WebCoso-2fc2d3eb7edf6ac03b9506b719758e9e6f13c7d3.zip
migliorate le eccezioni, scritto Driver con test. Re #1
git-svn-id: svn://luxion/repos/WebCoso/trunk@22 fcb26f47-9200-0410-b104-b98ab5b095f3
Diffstat (limited to 'lib/WebCoso')
-rw-r--r--lib/WebCoso/Config.pm6
-rw-r--r--lib/WebCoso/Driver.pm16
-rw-r--r--lib/WebCoso/Pipeline.pm7
-rw-r--r--lib/WebCoso/X.pm39
4 files changed, 66 insertions, 2 deletions
diff --git a/lib/WebCoso/Config.pm b/lib/WebCoso/Config.pm
index a72e49c..187602e 100644
--- a/lib/WebCoso/Config.pm
+++ b/lib/WebCoso/Config.pm
@@ -4,6 +4,7 @@ use warnings;
use WebCoso::Config::Collections;
use WebCoso::Pipeline;
use WebCoso::X;
+use utf8;
my @resources;
my $collections=WebCoso::Config::Collections->new();
@@ -21,7 +22,7 @@ EOF
if ($@) {
WebCoso::X::ConfigError->throw(
filename => $filename,
- error => $@,
+ nested => $@,
);
}
else {
@@ -93,7 +94,8 @@ sub res {
} @source_files;
my $pipeline_name="WebCoso::Pipeline::$short_pipeline_name";
- if (! $pipeline_name->can('process') ) {
+
+ if (! WebCoso::Pipeline->is_pipeline($pipeline_name)) {
WebCoso::X::NoSuchPipeline->throw(
pipeline => $short_pipeline_name,
);
diff --git a/lib/WebCoso/Driver.pm b/lib/WebCoso/Driver.pm
new file mode 100644
index 0000000..2bbafbd
--- /dev/null
+++ b/lib/WebCoso/Driver.pm
@@ -0,0 +1,16 @@
+package WebCoso::Driver;
+use strict;
+use warnings;
+use WebCoso::Config;
+
+sub run {
+ my @resources=WebCoso::Config->get_all_resources();
+
+ for my $resource (@resources) {
+ WebCoso::Config->get_pipeline_for($resource)->process($resource);
+ }
+
+ return 1;
+}
+
+1;
diff --git a/lib/WebCoso/Pipeline.pm b/lib/WebCoso/Pipeline.pm
index d3e811a..b45d431 100644
--- a/lib/WebCoso/Pipeline.pm
+++ b/lib/WebCoso/Pipeline.pm
@@ -7,5 +7,12 @@ use Module::Pluggable::Fast
require => 1;
my @pipelines=_pipelines();
+my %pipelines;
+@pipelines{@pipelines}=();
+
+sub is_pipeline {
+ my ($class,$pipeline_name)=@_;
+ return exists $pipelines{$pipeline_name};
+}
1;
diff --git a/lib/WebCoso/X.pm b/lib/WebCoso/X.pm
index cd0c888..1894a28 100644
--- a/lib/WebCoso/X.pm
+++ b/lib/WebCoso/X.pm
@@ -5,12 +5,17 @@ use warnings;
use Exception::Class
(
+ 'WebCoso::X::Base' => {
+ description => 'eccezione di base',
+ },
'WebCoso::X::FileError' => {
+ isa => 'WebCoso::X::Base',
fields => [ 'filename' ],
description => 'classe base per errori relativi a file',
},
'WebCoso::X::ConfigError' => {
isa => 'WebCoso::X::FileError',
+ fields => [ 'nested' ],
description => 'errore nel file di configurazione',
},
'WebCoso::X::FileNotFound' => {
@@ -23,13 +28,47 @@ use Exception::Class
description => ' non è stato possibile aprire un file',
},
'WebCoso::X::NoSuchPipeline' => {
+ isa => 'WebCoso::X::Base',
fields => [ 'pipeline' ],
description => 'è stata richiesta una pipeline ignota',
},
'WebCoso::X::NoSuchResource' => {
+ isa => 'WebCoso::X::Base',
fields => [ 'resource' ],
description => 'è stata richiesta una risorsa ignota',
},
);
+WebCoso::X::Base->Trace(1);
+
+sub WebCoso::X::ConfigError::full_message {
+ my ($self)=@_;
+ return 'Errore di configuazione: ' . $self->nested();
+}
+
+sub WebCoso::X::FileError::full_message {
+ my ($self)=@_;
+ return 'Errore relativo al file: ' . $self->filename();
+}
+
+sub WebCoso::X::FileNotFoundError::full_message {
+ my ($self)=@_;
+ return 'Impossibile trovare il file: ' . $self->filename();
+}
+
+sub WebCoso::X::OpenError::full_message {
+ my ($self)=@_;
+ return 'Impossibile aprire il file: ' . $self->filename();
+}
+
+sub WebCoso::X::NoSuchPipeline::full_message {
+ my ($self)=@_;
+ return 'Pipeline ignota: ' . $self->pipeline();
+}
+
+sub WebCoso::X::NoSuchResource::full_message {
+ my ($self)=@_;
+ return 'Risorsa ignota: ' . $self->resource();
+}
+
1;