|
17 | 17 | */ |
18 | 18 | package com.github.jknack.handlebars; |
19 | 19 |
|
20 | | -import com.github.jknack.handlebars.helper.I18nHelper; |
21 | | -import com.github.jknack.handlebars.internal.Files; |
22 | | -import com.github.jknack.handlebars.internal.Throwing; |
23 | 20 | import static org.apache.commons.lang3.Validate.isTrue; |
24 | 21 | import static org.apache.commons.lang3.Validate.notEmpty; |
25 | 22 | import static org.apache.commons.lang3.Validate.notNull; |
|
39 | 36 | import java.util.List; |
40 | 37 | import java.util.Map.Entry; |
41 | 38 | import java.util.Set; |
42 | | -import java.util.concurrent.atomic.AtomicInteger; |
| 39 | + |
| 40 | +import javax.script.Bindings; |
| 41 | +import javax.script.ScriptEngine; |
| 42 | +import javax.script.ScriptEngineManager; |
43 | 43 |
|
44 | 44 | import org.slf4j.Logger; |
45 | 45 |
|
46 | 46 | import com.github.jknack.handlebars.cache.NullTemplateCache; |
47 | 47 | import com.github.jknack.handlebars.cache.TemplateCache; |
48 | 48 | import com.github.jknack.handlebars.helper.DefaultHelperRegistry; |
| 49 | +import com.github.jknack.handlebars.helper.I18nHelper; |
| 50 | +import com.github.jknack.handlebars.internal.Files; |
49 | 51 | import com.github.jknack.handlebars.internal.FormatterChain; |
50 | 52 | import com.github.jknack.handlebars.internal.HbsParserFactory; |
| 53 | +import com.github.jknack.handlebars.internal.Throwing; |
51 | 54 | import com.github.jknack.handlebars.io.ClassPathTemplateLoader; |
52 | 55 | import com.github.jknack.handlebars.io.CompositeTemplateLoader; |
53 | 56 | import com.github.jknack.handlebars.io.StringTemplateSource; |
54 | 57 | import com.github.jknack.handlebars.io.TemplateLoader; |
55 | 58 | import com.github.jknack.handlebars.io.TemplateSource; |
56 | 59 |
|
57 | | -import javax.script.Bindings; |
58 | | -import javax.script.ScriptEngine; |
59 | | -import javax.script.ScriptEngineManager; |
60 | | - |
61 | 60 | /** |
62 | 61 | * <p> |
63 | 62 | * Handlebars provides the power necessary to let you build semantic templates effectively with no |
@@ -177,8 +176,12 @@ public boolean equals(final Object obj) { |
177 | 176 | */ |
178 | 177 | public static class Utils { |
179 | 178 |
|
| 179 | + /** Current Java version: 8, 11, 15, etc. */ |
180 | 180 | public static final int javaVersion = javaVersion(); |
181 | 181 |
|
| 182 | + /** Prefix for Java version: 1.8 (mostly). */ |
| 183 | + private static final String VERSION_PREFIX = "1."; |
| 184 | + |
182 | 185 | /** |
183 | 186 | * Evaluate the given object and return true is the object is considered |
184 | 187 | * empty. Nulls, empty list or array and false values are considered empty. |
@@ -237,21 +240,9 @@ public static CharSequence escapeExpression(final CharSequence input) { |
237 | 240 | return EscapingStrategy.DEF.escape(input); |
238 | 241 | } |
239 | 242 |
|
240 | | - private static int javaVersion() { |
241 | | - String version = System.getProperty("java.version"); |
242 | | - if (version.startsWith("1.")) { |
243 | | - version = version.substring(2, 3); |
244 | | - } else { |
245 | | - int dot = version.indexOf("."); |
246 | | - if (dot != -1) { |
247 | | - version = version.substring(0, dot); |
248 | | - } |
249 | | - } |
250 | | - try { |
251 | | - return Integer.parseInt(version); |
252 | | - } catch (NumberFormatException e) { |
253 | | - return 8; |
254 | | - } |
| 243 | + static int javaVersion() { |
| 244 | + String version = System.getProperty("java.specification.version").trim(); |
| 245 | + return Integer.parseInt(version.replace(VERSION_PREFIX, "")); |
255 | 246 | } |
256 | 247 | } |
257 | 248 |
|
|
0 commit comments