Revision history for Perl extension Net::OAI::Harvester

1.20	Mon, Jan 25 00:20:05 CET 2016
!!  INCOMPATIBLE CHANGE introduced with version 1.20  !!

Up to version 1.15 the metadataHandler was inconsistently fed with input:

 - GetRecord exposed the almost complete XML response to the Handler
   (including start_document/end_document events)
 - ListRecords exposed the (OAI)record element (header, metadata and 
   optional about containers) but did not propagate start_document or
   end_document events.

In both cases the events for the header tags itself and for the optional
setSpec subelements had not been forwarded

Version 1.20 introduces a modified behavior for metadataHandler and an
additional recordHandler:
 - a metadataHandler will see only the (single) subelement of the OAI metadata
   element (so for an deleted record it might never be invoced at all)
 - a recordHandler will see the OAI record element and its subelements 

Therefore a metadataHandler will now be confined to the metadata fragment(s)
of the response, and the new recordHandler approximates the old behavior of
ListRecords, however OAI-PMH:identifier and OAI-PMH:datestamp will now be
properly encapsulated within their OAI-PMH:header element. 

Additionally, two new methods responseDate() and request() allow access
to the corresponding top-level OAI-PMH elements in all response types.
A SAX filter of class Net::OAI::Record::DocumentHelper may be used to inject
start_document and end_document events into the chain if they are needed.

As a temporary measure, you may set $Net::OAI::Harvester::OLDmetadataHandler =1
to change the behavior of handlers passed as "metadataHandler" into that of
a recordHandler.

1.16_12	Tue, Jan 12 00:20:05 CET 2016
	- dealing with CPANTS Kwalitee issues, esp. version number mess
	- new filter class Net::OAI::Record::DocumentHelper for tweaking

1.16_11	Tue, Jan 12 00:20:05 CET 2016
	- minor cleanup

1.16_10	Mon, Jan 11 01:29:46 CET 2016
	- renamed alldata() method for accessing recordHandler results
	  to recorddata()
	- better propagation of namespace prefix mapping events
	- Net::OAI::NamespaceFilter with a result() method
	- Net::OAI::NamespaceFilter tested with XML::SAX::Writer 
	- AUTHOR formatting

1.16_09 Sun, Feb 14 17:29:39 CET 2014
	- Net::OAI::NamespaceFilter as kind of generic metadata handler
	- Queries are now constructed basing on a copy of the Harvester's baseURL
	- pass parameters to URI->query_form() more reproducably,
	  (esp. "verb" should now always be first to accommodate some 
	  allegedly broken repositories)
	- temporary? tests for correctness of LWP operations

1.16_07	Tue, Apr 30 01:26:40 CEST 2013
	- added new methods: response(), responseDate(), error()
	- Smoke still tests failed on 'Bad Host' tests (wrong error codes
	  induced by HTTP proxies?)
	- aligned behavior of metadataHandler for listRecords() and
	- introducing alternative recordHandler for listRecords() and
	- removed erroneous resumptionToken handling for identify()

1.16_04	Fri Dec  7 09:49:03 CET 2012
	- consider HTTP proxies in design of t/003.error.t
	- 'Bad Host' tests failing b/c error code 500 is not the expected
	   code 404 (due to some recent change in LWP)?

1.16_01 Mon Apr  2 23:14:35 CEST 2012
	- Modules were not namespace aware.
	- Add HTTPRetryAfter() method (catches HTTP Retry-After header)
	- Check responses for Content-Type and charset before parsing
	- Net::OAI::Header handed up (empty) header elements and other stuff
	  to the request's metadataHandler
	- SKIP tests when HTTP errors are encountered

1.15    Thu Feb 02 16:29:31 CEST 2011
	- one repository used for tests changed identifiers

1.14b   Wed May 18 16:29:31 CEST 2011
	- Explicit fallback to XML::SAX::PurePerl if we don't get a parser
	  (we know that XML::SAX::PurePerl has the required features and
	  does exist): Warn about probably broken XML::SAX installation and
	  issues with ParserDetails.ini [Fix mainly motivated by reputation
	  management: Far too many smoke tests failing because of automated
	  (=> no ParserDetails.ini => broken) installs of XML::SAX]
1.14a   Tue May 17 18:50:03 CEST 2011
	- Record::OAI_DC: asString() now returns the string and does not print
	  any more
	- Dependencies: XML::SAX::Base 1.04 (as per XML-SAX since 0.11
	  and opposed to the standalone version on CPAN) is really a necessary
	  prerequisite! (Thanks to Dave Sheroman for testing this out)
1.14    Mon May 16 22:57:24 CEST 2011
	- Installation: Makefile.PL and Build.PL failed if XML::SAX::Expat
	  was installed and XML::SAX not (probably a border case only with
	  "standalone" versions of XML::SAX::Base)
	- Changed messages: ExpatXS should give the mentioned "performance
	- Tests: Check if XML::SAX::ParserFactory delivered a parser
	  introduce NOH_ParserPackage environment variable

