Changes for version 1.20 - 2008-04-10

  • Changes to memory management: since the Resolver, Database, OpenURL and ContextObject classes all contain references back and forth, the next of mutually referencing objects was not getting destructed when it went out of scope, leading to memory exhaustion in long-running processes such as Apache servers under heavy load. That is now fixed through the use of weak references back to the "owning" objects. Tests show that resolving 50,000 OpenURLs does not cause noticable process growth.
  • Changes to regression-test suite to facilitate running when not connected to network.
  • Added new test script, admin.t, testing the code that underlies the web-based admin interface.
  • Refactored database-access code in Database.pm, greatly reducing the number of similar functions and unifying logging.
  • Add support for the Serial Alias object type, both in the code and in the Admin web UI. (Admin support for this is not very useful yet, since, as with other kinds of link, there is no way to maintain the links between an alias object and the serial that it is an alias of.)
  • Added low-level object-API support for the service-to-serial and genre-to-servicetype link tables. (There's no point in wiring them into the Admin UI, since they contain no information other than link IDs.)
  • Search-result listing in Admin web UI does not offer links to sort on virtual fields.
  • Search-result listing in Admin web UI restored to being valid XHTML 1.0.
  • Top-level "resolve" script runs within a scoped block, to ensure that all local ("my") variables go out of scope when the script ends, whatever Apache's memory management regime may be. This contributes to fixing a memory-exhaustion problem.

Documentation

test Keystone Resolver's "recipe"-based result formatting

Modules

an OpenURL resolver
an OpenURL Framework (Z39.88) ContextObject
Resource Database for an OpenURL v1.0 resolver
a Descriptor in an OpenURL v1.0 ContextObject
logging levels for Keystone Resolver
an OpenURL that can be resolved
a result, with its type, resolved from an OpenURL
run tests for the Keystone Resolver library
Simple utility functions for Keystone Resolver

Provides

in lib/Keystone/ContentURL/Elsevier.pm
in lib/Keystone/Resolver/Admin.pm
in lib/Keystone/Resolver/DB/Domain.pm
in lib/Keystone/Resolver/DB/Genre.pm
in lib/Keystone/Resolver/DB/GenreServiceType.pm
in lib/Keystone/Resolver/DB/MetadataFormat.pm
in lib/Keystone/Resolver/DB/Object.pm
in lib/Keystone/Resolver/DB/Provider.pm
in lib/Keystone/Resolver/DB/Rule.pm
in lib/Keystone/Resolver/DB/Serial.pm
in lib/Keystone/Resolver/DB/SerialAlias.pm
in lib/Keystone/Resolver/DB/Service.pm
in lib/Keystone/Resolver/DB/ServiceRule.pm
in lib/Keystone/Resolver/DB/ServiceSerial.pm
in lib/Keystone/Resolver/DB/ServiceType.pm
in lib/Keystone/Resolver/DB/ServiceTypeRule.pm
in lib/Keystone/Resolver/DB/Session.pm
in lib/Keystone/Resolver/DB/Site.pm
in lib/Keystone/Resolver/DB/User.pm
in lib/Keystone/Resolver/ResultSet.pm
in lib/Keystone/Resolver/plugins/Citation/APP.pm
in lib/Keystone/Resolver/plugins/Citation/Endnote.pm
in lib/Keystone/Resolver/plugins/Citation/JVP.pm
in lib/Keystone/Resolver/plugins/Citation/author.pm
in lib/Keystone/Resolver/plugins/ID/http.pm
in lib/Keystone/Resolver/plugins/ID/info.pm
in lib/Keystone/Resolver/plugins/ID/info/doi.pm
in lib/Keystone/Resolver/plugins/ID/info/oclcnum.pm
in lib/Keystone/Resolver/plugins/ID/info/pmid.pm
in lib/Keystone/Resolver/plugins/ID/mailto.pm
in lib/Keystone/Resolver/plugins/ID/urn.pm
in lib/Keystone/Resolver/plugins/ID/urn/isbn.pm
in lib/Keystone/Resolver/plugins/Service/APP.pm
in lib/Keystone/Resolver/plugins/Service/Elsevier.pm
in lib/Keystone/Resolver/plugins/Service/Gale.pm
in lib/Keystone/Resolver/plugins/Service/Infotrac.pm
in lib/Keystone/Resolver/plugins/Service/Science.pm
in lib/Keystone/Resolver/plugins/Service/ScienceAbstracts.pm
in lib/Keystone/Resolver/plugins/ServiceType/abstract.pm
in lib/Keystone/Resolver/plugins/ServiceType/authorsearch.pm
in lib/Keystone/Resolver/plugins/ServiceType/bookstore.pm
in lib/Keystone/Resolver/plugins/ServiceType/citation.pm
in lib/Keystone/Resolver/plugins/ServiceType/citeref.pm
in lib/Keystone/Resolver/plugins/ServiceType/fulltext.pm
in lib/Keystone/Resolver/plugins/ServiceType/websearch.pm

Examples