This wiki space contains archival documentation of Project Bamboo, April 2008 - March 2013.
A locator object provides a unified interface to load an item along with its children from a heterogeneous repository into the CMIS content hub. An example is an electronic document in HATHI collection that contains hundreds of JPEG page images as its content.
Locator services are connector modules that provide content from a contributing repository. Each Locator Service is a Java or JVM class that implements the LocatorServiceAPI interface. Locator service classes are configured in the repository.properties file and are loaded from the default class path on initialization.
Locator services handle requests for content, but might or might not make that content available immediately. The result of a request may be the creation of a folder containing locator objects. Each locator object serves as the “proxy” to content that has not yet been acquired or processed. When the client requests the content represented by a locator object, the Locator Service is informed and provided with an opportunity to download and process the content object. The loading process consists of the following steps:
1.The client creates a Zotero bookmark file in RDF format in the “request” folder of the CMIS repository which contains the descriptive metadata of the items to be retrieved;
2.Once the repository determines that this is a request that involves a locator object, it delegates the request to the corresponding Locator Service, based on the repository identifier extracted from the metadata in the bookmark file;
3.The Locator Service, as the implementation of the locator API, creates the locator object as a CMIS document in the “response” folder in the CMIS repository. The content stream of this CMIS document is empty as content has not been loaded yet;
4.The connector connects to the repository and loads the content of the item, and then marks the locator object as “loaded”.
Locator objects allow for asynchronous loading and processing of repository objects and at the same time achieves transparency of the repository implementation from the CMIS client’s perspective.
The following methods are defined by the locator API and implemented by different connectors:
createItem(String url, BambooRequest bambooRequest)
The createItem method creates the locator object with empty data stream. url is the repository URL as specified in the Zotero bookmark file, while the BambooRequest object encapsulates the CMIS object definition of the Zotero bookmark file.
loadObject(File objectFile, BambooRequest bambooRequest)
The loadObject method connects to the repository to load the content of the item. The parameter objectFile is the file to be loaded, and the bambooRequest object encapsulates the CMIS object definition.
The following properties are defined for the functions of the locator object:
The bamboo:source property is used in the locator object to specify the repository where the content is to be retrieved.
The bamboo:url property specifies the repository URL as it appears in the original Zotero bookmark file.
The bamboo:update property is the timestamp when the loading occurs. It is used to determine whether the content has been loaded, and if yes, whether it needs to be loaded again.