From 4bba96677081c6fb6105f65fc6220c770bef48f1 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Sat, 25 Mar 2023 20:49:30 -0700 Subject: [PATCH] Switched to generic properties parsing on more renderers --- lib/src/main/java/rife/render/Abbreviate.java | 15 +++------------ lib/src/main/java/rife/render/DateTimeIso.java | 18 +++++------------- lib/src/main/java/rife/render/Mask.java | 15 +++++---------- lib/src/main/java/rife/render/QrCode.java | 17 ++--------------- lib/src/main/java/rife/render/Uptime.java | 14 +------------- 5 files changed, 16 insertions(+), 63 deletions(-) diff --git a/lib/src/main/java/rife/render/Abbreviate.java b/lib/src/main/java/rife/render/Abbreviate.java index 6944aa4..89f6991 100644 --- a/lib/src/main/java/rife/render/Abbreviate.java +++ b/lib/src/main/java/rife/render/Abbreviate.java @@ -20,10 +20,6 @@ package rife.render; import rife.template.Template; import rife.template.ValueRenderer; -import java.io.IOException; -import java.io.StringReader; -import java.util.Properties; - /** *

Abbreviate a template value with ellipses.

* @@ -48,14 +44,9 @@ public class Abbreviate implements ValueRenderer { var max = -1; var defaultValue = template.getDefaultValue(valueId); if (defaultValue != null) { - var properties = new Properties(); - try { - properties.load(new StringReader(defaultValue)); - mark = properties.getProperty("mark", mark); - max = Integer.parseInt(properties.getProperty("max", String.valueOf(max))); - } catch (IOException | NumberFormatException ignore) { - // do nothing - } + var properties = RenderUtils.parsePropertiesString(defaultValue); + mark = properties.getProperty("mark", mark); + max = Integer.parseInt(properties.getProperty("max", String.valueOf(max))); } return template.getEncoder().encode( diff --git a/lib/src/main/java/rife/render/DateTimeIso.java b/lib/src/main/java/rife/render/DateTimeIso.java index 50ac866..9a8bb63 100644 --- a/lib/src/main/java/rife/render/DateTimeIso.java +++ b/lib/src/main/java/rife/render/DateTimeIso.java @@ -20,11 +20,8 @@ package rife.render; import rife.template.Template; import rife.template.ValueRenderer; -import java.io.IOException; -import java.io.StringReader; import java.time.ZoneId; import java.time.ZonedDateTime; -import java.util.Properties; /** *

Return the current date and time in ISO 8601 format.

@@ -48,16 +45,11 @@ public class DateTimeIso implements ValueRenderer { public String render(Template template, String valueId, String differentiator) { var defaultValue = template.getDefaultValue(valueId); if (defaultValue != null) { - var properties = new Properties(); - try { - var tz = "tz"; - properties.load(new StringReader(defaultValue)); - if (properties.containsKey(tz)) { - return ZonedDateTime.now().format( - RenderUtils.ISO_8601_FORMATTER.withZone(ZoneId.of(properties.getProperty(tz)))); - } - } catch (IOException ignore) { - // do nothing + var properties = RenderUtils.parsePropertiesString(template.getDefaultValue(valueId)); + var tz = "tz"; + 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 a9c1e22..97647eb 100644 --- a/lib/src/main/java/rife/render/Mask.java +++ b/lib/src/main/java/rife/render/Mask.java @@ -20,10 +20,6 @@ package rife.render; import rife.template.Template; import rife.template.ValueRenderer; -import java.io.IOException; -import java.io.StringReader; -import java.util.Properties; - /** *

Masks characters of a template value.

* @@ -48,16 +44,15 @@ public class Mask implements ValueRenderer { var unmasked = 0; var fromStart = false; var defaultValue = template.getDefaultValue(valueId); - if (defaultValue != null) { - var properties = new Properties(); + if (defaultValue != null && !defaultValue.isBlank()) { + var properties = RenderUtils.parsePropertiesString(defaultValue); + mask = properties.getProperty("mask", mask); try { - properties.load(new StringReader(defaultValue)); - mask = properties.getProperty("mask", mask); unmasked = Integer.parseInt(properties.getProperty("unmasked", "0")); - fromStart = "true".equalsIgnoreCase(properties.getProperty("fromStart", "false")); - } catch (IOException | NumberFormatException ignore) { + } catch (NumberFormatException ignore) { // do nothing } + fromStart = "true".equalsIgnoreCase(properties.getProperty("fromStart", "false")); } return template.getEncoder().encode( RenderUtils.mask(template.getValueOrAttribute(differentiator), mask, unmasked, fromStart)); diff --git a/lib/src/main/java/rife/render/QrCode.java b/lib/src/main/java/rife/render/QrCode.java index 3521992..2875e99 100644 --- a/lib/src/main/java/rife/render/QrCode.java +++ b/lib/src/main/java/rife/render/QrCode.java @@ -20,10 +20,6 @@ package rife.render; import rife.template.Template; import rife.template.ValueRenderer; -import java.io.IOException; -import java.io.StringReader; -import java.util.Properties; - /** *

Generates an SVG QR Code for a template value using goQR.me.

* @@ -44,17 +40,8 @@ public class QrCode implements ValueRenderer { */ @Override public String render(Template template, String valueId, String differentiator) { - var size = "150x150"; - var defaultValue = template.getDefaultValue(valueId); - if (defaultValue != null) { - var properties = new Properties(); - try { - properties.load(new StringReader(defaultValue)); - size = properties.getProperty("size", size); - } catch (IOException ignore) { - // do nothing - } - } + var properties = RenderUtils.parsePropertiesString(template.getDefaultValue(valueId)); + var size = properties.getProperty("size", "150x150"); return RenderUtils.qrCode(template.getValueOrAttribute(differentiator), size); } } diff --git a/lib/src/main/java/rife/render/Uptime.java b/lib/src/main/java/rife/render/Uptime.java index 0353e6c..09ffc3e 100644 --- a/lib/src/main/java/rife/render/Uptime.java +++ b/lib/src/main/java/rife/render/Uptime.java @@ -20,10 +20,7 @@ package rife.render; import rife.template.Template; import rife.template.ValueRenderer; -import java.io.IOException; -import java.io.StringReader; import java.lang.management.ManagementFactory; -import java.util.Properties; /** * Renders the server uptime. @@ -45,16 +42,7 @@ public class Uptime implements ValueRenderer { */ @Override public String render(Template template, String valueId, String differentiator) { - var properties = new Properties(); - var defaultValue = template.getDefaultValue(valueId); - if (defaultValue != null) { - try { - properties.load(new StringReader(defaultValue)); - } catch (IOException ignore) { - // ignore - } - } - + var properties = RenderUtils.parsePropertiesString(template.getDefaultValue(valueId)); String uptime; if (template.hasAttribute(Uptime.class.getName())) { uptime = RenderUtils.uptime((long) template.getAttribute(Uptime.class.getName()), properties);