/[cvs]/nfo/perl/libs/DesignPattern/Bridge.pm
ViewVC logotype

Diff of /nfo/perl/libs/DesignPattern/Bridge.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.9 by joko, Tue Feb 18 18:35:30 2003 UTC revision 1.11 by joko, Fri Feb 21 08:38:21 2003 UTC
# Line 2  Line 2 
2  ##  $Id$  ##  $Id$
3  ## --------------------------------------------------------------------------------  ## --------------------------------------------------------------------------------
4  ##  $Log$  ##  $Log$
5    ##  Revision 1.11  2003/02/21 08:38:21  joko
6    ##  + additional checks
7    ##  + raising exceptions
8    ##
9    ##  Revision 1.10  2003/02/20 20:50:32  joko
10    ##  + small exception handling: now inheriting from little Exception object
11    ##
12  ##  Revision 1.9  2003/02/18 18:35:30  joko  ##  Revision 1.9  2003/02/18 18:35:30  joko
13  ##  + encapsulated/abstracted some more functionality: sub load_single  ##  + encapsulated/abstracted some more functionality: sub load_single
14  ##  ##
# Line 40  package DesignPattern::Bridge; Line 47  package DesignPattern::Bridge;
47  use strict;  use strict;
48  use warnings;  use warnings;
49    
50  use base qw( DesignPattern::Object );  use base qw(
51      DesignPattern::Object
52      DesignPattern::Exception
53    );
54    
55    
56  use Data::Dumper;  use Data::Dumper;
57    
# Line 165  sub new { Line 176  sub new {
176    
177      # this is the module testing phase - use mixin doesn't seem to propagate errors by default      # this is the module testing phase - use mixin doesn't seem to propagate errors by default
178      eval("use $package;");      eval("use $package;");
179        $self->checkExceptions();
180        
181    =pod    
182      if ($@) {      if ($@) {
183        $meta->{loaded}->{$package} = 0;        $meta->{loaded}->{$package} = 0;
184        # include caller information        # include caller information
# Line 177  sub new { Line 191  sub new {
191          print $msg, "\n";          print $msg, "\n";
192        }        }
193      }      }
194    =cut
195    
196  #print "ref-1: ", ref $self, "\n";  #print "ref-1: ", ref $self, "\n";
197  #print "ref-2: ", ref $self::SUPER, "\n";  #print "ref-2: ", ref $self::SUPER, "\n";
# Line 269  sub new { Line 284  sub new {
284      my $self = shift;      my $self = shift;
285      my $includefile = shift;      my $includefile = shift;
286      my $package = shift;      my $package = shift;
287      # TODO: do better error-detection here / prevent dies under all circumstances!      
288      require $includefile;      # pre-flight checks
289        if (!$includefile) {
290          $self->raiseException('Filename for inclusion was empty.');
291          return;
292        }
293        
294        # go for it ...
295        eval("require '$includefile';");
296        # ... and handle errors afterwards catching every message from perl itself ...
297        return if $self->checkExceptions();
298        
299        # ... otherwise continue assuming everything is fine
300      $self->mixinPackage($package) if $package;      $self->mixinPackage($package) if $package;
301        
302    }    }
303    
304  1;  1;

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.11

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed