--- nfo/perl/libs/Data/Storage/Schema/Abstract.pm 2002/10/17 00:07:14 1.1 +++ nfo/perl/libs/Data/Storage/Schema/Abstract.pm 2002/10/25 11:45:10 1.2 @@ -1,8 +1,12 @@ ############################################### # -# $Id: Abstract.pm,v 1.1 2002/10/17 00:07:14 joko Exp $ +# $Id: Abstract.pm,v 1.2 2002/10/25 11:45:10 joko Exp $ # # $Log: Abstract.pm,v $ +# Revision 1.2 2002/10/25 11:45:10 joko +# + enhanced robustness +# + more logging for debug-levels +# # Revision 1.1 2002/10/17 00:07:14 joko # + new # @@ -36,7 +40,7 @@ my $class = ref($invocant) || $invocant; my @args = (); @_ && (@args = @_); - #$logger->debug( __PACKAGE__ . "->new(@args)" ); + #my $self = { @_ }; # merge all entries from all hashes in args-array to single array (key, val, key, val) @@ -44,6 +48,8 @@ map { push(@args_all, %{$_}); } @args; # make hash from array my %args = @args_all; + + $logger->debug( __PACKAGE__ . "->new( @args_all )" ); my $self = { %args }; bless $self, $class; @@ -76,6 +82,13 @@ my $filename = shift; my $exclude_pattern = shift; $logger->debug( __PACKAGE__ . "->_parsePackageFile( ... )" ); + if (!$filename) { + $logger->error( __PACKAGE__ . "->_parsePackageFile: you must specify a filename" ); + return; + } + if (! -e $filename) { + $logger->error( __PACKAGE__ . "->_parsePackageFile: could not find $filename" ); + } my @packages = (); open(FH, '<' . $filename); while () { @@ -109,7 +122,10 @@ # parse complete package to build list of classes if ($#{$classlist} == -1) { $logger->debug( "_doinit() Initializing all Classes from " . $self->{invocant} ); - my $perl_packagename = $self->{invocant}; + if (!$self->{invocant}->can('getFilename')) { + $logger->error( __PACKAGE__ . "->_doinit: Package $self->{invocant} doesn't contain method 'getFilename'" ); + return; + } my $perl_packagefile = eval('return ' . $self->{invocant} . '::getFilename();'); my $packages = $self->_parsePackageNamesFromFile($perl_packagefile, $self->{invocant}); # TODO: @@ -120,14 +136,13 @@ # build argument to be passed to "Tangram::Schema->new(...)" my @classes; map { - $logger->debug( __PACKAGE__ . "->_doinit() Initializing Class $_" ); + $logger->debug( __PACKAGE__ . "->_doinit: Initializing Class $_" ); # classname push @classes, $_; # schema my $schema; my $evalstr = '$schema = $' . $_ . '::schema;'; my $res = eval($evalstr); - use Data::Dumper; push @classes, $schema; } @{$classlist}; @@ -162,8 +177,10 @@ sub getSchema { my $self = shift; if (!$self->{schema}) { - print "schema is not yet initialized!", "\n"; - exit; + #print "schema is not yet initialized!", "\n"; + #exit; + $logger->error( __PACKAGE__ . "->getSchema: Schema is not yet initialized!" ); + return; } return $self->{schema}; }