Dear ArchivesSpace community,

In working toward a migration from AS 2.5.1 to 2.8, we have encountered an 
error in the OAI ListRecords response for metadata formats other than EAD 
(i.e., oai_dc, oai_dcterms, oai_marc, and oai_mods). When trying requests such 
as https://asoaistg.lib.byu.edu/oai?verb=ListRecords&metadataPrefix=oai_dc 
(sorry, not a public link), the response returned is:

{"error":"undefined method `[]' for nil:NilClass"}

Checking the log file, we found that it referenced a line in our configuration 
file dealing with element inheritance:

E, [2020-09-22T15:58:46.797712 #333] ERROR -- : Thread-2300: Unhandled 
exception!
E, [2020-09-22T15:58:46.807963 #333] ERROR -- :
undefined method `[]' for nil:NilClass
/srv/asstg/config/config.rb:491:in `block in (root)'
org/jruby/RubyArray.java:2566:in `select'
/srv/asstg/config/config.rb:491:in `block in (root)'
uri:classloader:/record_inheritance.rb:133:in `block in merge_record'
org/jruby/RubyArray.java:1735:in `each'
uri:classloader:/record_inheritance.rb:125:in `merge_record'
uri:classloader:/record_inheritance.rb:104:in `block in merge'
org/jruby/RubyArray.java:2487:in `map'
uri:classloader:/record_inheritance.rb:103:in `merge'
uri:classloader:/record_inheritance.rb:4:in `merge'

The portion of the configuration file referred to in the log file reads as 
follows:

{
    :property => "subjects",
    :inherit_if => proc {|json| json.select {|j| ! 
j['_resolved']['terms'].select { |t| t['term_type'] == 'genre_form'}.empty? } },
    :inherit_directly => true
},
{
    :property => 'subjects',
    :skip_if => proc {|json| ['file', 'item'].include?(json['level']) },
    :inherit_if => proc {|json| json.select {|j| ! 
j['_resolved']['terms'].select { |t| t['term_type'] == 'topical'}.empty? } },
    :inherit_directly => true
},
{
    :property => 'subjects',
    :skip_if => proc {|json| ['file', 'item'].include?(json['level']) },
    :inherit_if => proc {|json| json.select {|j| ! 
j['_resolved']['terms'].select { |t| t['term_type'] == 'geographic'}.empty? } },
    :inherit_directly => true
},
{
    :property => 'subjects',
    :skip_if => proc {|json| ['file', 'item'].include?(json['level']) },
    :inherit_if => proc {|json| json.select {|j| ! 
j['_resolved']['terms'].select { |t| t['term_type'] == 'uniform_title'}.empty? 
} },
    :inherit_directly => true
},

These inheritance configuration statements work well in our PUI display, but it 
appears to upset our ListRecords request. It does not cause issues with OAI 
GetRecord requests, which will produce the record in Dublin Core or MARC for 
Resource records without issues, but generates the same error for Archival 
Object records that would include inherited information.

Is this something that others have encountered? Reading the OAI-PMH 
documentation on GitHub, we had not expected this to be an issue.

Best,

Cory Nimer
University Archivist
Brigham Young University
801-422-6091

_______________________________________________
Archivesspace_Users_Group mailing list
Archivesspace_Users_Group@lyralists.lyrasis.org
http://lyralists.lyrasis.org/mailman/listinfo/archivesspace_users_group

Reply via email to