The Holdings plug-in ...

The purpose of HoldingsPlugin ...


The HoldingsPlugin must be executed as part of a 'record' chain, after the Pazpar2RelayPlugin.

The request syntax is thus that of a Pazpar2 record request. See Pazpar2 protocol

The response will likewise be a record document of the same format as a regular record from Pazpar2, but with holdings information added for each location.

Working Details



This plug-in is configured in service-proxy.properties or equivalent.


plugins.holdings = com.indexdata.serviceproxy.plugins.HoldingsPlugin

Usage in chain

The holdings plug-in must follow a plug-in that produces a Pazpar2 record, like the relay plug-in does.

It can choose to use a regular Pazpar2 record or an ACE record to pick up holdings for.

For example:

chains.record = relay,ace,holdings

Mandatory properties

holdings.PULL!PZ2_ACE_CLIENT = record             # Needed if holdings are to picked
                                                  # up from an ACE record

holdings.PUSH!ACE_RESPONSE : record               # Pushes the record response (which is NOT always
                                                  # an ACE record anymore. Naming should be changed 
                                                  # here and downstream)
holdings.TYPE!ACE_RESPONSE = org.w3c.dom.Document # Type of the above

holdings.PAZPAR2_URL = REF:relay.PAZPAR2_URL      # What URL to do record requests against. Should
                                                  # be the same URL as the Relay plug-in uses 
                                                  # (thus the suggested REF: syntax)

Property Dependencies

In order to enable the Holdings plug-in to pick up holdings from an ACE record 
(which is not mandatory) the ACE plug-in must push the client, as in:

ace.PUSH!PZ2_ACE_CLIENT = record
ace.TYPE!PZ2_ACE_CLIENT = com.indexdata.serviceproxy.plugins.Pz2ProxyClient  

Optional properties

holdings.RECORD_TIME_OUT = 1500                   # How long the proxy waits for a record request to return
                                                  # Optional, default 2000 msecs
holdings.DUMP_RECORDS_TO_CONSOLE = true           # For debugging
                                                  # Optional, default false
holdings.DUMP_TARGET_SETTINGS_TO_CONSOLE = false  # For debugging
                                                  # Optional, default false