--- nfo/perl/libs/Data/Storage/Handler/Abstract.pm 2003/01/30 22:27:05 1.13 +++ nfo/perl/libs/Data/Storage/Handler/Abstract.pm 2003/02/20 20:19:13 1.15 @@ -1,7 +1,13 @@ ## ------------------------------------------------------------------------ -## $Id: Abstract.pm,v 1.13 2003/01/30 22:27:05 joko Exp $ +## $Id: Abstract.pm,v 1.15 2003/02/20 20:19:13 joko Exp $ ## ------------------------------------------------------------------------ ## $Log: Abstract.pm,v $ +## Revision 1.15 2003/02/20 20:19:13 joko +## tried to get auto-disconnect working again - failed with that +## +## Revision 1.14 2003/02/09 05:12:28 joko +## + quoting of strings used in sql-queries! +## ## Revision 1.13 2003/01/30 22:27:05 joko ## + added new abstract methods ## @@ -58,7 +64,7 @@ use Data::Dumper; use Tie::SecureHash; #use Data::Storage::Handler; -use Data::Transform::Deep qw( merge ); +use Hash::Merge qw( merge ); # get logger instance @@ -277,8 +283,34 @@ sub DESTROY { my $self = shift; - #if ($self->{COREHANDLE}) { - if ($self->exists('_COREHANDLE')) { + +return; + + $logger->debug( __PACKAGE__ . "[$self->{metainfo}->{type}]" . "->DESTROY" ); + + my $disconnectMethod = $self->{metainfo}->{disconnectMethod}; + print "meth: ", $disconnectMethod, "\n"; + + #$disconnectMethod && $self->{_COREHANDLE} && ( $self->{_COREHANDLE}->$disconnectMethod() ); + $self->{_COREHANDLE}->$disconnectMethod(); + #$self->$disconnectMethod(); + + #my $core1 = $self->getCOREHANDLE() if $self->can('getCOREHANDLE'); + #$core1->$disconnectMethod(); + +return; + + print "DESTROY-1", "\n"; + #if ($self->{__COREHANDLE}) { + #if ($self->exists('_COREHANDLE')) { + + # get corehandle instance from underlying handler + my $core; + $core = $self->getCOREHANDLE() if $self->can('getCOREHANDLE'); + + #if ($self->{STORAGEHANDLE}) { + if ($core) { + print "DESTROY-2", "\n"; $logger->debug( __PACKAGE__ . "[$self->{metainfo}->{type}]" . "->DESTROY" ); my $disconnectMethod = $self->{metainfo}->{disconnectMethod}; @@ -305,10 +337,23 @@ sub existsChildNode { my $self = shift; my $nodename = shift; - #$nodename = 'TransactionRoutingTable'; - $logger->debug( __PACKAGE__ . "->existsChildNode( nodename $nodename )" ); + + # TODO: don't use $self->{meta}->{childnodes} directly in here + # get it returned from $self->getChildNodes()!!! + + $logger->debug( __PACKAGE__ . "->existsChildNode( nodename=$nodename )" ); $self->getChildNodes() unless $self->{meta}->{childnodes}; - my $result = grep(m/$nodename/i, @{$self->{meta}->{childnodes}}); # TODO: use "/i" only on win32-systems! + + # quote this, it might contain meta characters which don't work in a regex + $nodename = quotemeta($nodename); + + # trace + #print Dumper($self->{meta}); + #print "nodename: $nodename", "\n"; + + # FIXME: use "/i" only on win32-systems! + my $result = grep(m/$nodename/i, @{$self->{meta}->{childnodes}}); + return $result; }