The Arvados Java SDK v2 provides a high level API for working with Arvados resources.
The SDK is packaged as a JAR named arvados-java-<version>.jar
, which is published to Maven Central and can be included using Maven, Gradle, or by hand.
Here is an example build.gradle
file that uses the Arvados java sdk:
apply plugin: 'application' apply plugin: 'java-library' apply plugin: 'maven' repositories { mavenCentral() } application { mainClassName = "org.arvados.example.CollectionExample" } dependencies { api 'org.arvados:arvados-java-sdk:0.1.0' }
See Java SDK Examples to get started using the SDK.
The SDK uses the SLF4J facade library for logging. A concrete logging binding (and configuration, if required) must be provided by a client. For small applications, you can use the Simple implementation by adding slf4j-simple-1.8.0-beta4.jar to your classpath.
TypeSafe Configuration is used for configuring this library.
Please review src/main/resources/reference.conf for default values provided with this library.
In order to override default settings one can create an application.conf file in an application. Example: src/test/resources/application.conf.
Alternatively ExternalConfigProvider
class can be used to pass configuration via code. ExternalConfigProvider
comes with a builder and all of the above values must be provided in order for it to work properly.
ArvadosFacade
has two constructors, one without arguments that uses values from application.conf and second one taking ExternalConfigProvider
as an argument.
All API clients inherit from BaseStandardApiClient
. This class contains implementation of all common methods as described in Arvados Common Resource Methods.
Parameters provided to common or specific methods are String UUID or fields wrapped in Java objects. For example:
String uuid = "ardev-4zz18-rxcql7qwyakg1r1"; Collection actual = client.get(uuid);
ListArgument listArgument = ListArgument.builder() .filters(Arrays.asList( Filter.of("owner_uuid", Operator.LIKE, "ardev%"), Filter.of("name", Operator.LIKE, "Super%"), Filter.of("portable_data_hash", Operator.IN, Lists.newArrayList("54f6d9f59065d3c009d4306660989379+65") ))) .build(); CollectionList actual = client.list(listArgument);
Non-standard API clients must inherit from BaseApiClient. For example: KeepServerApiClient communicates directly with Keep servers using exclusively non-common methods.
More advanced API data handling could be implemented as Facade classes. In current version functionalities provided by SDK are handled by ArvadosFacade
. They include:
The Java SDK requires Keep Web (which is part of the standard configuration) as well as the API server and Keep server(s).
In order to run the integration tests, all fields within following configuration file must be provided: src/test/resources/integration-test-appliation.conf
The parameter integration-tests.project-uuid
should contain UUID of one project available to user who’s token was provided within configuration file.
Integration tests require connection to a real Arvados server.
When uploading via the current implementation of the Java SDK all uploaded files within single collection must have different names. This applies also to uploading files to already existing collection. Renaming files with duplicate names is not currently implemented.
See Javadoc
Dependencies:
$This will build the SDK and run all unit tests, then generate an Arvados Java sdk jar file in build/libs/arvados-java-2.0.0.jargit clone https://github.com/arvados/arvados.git
$cd arvados/sdk/java-v2
$gradle test
$gradle jar
The content of this documentation is licensed under the
Creative
Commons Attribution-Share Alike 3.0 United States licence.
Code samples in this documentation are licensed under the
Apache License, Version 2.0.