From bce873aedeedc897002d478410c8f73d4e07c3b2 Mon Sep 17 00:00:00 2001 From: Nic Dorman Date: Wed, 13 May 2026 15:13:10 +0000 Subject: [PATCH] fix(antd-java): make examples runnable via gradle :examples subproject The README told users to run examples via gradle, but that never worked: $ bash gradlew examples:run -PmainClass=... FAILURE: Build failed with an exception. * What went wrong: Cannot locate tasks that match examples:build as project examples not found in root project antd-java. settings.gradle.kts only declared the root project; examples lived as loose .java files in examples/ with no package and no Gradle module to compile them. Mirror the antd-kotlin layout instead: - New examples/ subproject with the application plugin (run via gradle :examples:run; pick which example with -PmainClass=...) - Sources moved to examples/src/main/java/com/autonomi/examples/ with a package declaration - examples/build.gradle.kts declares its own mavenCentral repo and implementation(project(:)) so it links against the SDK - settings.gradle.kts gets include(examples) - gradlew was committed without the executable bit; chmod +x While moving the sources, two pre-existing type bugs surfaced (the files never compiled before so these were hidden): - Example03Files.java: assigned client.fileCost(...) to String, but the SDK returns UploadCostEstimate. Print individual fields, mirroring the Python/Rust/PHP examples. - Example06PrivateData.java: same shape for client.dataCost(...). Closes #71 --- antd-java/examples/build.gradle.kts | 29 +++++++++++++++++++ .../autonomi/examples}/Example01Connect.java | 2 ++ .../examples}/Example02PublicData.java | 2 ++ .../autonomi/examples}/Example03Files.java | 6 ++-- .../examples}/Example05ErrorHandling.java | 2 ++ .../examples}/Example06PrivateData.java | 6 ++-- antd-java/gradlew | 0 antd-java/settings.gradle.kts | 2 ++ 8 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 antd-java/examples/build.gradle.kts rename antd-java/examples/{ => src/main/java/com/autonomi/examples}/Example01Connect.java (93%) rename antd-java/examples/{ => src/main/java/com/autonomi/examples}/Example02PublicData.java (95%) rename antd-java/examples/{ => src/main/java/com/autonomi/examples}/Example03Files.java (79%) rename antd-java/examples/{ => src/main/java/com/autonomi/examples}/Example05ErrorHandling.java (96%) rename antd-java/examples/{ => src/main/java/com/autonomi/examples}/Example06PrivateData.java (78%) mode change 100644 => 100755 antd-java/gradlew diff --git a/antd-java/examples/build.gradle.kts b/antd-java/examples/build.gradle.kts new file mode 100644 index 0000000..728a70e --- /dev/null +++ b/antd-java/examples/build.gradle.kts @@ -0,0 +1,29 @@ +plugins { + java + application +} + +repositories { + mavenCentral() +} + +dependencies { + implementation(project(":")) +} + +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + toolchain { + languageVersion.set(JavaLanguageVersion.of(17)) + } +} + +// Pick which example to run with: +// gradle :examples:run -PmainClass=com.autonomi.examples.Example02PublicData +application { + mainClass.set( + (project.findProperty("mainClass") as String?) + ?: "com.autonomi.examples.Example02PublicData" + ) +} diff --git a/antd-java/examples/Example01Connect.java b/antd-java/examples/src/main/java/com/autonomi/examples/Example01Connect.java similarity index 93% rename from antd-java/examples/Example01Connect.java rename to antd-java/examples/src/main/java/com/autonomi/examples/Example01Connect.java index 9956c53..01938e8 100644 --- a/antd-java/examples/Example01Connect.java +++ b/antd-java/examples/src/main/java/com/autonomi/examples/Example01Connect.java @@ -1,3 +1,5 @@ +package com.autonomi.examples; + import com.autonomi.antd.AntdClient; import com.autonomi.antd.models.HealthStatus; diff --git a/antd-java/examples/Example02PublicData.java b/antd-java/examples/src/main/java/com/autonomi/examples/Example02PublicData.java similarity index 95% rename from antd-java/examples/Example02PublicData.java rename to antd-java/examples/src/main/java/com/autonomi/examples/Example02PublicData.java index 3644755..b36d950 100644 --- a/antd-java/examples/Example02PublicData.java +++ b/antd-java/examples/src/main/java/com/autonomi/examples/Example02PublicData.java @@ -1,3 +1,5 @@ +package com.autonomi.examples; + import com.autonomi.antd.AntdClient; import com.autonomi.antd.models.PutResult; diff --git a/antd-java/examples/Example03Files.java b/antd-java/examples/src/main/java/com/autonomi/examples/Example03Files.java similarity index 79% rename from antd-java/examples/Example03Files.java rename to antd-java/examples/src/main/java/com/autonomi/examples/Example03Files.java index a536c9e..bc39cb5 100644 --- a/antd-java/examples/Example03Files.java +++ b/antd-java/examples/src/main/java/com/autonomi/examples/Example03Files.java @@ -1,3 +1,5 @@ +package com.autonomi.examples; + import com.autonomi.antd.AntdClient; import com.autonomi.antd.models.FileUploadResult; @@ -20,8 +22,8 @@ public static void main(String[] args) { System.out.println("Downloaded successfully"); // Estimate cost before uploading - String cost = client.fileCost("/path/to/file.txt", true); - System.out.println("Estimated cost: " + cost + " atto"); + com.autonomi.antd.models.UploadCostEstimate cost = client.fileCost("/path/to/file.txt", true); + System.out.println("Estimated cost: " + cost.cost() + " atto (" + cost.chunkCount() + " chunks)"); } } } diff --git a/antd-java/examples/Example05ErrorHandling.java b/antd-java/examples/src/main/java/com/autonomi/examples/Example05ErrorHandling.java similarity index 96% rename from antd-java/examples/Example05ErrorHandling.java rename to antd-java/examples/src/main/java/com/autonomi/examples/Example05ErrorHandling.java index 8fda6c4..9eb14fc 100644 --- a/antd-java/examples/Example05ErrorHandling.java +++ b/antd-java/examples/src/main/java/com/autonomi/examples/Example05ErrorHandling.java @@ -1,3 +1,5 @@ +package com.autonomi.examples; + import com.autonomi.antd.AntdClient; import com.autonomi.antd.errors.*; diff --git a/antd-java/examples/Example06PrivateData.java b/antd-java/examples/src/main/java/com/autonomi/examples/Example06PrivateData.java similarity index 78% rename from antd-java/examples/Example06PrivateData.java rename to antd-java/examples/src/main/java/com/autonomi/examples/Example06PrivateData.java index 36f7644..dd2c317 100644 --- a/antd-java/examples/Example06PrivateData.java +++ b/antd-java/examples/src/main/java/com/autonomi/examples/Example06PrivateData.java @@ -1,3 +1,5 @@ +package com.autonomi.examples; + import com.autonomi.antd.AntdClient; import com.autonomi.antd.models.PutResult; @@ -18,8 +20,8 @@ public static void main(String[] args) { System.out.println("Retrieved: " + new String(retrieved)); // Estimate cost - String cost = client.dataCost(secret); - System.out.println("Estimated cost: " + cost + " atto"); + com.autonomi.antd.models.UploadCostEstimate cost = client.dataCost(secret); + System.out.println("Estimated cost: " + cost.cost() + " atto (" + cost.chunkCount() + " chunks)"); } } } diff --git a/antd-java/gradlew b/antd-java/gradlew old mode 100644 new mode 100755 diff --git a/antd-java/settings.gradle.kts b/antd-java/settings.gradle.kts index f281bb4..a42d503 100644 --- a/antd-java/settings.gradle.kts +++ b/antd-java/settings.gradle.kts @@ -1 +1,3 @@ rootProject.name = "antd-java" + +include("examples")