Skip to content
Mike Conway edited this page Mar 11, 2014 · 2 revisions

The Jargon-core libraries are a set of core API, and higher-level libraries built on top of the Jargon-core, that allow general application development for iRODS clients written in Java, or in dynamic JVM languages such as Jython, JRuby, Groovy, or PHP. These libraries are used internally by iRODS developers for Swing and Spring-based web interfaces, as well as REST and SOAP capabilities.

Jargon communicates with iRODS by establishing a socket connection, and invoking iRODS services using the iRODS XML protocol. The Jargon core library functions primarily as an implementation of the iRODS protocol and packing instructions, as well as an implementation of the connection between iRODS and the client over which the iRODS packing instructions and related data are exchanged.

Jargon hides the complexity of connection handling and protocol management from the end-user through a set of abstractions. Jargon is designed so that API users do not see network connections or packing instructions. Rather, all interfaces are through Access Objects, Java i/o library abstractions, and POJO (Plain old java object) value objects. These are explained in more detail in this guide. iRODS has a wide range of capabilities, so currently not all iRODS functions are exposed in Jargon, though over time the feature coverage continues to grow. The Jargon-core framework is built with this continued expansion in mind.

For development within DICE, the 'Inversion of Control' model of Spring, as well as an emphasis on testability, guide the design of the API. The Jargon-core API currently has around 1000 different JUnit test cases, and this number is always growing. The libraries are designed such that developers using Jargon-core can easily mock the Jargon-core libraries in their higher level development, relying on thorough testing at lower levels to test the actual iRODS protocol interactions. This approach is taken internally with libraries and interfaces built on top of Jargon-core.

This documentation focuses on Jargon-core, and how it can be used to connect to iRODS, and to access various iRODS functions, such as moving data, maintaining metadata, etc. Many of these functions represent client protocol interactions available via iRODS icommands. Following sections of the document cover connecting to iRODS, and performing various operations.

Clone this wiki locally