Skip to content

release: 0.1.0-alpha.34 #90

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Aug 1, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ on:

jobs:
lint:
timeout-minutes: 10
timeout-minutes: 15
name: lint
runs-on: ${{ github.repository == 'stainless-sdks/open-transit-java' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
if: github.event_name == 'push' || github.event.pull_request.head.repo.fork
Expand All @@ -37,7 +37,7 @@ jobs:
- name: Run lints
run: ./scripts/lint
test:
timeout-minutes: 10
timeout-minutes: 15
name: test
runs-on: ${{ github.repository == 'stainless-sdks/open-transit-java' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
if: github.event_name == 'push' || github.event.pull_request.head.repo.fork
Expand Down
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "0.1.0-alpha.33"
".": "0.1.0-alpha.34"
}
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
# Changelog

## 0.1.0-alpha.34 (2025-08-01)

Full Changelog: [v0.1.0-alpha.33...v0.1.0-alpha.34](https://github.com/OneBusAway/java-sdk/compare/v0.1.0-alpha.33...v0.1.0-alpha.34)

### Bug Fixes

* **client:** r8 support ([dbca2b6](https://github.com/OneBusAway/java-sdk/commit/dbca2b6f65b33feb5dac137c43976ee53adf1586))


### Chores

* **internal:** bump ci test timeout ([6139a45](https://github.com/OneBusAway/java-sdk/commit/6139a454dea5b2df944e1ff9e51ee68102048eb1))
* **internal:** reduce proguard ci logging ([0953534](https://github.com/OneBusAway/java-sdk/commit/09535340857380e8bb7ec1112aafd2b84efb55dc))

## 0.1.0-alpha.33 (2025-07-30)

Full Changelog: [v0.1.0-alpha.32...v0.1.0-alpha.33](https://github.com/OneBusAway/java-sdk/compare/v0.1.0-alpha.32...v0.1.0-alpha.33)
Expand Down
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

<!-- x-release-please-start-version -->

[![Maven Central](https://img.shields.io/maven-central/v/org.onebusaway/onebusaway-sdk-java)](https://central.sonatype.com/artifact/org.onebusaway/onebusaway-sdk-java/0.1.0-alpha.33)
[![javadoc](https://javadoc.io/badge2/org.onebusaway/onebusaway-sdk-java/0.1.0-alpha.33/javadoc.svg)](https://javadoc.io/doc/org.onebusaway/onebusaway-sdk-java/0.1.0-alpha.33)
[![Maven Central](https://img.shields.io/maven-central/v/org.onebusaway/onebusaway-sdk-java)](https://central.sonatype.com/artifact/org.onebusaway/onebusaway-sdk-java/0.1.0-alpha.34)
[![javadoc](https://javadoc.io/badge2/org.onebusaway/onebusaway-sdk-java/0.1.0-alpha.34/javadoc.svg)](https://javadoc.io/doc/org.onebusaway/onebusaway-sdk-java/0.1.0-alpha.34)

<!-- x-release-please-end -->

Expand All @@ -15,7 +15,7 @@ It is generated with [Stainless](https://www.stainless.com/).

<!-- x-release-please-start-version -->

The REST API documentation can be found on [developer.onebusaway.org](https://developer.onebusaway.org). Javadocs are available on [javadoc.io](https://javadoc.io/doc/org.onebusaway/onebusaway-sdk-java/0.1.0-alpha.33).
The REST API documentation can be found on [developer.onebusaway.org](https://developer.onebusaway.org). Javadocs are available on [javadoc.io](https://javadoc.io/doc/org.onebusaway/onebusaway-sdk-java/0.1.0-alpha.34).

<!-- x-release-please-end -->

Expand All @@ -26,7 +26,7 @@ The REST API documentation can be found on [developer.onebusaway.org](https://de
### Gradle

```kotlin
implementation("org.onebusaway:onebusaway-sdk-java:0.1.0-alpha.33")
implementation("org.onebusaway:onebusaway-sdk-java:0.1.0-alpha.34")
```

### Maven
Expand All @@ -35,7 +35,7 @@ implementation("org.onebusaway:onebusaway-sdk-java:0.1.0-alpha.33")
<dependency>
<groupId>org.onebusaway</groupId>
<artifactId>onebusaway-sdk-java</artifactId>
<version>0.1.0-alpha.33</version>
<version>0.1.0-alpha.34</version>
</dependency>
```

Expand Down
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ repositories {

allprojects {
group = "org.onebusaway"
version = "0.1.0-alpha.33" // x-release-please-version
version = "0.1.0-alpha.34" // x-release-please-version
}

subprojects {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Jackson uses reflection and depends heavily on runtime attributes.
-keepattributes
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,*Annotation*

# Jackson uses Kotlin reflection utilities, which themselves use reflection to access things.
-keep class kotlin.reflect.** { *; }
Expand All @@ -17,13 +17,13 @@
*;
}

# Jackson uses reflection to access the default constructors of serializers and deserializers.
-keepclassmembers class * extends org.onebusaway.core.BaseSerializer {
<init>();
}
-keepclassmembers class * extends org.onebusaway.core.BaseDeserializer {
<init>();
}
# Jackson uses reified type information to serialize and deserialize our classes (via `TypeReference`).
-keep class com.fasterxml.jackson.core.type.TypeReference { *; }
-keep class * extends com.fasterxml.jackson.core.type.TypeReference { *; }

# Jackson uses reflection to access our class serializers and deserializers.
-keep @com.fasterxml.jackson.databind.annotation.JsonSerialize class org.onebusaway.** { *; }
-keep @com.fasterxml.jackson.databind.annotation.JsonDeserialize class org.onebusaway.** { *; }

# Jackson uses reflection to serialize and deserialize our classes based on their constructors and annotated members.
-keepclassmembers class org.onebusaway.** {
Expand Down
41 changes: 35 additions & 6 deletions onebusaway-sdk-java-proguard-test/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,13 @@ plugins {
}

buildscript {
repositories {
google()
}

dependencies {
classpath("com.guardsquare:proguard-gradle:7.4.2")
classpath("com.android.tools:r8:8.3.37")
}
}

Expand All @@ -15,7 +20,6 @@ dependencies {
testImplementation("org.junit.jupiter:junit-jupiter-api:5.9.3")
testImplementation("org.assertj:assertj-core:3.25.3")
testImplementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.13.4")
testImplementation("org.junit.platform:junit-platform-console:1.10.1")
}

tasks.shadowJar {
Expand All @@ -33,7 +37,6 @@ val proguardJar by tasks.registering(proguard.gradle.ProGuardTask::class) {
outjars(proguardJarPath)
printmapping("${layout.buildDirectory.get()}/proguard-mapping.txt")

verbose()
dontwarn()

val javaHome = System.getProperty("java.home")
Expand All @@ -58,17 +61,43 @@ val testProGuard by tasks.registering(JavaExec::class) {
dependsOn(proguardJar)
notCompatibleWithConfigurationCache("ProGuard")

mainClass.set("org.junit.platform.console.ConsoleLauncher")
mainClass.set("org.onebusaway.proguard.ProGuardCompatibilityTest")
classpath = files(proguardJarPath)
}

val r8JarPath = "${layout.buildDirectory.get()}/libs/${project.name}-${project.version}-r8.jar"
val r8Jar by tasks.registering(JavaExec::class) {
group = "verification"
dependsOn(tasks.shadowJar)
notCompatibleWithConfigurationCache("R8")

mainClass.set("com.android.tools.r8.R8")
classpath = buildscript.configurations["classpath"]

args = listOf(
"--classpath", proguardJarPath,
"--scan-classpath",
"--details", "verbose",
"--release",
"--classfile",
"--output", r8JarPath,
"--lib", System.getProperty("java.home"),
"--pg-conf", "./test.pro",
"--pg-conf", "../onebusaway-sdk-java-core/src/main/resources/META-INF/proguard/onebusaway-sdk-java-core.pro",
"--pg-map-output", "${layout.buildDirectory.get()}/r8-mapping.txt",
tasks.shadowJar.get().archiveFile.get().asFile.absolutePath,
)
}

val testR8 by tasks.registering(JavaExec::class) {
group = "verification"
dependsOn(r8Jar)
notCompatibleWithConfigurationCache("R8")

mainClass.set("org.onebusaway.proguard.ProGuardCompatibilityTest")
classpath = files(r8JarPath)
}

tasks.test {
dependsOn(testProGuard)
dependsOn(testR8)
// We defer to the tests run via the ProGuard JAR.
enabled = false
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@
package org.onebusaway.proguard

import com.fasterxml.jackson.module.kotlin.jacksonTypeRef
import kotlin.reflect.full.memberFunctions
import kotlin.reflect.jvm.javaMethod
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.BeforeAll
import org.junit.jupiter.api.Test
import org.onebusaway.client.okhttp.OnebusawaySdkOkHttpClient
import org.onebusaway.core.jsonMapper
Expand All @@ -14,12 +15,22 @@ internal class ProGuardCompatibilityTest {

companion object {

@BeforeAll
@JvmStatic
fun setUp() {
fun main(args: Array<String>) {
// To debug that we're using the right JAR.
val jarPath = this::class.java.getProtectionDomain().codeSource.location
println("JAR being used: $jarPath")

// We have to manually run the test methods instead of using the JUnit runner because it
// seems impossible to get working with R8.
val test = ProGuardCompatibilityTest()
test::class
.memberFunctions
.asSequence()
.filter { function ->
function.javaMethod?.isAnnotationPresent(Test::class.java) == true
}
.forEach { it.call(test) }
}
}

Expand Down
5 changes: 4 additions & 1 deletion onebusaway-sdk-java-proguard-test/test.pro
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,7 @@
-keep class org.onebusaway.proguard.** { *; }

# For the testing framework.
-keep class org.junit.** { *; }
-keep class org.junit.** { *; }

# Many warnings don't apply for our testing purposes.
-dontwarn