From 8b523e70560ac6a94d0c77ed2c96dae10e7fd72a Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Tue, 1 Dec 2020 10:54:31 -0500 Subject: [PATCH] - improves performance by precompiling regex --- .../graph/content/MSBatchRequestContent.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/microsoft/graph/content/MSBatchRequestContent.java b/src/main/java/com/microsoft/graph/content/MSBatchRequestContent.java index d6f756ee8..85ae6347a 100644 --- a/src/main/java/com/microsoft/graph/content/MSBatchRequestContent.java +++ b/src/main/java/com/microsoft/graph/content/MSBatchRequestContent.java @@ -6,6 +6,8 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ThreadLocalRandom; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import com.google.gson.JsonArray; import com.google.gson.JsonElement; @@ -113,12 +115,19 @@ public String getBatchRequestContent() { return content; } + private static final Pattern protocolAndHostReplacementPattern = Pattern.compile("(?i)^http[s]?:\\/\\/graph\\.microsoft\\.com\\/(?>v1\\.0|beta)\\/?"); // (?i) case insensitive + private Matcher protocolAndHostReplacementMatcher; // not static to avoid multithreading issues as the object is mutable private JsonObject getBatchRequestObjectFromRequestStep(final MSBatchRequestStep batchRequestStep) { final JsonObject contentmap = new JsonObject(); contentmap.add("id", new JsonPrimitive(batchRequestStep.getRequestId())); - final String url = batchRequestStep.getRequest().url().toString() - .replaceAll("(?i)^http[s]?:\\/\\/graph\\.microsoft\\.com\\/(?>v1\\.0|beta)\\/?", ""); // (?i) case insensitive + if(protocolAndHostReplacementMatcher == null) { + protocolAndHostReplacementMatcher = protocolAndHostReplacementPattern.matcher(batchRequestStep.getRequest().url().toString()); + } else { + protocolAndHostReplacementMatcher = protocolAndHostReplacementMatcher.reset(batchRequestStep.getRequest().url().toString()); + } + + final String url = protocolAndHostReplacementMatcher.replaceAll(""); contentmap.add("url", new JsonPrimitive(url)); contentmap.add("method", new JsonPrimitive(batchRequestStep.getRequest().method().toString()));