From 4e3f021ec3769c65b2f3e93fbed89ef6f952da2b Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Wed, 22 Mar 2023 04:04:22 -0700 Subject: [PATCH] Minimized calls to getDefaultValue --- lib/src/main/java/rife/render/Abbreviate.java | 5 +++-- .../main/java/rife/render/DateTimeIso.java | 5 +++-- lib/src/main/java/rife/render/Mask.java | 5 +++-- lib/src/main/java/rife/render/QrCode.java | 5 +++-- .../main/java/rife/render/RenderUtils.java | 20 ++++++++++++------- lib/src/main/java/rife/render/Uptime.java | 6 +++--- settings.gradle.kts | 12 +++-------- 7 files changed, 31 insertions(+), 27 deletions(-) diff --git a/lib/src/main/java/rife/render/Abbreviate.java b/lib/src/main/java/rife/render/Abbreviate.java index 41c10b9..cfe679a 100644 --- a/lib/src/main/java/rife/render/Abbreviate.java +++ b/lib/src/main/java/rife/render/Abbreviate.java @@ -46,10 +46,11 @@ public class Abbreviate implements ValueRenderer { public String render(Template template, String valueId, String differentiator) { var mark = "..."; var max = -1; - if (template.hasDefaultValue(valueId)) { + var defaultValue = template.getDefaultValue(valueId); + if (defaultValue != null) { var properties = new Properties(); try { - properties.load(new StringReader(template.getDefaultValue(valueId))); + properties.load(new StringReader(defaultValue)); mark = properties.getProperty("mark", mark); max = Integer.parseInt(properties.getProperty("max", String.valueOf(max))); } catch (IOException | NumberFormatException ignore) { diff --git a/lib/src/main/java/rife/render/DateTimeIso.java b/lib/src/main/java/rife/render/DateTimeIso.java index 781fc0b..683abb7 100644 --- a/lib/src/main/java/rife/render/DateTimeIso.java +++ b/lib/src/main/java/rife/render/DateTimeIso.java @@ -46,11 +46,12 @@ public class DateTimeIso implements ValueRenderer { */ @Override public String render(Template template, String valueId, String differentiator) { - if (template.hasDefaultValue(valueId)) { + var defaultValue = template.getDefaultValue(valueId); + if (defaultValue != null) { var properties = new Properties(); try { var tz = "tz"; - properties.load(new StringReader(template.getDefaultValue(valueId))); + properties.load(new StringReader(defaultValue)); if (properties.containsKey(tz)) { return ZonedDateTime.now().format( RenderUtils.ISO_8601_FORMATTER.withZone(ZoneId.of(properties.getProperty(tz)))); diff --git a/lib/src/main/java/rife/render/Mask.java b/lib/src/main/java/rife/render/Mask.java index b9d8d78..897b415 100644 --- a/lib/src/main/java/rife/render/Mask.java +++ b/lib/src/main/java/rife/render/Mask.java @@ -47,10 +47,11 @@ public class Mask implements ValueRenderer { var mask = "*"; var unmasked = 0; var fromStart = false; - if (template.hasDefaultValue(valueId)) { + var defaultValue = template.getDefaultValue(valueId); + if (defaultValue != null) { var properties = new Properties(); try { - properties.load(new StringReader(template.getDefaultValue(valueId))); + properties.load(new StringReader(defaultValue)); mask = properties.getProperty("mask", mask); unmasked = Integer.parseInt(properties.getProperty("unmasked", "0")); fromStart = "true".equalsIgnoreCase(properties.getProperty("fromStart", "false")); diff --git a/lib/src/main/java/rife/render/QrCode.java b/lib/src/main/java/rife/render/QrCode.java index 96569db..3521992 100644 --- a/lib/src/main/java/rife/render/QrCode.java +++ b/lib/src/main/java/rife/render/QrCode.java @@ -45,10 +45,11 @@ public class QrCode implements ValueRenderer { @Override public String render(Template template, String valueId, String differentiator) { var size = "150x150"; - if (template.hasDefaultValue(valueId)) { + var defaultValue = template.getDefaultValue(valueId); + if (defaultValue != null) { var properties = new Properties(); try { - properties.load(new StringReader(template.getDefaultValue(valueId))); + properties.load(new StringReader(defaultValue)); size = properties.getProperty("size", size); } catch (IOException ignore) { // do nothing diff --git a/lib/src/main/java/rife/render/RenderUtils.java b/lib/src/main/java/rife/render/RenderUtils.java index 5850a0f..d31793c 100644 --- a/lib/src/main/java/rife/render/RenderUtils.java +++ b/lib/src/main/java/rife/render/RenderUtils.java @@ -201,13 +201,17 @@ public final class RenderUtils { var sum = 0; boolean isSecond = false; int digit; + char c; for (int i = len - 1; i >= 0; i--) { - digit = cc.charAt(i) - '0'; - if (isSecond) { - digit = digit * 2; + c = cc.charAt(i); + if (c >= '0' && c <= '9') { + digit = cc.charAt(i) - '0'; + if (isSecond) { + digit = digit * 2; + } + sum += digit / 10; + sum += digit % 10; } - sum += digit / 10; - sum += digit % 10; isSecond = !isSecond; } @@ -339,8 +343,10 @@ public final class RenderUtils { if (src == null || src.isBlank()) { return src; } - return fetchUrl(String.format("https://api.qrserver.com/v1/create-qr-code/?format=svg&size=%s&data=%s", size, - StringUtils.encodeUrl(src.trim())), src); + return fetchUrl(String.format("https://api.qrserver.com/v1/create-qr-code/?format=svg&size=%s&data=%s", + StringUtils.encodeUrl(size), + StringUtils.encodeUrl(src.trim())), + src); } /** diff --git a/lib/src/main/java/rife/render/Uptime.java b/lib/src/main/java/rife/render/Uptime.java index 1e62a90..06b1371 100644 --- a/lib/src/main/java/rife/render/Uptime.java +++ b/lib/src/main/java/rife/render/Uptime.java @@ -46,10 +46,10 @@ public class Uptime implements ValueRenderer { @Override public String render(Template template, String valueId, String differentiator) { var properties = new Properties(); - - if (template.hasDefaultValue(valueId)) { + var defaultValue = template.getDefaultValue(valueId); + if (defaultValue != null) { try { - properties.load(new StringReader(template.getDefaultValue(valueId))); + properties.load(new StringReader(defaultValue)); } catch (IOException ignore) { // ignore } diff --git a/settings.gradle.kts b/settings.gradle.kts index 64085ec..8b1c4c2 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,12 +1,6 @@ -/* - * This file was generated by the Gradle 'init' task. - * - * The settings file is used to specify which projects to include in your build. - * - * Detailed information about configuring a multi-project build in Gradle can be found - * in the user manual at https://docs.gradle.org/8.0.2/userguide/multi_project_builds.html - * This project uses @Incubating APIs which are subject to change. - */ +plugins { + id("com.gradle.enterprise") version "3.12.5" +} rootProject.name = "rife2-template-renderers" include("lib")