From 8394406e390d8411b0ee9ab5ade3a08d9e73572e Mon Sep 17 00:00:00 2001 From: Georgios Andrianakis Date: Mon, 22 Jun 2020 21:48:02 +0300 Subject: [PATCH] Avoid doing any xstream related work unless absolutely necessary Relates to: https://github.com/quarkusio/quarkus/pull/10081 --- .../test/junit/internal/XStreamDeepClone.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/test-framework/junit5/src/main/java/io/quarkus/test/junit/internal/XStreamDeepClone.java b/test-framework/junit5/src/main/java/io/quarkus/test/junit/internal/XStreamDeepClone.java index dbd6651d2a65b..82edbd3fc1f79 100644 --- a/test-framework/junit5/src/main/java/io/quarkus/test/junit/internal/XStreamDeepClone.java +++ b/test-framework/junit5/src/main/java/io/quarkus/test/junit/internal/XStreamDeepClone.java @@ -9,13 +9,17 @@ */ public class XStreamDeepClone implements DeepClone { - private final XStream xStream; + private final Supplier xStreamSupplier; public XStreamDeepClone(ClassLoader classLoader) { - xStream = new XStream(); - XStream.setupDefaultSecurity(xStream); - xStream.allowTypesByRegExp(new String[] { ".*" }); - xStream.setClassLoader(classLoader); + // avoid doing any work eagerly since the cloner is rarely used + xStreamSupplier = () -> { + XStream result = new XStream(); + XStream.setupDefaultSecurity(result); + result.allowTypesByRegExp(new String[] { ".*" }); + result.setClassLoader(classLoader); + return result; + }; } public Object clone(Object objectToClone) { @@ -40,6 +44,7 @@ public Object get() { } private Object doClone(Object objectToClone) { + XStream xStream = xStreamSupplier.get(); final String serialized = xStream.toXML(objectToClone); final Object result = xStream.fromXML(serialized); if (result == null) {