Skip to content

Commit 8b523e7

Browse files
committed
- improves performance by precompiling regex
1 parent 6696aec commit 8b523e7

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

src/main/java/com/microsoft/graph/content/MSBatchRequestContent.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import java.util.List;
77
import java.util.Map;
88
import java.util.concurrent.ThreadLocalRandom;
9+
import java.util.regex.Matcher;
10+
import java.util.regex.Pattern;
911

1012
import com.google.gson.JsonArray;
1113
import com.google.gson.JsonElement;
@@ -113,12 +115,19 @@ public String getBatchRequestContent() {
113115
return content;
114116
}
115117

118+
private static final Pattern protocolAndHostReplacementPattern = Pattern.compile("(?i)^http[s]?:\\/\\/graph\\.microsoft\\.com\\/(?>v1\\.0|beta)\\/?"); // (?i) case insensitive
119+
private Matcher protocolAndHostReplacementMatcher; // not static to avoid multithreading issues as the object is mutable
116120
private JsonObject getBatchRequestObjectFromRequestStep(final MSBatchRequestStep batchRequestStep) {
117121
final JsonObject contentmap = new JsonObject();
118122
contentmap.add("id", new JsonPrimitive(batchRequestStep.getRequestId()));
119123

120-
final String url = batchRequestStep.getRequest().url().toString()
121-
.replaceAll("(?i)^http[s]?:\\/\\/graph\\.microsoft\\.com\\/(?>v1\\.0|beta)\\/?", ""); // (?i) case insensitive
124+
if(protocolAndHostReplacementMatcher == null) {
125+
protocolAndHostReplacementMatcher = protocolAndHostReplacementPattern.matcher(batchRequestStep.getRequest().url().toString());
126+
} else {
127+
protocolAndHostReplacementMatcher = protocolAndHostReplacementMatcher.reset(batchRequestStep.getRequest().url().toString());
128+
}
129+
130+
final String url = protocolAndHostReplacementMatcher.replaceAll("");
122131
contentmap.add("url", new JsonPrimitive(url));
123132

124133
contentmap.add("method", new JsonPrimitive(batchRequestStep.getRequest().method().toString()));

0 commit comments

Comments
 (0)