Rejigging the creation of a handler a bit, so we now pass our ILS object
authorChris Cormack <chrisc@catalyst.net.nz>
Mon, 18 Nov 2013 02:30:16 +0000 (15:30 +1300)
committerChris Cormack <chrisc@catalyst.net.nz>
Mon, 18 Nov 2013 02:30:16 +0000 (15:30 +1300)
This should allow our handlers to behave agnostically to the underlying ILS
And we should only have to create the object once, at start up, rather
than per message

lib/NCIP.pm
lib/NCIP/Handler.pm
lib/NCIP/Handler/LookupItem.pm
t/NCIP_Handler.t

index b962b1e..239cf1a 100644 (file)
@@ -36,7 +36,7 @@ sub new {
     # load the ILS dependent module
     my $module = 'NCIP::ILS::' . $config->('NCIP.ils.value');
     load $module || die "Can not load ILS module $module";
-    my $ils = $module->new(  name => $config->('NCIP.ils.value')  );
+    my $ils = $module->new( name => $config->('NCIP.ils.value') );
     $self->{'ils'} = $ils;
     return bless $self, $class;
 
@@ -61,7 +61,13 @@ sub process_request {
 
         #bail out for now
     }
-    my $handler = NCIP::Handler->new( $self->namespace(), $request_type );
+    my $handler = NCIP::Handler->new(
+        {
+            namespace => $self->namespace(),
+            type      => $request_type,
+            ils       => $self->ils
+        }
+    );
     return $handler->handle( $self->xmldoc );
 }
 
index 32367f1..a9fab25 100644 (file)
@@ -17,16 +17,19 @@ package NCIP::Handler;
 #===============================================================================
 
 use Modern::Perl;
-use Object::Tiny qw{ type namespace };
+use Object::Tiny qw{ type namespace ils };
 
 use NCIP::Handler::LookupItem;
 
 sub new {
-    my $class     = shift;
-    my $namespace = shift;
-    my $type      = shift;
-    my $subclass  = __PACKAGE__ . "::" . $type;
-    my $self      = bless { type => $type, namespace => $namespace }, $subclass;
+    my $class    = shift;
+    my $params   = shift;
+    my $subclass = __PACKAGE__ . "::" . $params->{type};
+    my $self     = bless {
+        type      => $params->{type},
+        namespace => $params->{namespace},
+        ils       => $params->{ils}
+    }, $subclass;
     return $self;
 }
 
index e931bec..c101fa2 100644 (file)
@@ -32,7 +32,7 @@ sub handle {
         my ($item_id) =
           $xmldoc->getElementsByTagNameNS( $self->namespace(),
             'ItemIdentifierValue' );
-        my $item = NCIP::Item->new( { itemid => $item_id->textContent() } );
+        my $item = NCIP::Item->new( { itemid => $item_id->textContent(), ils => $self->ils} );
         warn $item->itemid();
     }
     return $self->type;
index 1b97c2f..4e8b90d 100644 (file)
@@ -22,9 +22,13 @@ use Test::More tests => 3;    # last test to print
 use lib 'lib';
 
 use_ok('NCIP::Handler');
-my $namespace='http://test';
+my $namespace = 'http://test';
 
 my $type = 'LookupItem';
 
-ok( my $handler = NCIP::Handler->new($namespace, $type), 'Create new handler' );
+ok(
+    my $handler =
+      NCIP::Handler->new( { namespace => $namespace, type => $type } ),
+    'Create new handler'
+);
 ok( my $response = $handler->handle() );