From 9815b48e554ef53dda828bb90d693e33d3dd1167 Mon Sep 17 00:00:00 2001 From: artem-v Date: Wed, 19 Nov 2025 07:26:23 +0200 Subject: [PATCH 1/2] WIP --- .../scalecube/metrics/PropertiesRegistry.java | 53 ++++++++----------- .../metrics/PropertiesRegistryTest.java | 31 ++--------- 2 files changed, 25 insertions(+), 59 deletions(-) diff --git a/metrics/src/main/java/io/scalecube/metrics/PropertiesRegistry.java b/metrics/src/main/java/io/scalecube/metrics/PropertiesRegistry.java index 1dfb3b7..2cd3d12 100644 --- a/metrics/src/main/java/io/scalecube/metrics/PropertiesRegistry.java +++ b/metrics/src/main/java/io/scalecube/metrics/PropertiesRegistry.java @@ -61,28 +61,6 @@ public void put(String name, Object value) { }); } - /** - * Retrieves {@link Byte} property. - * - * @param countersReader countersReader - * @param name property name - * @return property value, or {@code null} if not found - */ - public static Byte getByteProperty(CountersReader countersReader, String name) { - return getProperty(countersReader, name, Byte::parseByte); - } - - /** - * Retrieves {@link Short} property. - * - * @param countersReader countersReader - * @param name property name - * @return property value, or {@code null} if not found - */ - public static Short getShortProperty(CountersReader countersReader, String name) { - return getProperty(countersReader, name, Short::parseShort); - } - /** * Retrieves {@link Integer} property. * @@ -106,26 +84,26 @@ public static Long getLongProperty(CountersReader countersReader, String name) { } /** - * Retrieves {@link Double} property. + * Retrieves enum property. * * @param countersReader countersReader * @param name property name * @return property value, or {@code null} if not found */ - public static Double getDoubleProperty(CountersReader countersReader, String name) { - return getProperty(countersReader, name, Double::parseDouble); + public static > T getEnumProperty( + CountersReader countersReader, String name, Function enumFunc) { + return getProperty(countersReader, name, enumFunc); } /** - * Retrieves enum property. + * Retrieves {@link Boolean} property. * * @param countersReader countersReader * @param name property name * @return property value, or {@code null} if not found */ - public static > T getEnumProperty( - CountersReader countersReader, String name, Function enumFunc) { - return getProperty(countersReader, name, enumFunc); + public static Boolean getBooleanProperty(CountersReader countersReader, String name) { + return getProperty(countersReader, name, Boolean::parseBoolean); } /** @@ -151,7 +129,15 @@ public static String getProperty(CountersReader countersReader, String name) { public static T getProperty( CountersReader countersReader, String name, Function converter) { final var counter = CounterDescriptor.findFirstCounter(countersReader, byPropertyName(name)); - return counter != null ? converter.apply(counter.label().split("=")[1]) : null; + if (counter == null) { + return null; + } + final var label = counter.label(); + final var equalsIndex = label.indexOf('='); + if (equalsIndex == -1) { + return null; // malformed label + } + return converter.apply(label.substring(equalsIndex + 1)); } /** @@ -162,6 +148,11 @@ public static T getProperty( */ public static Predicate byPropertyName(String name) { return byType(PropertiesRegistry.PROPERTY_COUNTER_TYPE_ID) - .and(descriptor -> name.equals(descriptor.label().split("=")[0])); + .and( + descriptor -> { + final var label = descriptor.label(); + final var equalsIndex = label.indexOf('='); + return equalsIndex != -1 && name.equals(label.substring(0, equalsIndex)); + }); } } diff --git a/metrics/src/test/java/io/scalecube/metrics/PropertiesRegistryTest.java b/metrics/src/test/java/io/scalecube/metrics/PropertiesRegistryTest.java index c3b94f8..db3d708 100644 --- a/metrics/src/test/java/io/scalecube/metrics/PropertiesRegistryTest.java +++ b/metrics/src/test/java/io/scalecube/metrics/PropertiesRegistryTest.java @@ -36,22 +36,6 @@ void stringProperty() { assertEquals(value.toString(), PropertiesRegistry.getProperty(countersManager, name)); } - @Test - void byteProperty() { - final String name = "byte_property"; - byte value = 42; - propertiesRegistry.put(name, value); - assertEquals(Byte.valueOf(value), PropertiesRegistry.getByteProperty(countersManager, name)); - } - - @Test - void shortProperty() { - final String name = "short_property"; - short value = 12345; - propertiesRegistry.put(name, value); - assertEquals(Short.valueOf(value), PropertiesRegistry.getShortProperty(countersManager, name)); - } - @Test void intProperty() { final String name = "int_property"; @@ -68,15 +52,6 @@ void longProperty() { assertEquals(Long.valueOf(value), PropertiesRegistry.getLongProperty(countersManager, name)); } - @Test - void doubleProperty() { - final String name = "double_property"; - double value = 3.14159; - propertiesRegistry.put(name, value); - assertEquals( - Double.valueOf(value), PropertiesRegistry.getDoubleProperty(countersManager, name)); - } - @Test void enumProperty() { final String name = "enum_property"; @@ -90,11 +65,11 @@ void enumProperty() { @Test void unknownPropertyReturnsNull() { assertNull(PropertiesRegistry.getProperty(countersManager, "nonexistent")); - assertNull(PropertiesRegistry.getByteProperty(countersManager, "nonexistent")); - assertNull(PropertiesRegistry.getShortProperty(countersManager, "nonexistent")); + assertNull(PropertiesRegistry.getIntProperty(countersManager, "nonexistent")); + assertNull(PropertiesRegistry.getIntProperty(countersManager, "nonexistent")); assertNull(PropertiesRegistry.getIntProperty(countersManager, "nonexistent")); assertNull(PropertiesRegistry.getLongProperty(countersManager, "nonexistent")); - assertNull(PropertiesRegistry.getDoubleProperty(countersManager, "nonexistent")); + assertNull(PropertiesRegistry.getBooleanProperty(countersManager, "nonexistent")); assertNull( PropertiesRegistry.getEnumProperty(countersManager, "nonexistent", SampleEnum::valueOf)); } From c8ae8711c67527c824df97da0f77e2379b13cc4f Mon Sep 17 00:00:00 2001 From: artem-v Date: Wed, 19 Nov 2025 07:50:27 +0200 Subject: [PATCH 2/2] Cleanup --- .../scalecube/metrics/PropertiesRegistry.java | 36 ++++++++++--------- .../metrics/PropertiesRegistryTest.java | 24 ++++++------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/metrics/src/main/java/io/scalecube/metrics/PropertiesRegistry.java b/metrics/src/main/java/io/scalecube/metrics/PropertiesRegistry.java index 2cd3d12..e08caad 100644 --- a/metrics/src/main/java/io/scalecube/metrics/PropertiesRegistry.java +++ b/metrics/src/main/java/io/scalecube/metrics/PropertiesRegistry.java @@ -66,10 +66,11 @@ public void put(String name, Object value) { * * @param countersReader countersReader * @param name property name - * @return property value, or {@code null} if not found + * @return property value, or {@code null} if not found or malformed, or throws exception if + * unparsable */ - public static Integer getIntProperty(CountersReader countersReader, String name) { - return getProperty(countersReader, name, Integer::parseInt); + public static Integer getInt(CountersReader countersReader, String name) { + return get(countersReader, name, Integer::parseInt); } /** @@ -77,10 +78,11 @@ public static Integer getIntProperty(CountersReader countersReader, String name) * * @param countersReader countersReader * @param name property name - * @return property value, or {@code null} if not found + * @return property value, or {@code null} if not found or malformed, or throws exception if + * unparsable */ - public static Long getLongProperty(CountersReader countersReader, String name) { - return getProperty(countersReader, name, Long::parseLong); + public static Long getLong(CountersReader countersReader, String name) { + return get(countersReader, name, Long::parseLong); } /** @@ -88,11 +90,11 @@ public static Long getLongProperty(CountersReader countersReader, String name) { * * @param countersReader countersReader * @param name property name - * @return property value, or {@code null} if not found + * @return property value, or {@code null} if not found or malformed */ - public static > T getEnumProperty( + public static > T getEnum( CountersReader countersReader, String name, Function enumFunc) { - return getProperty(countersReader, name, enumFunc); + return get(countersReader, name, enumFunc); } /** @@ -100,10 +102,10 @@ public static > T getEnumProperty( * * @param countersReader countersReader * @param name property name - * @return property value, or {@code null} if not found + * @return property value, or {@code null} if not found or malformed */ - public static Boolean getBooleanProperty(CountersReader countersReader, String name) { - return getProperty(countersReader, name, Boolean::parseBoolean); + public static Boolean getBoolean(CountersReader countersReader, String name) { + return get(countersReader, name, Boolean::parseBoolean); } /** @@ -111,10 +113,10 @@ public static Boolean getBooleanProperty(CountersReader countersReader, String n * * @param countersReader countersReader * @param name property name - * @return property value, or {@code null} if not found + * @return property value, or {@code null} if not found or malformed */ - public static String getProperty(CountersReader countersReader, String name) { - return getProperty(countersReader, name, s -> s); + public static String getString(CountersReader countersReader, String name) { + return get(countersReader, name, s -> s); } /** @@ -124,9 +126,9 @@ public static String getProperty(CountersReader countersReader, String name) { * @param name property name * @param converter function to convert string value * @param result type - * @return converted property value, or {@code null} if not found + * @return converted property value, or {@code null} if not found or malformed */ - public static T getProperty( + public static T get( CountersReader countersReader, String name, Function converter) { final var counter = CounterDescriptor.findFirstCounter(countersReader, byPropertyName(name)); if (counter == null) { diff --git a/metrics/src/test/java/io/scalecube/metrics/PropertiesRegistryTest.java b/metrics/src/test/java/io/scalecube/metrics/PropertiesRegistryTest.java index db3d708..4ab6b7a 100644 --- a/metrics/src/test/java/io/scalecube/metrics/PropertiesRegistryTest.java +++ b/metrics/src/test/java/io/scalecube/metrics/PropertiesRegistryTest.java @@ -33,7 +33,7 @@ void stringProperty() { final var value = UUID.randomUUID(); final var name = "string_property"; propertiesRegistry.put(name, value); - assertEquals(value.toString(), PropertiesRegistry.getProperty(countersManager, name)); + assertEquals(value.toString(), PropertiesRegistry.getString(countersManager, name)); } @Test @@ -41,7 +41,7 @@ void intProperty() { final String name = "int_property"; int value = 123456789; propertiesRegistry.put(name, value); - assertEquals(Integer.valueOf(value), PropertiesRegistry.getIntProperty(countersManager, name)); + assertEquals(Integer.valueOf(value), PropertiesRegistry.getInt(countersManager, name)); } @Test @@ -49,7 +49,7 @@ void longProperty() { final String name = "long_property"; long value = 9876543210L; propertiesRegistry.put(name, value); - assertEquals(Long.valueOf(value), PropertiesRegistry.getLongProperty(countersManager, name)); + assertEquals(Long.valueOf(value), PropertiesRegistry.getLong(countersManager, name)); } @Test @@ -57,21 +57,19 @@ void enumProperty() { final String name = "enum_property"; SampleEnum value = SampleEnum.B; propertiesRegistry.put(name, value); - SampleEnum result = - PropertiesRegistry.getEnumProperty(countersManager, name, SampleEnum::valueOf); + SampleEnum result = PropertiesRegistry.getEnum(countersManager, name, SampleEnum::valueOf); assertEquals(value, result); } @Test void unknownPropertyReturnsNull() { - assertNull(PropertiesRegistry.getProperty(countersManager, "nonexistent")); - assertNull(PropertiesRegistry.getIntProperty(countersManager, "nonexistent")); - assertNull(PropertiesRegistry.getIntProperty(countersManager, "nonexistent")); - assertNull(PropertiesRegistry.getIntProperty(countersManager, "nonexistent")); - assertNull(PropertiesRegistry.getLongProperty(countersManager, "nonexistent")); - assertNull(PropertiesRegistry.getBooleanProperty(countersManager, "nonexistent")); - assertNull( - PropertiesRegistry.getEnumProperty(countersManager, "nonexistent", SampleEnum::valueOf)); + assertNull(PropertiesRegistry.getString(countersManager, "nonexistent")); + assertNull(PropertiesRegistry.getInt(countersManager, "nonexistent")); + assertNull(PropertiesRegistry.getInt(countersManager, "nonexistent")); + assertNull(PropertiesRegistry.getInt(countersManager, "nonexistent")); + assertNull(PropertiesRegistry.getLong(countersManager, "nonexistent")); + assertNull(PropertiesRegistry.getBoolean(countersManager, "nonexistent")); + assertNull(PropertiesRegistry.getEnum(countersManager, "nonexistent", SampleEnum::valueOf)); } enum SampleEnum {