1.13    Fri May  9 17:34:15 WEDT 2008 (Thomas Berger <THB at cpan dot org>) 
	- ListMetadataFormats: namespaces() glued previous names with current;
	  new methods: namespaces_byprefix() and schemas_byprefix() 
	- added HTTPError() method for access to underlying HTTP::Response
	  object (in case of HTTP errors only)
	  NOTE: file() now will yield undef in this case (was: name of
	  non-existing file)
	- baseURL() had trailing garbage when called after a request
	- enforce tempfile cleanup by adding UNLINK=>1 to all tempfile() calls
	- avoid tempfile pollution on Win32 when using xml() method
	- Module::Build support
	- Tests: Fixed broken nsdl repository URL

1.12    Tue Aug  7 21:48:50 EDT 2007
	- modified t/055.listallrecords.t to not iterate over records
	  that are known to cause problems for XML::SAX::PurePerl

1.11    Fri Jul 27 11:47:21 EDT 2007
	- added oai-dump to MANIFEST

1.1     Fri Jul 27 09:16:35 EDT 2007
	- added the ability to dump xml files to a directory
	- trapped xml parsing errors are now always printed to STDERR 
	- added oai-dump utility

1.0     Wed Jul 27 22:52:42 CDT 2005
	- resumption token handling now respects custom metadata handlers
	  (thanks Thorsten Schwander)

0.991   Thu Feb 24 22:07:05 CST 2005
	- fixed namespaces() so it works

0.99    Tue Feb 22 21:38:16 CST 2005
	- added namespaces() and schemas() to Net::OAI::ListMetadataFormats
	  and suitable tests.

0.98    Fri Nov 19 09:41:32 CST 2004
	- docfix thanks Brian Cassidy

0.97    Tue Aug 30 21:07:05 2004
	- deprecated Net::OAI::Haverster::debug() in favor of setting
	  Net::OAI::Harvester::DEBUG. This allows for other packages
	  to easily report diagnostics. 
	- fixed test count in identify 010-identify.t
	- fixed names of utilities in bin
	- added some docs concerning Net::OAI::Base and passing in
	  LWP::UserAgent to Net::OAI::Harvester::new().

0.96    Mon Jul 19 22:12:04 2004
	- Fixed Net::OAI::Harvester to return HTTP level errors
	- Fixed Net::OAI::Identity to not run together sub descriptions into
	  the overall repositoryName.

0.95    Thu Apr 1 13:48:54 2004
	- Fixed behavior of Net::OAI::Record::Header::status()
	  which wasn't pulling out the status attribute properly. Thanks
	  Darin Burleigh at Also added test of status() to 

0.94	Thu Dec 11 14:04:12 2003
	- added listAllIdentifiers() and listAllRecords() which automatically
	  handle resumption tokens.

0.9	Sun Dec 07 08:45:28 2003 
	- Net::OAI::ListRecords now uses Storable rather than YAML since
	  YAML cannot handle utf8 at this time. Also Storable is
	  significantly faster.
	- Modified listRecords() to accept metadataHandler parameter for
	  specifying a custom metadata SAX handler.
	- Brought getRecord() into synch with listRecords() so that
	  metadataHandler specifies the package name of the custom metadata 
	  handler, rather than an actual instance of that class. 

0.86	Wed Nov 26 14:01:21 2003
	- fixed 5/002.error to not skip ALL THE TIME!

0.85	Wed Nov 26 13:45:23 2003
	- added note to to indicate the 
	  return values in list and scalar contexts. Thanks Jose
	  Barrueco @ University of Valencia.
	- beefed up docs in Net::OAI::Identify
	- modified t/002.error to check parser so that test doesn't fail 
	  under XML::LibXML
	- added output message to Makefile.PL encouraging folks to 
	  use libxml2 parser for increased speed.

0.82	Sat Nov 01 07:40:53 2003
	- require at least 5.8.0 for installation since this is the recommended
	  baseline for processing unicode. 

0.81	Fri Oct 24 01:51:03 2003
	- fixed passing of empty metadataFormat name/value pair when 
	  listRecords() and listIdentifiers() use a resumption token.
	  Thanks Patrick Hochstenbach @ LANL.

0.8	Fri Oct 24 09:16:12 2003
	- better catching of XML errors
	- added debug() method
	- added --debug switch to oai-listrecords

0.75	Wed Oct 22 21:51:08 2003
	- wrapped XML parsing in eval block to trap fatal errors.

0.7	Wed Oct 22 09:58:55 2003
	- more doc fixes (thanks Martin)
	- resumptionToken() now returns undef when no resumption token 
	  was present in the response.
	- modified bin/oai-listrecords to take advantage of the new return 
	  convention of resumptionToken().
	- fixed custom userAgent getting/setting (thanks Martin). 

0.6	Tue Oct 21 17:12:31 2003
	- fixed several doc errors (thanks Martin Emmerich)
	- modified list verbs to work with resumption tokens
	- modified oai-listrecords utility to automatically fetch all 
	  records using resumption tokens.

0.5	Wed Aug 28 16:57:03 2003
	- more doc fixes

0.4	Thu Aug 07 17:22:12 2003
	- fixed doc error (thanks Tajoli Zeno)
	- fixed warnings that run under new Test::Harness.
	- explicitly use IO::File

0.3	Mon Jul 28 11:35:37 2003
	- added asString() method to Net::OAI::Record::OAI_DC
	- added oai-listrecords utility
	- modified Makefile.PL to put oai-listsets and oai-listrecords in bin

0.2	Tue Jul 08 09:59:34 2003
	- updated docs

0.1	Thu May 15 22:37:02 2003
	- original version