From 788f1e7a1edfd7623ad4d22b32edae5a04650733 Mon Sep 17 00:00:00 2001 From: javaquery Date: Mon, 20 Jan 2025 15:41:52 +0530 Subject: [PATCH] release: 1.2.7 - JList, JSet added - Bugfix: meta init for ExecutionContext - library upgrade --- README.md | 4 ++-- build.gradle | 13 +++++----- .../com/javaquery/util/ExecutionContext.java | 5 ++++ src/main/java/com/javaquery/util/Is.java | 12 ++++++++++ .../com/javaquery/util/collection/JList.java | 16 +++++++++++++ .../com/javaquery/util/collection/JSet.java | 15 ++++++++++++ .../com/javaquery/util/number/Numbers.java | 6 ++--- .../javaquery/util/TestExecutionContext.java | 13 ++++++++++ .../javaquery/util/collection/TestJList.java | 24 +++++++++++++++++++ .../javaquery/util/collection/TestJSet.java | 24 +++++++++++++++++++ 10 files changed, 121 insertions(+), 11 deletions(-) create mode 100644 src/main/java/com/javaquery/util/collection/JList.java create mode 100644 src/main/java/com/javaquery/util/collection/JSet.java create mode 100644 src/test/java/com/javaquery/util/collection/TestJList.java create mode 100644 src/test/java/com/javaquery/util/collection/TestJSet.java diff --git a/README.md b/README.md index 957f8f1..cb95e5b 100644 --- a/README.md +++ b/README.md @@ -49,12 +49,12 @@ framework and objects. com.javaquery util - 1.2.6 + 1.2.7 ``` # Gradle ``` -implementation 'com.javaquery:util:1.2.6' +implementation 'com.javaquery:util:1.2.7' ``` diff --git a/build.gradle b/build.gradle index 582e4c0..7d50265 100644 --- a/build.gradle +++ b/build.gradle @@ -5,22 +5,23 @@ plugins { } sourceCompatibility = 1.8 +targetCompatibility = 1.8 group 'com.javaquery' archivesBaseName = 'util' -version '1.2.6' +version '1.2.7' repositories { mavenCentral() } dependencies { - implementation('org.slf4j:slf4j-api:2.0.11') - implementation('org.json:json:20231013') - implementation group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: '2.16.1' + implementation 'org.slf4j:slf4j-api:2.0.16' + implementation 'org.json:json:20250107' + implementation group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: '2.18.2' testImplementation 'net.logstash.logback:logstash-logback-encoder:7.4' - testImplementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.3.14' - testImplementation('org.junit.jupiter:junit-jupiter:5.7.0') + testImplementation 'ch.qos.logback:logback-classic:1.3.15' + testImplementation 'org.junit.jupiter:junit-jupiter:5.11.4' } test { diff --git a/src/main/java/com/javaquery/util/ExecutionContext.java b/src/main/java/com/javaquery/util/ExecutionContext.java index cb32032..1cf6ebc 100644 --- a/src/main/java/com/javaquery/util/ExecutionContext.java +++ b/src/main/java/com/javaquery/util/ExecutionContext.java @@ -42,6 +42,7 @@ public class ExecutionContext { public ExecutionContext() { this.createdAt = Dates.current(); + this.meta = new HashMap<>(); } public ExecutionContext(String requestId){ @@ -123,6 +124,10 @@ public Object getMeta(String key, Object defaultValue){ return meta.getOrDefault(key, defaultValue); } + public String optString(String key, String defaultValue){ + return String.valueOf(getMeta(key, defaultValue)); + } + public void addMeta(String key, Object value){ this.meta.put(key, value); } diff --git a/src/main/java/com/javaquery/util/Is.java b/src/main/java/com/javaquery/util/Is.java index d789b92..f011156 100644 --- a/src/main/java/com/javaquery/util/Is.java +++ b/src/main/java/com/javaquery/util/Is.java @@ -47,6 +47,18 @@ public static boolean nonNull(Object obj) { return Objects.nonNull(obj); } + /** + * Execute code if the provided reference is non-{@code null}. + * + * @param obj a reference to be checked against {@code null} + * @param executableFunction lambda function given executed if the provided reference is non-{@code null}. + */ + public static void nonNull(Object obj, ExecutableFunction executableFunction){ + if(nonNull(obj)){ + executableFunction.execute(); + } + } + /** * Returns {@code true} if the provided String is {@code null} or empty otherwise returns {@code * false}. diff --git a/src/main/java/com/javaquery/util/collection/JList.java b/src/main/java/com/javaquery/util/collection/JList.java new file mode 100644 index 0000000..ed0f7e5 --- /dev/null +++ b/src/main/java/com/javaquery/util/collection/JList.java @@ -0,0 +1,16 @@ +package com.javaquery.util.collection; + +import java.util.Arrays; +import java.util.List; + +/** + * @author javaquery + * @since 1.2.7 + */ +public class JList { + + @SafeVarargs + public static List of(E... elements) { + return Arrays.asList(elements); + } +} diff --git a/src/main/java/com/javaquery/util/collection/JSet.java b/src/main/java/com/javaquery/util/collection/JSet.java new file mode 100644 index 0000000..b8850af --- /dev/null +++ b/src/main/java/com/javaquery/util/collection/JSet.java @@ -0,0 +1,15 @@ +package com.javaquery.util.collection; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** + * @author javaquery + * @since 1.2.7 + */ +public class JSet { + public static Set of(E... elements) { + return new HashSet<>(Arrays.asList(elements)); + } +} diff --git a/src/main/java/com/javaquery/util/number/Numbers.java b/src/main/java/com/javaquery/util/number/Numbers.java index 7cf6245..2eb634a 100644 --- a/src/main/java/com/javaquery/util/number/Numbers.java +++ b/src/main/java/com/javaquery/util/number/Numbers.java @@ -11,9 +11,9 @@ public class Numbers { /** * Round the decimal number. - * example: roundDecimal(10.123456789, 2) => 10.12 - * example: roundDecimal(10.123456789, 4) => 10.1235 - * example: roundDecimal(10.576, 2) => 10.58 + * example: roundDecimal(10.123456789, 2) = 10.12 + * example: roundDecimal(10.123456789, 4) = 10.1235 + * example: roundDecimal(10.576, 2) = 10.58 * * @param number number to round * @param decimalPlaces decimal places to round diff --git a/src/test/java/com/javaquery/util/TestExecutionContext.java b/src/test/java/com/javaquery/util/TestExecutionContext.java index 34fb60e..327fac5 100644 --- a/src/test/java/com/javaquery/util/TestExecutionContext.java +++ b/src/test/java/com/javaquery/util/TestExecutionContext.java @@ -45,6 +45,7 @@ public void defaultConstructor(){ executionContext.setRequestId(UniqueIdGenerator.generate()); UserContext userContext = (UserContext) executionContext.getUserContext(); + assertNotNull(executionContext.getMeta()); assertEquals(50L, userContext.getUserId()); assertNotNull(executionContext.getCreatedAt()); assertNotNull(executionContext.getRequestId()); @@ -102,6 +103,7 @@ public void constructorWithActionAndMeta(){ assertEquals(ExecutionContextAction.ONE, executionContext.getAction()); assertNull(executionContext.getReferenceId()); assertEquals("value", executionContext.getMeta("key", null)); + assertEquals("not found", executionContext.optString("key2", "not found")); assertNotNull(executionContext.getCreatedAt()); /* set meta */ @@ -142,4 +144,15 @@ public void constructorWithActionMaxRetries(){ assertNotNull(executionContext.getMeta()); assertNotNull(executionContext.getCreatedAt()); } + + @Test + public void metaDataTest(){ + ExecutionContext executionContext = new ExecutionContext<>(); + executionContext.addMeta("key", "value"); + assertEquals("value", executionContext.getMeta("key", null)); + assertEquals("value", executionContext.optString("key", null)); + assertEquals("not found", executionContext.optString("key2", "not found")); + executionContext.addMeta("key", "value2"); + assertEquals("value2", executionContext.getMeta("key", null)); + } } diff --git a/src/test/java/com/javaquery/util/collection/TestJList.java b/src/test/java/com/javaquery/util/collection/TestJList.java new file mode 100644 index 0000000..9958111 --- /dev/null +++ b/src/test/java/com/javaquery/util/collection/TestJList.java @@ -0,0 +1,24 @@ +package com.javaquery.util.collection; + +import org.junit.jupiter.api.Test; + +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +/** + * @author javaquery + * @since 2025-01-20 + */ +public class TestJList { + + @Test + public void test_of(){ + List list = JList.of("a", "b", "c"); + assertEquals(3, list.size()); + assertTrue(list.contains("a")); + assertTrue(list.contains("b")); + assertTrue(list.contains("c")); + } +} diff --git a/src/test/java/com/javaquery/util/collection/TestJSet.java b/src/test/java/com/javaquery/util/collection/TestJSet.java new file mode 100644 index 0000000..f0a2aec --- /dev/null +++ b/src/test/java/com/javaquery/util/collection/TestJSet.java @@ -0,0 +1,24 @@ +package com.javaquery.util.collection; + +import org.junit.jupiter.api.Test; + +import java.util.Set; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +/** + * @author javaquery + * @since 2025-01-20 + */ +public class TestJSet { + + @Test + public void test_of(){ + Set set = JSet.of("a", "b", "c"); + assertEquals(3, set.size()); + assertTrue(set.contains("a")); + assertTrue(set.contains("b")); + assertTrue(set.contains("c")); + } +}