From 78e9473550f14f01c1b9ab9ebaccbbbcb77dde03 Mon Sep 17 00:00:00 2001 From: Nate Anderson Date: Fri, 10 Jan 2025 15:40:13 -0800 Subject: [PATCH] chore: Add leaderboard examples Add a leaderboard example. Add docs examples for the leaderboard methods. Update the examples SDK version to 1.19.0. --- examples/cache-with-aws/build.gradle.kts | 2 +- examples/cache/build.gradle.kts | 2 +- .../doc_examples/DocExamplesJavaAPIs.java | 3 - examples/lambda/docker/build.gradle.kts | 2 +- examples/leaderboard/README.md | 39 +++ examples/leaderboard/README.template.md | 34 +++ examples/leaderboard/build.gradle.kts | 64 +++++ .../momento/client/example/BasicExample.java | 87 ++++++ .../example/doc_examples/CheatSheet.java | 17 ++ .../doc_examples/DocExamplesJavaAPIs.java | 271 ++++++++++++++++++ .../src/main/resources/logback.xml | 17 ++ examples/settings.gradle.kts | 1 + examples/storage/build.gradle.kts | 2 +- examples/token/build.gradle.kts | 2 +- examples/topic/build.gradle.kts | 2 +- 15 files changed, 536 insertions(+), 9 deletions(-) create mode 100644 examples/leaderboard/README.md create mode 100644 examples/leaderboard/README.template.md create mode 100644 examples/leaderboard/build.gradle.kts create mode 100644 examples/leaderboard/src/main/java/momento/client/example/BasicExample.java create mode 100644 examples/leaderboard/src/main/java/momento/client/example/doc_examples/CheatSheet.java create mode 100644 examples/leaderboard/src/main/java/momento/client/example/doc_examples/DocExamplesJavaAPIs.java create mode 100644 examples/leaderboard/src/main/resources/logback.xml diff --git a/examples/cache-with-aws/build.gradle.kts b/examples/cache-with-aws/build.gradle.kts index 9b08d9d1..138b2523 100644 --- a/examples/cache-with-aws/build.gradle.kts +++ b/examples/cache-with-aws/build.gradle.kts @@ -17,7 +17,7 @@ repositories { } dependencies { - implementation("software.momento.java:sdk:1.18.0") + implementation("software.momento.java:sdk:1.19.0") // For examples to store secrets in AWS Secrets Manager implementation("software.amazon.awssdk:secretsmanager:2.20.93") diff --git a/examples/cache/build.gradle.kts b/examples/cache/build.gradle.kts index ce0fb2c1..47669dcf 100644 --- a/examples/cache/build.gradle.kts +++ b/examples/cache/build.gradle.kts @@ -17,7 +17,7 @@ repositories { } dependencies { - implementation("software.momento.java:sdk:1.18.0") + implementation("software.momento.java:sdk:1.19.0") implementation("com.google.guava:guava:31.1-android") diff --git a/examples/cache/src/main/java/momento/client/example/doc_examples/DocExamplesJavaAPIs.java b/examples/cache/src/main/java/momento/client/example/doc_examples/DocExamplesJavaAPIs.java index 00e9068d..eb5c0676 100644 --- a/examples/cache/src/main/java/momento/client/example/doc_examples/DocExamplesJavaAPIs.java +++ b/examples/cache/src/main/java/momento/client/example/doc_examples/DocExamplesJavaAPIs.java @@ -38,17 +38,14 @@ public static void example_API_CredentialProviderFromString() { CredentialProvider.fromString(authToken); } - @SuppressWarnings("ResultOfMethodCallIgnored") public static void example_API_ConfigurationLaptop() { Configurations.Laptop.v1(); } - @SuppressWarnings("ResultOfMethodCallIgnored") public static void example_API_ConfigurationInRegionLatest() { Configurations.InRegion.latest(); } - @SuppressWarnings("ResultOfMethodCallIgnored") public static void example_API_ConfigurationLowLatency() { Configurations.LowLatency.latest(); } diff --git a/examples/lambda/docker/build.gradle.kts b/examples/lambda/docker/build.gradle.kts index 1b596e60..0f359f0e 100644 --- a/examples/lambda/docker/build.gradle.kts +++ b/examples/lambda/docker/build.gradle.kts @@ -12,7 +12,7 @@ repositories { dependencies { implementation("com.amazonaws:aws-lambda-java-core:1.2.1") - implementation("software.momento.java:sdk:1.18.0") + implementation("software.momento.java:sdk:1.19.0") } tasks.jar { diff --git a/examples/leaderboard/README.md b/examples/leaderboard/README.md new file mode 100644 index 00000000..e00f04ba --- /dev/null +++ b/examples/leaderboard/README.md @@ -0,0 +1,39 @@ +logo + +[![project status](https://momentohq.github.io/standards-and-practices/badges/project-status-official.svg)](https://github.com/momentohq/standards-and-practices/blob/main/docs/momento-on-github.md) +[![project stability](https://momentohq.github.io/standards-and-practices/badges/project-stability-stable.svg)](https://github.com/momentohq/standards-and-practices/blob/main/docs/momento-on-github.md) + + +# Momento Java SDK - Leaderboard Client Examples + +## Running the Examples + +- You do not need gradle to be installed +- JDK 14 or above is required to run the example +- To get started with Momento you will need a Momento API key. You can get one from the + [Momento Console](https://console.gomomento.com). + +### Basic + +```bash +MOMENTO_API_KEY= ./gradlew basic +``` + +Example Code: [BasicExample.java](src/main/java/momento/client/example/BasicExample.java) + +## Using the Java SDK in your project + +### Gradle Configuration + +Update your Gradle build to include the components + +#### build.gradle.kts + +```kotlin +dependencies { + implementation("software.momento.java:sdk:1.x.x") +} +``` + +---------------------------------------------------------------------------------------- +For more info, visit our website at [https://gomomento.com](https://gomomento.com)! diff --git a/examples/leaderboard/README.template.md b/examples/leaderboard/README.template.md new file mode 100644 index 00000000..867a40cc --- /dev/null +++ b/examples/leaderboard/README.template.md @@ -0,0 +1,34 @@ +{{ ossHeader }} + +# Momento Java SDK - Leaderboard Client Examples + +## Running the Examples + +- You do not need gradle to be installed +- JDK 14 or above is required to run the example +- To get started with Momento you will need a Momento API key. You can get one from the + [Momento Console](https://console.gomomento.com). + +### Basic + +```bash +MOMENTO_API_KEY= ./gradlew basic +``` + +Example Code: [BasicExample.java](src/main/java/momento/client/example/BasicExample.java) + +## Using the Java SDK in your project + +### Gradle Configuration + +Update your Gradle build to include the components + +#### build.gradle.kts + +```kotlin +dependencies { + implementation("software.momento.java:sdk:1.x.x") +} +``` + +{{ ossFooter }} diff --git a/examples/leaderboard/build.gradle.kts b/examples/leaderboard/build.gradle.kts new file mode 100644 index 00000000..1ec675f8 --- /dev/null +++ b/examples/leaderboard/build.gradle.kts @@ -0,0 +1,64 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * This generated file contains a sample Java library project to get you started. + * For more details take a look at the 'Building Java & JVM projects' chapter in the Gradle + * User Manual available at https://docs.gradle.org/7.2/userguide/building_java_projects.html + */ + +plugins { + application + id("com.diffplug.spotless") version "5.15.1" +} + +repositories { + // Use Maven Central for resolving dependencies. + mavenCentral() +} + +dependencies { + implementation("software.momento.java:sdk:1.19.0") + + // Logging framework to log and enable logging in the Momento client. + implementation("ch.qos.logback:logback-classic:1.4.7") + + // Use JUnit Jupiter for testing. + testImplementation("org.junit.jupiter:junit-jupiter:5.9.2") +} + +spotless { + java { + removeUnusedImports() + googleJavaFormat("1.11.0") + } +} + +tasks.test { + // Use JUnit Platform for unit tests. + useJUnitPlatform() +} + +task("basic", JavaExec::class) { + description = "Run the basic example" + classpath = sourceSets.main.get().runtimeClasspath + mainClass.set("momento.client.example.BasicExample") +} + +task("docExamples", JavaExec::class) { + description = "Validate that the API doc examples run" + classpath = sourceSets.main.get().runtimeClasspath + mainClass.set("momento.client.example.doc_examples.DocExamplesJavaAPIs") +} + +task("docCheatSheet", JavaExec::class) { + description = "Validate that the doc cheat sheet runs" + classpath = sourceSets.main.get().runtimeClasspath + mainClass.set("momento.client.example.doc_examples.CheatSheet") +} + +task("docsTasks") { + dependsOn("docCheatSheet") + dependsOn("docExamples") +} + +task("prepareKotlinBuildScriptModel") {} diff --git a/examples/leaderboard/src/main/java/momento/client/example/BasicExample.java b/examples/leaderboard/src/main/java/momento/client/example/BasicExample.java new file mode 100644 index 00000000..782c8572 --- /dev/null +++ b/examples/leaderboard/src/main/java/momento/client/example/BasicExample.java @@ -0,0 +1,87 @@ +package momento.client.example; + +import java.time.Duration; +import java.util.HashMap; +import java.util.Map; +import momento.sdk.CacheClient; +import momento.sdk.ILeaderboard; +import momento.sdk.LeaderboardClient; +import momento.sdk.auth.CredentialProvider; +import momento.sdk.auth.EnvVarCredentialProvider; +import momento.sdk.config.Configurations; +import momento.sdk.config.LeaderboardConfigurations; +import momento.sdk.responses.SortOrder; +import momento.sdk.responses.leaderboard.DeleteResponse; +import momento.sdk.responses.leaderboard.FetchResponse; +import momento.sdk.responses.leaderboard.LeaderboardElement; +import momento.sdk.responses.leaderboard.UpsertResponse; + +public class BasicExample { + private static final String API_KEY_ENV_VAR = "MOMENTO_API_KEY"; + private static final Duration DEFAULT_ITEM_TTL = Duration.ofSeconds(60); + + private static final String CACHE_NAME = "cache"; + private static final String LEADERBOARD_NAME = "leaderboard"; + + public static void main(String[] args) { + final CredentialProvider credentialProvider = new EnvVarCredentialProvider(API_KEY_ENV_VAR); + + try (final CacheClient cacheClient = + CacheClient.create( + credentialProvider, Configurations.Laptop.latest(), DEFAULT_ITEM_TTL); + final LeaderboardClient leaderboardClient = + LeaderboardClient.builder(credentialProvider, LeaderboardConfigurations.Laptop.latest()) + .build()) { + + cacheClient.createCache(CACHE_NAME).join(); + + final ILeaderboard leaderboard = leaderboardClient.leaderboard(CACHE_NAME, LEADERBOARD_NAME); + + final Map elements = new HashMap<>(); + elements.put(1, 1.0); + elements.put(2, 2.0); + elements.put(3, 3.0); + + UpsertResponse upsertResponse = leaderboard.upsert(elements).join(); + if (upsertResponse instanceof UpsertResponse.Error error) { + System.out.println("Error during upsert: " + error.getMessage()); + } + + System.out.println("First two elements by rank ascending:"); + final FetchResponse byRankResponse = + leaderboard.fetchByRank(0, 2, SortOrder.ASCENDING).join(); + if (byRankResponse instanceof FetchResponse.Success success) { + for (LeaderboardElement element : success.elementsList()) { + System.out.printf( + "Rank: %d, ID: %d, Score: %.2f%n", + element.getRank(), element.getId(), element.getScore()); + } + } else if (byRankResponse instanceof FetchResponse.Error error) { + System.out.println("Error during fetch: " + error.getMessage()); + } + + upsertResponse = leaderboard.upsert(Map.of(3, 5.0, 4, 6.0)).join(); + if (upsertResponse instanceof UpsertResponse.Error error) { + System.out.println("Error during upsert: " + error.getMessage()); + } + + System.out.println("Elements by score descending:"); + final FetchResponse byScoreResponse = + leaderboard.fetchByScore(1.0, 5.1, SortOrder.DESCENDING).join(); + if (byScoreResponse instanceof FetchResponse.Success success) { + for (LeaderboardElement element : success.elementsList()) { + System.out.printf( + "Rank: %d, ID: %d, Score: %.2f%n", + element.getRank(), element.getId(), element.getScore()); + } + } else if (byScoreResponse instanceof FetchResponse.Error error) { + System.out.println("Error during fetch: " + error.getMessage()); + } + + final DeleteResponse deleteResponse = leaderboard.delete().join(); + if (deleteResponse instanceof DeleteResponse.Error error) { + System.out.println("Error during delete: " + error.getMessage()); + } + } + } +} diff --git a/examples/leaderboard/src/main/java/momento/client/example/doc_examples/CheatSheet.java b/examples/leaderboard/src/main/java/momento/client/example/doc_examples/CheatSheet.java new file mode 100644 index 00000000..76db1d05 --- /dev/null +++ b/examples/leaderboard/src/main/java/momento/client/example/doc_examples/CheatSheet.java @@ -0,0 +1,17 @@ +package momento.client.example.doc_examples; + +import momento.sdk.LeaderboardClient; +import momento.sdk.auth.CredentialProvider; +import momento.sdk.config.LeaderboardConfigurations; + +public class CheatSheet { + public static void main(String[] args) { + try (final LeaderboardClient leaderboardClient = + LeaderboardClient.builder( + CredentialProvider.fromEnvVar("MOMENTO_API_KEY"), + LeaderboardConfigurations.Laptop.latest()) + .build()) { + // ... + } + } +} diff --git a/examples/leaderboard/src/main/java/momento/client/example/doc_examples/DocExamplesJavaAPIs.java b/examples/leaderboard/src/main/java/momento/client/example/doc_examples/DocExamplesJavaAPIs.java new file mode 100644 index 00000000..b1610d78 --- /dev/null +++ b/examples/leaderboard/src/main/java/momento/client/example/doc_examples/DocExamplesJavaAPIs.java @@ -0,0 +1,271 @@ +package momento.client.example.doc_examples; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ThreadLocalRandom; +import java.util.stream.Collectors; +import java.util.stream.IntStream; +import momento.sdk.ILeaderboard; +import momento.sdk.LeaderboardClient; +import momento.sdk.auth.CredentialProvider; +import momento.sdk.config.LeaderboardConfigurations; +import momento.sdk.exceptions.InvalidArgumentException; +import momento.sdk.responses.SortOrder; +import momento.sdk.responses.leaderboard.FetchResponse; +import momento.sdk.responses.leaderboard.LeaderboardElement; +import momento.sdk.responses.leaderboard.LengthResponse; +import momento.sdk.responses.leaderboard.RemoveElementsResponse; +import momento.sdk.responses.leaderboard.UpsertResponse; +import momento.sdk.responses.storage.DeleteResponse; + +public class DocExamplesJavaAPIs { + + @SuppressWarnings("EmptyTryBlock") + public static void example_API_InstantiateLeaderboardClient() { + try (final LeaderboardClient leaderboardClient = + LeaderboardClient.builder( + CredentialProvider.fromEnvVar("MOMENTO_API_KEY"), + LeaderboardConfigurations.Laptop.latest()) + .build()) { + // ... + } + } + + public static void example_API_CreateLeaderboard( + LeaderboardClient leaderboardClient, String cacheName, String leaderboardName) { + final ILeaderboard leaderboard; + try { + leaderboard = leaderboardClient.leaderboard(cacheName, leaderboardName); + } catch (InvalidArgumentException e) { + throw new RuntimeException( + "Cache name '" + + cacheName + + "' or leaderboard name '" + + leaderboardName + + "' is invalid.", + e); + } + } + + public static void example_API_LeaderboardUpsert(ILeaderboard leaderboard) { + final Map elements = + Map.of( + 123, 100.0, + 456, 200.0, + 789, 300.0); + final UpsertResponse response = leaderboard.upsert(elements).join(); + if (response instanceof UpsertResponse.Success) { + System.out.println("Successfully upserted elements."); + } else if (response instanceof UpsertResponse.Error error) { + throw new RuntimeException( + "An error occurred while attempting to call upsert elements into a leaderboard: " + + error.getErrorCode(), + error); + } + } + + public static void example_API_LeaderboardUpsertPagination( + ILeaderboard leaderboard, int totalNumElements) { + final Map elements = + IntStream.range(0, totalNumElements) + .boxed() + .collect( + Collectors.toMap(i -> i + 1, i -> i * ThreadLocalRandom.current().nextDouble())); + + for (long i = 0; i < elements.size(); i += 8192) { + final Map batch = + elements.entrySet().stream() + .skip(i) + .limit(8192) + .collect( + Collectors.toMap( + Map.Entry::getKey, Map.Entry::getValue, (v1, v2) -> v1, HashMap::new)); + + final UpsertResponse response = leaderboard.upsert(batch).join(); + if (response instanceof UpsertResponse.Success) { + System.out.printf("Successfully upserted batch of %d elements%n", batch.size()); + } else if (response instanceof UpsertResponse.Error error) { + throw new RuntimeException( + "An error occurred while upserting a batch of elements: " + error.getErrorCode(), + error); + } + } + } + + public static void example_API_LeaderboardFetchByScore(ILeaderboard leaderboard) { + // By default, FetchByScore will fetch the elements from the entire score range + // with zero offset in ascending order. It can return 8192 elements at a time. + FetchResponse response = leaderboard.fetchByScore().join(); + if (response instanceof FetchResponse.Success success) { + System.out.println("Successfully fetched elements:"); + for (LeaderboardElement element : success.values()) { + System.out.printf( + "id: %d, score: %.2f, rank: %d%n", + element.getId(), element.getScore(), element.getRank()); + } + } else if (response instanceof FetchResponse.Error error) { + throw new RuntimeException( + "An error occurred while attempting to fetch elements: " + error.getErrorCode(), error); + } + + // Example specifying all FetchByScore options. You can provide any subset of these options + // to modify your FetchByScore request. + response = leaderboard.fetchByScore(1.0, 5.0, SortOrder.DESCENDING, 10, 10).join(); + if (response instanceof FetchResponse.Success success) { + System.out.println("Successfully fetched elements:"); + for (LeaderboardElement element : success.values()) { + System.out.printf( + "id: %d, score: %.2f, rank: %d%n", + element.getId(), element.getScore(), element.getRank()); + } + } else if (response instanceof FetchResponse.Error error) { + throw new RuntimeException( + "An error occurred while attempting to fetch elements: " + error.getErrorCode(), error); + } + } + + public static void example_API_LeaderboardFetchByScorePagination( + ILeaderboard leaderboard, int totalNumElements) { + for (int offset = 0; offset < totalNumElements; offset += 8192) { + final FetchResponse response = + leaderboard.fetchByScore(null, null, null, offset, null).join(); + if (response instanceof FetchResponse.Success success) { + System.out.println("Successfully fetched elements:"); + for (LeaderboardElement element : success.values()) { + System.out.printf( + "id: %d, score: %.2f, rank: %d%n", + element.getId(), element.getScore(), element.getRank()); + } + } else if (response instanceof FetchResponse.Error error) { + throw new RuntimeException( + "An error occurred while attempting to fetch elements: " + error.getErrorCode(), error); + } + } + } + + public static void example_API_LeaderboardFetchByRank(ILeaderboard leaderboard) { + final FetchResponse response = leaderboard.fetchByRank(0, 10, SortOrder.ASCENDING).join(); + if (response instanceof FetchResponse.Success success) { + System.out.println("Successfully fetched elements:"); + for (LeaderboardElement element : success.values()) { + System.out.printf( + "id: %d, score: %.2f, rank: %d%n", + element.getId(), element.getScore(), element.getRank()); + } + } else if (response instanceof FetchResponse.Error error) { + throw new RuntimeException( + "An error occurred while attempting to fetch elements: " + error.getErrorCode(), error); + } + } + + public static void example_API_LeaderboardFetchByRankPagination( + ILeaderboard leaderboard, int totalNumElements) { + for (int rank = 0; rank < totalNumElements; rank += 8192) { + final FetchResponse response = + leaderboard.fetchByRank(rank, rank + 8192, SortOrder.ASCENDING).join(); + if (response instanceof FetchResponse.Success success) { + System.out.println("Successfully fetched elements:"); + for (LeaderboardElement element : success.values()) { + System.out.printf( + "id: %d, score: %.2f, rank: %d%n", + element.getId(), element.getScore(), element.getRank()); + } + } else if (response instanceof FetchResponse.Error error) { + throw new RuntimeException( + "An error occurred while attempting to fetch elements: " + error.getErrorCode(), error); + } + } + } + + public static void example_API_LeaderboardGetRank(ILeaderboard leaderboard) { + final Set ids = Set.of(123, 456, 789); + final FetchResponse response = leaderboard.getRank(ids, SortOrder.ASCENDING).join(); + if (response instanceof FetchResponse.Success success) { + System.out.println("Successfully fetched elements:"); + for (LeaderboardElement element : success.values()) { + System.out.printf( + "id: %d, score: %.2f, rank: %d%n", + element.getId(), element.getScore(), element.getRank()); + } + } else if (response instanceof FetchResponse.Error error) { + throw new RuntimeException( + "An error occurred while attempting to fetch elements: " + error.getErrorCode(), error); + } + } + + public static void example_API_LeaderboardLength(ILeaderboard leaderboard) { + final LengthResponse response = leaderboard.length().join(); + if (response instanceof LengthResponse.Success success) { + System.out.printf("Leaderboard length: %d%n", success.length()); + } else if (response instanceof LengthResponse.Error error) { + throw new RuntimeException( + "An error occurred while attempting to get the length of a leaderboard: " + + error.getErrorCode(), + error); + } + } + + public static void example_API_LeaderboardRemoveElements(ILeaderboard leaderboard) { + final Set ids = Set.of(123, 456, 789); + final RemoveElementsResponse response = leaderboard.removeElements(ids).join(); + if (response instanceof RemoveElementsResponse.Success) { + System.out.println("Successfully removed elements."); + } else if (response instanceof RemoveElementsResponse.Error error) { + throw new RuntimeException( + "An error occurred while attempting to remove elements: " + error.getErrorCode(), error); + } + } + + @SuppressWarnings("ConstantValue") + public static void example_API_LeaderboardRemoveElementsPagination(ILeaderboard leaderboard) { + final List ids = List.of(/* your ids */ ); + for (int i = 0; i < ids.size(); i += 8192) { + final List idsSublist = ids.subList(i, Math.min(i + 8192, ids.size())); + final RemoveElementsResponse response = leaderboard.removeElements(idsSublist).join(); + if (response instanceof RemoveElementsResponse.Success) { + System.out.println("Successfully removed elements."); + } else if (response instanceof RemoveElementsResponse.Error error) { + throw new RuntimeException( + "An error occurred while attempting to remove elements: " + error.getErrorCode(), + error); + } + } + } + + public static void example_API_LeaderboardDelete(ILeaderboard leaderboard) { + final momento.sdk.responses.leaderboard.DeleteResponse response = leaderboard.delete().join(); + if (response instanceof DeleteResponse.Success) { + System.out.println("Successfully deleted leaderboard."); + } else if (response instanceof DeleteResponse.Error error) { + throw new RuntimeException( + "An error occurred while attempting to delete the leaderboard: " + error.getErrorCode(), + error); + } + } + + public static void main(String[] args) { + try (final LeaderboardClient leaderboardClient = + LeaderboardClient.builder( + CredentialProvider.fromEnvVar("MOMENTO_API_KEY"), + LeaderboardConfigurations.Laptop.latest()) + .build()) { + example_API_InstantiateLeaderboardClient(); + example_API_CreateLeaderboard(leaderboardClient, "test-cache", "leaderboard"); + + final ILeaderboard leaderboard = leaderboardClient.leaderboard("test-cache", "leaderboard"); + example_API_LeaderboardUpsert(leaderboard); + example_API_LeaderboardUpsertPagination(leaderboard, 2); + example_API_LeaderboardFetchByScore(leaderboard); + example_API_LeaderboardFetchByScorePagination(leaderboard, 2); + example_API_LeaderboardFetchByRank(leaderboard); + example_API_LeaderboardFetchByRankPagination(leaderboard, 2); + example_API_LeaderboardGetRank(leaderboard); + example_API_LeaderboardLength(leaderboard); + example_API_LeaderboardRemoveElements(leaderboard); + example_API_LeaderboardRemoveElementsPagination(leaderboard); + example_API_LeaderboardDelete(leaderboard); + } + } +} diff --git a/examples/leaderboard/src/main/resources/logback.xml b/examples/leaderboard/src/main/resources/logback.xml new file mode 100644 index 00000000..29d89338 --- /dev/null +++ b/examples/leaderboard/src/main/resources/logback.xml @@ -0,0 +1,17 @@ + + + + + + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%kvp- %msg%n + + + + + + + diff --git a/examples/settings.gradle.kts b/examples/settings.gradle.kts index 35d139af..fa763050 100644 --- a/examples/settings.gradle.kts +++ b/examples/settings.gradle.kts @@ -26,3 +26,4 @@ include("lambda:docker") include("token") include("topic") include("storage") +include("leaderboard") diff --git a/examples/storage/build.gradle.kts b/examples/storage/build.gradle.kts index 8020702c..1ec675f8 100644 --- a/examples/storage/build.gradle.kts +++ b/examples/storage/build.gradle.kts @@ -17,7 +17,7 @@ repositories { } dependencies { - implementation("software.momento.java:sdk:1.18.0") + implementation("software.momento.java:sdk:1.19.0") // Logging framework to log and enable logging in the Momento client. implementation("ch.qos.logback:logback-classic:1.4.7") diff --git a/examples/token/build.gradle.kts b/examples/token/build.gradle.kts index 992427fa..9a0f4aaa 100644 --- a/examples/token/build.gradle.kts +++ b/examples/token/build.gradle.kts @@ -17,7 +17,7 @@ repositories { } dependencies { - implementation("software.momento.java:sdk:1.18.0") + implementation("software.momento.java:sdk:1.19.0") implementation("com.google.guava:guava:31.1-android") diff --git a/examples/topic/build.gradle.kts b/examples/topic/build.gradle.kts index fd78bfd6..585cbc38 100644 --- a/examples/topic/build.gradle.kts +++ b/examples/topic/build.gradle.kts @@ -17,7 +17,7 @@ repositories { } dependencies { - implementation("software.momento.java:sdk:1.18.0") + implementation("software.momento.java:sdk:1.19.0") implementation("com.google.guava:guava:31.1-android")