Skip to content

RADAR-base platform's common Java utilities library containing basic schemas, streaming features, testing bridges and utils.

License

Notifications You must be signed in to change notification settings

RADAR-base/radar-commons

Folders and files

NameName
Last commit message
Last commit date
Sep 2, 2024
Dec 2, 2024
Sep 21, 2023
Sep 26, 2017
Dec 2, 2024
Nov 28, 2024
Mar 7, 2024
Mar 7, 2024
Sep 23, 2024
Mar 7, 2024
Jun 26, 2018
Sep 6, 2023
Mar 8, 2024
Feb 15, 2017
Mar 8, 2024
Mar 8, 2024
Mar 22, 2023
Sep 1, 2023
Mar 14, 2023
Mar 22, 2023

Repository files navigation

RADAR-Commons

Common utilities library containing basic schemas, streaming features, testing bridges and utils.

Usage

Add the RADAR-Commons library to your project with Gradle by updating your build.gradle.kts file with:

repositories {
    mavenCentral()
}

dependencies {
    implementation("org.radarbase:radar-commons:1.1.2")
}

Example use, after adding radar-schemas to classpath:

// Set URLs for RADAR-base installation
val baseUrl = "https://..."
val oauthToken = ...

val kafkaSender = restKafkaSender {
    baseUrl = "$baseUrl/kafka/"
    headers.append("Authorization", "Bearer $oauthToken")
    httpClient {
        timeout(10.seconds)
    }
    schemaRetriever ("$baseUrl/schema/")
}

// Configure topic to send data over
val topic = AvroTopic(
    "linux_raspberry_temperature",
    ObservationKey.getClassSchema(),
    RaspberryTemperature.getClassSchema(),
    ObservationKey::class.java,
    RaspberryTemperature::class.java
)

val topicSender = kafkaSender.sender(topic)

val key = ObservationKey("myProject", "myUser", "mySource")

// Send data to topic.
runBlocking {
    val values: List<RaspberryTemperature> = readValuesFromSystem()
    topicSender.send(key, values)
}

Note that this code above does not include any flows for registering a source with the ManagementPortal.

For server utilities, include radar-commons-server:

repositories {
    mavenCentral()
    maven(url = "https://packages.confluent.io/maven/")
}

dependencies {
    implementation("org.radarbase:radar-commons-server:1.1.2")
}

For mocking clients of the RADAR-base infrastructure, use that 'radar-commons-testing' repository:

repositories {
    mavenCentral()
    maven(url = "https://packages.confluent.io/maven/")
}

dependencies {
    testImplementation("org.radarbase:radar-commons-testing:1.1.2")
}

To test your backend with a MockProducer, copy testing/mock.yml.template to testing/mock.yml and edit its parameters. Then run

./gradlew :testing:run

to send data to your backend.

To use the RADAR Gradle plugins, see the README of the radar-commons-gradle directory.

Contributing

For latest code use dev branch. This is released on JFrog's OSS Artifactory. To use that release, add the following fragment to your build.gradle file.

repositories {
    maven(url = "https://oss.sonatype.org/content/repositories/snapshots")
}

configurations.all {
    // Check for updates every build
    resolutionStrategy.cacheChangingModulesFor(0, "SECONDS")
}

dependencies {
    implementation("org.radarbase:radar-commons:1.1.3-SNAPSHOT")
}

Code should be formatted using the Kotlin official style guide, in addition to ktlint rules. If you want to contribute a feature or fix browse our issues, and please make a pull request.