Java 7 language cleanup
diff --git a/src/main/java/freemarker/cache/ByteArrayTemplateLoader.java b/src/main/java/freemarker/cache/ByteArrayTemplateLoader.java
index 2b47a29..e82760b 100644
--- a/src/main/java/freemarker/cache/ByteArrayTemplateLoader.java
+++ b/src/main/java/freemarker/cache/ByteArrayTemplateLoader.java
@@ -36,7 +36,7 @@
*/
public class ByteArrayTemplateLoader implements TemplateLoader {
- private final Map<String, ByteArrayTemplateSource> templates = new HashMap<String, ByteArrayTemplateSource>();
+ private final Map<String, ByteArrayTemplateSource> templates = new HashMap<>();
/**
* Adds a template to this template loader; see {@link StringTemplateLoader#putTemplate(String, String)} for more.
diff --git a/src/main/java/freemarker/cache/FileTemplateLoader.java b/src/main/java/freemarker/cache/FileTemplateLoader.java
index 2ee7342..1484b2e 100644
--- a/src/main/java/freemarker/cache/FileTemplateLoader.java
+++ b/src/main/java/freemarker/cache/FileTemplateLoader.java
@@ -116,7 +116,7 @@
*/
public FileTemplateLoader(final File baseDir, final boolean disableCanonicalPathCheck) throws IOException {
try {
- Object[] retval = (Object[]) AccessController.doPrivileged(new PrivilegedExceptionAction<Object[]>() {
+ Object[] retval = AccessController.doPrivileged(new PrivilegedExceptionAction<Object[]>() {
public Object[] run() throws IOException {
if (!baseDir.exists()) {
throw new FileNotFoundException(baseDir + " does not exist.");
diff --git a/src/main/java/freemarker/cache/MultiTemplateLoader.java b/src/main/java/freemarker/cache/MultiTemplateLoader.java
index c76846f..e379625 100644
--- a/src/main/java/freemarker/cache/MultiTemplateLoader.java
+++ b/src/main/java/freemarker/cache/MultiTemplateLoader.java
@@ -39,7 +39,7 @@
private final TemplateLoader[] templateLoaders;
private final Map<String, TemplateLoader> lastTemplateLoaderForName
- = new ConcurrentHashMap<String, TemplateLoader>();
+ = new ConcurrentHashMap<>();
private boolean sticky = true;
diff --git a/src/main/java/freemarker/cache/SoftCacheStorage.java b/src/main/java/freemarker/cache/SoftCacheStorage.java
index e28e1f1..fddceaa 100644
--- a/src/main/java/freemarker/cache/SoftCacheStorage.java
+++ b/src/main/java/freemarker/cache/SoftCacheStorage.java
@@ -105,9 +105,7 @@
if (concurrent) {
try {
atomicRemove.invoke(map, new Object[] { key, ref });
- } catch (IllegalAccessException e) {
- throw new UndeclaredThrowableException(e);
- } catch (InvocationTargetException e) {
+ } catch (IllegalAccessException | InvocationTargetException e) {
throw new UndeclaredThrowableException(e);
}
} else if (map.get(key) == ref) {
diff --git a/src/main/java/freemarker/cache/StringTemplateLoader.java b/src/main/java/freemarker/cache/StringTemplateLoader.java
index 972b60d..554555b 100644
--- a/src/main/java/freemarker/cache/StringTemplateLoader.java
+++ b/src/main/java/freemarker/cache/StringTemplateLoader.java
@@ -61,7 +61,7 @@
*/
public class StringTemplateLoader implements TemplateLoader {
- private final Map<String, StringTemplateSource> templates = new HashMap<String, StringTemplateSource>();
+ private final Map<String, StringTemplateSource> templates = new HashMap<>();
/**
* Puts a template into the loader. A call to this method is identical to
diff --git a/src/main/java/freemarker/cache/TemplateCache.java b/src/main/java/freemarker/cache/TemplateCache.java
index b5485dc..be19aee 100644
--- a/src/main/java/freemarker/cache/TemplateCache.java
+++ b/src/main/java/freemarker/cache/TemplateCache.java
@@ -544,11 +544,8 @@
{
if (parseAsFTL) {
try {
- final Reader reader = templateLoader.getReader(source, initialEncoding);
- try {
+ try (Reader reader = templateLoader.getReader(source, initialEncoding)) {
template = new Template(name, sourceName, reader, config, tc, initialEncoding);
- } finally {
- reader.close();
}
} catch (Template.WrongEncodingException wee) {
String actualEncoding = wee.getTemplateSpecifiedEncoding();
@@ -556,21 +553,18 @@
LOG.debug("Initial encoding \"" + initialEncoding + "\" was incorrect, re-reading with \""
+ actualEncoding + "\". Template: " + sourceName);
}
-
- final Reader reader = templateLoader.getReader(source, actualEncoding);
- try {
+
+ try (Reader reader = templateLoader.getReader(source, actualEncoding)) {
template = new Template(name, sourceName, reader, config, tc, actualEncoding);
- } finally {
- reader.close();
}
}
} else {
// Read the contents into a StringWriter, then construct a single-text-block template from it.
final StringWriter sw = new StringWriter();
final char[] buf = new char[4096];
- final Reader reader = templateLoader.getReader(source, initialEncoding);
- try {
- fetchChars: while (true) {
+ try (Reader reader = templateLoader.getReader(source, initialEncoding)) {
+ fetchChars:
+ while (true) {
int charsRead = reader.read(buf);
if (charsRead > 0) {
sw.write(buf, 0, charsRead);
@@ -578,8 +572,6 @@
break fetchChars;
}
}
- } finally {
- reader.close();
}
template = Template.getPlainTextTemplate(name, sourceName, sw.toString(), config);
template.setEncoding(initialEncoding);
diff --git a/src/main/java/freemarker/core/AddConcatExpression.java b/src/main/java/freemarker/core/AddConcatExpression.java
index b89b472..86eb02d 100644
--- a/src/main/java/freemarker/core/AddConcatExpression.java
+++ b/src/main/java/freemarker/core/AddConcatExpression.java
@@ -82,7 +82,7 @@
// we return null and do hash addition instead. (We can't simply give hash addition a priority, like
// with sequence addition above, as FTL strings are often also FTL hashes.)
Object leftOMOrStr = EvalUtil.coerceModelToStringOrMarkup(
- leftModel, leftExp, /* returnNullOnNonCoercableType = */ hashConcatPossible, (String) null,
+ leftModel, leftExp, /* returnNullOnNonCoercableType = */ hashConcatPossible, null,
env);
if (leftOMOrStr == null) {
return _eval_concatenateHashes(leftModel, rightModel);
@@ -90,7 +90,7 @@
// Same trick with null return as above.
Object rightOMOrStr = EvalUtil.coerceModelToStringOrMarkup(
- rightModel, rightExp, /* returnNullOnNonCoercableType = */ hashConcatPossible, (String) null,
+ rightModel, rightExp, /* returnNullOnNonCoercableType = */ hashConcatPossible, null,
env);
if (rightOMOrStr == null) {
return _eval_concatenateHashes(leftModel, rightModel);
diff --git a/src/main/java/freemarker/core/ArithmeticEngine.java b/src/main/java/freemarker/core/ArithmeticEngine.java
index 31648f9..5492b7a 100644
--- a/src/main/java/freemarker/core/ArithmeticEngine.java
+++ b/src/main/java/freemarker/core/ArithmeticEngine.java
@@ -377,8 +377,8 @@
int n = n1 - n2;
return
((n ^ n1) < 0 && (n ^ ~n2) < 0) // overflow check
- ? (Number) Long.valueOf(((long) n1) - n2)
- : (Number) Integer.valueOf(n);
+ ? Long.valueOf(((long) n1) - n2)
+ : Integer.valueOf(n);
}
case LONG: {
long n1 = first.longValue();
@@ -386,8 +386,8 @@
long n = n1 - n2;
return
((n ^ n1) < 0 && (n ^ ~n2) < 0) // overflow check
- ? (Number) toBigInteger(first).subtract(toBigInteger(second))
- : (Number) Long.valueOf(n);
+ ? toBigInteger(first).subtract(toBigInteger(second))
+ : Long.valueOf(n);
}
case FLOAT: {
return Float.valueOf(first.floatValue() - second.floatValue());
@@ -420,8 +420,8 @@
int n = n1 * n2;
return
n1 == 0 || n / n1 == n2 // overflow check
- ? (Number) Integer.valueOf(n)
- : (Number) Long.valueOf(((long) n1) * n2);
+ ? Integer.valueOf(n)
+ : Long.valueOf(((long) n1) * n2);
}
case LONG: {
long n1 = first.longValue();
@@ -429,8 +429,8 @@
long n = n1 * n2;
return
n1 == 0L || n / n1 == n2 // overflow check
- ? (Number) Long.valueOf(n)
- : (Number) toBigInteger(first).multiply(toBigInteger(second));
+ ? Long.valueOf(n)
+ : toBigInteger(first).multiply(toBigInteger(second));
}
case FLOAT: {
return Float.valueOf(first.floatValue() * second.floatValue());
diff --git a/src/main/java/freemarker/core/BuiltIn.java b/src/main/java/freemarker/core/BuiltIn.java
index 36e74b7..30be937 100644
--- a/src/main/java/freemarker/core/BuiltIn.java
+++ b/src/main/java/freemarker/core/BuiltIn.java
@@ -82,8 +82,8 @@
protected Expression target;
protected String key;
- static final Set<String> CAMEL_CASE_NAMES = new TreeSet<String>();
- static final Set<String> SNAKE_CASE_NAMES = new TreeSet<String>();
+ static final Set<String> CAMEL_CASE_NAMES = new TreeSet<>();
+ static final Set<String> SNAKE_CASE_NAMES = new TreeSet<>();
static final int NUMBER_OF_BIS = 289;
static final HashMap<String, BuiltIn> BUILT_INS_BY_NAME = new HashMap(NUMBER_OF_BIS * 3 / 2 + 1, 1f);
diff --git a/src/main/java/freemarker/core/BuiltInsForCallables.java b/src/main/java/freemarker/core/BuiltInsForCallables.java
index 87d6647..7cea824 100644
--- a/src/main/java/freemarker/core/BuiltInsForCallables.java
+++ b/src/main/java/freemarker/core/BuiltInsForCallables.java
@@ -109,7 +109,7 @@
return new TemplateMethodModelEx() {
public Object exec(List origArgs) throws TemplateModelException {
int withArgsSize = withArgs.size();
- List<TemplateModel> newArgs = new ArrayList<TemplateModel>(
+ List<TemplateModel> newArgs = new ArrayList<>(
withArgsSize + origArgs.size());
if (isOrderLast()) {
@@ -129,7 +129,7 @@
return new TemplateMethodModel() {
public Object exec(List origArgs) throws TemplateModelException {
int withArgsSize = withArgs.size();
- List<String> newArgs = new ArrayList<String>(
+ List<String> newArgs = new ArrayList<>(
withArgsSize + origArgs.size());
if (isOrderLast()) {
@@ -199,7 +199,7 @@
int withArgsSize = withArgs.size();
// This is unnecessarily big if there are overridden arguments, but we care more about
// avoiding rehashing.
- Map<String, TemplateModel> newArgs = new LinkedHashMap<String, TemplateModel>(
+ Map<String, TemplateModel> newArgs = new LinkedHashMap<>(
(withArgsSize + origArgs.size()) * 4 / 3, 1f);
TemplateHashModelEx2.KeyValuePairIterator withArgsIter =
diff --git a/src/main/java/freemarker/core/BuiltInsForNumbers.java b/src/main/java/freemarker/core/BuiltInsForNumbers.java
index a2d9cbb..73ff888 100644
--- a/src/main/java/freemarker/core/BuiltInsForNumbers.java
+++ b/src/main/java/freemarker/core/BuiltInsForNumbers.java
@@ -85,7 +85,7 @@
@Override
TemplateModel calculateResult(Number num, TemplateModel model) throws TemplateModelException {
if (num instanceof Integer) {
- int n = ((Integer) num).intValue();
+ int n = num.intValue();
if (n < 0) {
return new SimpleNumber(-n);
} else {
@@ -99,35 +99,35 @@
return model;
}
} else if (num instanceof Double) {
- double n = ((Double) num).doubleValue();
+ double n = num.doubleValue();
if (n < 0) {
return new SimpleNumber(-n);
} else {
return model;
}
} else if (num instanceof Float) {
- float n = ((Float) num).floatValue();
+ float n = num.floatValue();
if (n < 0) {
return new SimpleNumber(-n);
} else {
return model;
}
} else if (num instanceof Long) {
- long n = ((Long) num).longValue();
+ long n = num.longValue();
if (n < 0) {
return new SimpleNumber(-n);
} else {
return model;
}
} else if (num instanceof Short) {
- short n = ((Short) num).shortValue();
+ short n = num.shortValue();
if (n < 0) {
return new SimpleNumber(-n);
} else {
return model;
}
} else if (num instanceof Byte) {
- byte n = ((Byte) num).byteValue();
+ byte n = num.byteValue();
if (n < 0) {
return new SimpleNumber(-n);
} else {
@@ -270,7 +270,7 @@
private static final long safeToLong(Number num) throws TemplateModelException {
if (num instanceof Double) {
- double d = Math.round(((Double) num).doubleValue());
+ double d = Math.round(num.doubleValue());
if (d > Long.MAX_VALUE || d < Long.MIN_VALUE) {
throw new _TemplateModelException(
"Number doesn't fit into a 64 bit signed integer (long): ", Double.valueOf(d));
@@ -278,7 +278,7 @@
return (long) d;
}
} else if (num instanceof Float) {
- float f = Math.round(((Float) num).floatValue());
+ float f = Math.round(num.floatValue());
if (f > Long.MAX_VALUE || f < Long.MIN_VALUE) {
throw new _TemplateModelException(
"Number doesn't fit into a 64 bit signed integer (long): ", Float.valueOf(f));
diff --git a/src/main/java/freemarker/core/BuiltInsForSequences.java b/src/main/java/freemarker/core/BuiltInsForSequences.java
index fcaeebd..35cd229 100644
--- a/src/main/java/freemarker/core/BuiltInsForSequences.java
+++ b/src/main/java/freemarker/core/BuiltInsForSequences.java
@@ -1043,7 +1043,7 @@
throw _MessageUtil.newLazilyGeneratedCollectionMustBeSequenceException(filterBI.this);
}
- List<TemplateModel> resultList = new ArrayList<TemplateModel>();
+ List<TemplateModel> resultList = new ArrayList<>();
while (lhoIterator.hasNext()) {
TemplateModel element = lhoIterator.next();
if (elementMatches(element, elementTransformer, env)) {
@@ -1118,7 +1118,7 @@
throw _MessageUtil.newLazilyGeneratedCollectionMustBeSequenceException(take_whileBI.this);
}
- List<TemplateModel> resultList = new ArrayList<TemplateModel>();
+ List<TemplateModel> resultList = new ArrayList<>();
while (lhoIterator.hasNext()) {
TemplateModel element = lhoIterator.next();
if (elementMatches(element, elementTransformer, env)) {
@@ -1192,7 +1192,7 @@
throw _MessageUtil.newLazilyGeneratedCollectionMustBeSequenceException(mapBI.this);
}
- List<TemplateModel> resultList = new ArrayList<TemplateModel>();
+ List<TemplateModel> resultList = new ArrayList<>();
while (lhoIterator.hasNext()) {
resultList.add(fetchAndMapNextElement(lhoIterator, elementTransformer, env));
}
@@ -1248,7 +1248,7 @@
throw _MessageUtil.newLazilyGeneratedCollectionMustBeSequenceException(drop_whileBI.this);
}
- List<TemplateModel> resultList = new ArrayList<TemplateModel>();
+ List<TemplateModel> resultList = new ArrayList<>();
while (lhoIterator.hasNext()) {
TemplateModel element = lhoIterator.next();
if (!elementMatches(element, elementTransformer, env)) {
diff --git a/src/main/java/freemarker/core/BuiltInsWithLazyConditionals.java b/src/main/java/freemarker/core/BuiltInsWithLazyConditionals.java
index c5f1be1..f4491a9 100644
--- a/src/main/java/freemarker/core/BuiltInsWithLazyConditionals.java
+++ b/src/main/java/freemarker/core/BuiltInsWithLazyConditionals.java
@@ -66,7 +66,7 @@
@Override
protected List<Expression> getArgumentsAsList() {
- ArrayList<Expression> args = new ArrayList<Expression>(2);
+ ArrayList<Expression> args = new ArrayList<>(2);
args.add(whenTrueExp);
args.add(whenFalseExp);
return args;
@@ -110,13 +110,13 @@
@Override
protected Expression getArgumentParameterValue(int argIdx) {
- return (Expression) parameters.get(argIdx);
+ return parameters.get(argIdx);
}
@Override
protected void cloneArguments(Expression clone, String replacedIdentifier, Expression replacement,
ReplacemenetState replacementState) {
- List<Expression> parametersClone = new ArrayList<Expression>(parameters.size());
+ List<Expression> parametersClone = new ArrayList<>(parameters.size());
for (Expression parameter : parameters) {
parametersClone.add(parameter
.deepCloneWithIdentifierReplaced(replacedIdentifier, replacement, replacementState));
diff --git a/src/main/java/freemarker/core/CollectionAndSequence.java b/src/main/java/freemarker/core/CollectionAndSequence.java
index affb7fe..0e3f5ed 100644
--- a/src/main/java/freemarker/core/CollectionAndSequence.java
+++ b/src/main/java/freemarker/core/CollectionAndSequence.java
@@ -77,7 +77,7 @@
private void initSequence() throws TemplateModelException {
if (data == null) {
- data = new ArrayList<TemplateModel>();
+ data = new ArrayList<>();
TemplateModelIterator it = collection.iterator();
while (it.hasNext()) {
data.add(it.next());
diff --git a/src/main/java/freemarker/core/Configurable.java b/src/main/java/freemarker/core/Configurable.java
index a0ad656..8b2e0e0 100644
--- a/src/main/java/freemarker/core/Configurable.java
+++ b/src/main/java/freemarker/core/Configurable.java
@@ -501,7 +501,7 @@
public Configurable(Configurable parent) {
this.parent = parent;
properties = new Properties(parent.properties);
- customAttributes = new HashMap<Object, Object>(0);
+ customAttributes = new HashMap<>(0);
}
@Override
@@ -1934,7 +1934,7 @@
}
private void initAutoImportsMap() {
- autoImports = new LinkedHashMap<String, String>(4);
+ autoImports = new LinkedHashMap<>(4);
}
/**
@@ -2074,7 +2074,7 @@
}
private void initAutoIncludesList() {
- autoIncludes = new ArrayList<String>(4);
+ autoIncludes = new ArrayList<>(4);
}
/**
@@ -2860,7 +2860,7 @@
* @since 2.3.24
*/
public Set<String> getSettingNames(boolean camelCase) {
- return new _SortedArraySet<String>(camelCase ? SETTING_NAMES_CAMEL_CASE : SETTING_NAMES_SNAKE_CASE);
+ return new _SortedArraySet<>(camelCase ? SETTING_NAMES_CAMEL_CASE : SETTING_NAMES_SNAKE_CASE);
}
private TimeZone parseTimeZoneSettingValue(String value) {
@@ -2959,7 +2959,7 @@
super(env,
"Unknown FreeMarker configuration setting: ", new _DelayedJQuote(name),
correctedName == null
- ? (Object) "" : new Object[] { ". You may meant: ", new _DelayedJQuote(correctedName) });
+ ? "" : new Object[] { ". You may meant: ", new _DelayedJQuote(correctedName) });
}
}
diff --git a/src/main/java/freemarker/core/Dot.java b/src/main/java/freemarker/core/Dot.java
index a7a9428..54bae57 100644
--- a/src/main/java/freemarker/core/Dot.java
+++ b/src/main/java/freemarker/core/Dot.java
@@ -78,7 +78,7 @@
@Override
Object getParameterValue(int idx) {
- return idx == 0 ? (Object) target : (Object) key;
+ return idx == 0 ? target : key;
}
@Override
diff --git a/src/main/java/freemarker/core/DynamicKeyName.java b/src/main/java/freemarker/core/DynamicKeyName.java
index e455b94..ccb0e7b 100644
--- a/src/main/java/freemarker/core/DynamicKeyName.java
+++ b/src/main/java/freemarker/core/DynamicKeyName.java
@@ -284,7 +284,7 @@
// In principle we should take lazilyGeneratedResultEnabled into account, but that wouldn't be backward
// compatible. For example, with lazily generated sequence result <#list xs[b..e] as x> would behave
// differently if xs is modified inside the #list nested content.
- ArrayList<TemplateModel> resultList = new ArrayList<TemplateModel>(resultSize);
+ ArrayList<TemplateModel> resultList = new ArrayList<>(resultSize);
int srcIdx = firstIdx;
for (int i = 0; i < resultSize; i++) {
resultList.add(targetSeq.get(srcIdx));
diff --git a/src/main/java/freemarker/core/Environment.java b/src/main/java/freemarker/core/Environment.java
index c48954e..1d92161 100644
--- a/src/main/java/freemarker/core/Environment.java
+++ b/src/main/java/freemarker/core/Environment.java
@@ -174,7 +174,7 @@
private Throwable lastThrowable;
private TemplateModel lastReturnValue;
- private Map<Object, Namespace> macroToNamespaceLookup = new IdentityHashMap<Object, Namespace>();
+ private Map<Object, Namespace> macroToNamespaceLookup = new IdentityHashMap<>();
private TemplateNodeModel currentVisitorNode;
private TemplateSequenceModel nodeNamespaces;
@@ -509,11 +509,7 @@
} else {
throw t;
}
- } catch (TemplateException e) {
- throw e;
- } catch (IOException e) {
- throw e;
- } catch (Error e) {
+ } catch (TemplateException | IOException | Error e) {
throw e;
} catch (Throwable e) {
if (EvalUtil.shouldWrapUncheckedException(e, this)) {
@@ -942,7 +938,7 @@
} else {
List<NameValuePair> orderLastByNameCatchAll = withArgsState.orderLastByNameCatchAll;
if (orderLastByNameCatchAll == null) {
- orderLastByNameCatchAll = new ArrayList<NameValuePair>();
+ orderLastByNameCatchAll = new ArrayList<>();
withArgsState.orderLastByNameCatchAll = orderLastByNameCatchAll;
}
orderLastByNameCatchAll.add(new NameValuePair(argName, argValue));
@@ -1599,7 +1595,7 @@
throws TemplateValueFormatException {
if (cachedTemplateNumberFormats == null) {
if (cacheResult) {
- cachedTemplateNumberFormats = new HashMap<String, TemplateNumberFormat>();
+ cachedTemplateNumberFormats = new HashMap<>();
}
} else {
TemplateNumberFormat format = cachedTemplateNumberFormats.get(formatString);
@@ -2073,7 +2069,7 @@
cachedFormatsByFormatString = cachedTempDateFormatsByFmtStrArray[cacheArrIdx];
if (cachedFormatsByFormatString == null) {
if (cacheResult) {
- cachedFormatsByFormatString = new HashMap<String, TemplateDateFormat>(4);
+ cachedFormatsByFormatString = new HashMap<>(4);
cachedTempDateFormatsByFmtStrArray[cacheArrIdx] = cachedFormatsByFormatString;
format = null;
} else {
@@ -3196,7 +3192,7 @@
public Object setCustomState(Object identityKey, Object value) {
IdentityHashMap<Object, Object> customStateVariables = this.customStateVariables;
if (customStateVariables == null) {
- customStateVariables = new IdentityHashMap<Object, Object>();
+ customStateVariables = new IdentityHashMap<>();
this.customStateVariables = customStateVariables;
}
return customStateVariables.put(identityKey, value);
diff --git a/src/main/java/freemarker/core/EvalUtil.java b/src/main/java/freemarker/core/EvalUtil.java
index 9af8d83..a358208 100644
--- a/src/main/java/freemarker/core/EvalUtil.java
+++ b/src/main/java/freemarker/core/EvalUtil.java
@@ -306,12 +306,12 @@
"Left hand operand ",
(quoteOperandsInErrors && leftExp != null
? new Object[] { "(", new _DelayedGetCanonicalForm(leftExp), ") value " }
- : (Object) ""),
+ : ""),
"is ", new _DelayedAOrAn(new _DelayedFTLTypeDescription(leftValue)), ".\n",
"Right hand operand ",
(quoteOperandsInErrors && rightExp != null
? new Object[] { "(", new _DelayedGetCanonicalForm(rightExp), ") value " }
- : (Object) ""),
+ : ""),
"is ", new _DelayedAOrAn(new _DelayedFTLTypeDescription(rightValue)),
".");
}
diff --git a/src/main/java/freemarker/core/Expression.java b/src/main/java/freemarker/core/Expression.java
index 5a69095..b4fd0d6 100644
--- a/src/main/java/freemarker/core/Expression.java
+++ b/src/main/java/freemarker/core/Expression.java
@@ -99,9 +99,7 @@
final TemplateModel eval(Environment env) throws TemplateException {
try {
return constantValue != null ? constantValue : _eval(env);
- } catch (FlowControlException e) {
- throw e;
- } catch (TemplateException e) {
+ } catch (FlowControlException | TemplateException e) {
throw e;
} catch (Exception e) {
if (env != null && EvalUtil.shouldWrapUncheckedException(e, env)) {
diff --git a/src/main/java/freemarker/core/ExtendedDecimalFormatParser.java b/src/main/java/freemarker/core/ExtendedDecimalFormatParser.java
index 398f382..8f2da0d 100644
--- a/src/main/java/freemarker/core/ExtendedDecimalFormatParser.java
+++ b/src/main/java/freemarker/core/ExtendedDecimalFormatParser.java
@@ -59,7 +59,7 @@
private static final HashMap<String, ? extends ParameterHandler> PARAM_HANDLERS;
static {
- HashMap<String, ParameterHandler> m = new HashMap<String, ParameterHandler>();
+ HashMap<String, ParameterHandler> m = new HashMap<>();
m.put(PARAM_ROUNDING_MODE, new ParameterHandler() {
public void handle(ExtendedDecimalFormatParser parser, String value)
throws InvalidParameterValueException {
diff --git a/src/main/java/freemarker/core/GetOptionalTemplateMethod.java b/src/main/java/freemarker/core/GetOptionalTemplateMethod.java
index be6c822..c0e857d 100644
--- a/src/main/java/freemarker/core/GetOptionalTemplateMethod.java
+++ b/src/main/java/freemarker/core/GetOptionalTemplateMethod.java
@@ -172,9 +172,7 @@
try {
return env.importLib(template, null);
- } catch (IOException e) {
- throw new _TemplateModelException(e, "Failed to import loaded template; see cause exception");
- } catch (TemplateException e) {
+ } catch (IOException | TemplateException e) {
throw new _TemplateModelException(e, "Failed to import loaded template; see cause exception");
}
}
diff --git a/src/main/java/freemarker/core/HashLiteral.java b/src/main/java/freemarker/core/HashLiteral.java
index 7b4607c..7a81b66 100644
--- a/src/main/java/freemarker/core/HashLiteral.java
+++ b/src/main/java/freemarker/core/HashLiteral.java
@@ -91,12 +91,12 @@
@Override
protected Expression deepCloneWithIdentifierReplaced_inner(
String replacedIdentifier, Expression replacement, ReplacemenetState replacementState) {
- List<Expression> clonedKeys = new ArrayList<Expression>(keys.size());
+ List<Expression> clonedKeys = new ArrayList<>(keys.size());
for (Expression key : keys) {
clonedKeys.add(key.deepCloneWithIdentifierReplaced(replacedIdentifier, replacement, replacementState));
}
- List<Expression> clonedValues = new ArrayList<Expression>(values.size());
+ List<Expression> clonedValues = new ArrayList<>(values.size());
for (Expression value : values) {
clonedValues.add(value.deepCloneWithIdentifierReplaced(replacedIdentifier, replacement, replacementState));
}
@@ -112,7 +112,7 @@
SequenceHash(Environment env) throws TemplateException {
if (_TemplateAPI.getTemplateLanguageVersionAsInt(HashLiteral.this) >= _TemplateAPI.VERSION_INT_2_3_21) {
- map = new LinkedHashMap<String, TemplateModel>();
+ map = new LinkedHashMap<>();
for (int i = 0; i < size; i++) {
Expression keyExp = keys.get(i);
Expression valExp = values.get(i);
@@ -126,7 +126,7 @@
} else {
// Legacy hash literal, where repeated keys were kept when doing ?values or ?keys, yet overwritten when
// doing hash[key].
- map = new HashMap<String, TemplateModel>();
+ map = new HashMap<>();
SimpleSequence keyList = new SimpleSequence(size, _TemplateAPI.SAFE_OBJECT_WRAPPER);
SimpleSequence valueList = new SimpleSequence(size, _TemplateAPI.SAFE_OBJECT_WRAPPER);
for (int i = 0; i < size; i++) {
diff --git a/src/main/java/freemarker/core/JavaTemplateDateFormatFactory.java b/src/main/java/freemarker/core/JavaTemplateDateFormatFactory.java
index 9aedec9..257895a 100644
--- a/src/main/java/freemarker/core/JavaTemplateDateFormatFactory.java
+++ b/src/main/java/freemarker/core/JavaTemplateDateFormatFactory.java
@@ -36,7 +36,7 @@
private static final Logger LOG = Logger.getLogger("freemarker.runtime");
private static final ConcurrentHashMap<CacheKey, DateFormat> GLOBAL_FORMAT_CACHE
- = new ConcurrentHashMap<CacheKey, DateFormat>();
+ = new ConcurrentHashMap<>();
private static final int LEAK_ALERT_DATE_FORMAT_CACHE_SIZE = 1024;
private JavaTemplateDateFormatFactory() {
diff --git a/src/main/java/freemarker/core/JavaTemplateNumberFormatFactory.java b/src/main/java/freemarker/core/JavaTemplateNumberFormatFactory.java
index 6cbf9a9..42262ed 100644
--- a/src/main/java/freemarker/core/JavaTemplateNumberFormatFactory.java
+++ b/src/main/java/freemarker/core/JavaTemplateNumberFormatFactory.java
@@ -35,7 +35,7 @@
private static final Logger LOG = Logger.getLogger("freemarker.runtime");
private static final ConcurrentHashMap<CacheKey, NumberFormat> GLOBAL_FORMAT_CACHE
- = new ConcurrentHashMap<CacheKey, NumberFormat>();
+ = new ConcurrentHashMap<>();
private static final int LEAK_ALERT_NUMBER_FORMAT_CACHE_SIZE = 1024;
private JavaTemplateNumberFormatFactory() {
diff --git a/src/main/java/freemarker/core/ListLiteral.java b/src/main/java/freemarker/core/ListLiteral.java
index e384cd0..7745db7 100644
--- a/src/main/java/freemarker/core/ListLiteral.java
+++ b/src/main/java/freemarker/core/ListLiteral.java
@@ -66,7 +66,7 @@
return Collections.EMPTY_LIST;
}
case 1: {
- return Collections.singletonList(((Expression) items.get(0)).evalAndCoerceToPlainText(env));
+ return Collections.singletonList(items.get(0).evalAndCoerceToPlainText(env));
}
default: {
List result = new ArrayList(items.size());
@@ -89,7 +89,7 @@
return Collections.EMPTY_LIST;
}
case 1: {
- return Collections.singletonList(((Expression) items.get(0)).eval(env));
+ return Collections.singletonList(items.get(0).eval(env));
}
default: {
List result = new ArrayList(items.size());
@@ -107,7 +107,7 @@
StringBuilder buf = new StringBuilder("[");
int size = items.size();
for (int i = 0; i < size; i++) {
- Expression value = (Expression) items.get(i);
+ Expression value = items.get(i);
buf.append(value.getCanonicalForm());
if (i != size - 1) {
buf.append(", ");
@@ -128,7 +128,7 @@
return true;
}
for (int i = 0; i < items.size(); i++) {
- Expression exp = (Expression) items.get(i);
+ Expression exp = items.get(i);
if (!exp.isLiteral()) {
return false;
}
diff --git a/src/main/java/freemarker/core/Macro.java b/src/main/java/freemarker/core/Macro.java
index 79b0c83..0279a65 100644
--- a/src/main/java/freemarker/core/Macro.java
+++ b/src/main/java/freemarker/core/Macro.java
@@ -185,7 +185,7 @@
String paramName = paramNames[i];
sb.append(_CoreStringUtils.toFTLTopLevelIdentifierReference(paramName));
- Expression paramDefaultExp = (Expression) paramNamesWithDefault.get(paramName);
+ Expression paramDefaultExp = paramNamesWithDefault.get(paramName);
if (paramDefaultExp != null) {
sb.append('=');
if (function) {
diff --git a/src/main/java/freemarker/core/ParseException.java b/src/main/java/freemarker/core/ParseException.java
index 985c783..4307508 100644
--- a/src/main/java/freemarker/core/ParseException.java
+++ b/src/main/java/freemarker/core/ParseException.java
@@ -131,7 +131,7 @@
*/
@Deprecated
public ParseException(String description, int lineNumber, int columnNumber) {
- this(description, (Template) null, lineNumber, columnNumber, null);
+ this(description, null, lineNumber, columnNumber, null);
}
/**
diff --git a/src/main/java/freemarker/core/Range.java b/src/main/java/freemarker/core/Range.java
index 5dec1a2..a141c7c 100644
--- a/src/main/java/freemarker/core/Range.java
+++ b/src/main/java/freemarker/core/Range.java
@@ -57,8 +57,8 @@
endType == END_INCLUSIVE, endType == END_SIZE_LIMITED);
} else {
return _TemplateAPI.getTemplateLanguageVersionAsInt(this) >= _TemplateAPI.VERSION_INT_2_3_21
- ? (RangeModel) new ListableRightUnboundedRangeModel(begin)
- : (RangeModel) new NonListableRightUnboundedRangeModel(begin);
+ ? new ListableRightUnboundedRangeModel(begin)
+ : new NonListableRightUnboundedRangeModel(begin);
}
}
diff --git a/src/main/java/freemarker/core/TemplateConfiguration.java b/src/main/java/freemarker/core/TemplateConfiguration.java
index 4fb907b..84f46ea 100644
--- a/src/main/java/freemarker/core/TemplateConfiguration.java
+++ b/src/main/java/freemarker/core/TemplateConfiguration.java
@@ -709,7 +709,7 @@
if (list1.isEmpty()) return list2;
if (list2.isEmpty()) return list1;
- ArrayList<String> mergedList = new ArrayList<String>(list1.size() + list2.size());
+ ArrayList<String> mergedList = new ArrayList<>(list1.size() + list2.size());
mergedList.addAll(list1);
mergedList.addAll(list2);
return mergedList;
diff --git a/src/main/java/freemarker/core/UnexpectedTypeException.java b/src/main/java/freemarker/core/UnexpectedTypeException.java
index 6caf9ce..d99ed2b 100644
--- a/src/main/java/freemarker/core/UnexpectedTypeException.java
+++ b/src/main/java/freemarker/core/UnexpectedTypeException.java
@@ -110,7 +110,7 @@
return new Object[] {
"Expected ", new _DelayedAOrAn(expectedTypesDesc), ", but ",
(blamedAssignmentTargetVarName == null
- ? (Object) (blamed != null ? "this" : "the expression")
+ ? blamed != null ? "this" : "the expression"
: new Object[] {
"assignment target variable ",
new _DelayedJQuote(blamedAssignmentTargetVarName) }),
diff --git a/src/main/java/freemarker/core/UnifiedCall.java b/src/main/java/freemarker/core/UnifiedCall.java
index ebed306..739021e 100644
--- a/src/main/java/freemarker/core/UnifiedCall.java
+++ b/src/main/java/freemarker/core/UnifiedCall.java
@@ -121,7 +121,7 @@
boolean nameIsInParen = sb.charAt(sb.length() - 1) == ')';
if (positionalArgs != null) {
for (int i = 0; i < positionalArgs.size(); i++) {
- Expression argExp = (Expression) positionalArgs.get(i);
+ Expression argExp = positionalArgs.get(i);
if (i != 0) {
sb.append(',');
}
@@ -145,7 +145,7 @@
if (i != 0) {
sb.append(", ");
}
- sb.append(_CoreStringUtils.toFTLTopLevelIdentifierReference((String) bodyParameterNames.get(i)));
+ sb.append(_CoreStringUtils.toFTLTopLevelIdentifierReference(bodyParameterNames.get(i)));
}
}
if (canonical) {
diff --git a/src/main/java/freemarker/core/_MessageUtil.java b/src/main/java/freemarker/core/_MessageUtil.java
index 13f3d00..081835c 100644
--- a/src/main/java/freemarker/core/_MessageUtil.java
+++ b/src/main/java/freemarker/core/_MessageUtil.java
@@ -318,8 +318,8 @@
e.getMessage())
.blame(dataSrcExp);
return useTempModelExc
- ? new _TemplateModelException(e, (Environment) null, desc)
- : new _MiscTemplateException(e, (Environment) null, desc);
+ ? new _TemplateModelException(e, null, desc)
+ : new _MiscTemplateException(e, null, desc);
}
public static TemplateException newCantFormatNumberException(TemplateNumberFormat format, Expression dataSrcExp,
@@ -329,8 +329,8 @@
e.getMessage())
.blame(dataSrcExp);
return useTempModelExc
- ? new _TemplateModelException(e, (Environment) null, desc)
- : new _MiscTemplateException(e, (Environment) null, desc);
+ ? new _TemplateModelException(e, null, desc)
+ : new _MiscTemplateException(e, null, desc);
}
public static TemplateModelException newKeyValuePairListingNonStringKeyExceptionMessage(
diff --git a/src/main/java/freemarker/debug/DebuggerClient.java b/src/main/java/freemarker/debug/DebuggerClient.java
index 1433881..49e1340 100644
--- a/src/main/java/freemarker/debug/DebuggerClient.java
+++ b/src/main/java/freemarker/debug/DebuggerClient.java
@@ -60,15 +60,14 @@
public static Debugger getDebugger(InetAddress host, int port, String password)
throws IOException {
try {
- Socket s = new Socket(host, port);
- try {
+ try (Socket s = new Socket(host, port)) {
ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream());
ObjectInputStream in = new ObjectInputStream(s.getInputStream());
int protocolVersion = in.readInt();
if (protocolVersion > 220) {
throw new IOException(
- "Incompatible protocol version " + protocolVersion +
- ". At most 220 was expected.");
+ "Incompatible protocol version " + protocolVersion +
+ ". At most 220 was expected.");
}
byte[] challenge = (byte[]) in.readObject();
MessageDigest md = MessageDigest.getInstance("SHA");
@@ -77,8 +76,6 @@
out.writeObject(md.digest());
return new LocalDebuggerProxy((Debugger) in.readObject());
//return (Debugger)in.readObject();
- } finally {
- s.close();
}
} catch (IOException e) {
throw e;
diff --git a/src/main/java/freemarker/debug/impl/DebuggerService.java b/src/main/java/freemarker/debug/impl/DebuggerService.java
index 5ba0c40..75a09aa 100644
--- a/src/main/java/freemarker/debug/impl/DebuggerService.java
+++ b/src/main/java/freemarker/debug/impl/DebuggerService.java
@@ -41,8 +41,8 @@
// RMI service.
return
SecurityUtilities.getSystemProperty("freemarker.debug.password", null) == null
- ? (DebuggerService) new NoOpDebuggerService()
- : (DebuggerService) new RmiDebuggerService();
+ ? new NoOpDebuggerService()
+ : new RmiDebuggerService();
}
public static List getBreakpoints(String templateName) {
diff --git a/src/main/java/freemarker/ext/ant/FreemarkerXmlTask.java b/src/main/java/freemarker/ext/ant/FreemarkerXmlTask.java
index c8943e5..58c5cb7 100644
--- a/src/main/java/freemarker/ext/ant/FreemarkerXmlTask.java
+++ b/src/main/java/freemarker/ext/ant/FreemarkerXmlTask.java
@@ -507,8 +507,8 @@
// Process the template and write out
// the result as the outFile.
- Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), encoding));
- try {
+ try (Writer writer = new BufferedWriter(
+ new OutputStreamWriter(new FileOutputStream(outFile), encoding))) {
if (parsedTemplate == null) {
throw new BuildException("No template file specified in build script or in XML file");
}
@@ -534,8 +534,6 @@
}
env.process();
writer.flush();
- } finally {
- writer.close();
}
log("Output: " + outFile, Project.MSG_INFO );
diff --git a/src/main/java/freemarker/ext/beans/ArgumentTypes.java b/src/main/java/freemarker/ext/beans/ArgumentTypes.java
index 506f4d0..2bba006 100644
--- a/src/main/java/freemarker/ext/beans/ArgumentTypes.java
+++ b/src/main/java/freemarker/ext/beans/ArgumentTypes.java
@@ -118,7 +118,7 @@
return applicables.getFirst();
}
- LinkedList<CallableMemberDescriptor> maximals = new LinkedList<CallableMemberDescriptor>();
+ LinkedList<CallableMemberDescriptor> maximals = new LinkedList<>();
for (CallableMemberDescriptor applicable : applicables) {
boolean lessSpecific = false;
for (Iterator<CallableMemberDescriptor> maximalsIter = maximals.iterator();
@@ -453,7 +453,7 @@
*/
LinkedList<CallableMemberDescriptor> getApplicables(
List<ReflectionCallableMemberDescriptor> memberDescs, boolean varArg) {
- LinkedList<CallableMemberDescriptor> applicables = new LinkedList<CallableMemberDescriptor>();
+ LinkedList<CallableMemberDescriptor> applicables = new LinkedList<>();
for (ReflectionCallableMemberDescriptor memberDesc : memberDescs) {
int difficulty = isApplicable(memberDesc, varArg);
if (difficulty != CONVERSION_DIFFICULTY_IMPOSSIBLE) {
diff --git a/src/main/java/freemarker/ext/beans/BeanModel.java b/src/main/java/freemarker/ext/beans/BeanModel.java
index a6c5e4a..6a8bd01 100644
--- a/src/main/java/freemarker/ext/beans/BeanModel.java
+++ b/src/main/java/freemarker/ext/beans/BeanModel.java
@@ -247,7 +247,7 @@
if (cachedModel != null) {
synchronized (this) {
if (memberCache == null) {
- memberCache = new HashMap<Object, TemplateModel>();
+ memberCache = new HashMap<>();
}
memberCache.put(desc, cachedModel);
}
@@ -323,7 +323,7 @@
}
public TemplateCollectionModel values() throws TemplateModelException {
- List<Object> values = new ArrayList<Object>(size());
+ List<Object> values = new ArrayList<>(size());
TemplateModelIterator it = keys().iterator();
while (it.hasNext()) {
String key = ((TemplateScalarModel) it.next()).getAsString();
diff --git a/src/main/java/freemarker/ext/beans/BeansModelCache.java b/src/main/java/freemarker/ext/beans/BeansModelCache.java
index 8d6cae5..99374b6 100644
--- a/src/main/java/freemarker/ext/beans/BeansModelCache.java
+++ b/src/main/java/freemarker/ext/beans/BeansModelCache.java
@@ -30,8 +30,8 @@
import freemarker.template.TemplateModel;
public class BeansModelCache extends ModelCache {
- private final Map<Class<?>, ModelFactory> classToFactory = new ConcurrentHashMap<Class<?>, ModelFactory>();
- private final Set<String> mappedClassNames = new HashSet<String>();
+ private final Map<Class<?>, ModelFactory> classToFactory = new ConcurrentHashMap<>();
+ private final Set<String> mappedClassNames = new HashSet<>();
private final BeansWrapper wrapper;
@@ -54,7 +54,7 @@
if (factory == null) {
// Synchronized so that we won't unnecessarily create the same factory for multiple times in parallel.
synchronized (classToFactory) {
- factory = (ModelFactory) classToFactory.get(clazz);
+ factory = classToFactory.get(clazz);
if (factory == null) {
String className = clazz.getName();
// clear mappings when class reloading is detected
diff --git a/src/main/java/freemarker/ext/beans/BeansWrapper.java b/src/main/java/freemarker/ext/beans/BeansWrapper.java
index 8190715..d72dadc 100644
--- a/src/main/java/freemarker/ext/beans/BeansWrapper.java
+++ b/src/main/java/freemarker/ext/beans/BeansWrapper.java
@@ -1326,7 +1326,7 @@
return retval;
}
} else {
- recursionStops = new IdentityHashMap<Object, Object>();
+ recursionStops = new IdentityHashMap<>();
}
Class<?> componentType = arrayClass.getComponentType();
final int size = seq.size();
@@ -1371,7 +1371,7 @@
return retval;
}
} else {
- recursionStops = new IdentityHashMap<Object, Object>();
+ recursionStops = new IdentityHashMap<>();
}
Class<?> componentType = arrayClass.getComponentType();
Object array = Array.newInstance(componentType, list.size());
diff --git a/src/main/java/freemarker/ext/beans/BeansWrapperBuilder.java b/src/main/java/freemarker/ext/beans/BeansWrapperBuilder.java
index 6072a1e..b369e3f 100644
--- a/src/main/java/freemarker/ext/beans/BeansWrapperBuilder.java
+++ b/src/main/java/freemarker/ext/beans/BeansWrapperBuilder.java
@@ -114,9 +114,8 @@
public class BeansWrapperBuilder extends BeansWrapperConfiguration {
private final static Map<ClassLoader, Map<BeansWrapperConfiguration, WeakReference<BeansWrapper>>>
- INSTANCE_CACHE = new WeakHashMap<
- ClassLoader, Map<BeansWrapperConfiguration, WeakReference<BeansWrapper>>>();
- private final static ReferenceQueue<BeansWrapper> INSTANCE_CACHE_REF_QUEUE = new ReferenceQueue<BeansWrapper>();
+ INSTANCE_CACHE = new WeakHashMap<>();
+ private final static ReferenceQueue<BeansWrapper> INSTANCE_CACHE_REF_QUEUE = new ReferenceQueue<>();
private static class BeansWrapperFactory
implements _BeansAPI._BeansWrapperSubclassFactory<BeansWrapper, BeansWrapperConfiguration> {
diff --git a/src/main/java/freemarker/ext/beans/ClassBasedModelFactory.java b/src/main/java/freemarker/ext/beans/ClassBasedModelFactory.java
index fd836d4..4d5f009 100644
--- a/src/main/java/freemarker/ext/beans/ClassBasedModelFactory.java
+++ b/src/main/java/freemarker/ext/beans/ClassBasedModelFactory.java
@@ -37,8 +37,8 @@
abstract class ClassBasedModelFactory implements TemplateHashModel {
private final BeansWrapper wrapper;
- private final Map<String,TemplateModel> cache = new ConcurrentHashMap<String,TemplateModel>();
- private final Set<String> classIntrospectionsInProgress = new HashSet<String>();
+ private final Map<String,TemplateModel> cache = new ConcurrentHashMap<>();
+ private final Set<String> classIntrospectionsInProgress = new HashSet<>();
protected ClassBasedModelFactory(BeansWrapper wrapper) {
this.wrapper = wrapper;
diff --git a/src/main/java/freemarker/ext/beans/ClassIntrospector.java b/src/main/java/freemarker/ext/beans/ClassIntrospector.java
index e92226d..e0c5135 100644
--- a/src/main/java/freemarker/ext/beans/ClassIntrospector.java
+++ b/src/main/java/freemarker/ext/beans/ClassIntrospector.java
@@ -165,13 +165,13 @@
private final Object sharedLock;
private final Map<Class<?>, Map<Object, Object>> cache
- = new ConcurrentHashMap<Class<?>, Map<Object, Object>>(0, 0.75f, 16);
- private final Set<String> cacheClassNames = new HashSet<String>(0);
- private final Set<Class<?>> classIntrospectionsInProgress = new HashSet<Class<?>>(0);
+ = new ConcurrentHashMap<>(0, 0.75f, 16);
+ private final Set<String> cacheClassNames = new HashSet<>(0);
+ private final Set<Class<?>> classIntrospectionsInProgress = new HashSet<>(0);
private final List<WeakReference<Object/*ClassBasedModelFactory|ModelCache>*/>> modelFactories
- = new LinkedList<WeakReference<Object>>();
- private final ReferenceQueue<Object> modelFactoriesRefQueue = new ReferenceQueue<Object>();
+ = new LinkedList<>();
+ private final ReferenceQueue<Object> modelFactoriesRefQueue = new ReferenceQueue<>();
private int clearingCounter;
@@ -275,7 +275,7 @@
* Creates a {@link Map} with the content as described for the return value of {@link #get(Class)}.
*/
private Map<Object, Object> createClassIntrospectionData(Class<?> clazz) {
- final Map<Object, Object> introspData = new HashMap<Object, Object>();
+ final Map<Object, Object> introspData = new HashMap<>();
MemberAccessPolicy effMemberAccessPolicy = getEffectiveMemberAccessPolicy();
ClassMemberAccessPolicy effClassMemberAccessPolicy = effMemberAccessPolicy.forClass(clazz);
@@ -394,7 +394,7 @@
method.getParameterTypes());
if (replaced != null) {
if (argTypesUsedByIndexerPropReaders == null) {
- argTypesUsedByIndexerPropReaders = new IdentityHashMap<Method, Void>();
+ argTypesUsedByIndexerPropReaders = new IdentityHashMap<>();
}
argTypesUsedByIndexerPropReaders.put(method, null);
}
@@ -444,7 +444,7 @@
if (propName != null) {
if (mergedPRMPs == null) {
// Lazy initialization
- mergedPRMPs = new LinkedHashMap<String, Object>();
+ mergedPRMPs = new LinkedHashMap<>();
}
if (paramTypes.length == 0) {
mergeInPropertyReaderMethod(mergedPRMPs, propName, method);
@@ -467,7 +467,7 @@
}
// Now we convert the PRMPs to PDs, handling case where the normal and the indexed read methods contradict.
- List<PropertyDescriptor> mergedPDs = new ArrayList<PropertyDescriptor>(mergedPRMPs.size());
+ List<PropertyDescriptor> mergedPDs = new ArrayList<>(mergedPRMPs.size());
for (Entry<String, Object> entry : mergedPRMPs.entrySet()) {
String propName = entry.getKey();
Object propDescObj = entry.getValue();
@@ -616,11 +616,11 @@
for (Method method : clazz.getMethods()) {
if (_JavaVersions.JAVA_8.isDefaultMethod(method) && !method.isBridge()) {
if (defaultMethodsToAddByName == null) {
- defaultMethodsToAddByName = new HashMap<String, List<Method>>();
+ defaultMethodsToAddByName = new HashMap<>();
}
List<Method> overloads = defaultMethodsToAddByName.get(method.getName());
if (overloads == null) {
- overloads = new ArrayList<Method>(0);
+ overloads = new ArrayList<>(0);
defaultMethodsToAddByName.put(method.getName(), overloads);
}
overloads.add(method);
@@ -634,7 +634,7 @@
// Recreate introspectionMDs so that its size can grow:
ArrayList<MethodDescriptor> newIntrospectionMDs
- = new ArrayList<MethodDescriptor>(introspectionMDs.size() + 16);
+ = new ArrayList<>(introspectionMDs.size() + 16);
for (MethodDescriptor introspectorMD : introspectionMDs) {
Method introspectorM = introspectorMD.getMethod();
// Prevent cases where the same method is added with different return types both from the list of default
@@ -731,7 +731,7 @@
Class<?> clazz, ClassMemberAccessPolicy effClassMemberAccessPolicy) {
try {
Constructor<?>[] ctorsUnfiltered = clazz.getConstructors();
- List<Constructor<?>> ctors = new ArrayList<Constructor<?>>(ctorsUnfiltered.length);
+ List<Constructor<?>> ctors = new ArrayList<>(ctorsUnfiltered.length);
for (Constructor<?> ctor : ctorsUnfiltered) {
if (effClassMemberAccessPolicy.isConstructorExposed(ctor)) {
ctors.add(ctor);
@@ -763,7 +763,7 @@
* superclasses and interfaces. Basically upcasts every method to the nearest accessible method.
*/
private static Map<ExecutableMemberSignature, List<Method>> discoverAccessibleMethods(Class<?> clazz) {
- Map<ExecutableMemberSignature, List<Method>> accessibles = new HashMap<ExecutableMemberSignature, List<Method>>();
+ Map<ExecutableMemberSignature, List<Method>> accessibles = new HashMap<>();
discoverAccessibleMethods(clazz, accessibles);
return accessibles;
}
@@ -790,7 +790,7 @@
List<Method> methodList = accessibles.get(sig);
if (methodList == null) {
// TODO Collection.singletonList is more efficient, though read only.
- methodList = new LinkedList<Method>();
+ methodList = new LinkedList<>();
accessibles.put(sig, methodList);
}
methodList.add(method);
@@ -867,7 +867,7 @@
@SuppressWarnings("unchecked")
Map<Method, Class<?>[]> argTypes = (Map<Method, Class<?>[]>) classInfo.get(ARG_TYPES_BY_METHOD_KEY);
if (argTypes == null) {
- argTypes = new HashMap<Method, Class<?>[]>();
+ argTypes = new HashMap<>();
classInfo.put(ARG_TYPES_BY_METHOD_KEY, argTypes);
}
return argTypes;
@@ -978,7 +978,7 @@
private void registerModelFactory(Object mf) {
// Note that this `synchronized (sharedLock)` is also need for the BeansWrapper constructor to work safely.
synchronized (sharedLock) {
- modelFactories.add(new WeakReference<Object>(mf, modelFactoriesRefQueue));
+ modelFactories.add(new WeakReference<>(mf, modelFactoriesRefQueue));
removeClearedModelFactoryReferences();
}
}
@@ -1044,7 +1044,7 @@
* interface.
*/
Set<Object> keySet(Class<?> clazz) {
- Set<Object> set = new HashSet<Object>(get(clazz).keySet());
+ Set<Object> set = new HashSet<>(get(clazz).keySet());
set.remove(CONSTRUCTORS_KEY);
set.remove(GENERIC_GET_KEY);
set.remove(ARG_TYPES_BY_METHOD_KEY);
diff --git a/src/main/java/freemarker/ext/beans/ClassIntrospectorBuilder.java b/src/main/java/freemarker/ext/beans/ClassIntrospectorBuilder.java
index e2847ab..cd4df0f 100644
--- a/src/main/java/freemarker/ext/beans/ClassIntrospectorBuilder.java
+++ b/src/main/java/freemarker/ext/beans/ClassIntrospectorBuilder.java
@@ -34,9 +34,9 @@
final class ClassIntrospectorBuilder implements Cloneable {
private static final Map<ClassIntrospectorBuilder, Reference<ClassIntrospector>> INSTANCE_CACHE
- = new HashMap<ClassIntrospectorBuilder, Reference<ClassIntrospector>>();
+ = new HashMap<>();
private static final ReferenceQueue<ClassIntrospector> INSTANCE_CACHE_REF_QUEUE
- = new ReferenceQueue<ClassIntrospector>();
+ = new ReferenceQueue<>();
private final Version incompatibleImprovements;
@@ -232,7 +232,7 @@
if (instance == null) {
ClassIntrospectorBuilder thisClone = (ClassIntrospectorBuilder) clone(); // prevent any aliasing issues
instance = new ClassIntrospector(thisClone, new Object(), true, true);
- INSTANCE_CACHE.put(thisClone, new WeakReference<ClassIntrospector>(instance, INSTANCE_CACHE_REF_QUEUE));
+ INSTANCE_CACHE.put(thisClone, new WeakReference<>(instance, INSTANCE_CACHE_REF_QUEUE));
}
}
diff --git a/src/main/java/freemarker/ext/beans/DefaultMemberAccessPolicy.java b/src/main/java/freemarker/ext/beans/DefaultMemberAccessPolicy.java
index bc8b6d8..076dac8 100644
--- a/src/main/java/freemarker/ext/beans/DefaultMemberAccessPolicy.java
+++ b/src/main/java/freemarker/ext/beans/DefaultMemberAccessPolicy.java
@@ -66,10 +66,10 @@
try {
ClassLoader classLoader = DefaultMemberAccessPolicy.class.getClassLoader();
- whitelistRuleFinalClasses = new HashSet<Class<?>>();
- whitelistRuleNonFinalClasses = new HashSet<Class<?>>();
- Set<Class<?>> typesWithBlacklistUnlistedRule = new HashSet<Class<?>>();
- List<MemberSelector> whitelistMemberSelectors = new ArrayList<MemberSelector>();
+ whitelistRuleFinalClasses = new HashSet<>();
+ whitelistRuleNonFinalClasses = new HashSet<>();
+ Set<Class<?>> typesWithBlacklistUnlistedRule = new HashSet<>();
+ List<MemberSelector> whitelistMemberSelectors = new ArrayList<>();
for (String line : loadMemberSelectorFileLines()) {
line = line.trim();
if (!MemberSelector.isIgnoredLine(line)) {
@@ -128,7 +128,7 @@
whitelistMemberAccessPolicy = new WhitelistMemberAccessPolicy(whitelistMemberSelectors);
// Generate blacklists based on the whitelist and the members of "blacklistUnlistedMembers" types:
- List<MemberSelector> blacklistMemberSelectors = new ArrayList<MemberSelector>();
+ List<MemberSelector> blacklistMemberSelectors = new ArrayList<>();
for (Class<?> blacklistUnlistedRuleType : typesWithBlacklistUnlistedRule) {
ClassMemberAccessPolicy classPolicy = whitelistMemberAccessPolicy.forClass(blacklistUnlistedRuleType);
for (Method method : blacklistUnlistedRuleType.getMethods()) {
@@ -158,19 +158,15 @@
}
private static List<String> loadMemberSelectorFileLines() throws IOException {
- List<String> whitelist = new ArrayList<String>();
- BufferedReader reader =
- new BufferedReader(
- new InputStreamReader(
- DefaultMemberAccessPolicy.class.getResourceAsStream("DefaultMemberAccessPolicy-rules"),
- "UTF-8"));
- try {
+ List<String> whitelist = new ArrayList<>();
+ try (BufferedReader reader = new BufferedReader(
+ new InputStreamReader(
+ DefaultMemberAccessPolicy.class.getResourceAsStream("DefaultMemberAccessPolicy-rules"),
+ "UTF-8"))) {
String line;
- while ((line = reader.readLine()) != null){
+ while ((line = reader.readLine()) != null) {
whitelist.add(line);
}
- } finally {
- reader.close();
}
return whitelist;
diff --git a/src/main/java/freemarker/ext/beans/LegacyDefaultMemberAccessPolicy.java b/src/main/java/freemarker/ext/beans/LegacyDefaultMemberAccessPolicy.java
index 08c7c8f..ee78292 100644
--- a/src/main/java/freemarker/ext/beans/LegacyDefaultMemberAccessPolicy.java
+++ b/src/main/java/freemarker/ext/beans/LegacyDefaultMemberAccessPolicy.java
@@ -45,15 +45,11 @@
private static Set<Method> createUnsafeMethodsSet() {
try {
Properties props = ClassUtil.loadProperties(BeansWrapper.class, UNSAFE_METHODS_PROPERTIES);
- Set<Method> set = new HashSet<Method>(props.size() * 4 / 3, 1f);
+ Set<Method> set = new HashSet<>(props.size() * 4 / 3, 1f);
for (Object key : props.keySet()) {
try {
set.add(parseMethodSpec((String) key));
- } catch (ClassNotFoundException e) {
- if (ClassIntrospector.DEVELOPMENT_MODE) {
- throw e;
- }
- } catch (NoSuchMethodException e) {
+ } catch (ClassNotFoundException | NoSuchMethodException e) {
if (ClassIntrospector.DEVELOPMENT_MODE) {
throw e;
}
diff --git a/src/main/java/freemarker/ext/beans/MemberMatcher.java b/src/main/java/freemarker/ext/beans/MemberMatcher.java
index 34ccc9c..14453fb 100644
--- a/src/main/java/freemarker/ext/beans/MemberMatcher.java
+++ b/src/main/java/freemarker/ext/beans/MemberMatcher.java
@@ -33,10 +33,10 @@
* @since 2.3.30
*/
abstract class MemberMatcher<M extends Member, S> {
- private final Map<S, Types> signaturesToUpperBoundTypes = new HashMap<S, Types>();
+ private final Map<S, Types> signaturesToUpperBoundTypes = new HashMap<>();
private static class Types {
- private final Set<Class<?>> set = new HashSet<Class<?>>();
+ private final Set<Class<?>> set = new HashSet<>();
private boolean containsInterfaces;
}
diff --git a/src/main/java/freemarker/ext/beans/MemberSelectorListMemberAccessPolicy.java b/src/main/java/freemarker/ext/beans/MemberSelectorListMemberAccessPolicy.java
index a1eee12..f7e2216 100644
--- a/src/main/java/freemarker/ext/beans/MemberSelectorListMemberAccessPolicy.java
+++ b/src/main/java/freemarker/ext/beans/MemberSelectorListMemberAccessPolicy.java
@@ -271,7 +271,7 @@
public static List<MemberSelector> parse(
Collection<String> memberSelectors, boolean ignoreMissingClassOrMember, ClassLoader classLoader)
throws ClassNotFoundException, NoSuchMethodException, NoSuchFieldException {
- List<MemberSelector> parsedMemberSelectors = new ArrayList<MemberSelector>(memberSelectors.size());
+ List<MemberSelector> parsedMemberSelectors = new ArrayList<>(memberSelectors.size());
for (String memberSelector : memberSelectors) {
if (!isIgnoredLine(memberSelector)) {
try {
diff --git a/src/main/java/freemarker/ext/beans/OverloadedMethods.java b/src/main/java/freemarker/ext/beans/OverloadedMethods.java
index 586714d..6f9dccb 100644
--- a/src/main/java/freemarker/ext/beans/OverloadedMethods.java
+++ b/src/main/java/freemarker/ext/beans/OverloadedMethods.java
@@ -135,12 +135,12 @@
tmArgs != null
? new Object[] {
"\nThe FTL type of the argument values were: ", getTMActualParameterTypes(tmArgs), "." }
- : (Object) "",
+ : "",
unwrappedArgs != null
? new Object[] {
"\nThe Java type of the argument values were: ",
getUnwrappedActualParameterTypes(unwrappedArgs) + "." }
- : (Object) ""};
+ : ""};
}
private _DelayedConversionToString memberListToString() {
diff --git a/src/main/java/freemarker/ext/beans/StaticModel.java b/src/main/java/freemarker/ext/beans/StaticModel.java
index 8e772aa..f2f182f 100644
--- a/src/main/java/freemarker/ext/beans/StaticModel.java
+++ b/src/main/java/freemarker/ext/beans/StaticModel.java
@@ -44,7 +44,7 @@
private static final Logger LOG = Logger.getLogger("freemarker.beans");
private final Class<?> clazz;
private final BeansWrapper wrapper;
- private final Map<String, Object> map = new HashMap<String, Object>();
+ private final Map<String, Object> map = new HashMap<>();
StaticModel(Class<?> clazz, BeansWrapper wrapper) throws TemplateModelException {
this.clazz = clazz;
diff --git a/src/main/java/freemarker/ext/beans/_BeansAPI.java b/src/main/java/freemarker/ext/beans/_BeansAPI.java
index 8b75893..64d9797 100644
--- a/src/main/java/freemarker/ext/beans/_BeansAPI.java
+++ b/src/main/java/freemarker/ext/beans/_BeansAPI.java
@@ -66,9 +66,9 @@
final ArgumentTypes argTypes = new ArgumentTypes(args, true);
final List<ReflectionCallableMemberDescriptor> fixedArgMemberDescs
- = new ArrayList<ReflectionCallableMemberDescriptor>();
+ = new ArrayList<>();
final List<ReflectionCallableMemberDescriptor> varArgsMemberDescs
- = new ArrayList<ReflectionCallableMemberDescriptor>();
+ = new ArrayList<>();
final Constructor<?>[] constrs = pClass.getConstructors();
for (int i = 0; i < constrs.length; i++) {
Constructor<?> constr = constrs[i];
@@ -155,7 +155,7 @@
synchronized (instanceCache) {
tcclScopedCache = instanceCache.get(tccl);
if (tcclScopedCache == null) {
- tcclScopedCache = new HashMap<BWC, WeakReference<BW>>();
+ tcclScopedCache = new HashMap<>();
instanceCache.put(tccl, tcclScopedCache);
instanceRef = null;
} else {
@@ -179,7 +179,7 @@
instanceRef = tcclScopedCache.get(settings);
BW concurrentInstance = instanceRef != null ? instanceRef.get() : null;
if (concurrentInstance == null) {
- tcclScopedCache.put(settings, new WeakReference<BW>(instance, instanceCacheRefQue));
+ tcclScopedCache.put(settings, new WeakReference<>(instance, instanceCacheRefQue));
} else {
instance = concurrentInstance;
}
diff --git a/src/main/java/freemarker/ext/beans/_MethodUtil.java b/src/main/java/freemarker/ext/beans/_MethodUtil.java
index 9f743bc..1540853 100644
--- a/src/main/java/freemarker/ext/beans/_MethodUtil.java
+++ b/src/main/java/freemarker/ext/beans/_MethodUtil.java
@@ -287,7 +287,7 @@
return new _TemplateModelException(e,
invocationErrorMessageStart(member, isConstructor),
" threw an exception",
- isStatic || isConstructor ? (Object) "" : new Object[] {
+ isStatic || isConstructor ? "" : new Object[] {
" when invoked on ", parentObject.getClass(), " object ", new _DelayedJQuote(parentObject)
},
"; see cause exception in the Java stack trace.");
diff --git a/src/main/java/freemarker/ext/dom/DocumentTypeModel.java b/src/main/java/freemarker/ext/dom/DocumentTypeModel.java
index fe65b60..5a52231 100644
--- a/src/main/java/freemarker/ext/dom/DocumentTypeModel.java
+++ b/src/main/java/freemarker/ext/dom/DocumentTypeModel.java
@@ -46,7 +46,7 @@
}
public String getNodeName() {
- return "@document_type$" + ((DocumentType) node).getNodeName();
+ return "@document_type$" + node.getNodeName();
}
public boolean isEmpty() {
diff --git a/src/main/java/freemarker/ext/dom/NodeListModel.java b/src/main/java/freemarker/ext/dom/NodeListModel.java
index 6da6566..fdd5d0e 100644
--- a/src/main/java/freemarker/ext/dom/NodeListModel.java
+++ b/src/main/java/freemarker/ext/dom/NodeListModel.java
@@ -156,7 +156,7 @@
for (int i = 0; i < size; i++) {
NodeModel nm = (NodeModel) get(i);
if (nm instanceof ElementModel) {
- TemplateSequenceModel tsm = (TemplateSequenceModel) ((ElementModel) nm).get(key);
+ TemplateSequenceModel tsm = (TemplateSequenceModel) nm.get(key);
if (tsm != null) {
int tsmSize = tsm.size();
for (int j = 0; j < tsmSize; j++) {
diff --git a/src/main/java/freemarker/ext/dom/NodeModel.java b/src/main/java/freemarker/ext/dom/NodeModel.java
index 411e0bd..720cb35 100644
--- a/src/main/java/freemarker/ext/dom/NodeModel.java
+++ b/src/main/java/freemarker/ext/dom/NodeModel.java
@@ -643,9 +643,7 @@
useJaxenXPathSupport();
} catch (ClassNotFoundException e) {
// Expected
- } catch (Exception e) {
- LOG.debug("Failed to use Jaxen XPath support.", e);
- } catch (IllegalAccessError e) {
+ } catch (Exception | IllegalAccessError e) {
LOG.debug("Failed to use Jaxen XPath support.", e);
}
}
diff --git a/src/main/java/freemarker/ext/dom/NodeOutputter.java b/src/main/java/freemarker/ext/dom/NodeOutputter.java
index f0dd1e0..9a317d8 100644
--- a/src/main/java/freemarker/ext/dom/NodeOutputter.java
+++ b/src/main/java/freemarker/ext/dom/NodeOutputter.java
@@ -42,7 +42,7 @@
private String defaultNS;
private boolean hasDefaultNS;
private boolean explicitDefaultNSPrefix;
- private LinkedHashMap<String, String> namespacesToPrefixLookup = new LinkedHashMap<String, String>();
+ private LinkedHashMap<String, String> namespacesToPrefixLookup = new LinkedHashMap<>();
private String namespaceDecl;
int nextGeneratedPrefixNumber = 1;
diff --git a/src/main/java/freemarker/ext/jsp/FreemarkerTag.java b/src/main/java/freemarker/ext/jsp/FreemarkerTag.java
index da54f18..48ea69f 100644
--- a/src/main/java/freemarker/ext/jsp/FreemarkerTag.java
+++ b/src/main/java/freemarker/ext/jsp/FreemarkerTag.java
@@ -117,9 +117,7 @@
} catch (Exception e) {
try {
pageContext.handlePageException(e);
- } catch (ServletException e2) {
- throw new JspException(e2.getMessage());
- } catch (IOException e2) {
+ } catch (ServletException | IOException e2) {
throw new JspException(e2.getMessage());
}
} finally {
diff --git a/src/main/java/freemarker/ext/jsp/JspTagModelBase.java b/src/main/java/freemarker/ext/jsp/JspTagModelBase.java
index 032cead..2c4d57b 100644
--- a/src/main/java/freemarker/ext/jsp/JspTagModelBase.java
+++ b/src/main/java/freemarker/ext/jsp/JspTagModelBase.java
@@ -115,7 +115,7 @@
" (declared type: ", new _DelayedShortClassName(setterType)
+ ", actual value's type: ",
(argArray[0] != null
- ? (Object) new _DelayedShortClassName(argArray[0].getClass()) : "Null"),
+ ? new _DelayedShortClassName(argArray[0].getClass()) : "Null"),
"). See cause exception for the more specific cause...");
if (e instanceof IllegalArgumentException && !(setterType.isAssignableFrom(String.class))
&& argArray[0] != null && argArray[0] instanceof String) {
diff --git a/src/main/java/freemarker/ext/jsp/TaglibFactory.java b/src/main/java/freemarker/ext/jsp/TaglibFactory.java
index 4eaa4bf..c9b8d92 100644
--- a/src/main/java/freemarker/ext/jsp/TaglibFactory.java
+++ b/src/main/java/freemarker/ext/jsp/TaglibFactory.java
@@ -238,9 +238,9 @@
}
tldLocation = isJarPath(normalizedTaglibUri)
- ? (TldLocation) new ServletContextJarEntryTldLocation(
+ ? new ServletContextJarEntryTldLocation(
normalizedTaglibUri, DEFAULT_TLD_RESOURCE_PATH)
- : (TldLocation) new ServletContextTldLocation(normalizedTaglibUri);
+ : new ServletContextTldLocation(normalizedTaglibUri);
}
} catch (Exception e) {
String failedTLDsList = failedTldListAlreadyIncluded ? null : getFailedTLDsList();
@@ -624,20 +624,17 @@
throw new IOException("ServletContext resource not found: " + jarResourcePath);
}
try {
- ZipInputStream zipIn = new ZipInputStream(in);
- try {
+ try (ZipInputStream zipIn = new ZipInputStream(in)) {
while (true) {
ZipEntry curEntry = zipIn.getNextEntry();
if (curEntry == null) break;
-
+
String curEntryPath = normalizeJarEntryPath(curEntry.getName(), false);
if (curEntryPath.startsWith(metaInfEntryPath) && curEntryPath.endsWith(".tld")) {
addTldLocationFromTld(zipIn,
- new ServletContextJarEntryTldLocation(jarResourcePath, curEntryPath));
+ new ServletContextJarEntryTldLocation(jarResourcePath, curEntryPath));
}
}
- } finally {
- zipIn.close();
}
} finally {
in.close();
@@ -706,15 +703,14 @@
LOG.debug("Scanning for " + META_INF_ABS_PATH + "**/*.tld-s in stream mode (slow): "
+ rawJarContentUrlEF);
}
-
- final InputStream in = new URL(rawJarContentUrlEF).openStream();
- try {
+
+ try (InputStream in = new URL(rawJarContentUrlEF).openStream()) {
ZipInputStream zipIn = new ZipInputStream(in);
try {
while (true) {
ZipEntry curEntry = zipIn.getNextEntry();
if (curEntry == null) break;
-
+
String curEntryPath = normalizeJarEntryPath(curEntry.getName(), false);
if (curEntryPath.startsWith(baseEntryPath) && curEntryPath.endsWith(".tld")) {
final String curEntryBaseRelativePath = curEntryPath.substring(baseEntryPath.length());
@@ -726,17 +722,15 @@
zipIn.close();
}
} catch (ZipException e) {
- // ZipException messages miss the zip URL
+ // ZipException messages miss the zip URL
IOException ioe = new IOException("Error reading ZIP (see cause excepetion) from: "
- + rawJarContentUrlEF);
+ + rawJarContentUrlEF);
try {
ioe.initCause(e);
} catch (Exception e2) {
throw e;
}
throw ioe;
- } finally {
- in.close();
}
}
}
@@ -769,11 +763,8 @@
* Adds the TLD location mapping from the TLD itself.
*/
private void addTldLocationFromTld(TldLocation tldLocation) throws IOException, SAXException {
- InputStream in = tldLocation.getInputStream();
- try {
+ try (InputStream in = tldLocation.getInputStream()) {
addTldLocationFromTld(in, tldLocation);
- } finally {
- in.close();
}
}
@@ -1467,12 +1458,9 @@
private static final Map parseToTagsAndFunctions(
ServletContext ctx, TldLocation tldLocation, ObjectWrapper objectWrapper) throws IOException, SAXException {
final TldParserForTaglibBuilding tldParser = new TldParserForTaglibBuilding(objectWrapper);
-
- InputStream in = tldLocation.getInputStream();
- try {
+
+ try (InputStream in = tldLocation.getInputStream()) {
parseXml(in, tldLocation.getXmlSystemId(), tldParser);
- } finally {
- in.close();
}
EventForwarding eventForwarding = EventForwarding.getInstance(ctx);
@@ -1547,9 +1535,9 @@
} else if (E_TAGLIB.equals(qName)) {
addTldLocation(
isJarPath(taglibLocationCData)
- ? (TldLocation) new ServletContextJarEntryTldLocation(
+ ? new ServletContextJarEntryTldLocation(
taglibLocationCData, DEFAULT_TLD_RESOURCE_PATH)
- : (TldLocation) new ServletContextTldLocation(taglibLocationCData),
+ : new ServletContextTldLocation(taglibLocationCData),
taglibUriCData);
}
}
@@ -1610,7 +1598,7 @@
private final BeansWrapper beansWrapper;
- private final Map<String, TemplateModel> tagsAndFunctions = new HashMap<String, TemplateModel>();
+ private final Map<String, TemplateModel> tagsAndFunctions = new HashMap<>();
private final List listeners = new ArrayList();
private Locator locator;
@@ -1823,9 +1811,7 @@
throws TldParsingSAXException {
try {
return ClassUtil.forName(className);
- } catch (LinkageError e) {
- throw newTLDEntryClassLoadingException(e, className, entryType, entryName);
- } catch (ClassNotFoundException e) {
+ } catch (LinkageError | ClassNotFoundException e) {
throw newTLDEntryClassLoadingException(e, className, entryType, entryName);
}
}
diff --git a/src/main/java/freemarker/ext/jython/JythonVersionAdapterHolder.java b/src/main/java/freemarker/ext/jython/JythonVersionAdapterHolder.java
index 9b6c29d..ce14cb4 100644
--- a/src/main/java/freemarker/ext/jython/JythonVersionAdapterHolder.java
+++ b/src/main/java/freemarker/ext/jython/JythonVersionAdapterHolder.java
@@ -58,11 +58,7 @@
"freemarker.ext.jython._Jython20And21VersionAdapter")
.newInstance();
}
- } catch (ClassNotFoundException e) {
- throw adapterCreationException(e);
- } catch (IllegalAccessException e) {
- throw adapterCreationException(e);
- } catch (InstantiationException e) {
+ } catch (ClassNotFoundException | IllegalAccessException | InstantiationException e) {
throw adapterCreationException(e);
}
}
diff --git a/src/main/java/freemarker/ext/jython/JythonWrapper.java b/src/main/java/freemarker/ext/jython/JythonWrapper.java
index c10d122..fa3b575 100644
--- a/src/main/java/freemarker/ext/jython/JythonWrapper.java
+++ b/src/main/java/freemarker/ext/jython/JythonWrapper.java
@@ -221,11 +221,10 @@
for (int i = 0; i < args.length; ++i) {
list.add(
isEx
- ? (Object) wrap(args[i])
- : (Object) (
- args[i] == null
- ? null
- : args[i].toString()));
+ ? wrap(args[i])
+ : args[i] == null
+ ? null
+ : args[i].toString());
}
return unwrap((TemplateModel) ((TemplateMethodModelEx) model).exec(list));
} catch (TemplateModelException e) {
diff --git a/src/main/java/freemarker/ext/servlet/FreemarkerServlet.java b/src/main/java/freemarker/ext/servlet/FreemarkerServlet.java
index dbfd69a..c0284aa 100644
--- a/src/main/java/freemarker/ext/servlet/FreemarkerServlet.java
+++ b/src/main/java/freemarker/ext/servlet/FreemarkerServlet.java
@@ -1061,9 +1061,7 @@
ATTR_REQUEST_PARAMETERS_MODEL);
params.putUnlistedModel(KEY_REQUEST_PARAMETERS, requestParametersModel);
return params;
- } catch (ServletException e) {
- throw new TemplateModelException(e);
- } catch (IOException e) {
+ } catch (ServletException | IOException e) {
throw new TemplateModelException(e);
}
}
diff --git a/src/main/java/freemarker/ext/servlet/IncludePage.java b/src/main/java/freemarker/ext/servlet/IncludePage.java
index 774b71a..9725e00 100644
--- a/src/main/java/freemarker/ext/servlet/IncludePage.java
+++ b/src/main/java/freemarker/ext/servlet/IncludePage.java
@@ -226,7 +226,7 @@
@Override
public String[] getParameterValues(String name) {
String[] value = ((String[]) paramsMap.get(name));
- return value != null ? (String[]) value.clone() : null;
+ return value != null ? value.clone() : null;
}
@Override
diff --git a/src/main/java/freemarker/ext/util/ModelCache.java b/src/main/java/freemarker/ext/util/ModelCache.java
index 8d6686c..6180f70 100644
--- a/src/main/java/freemarker/ext/util/ModelCache.java
+++ b/src/main/java/freemarker/ext/util/ModelCache.java
@@ -47,8 +47,8 @@
public synchronized void setUseCache(boolean useCache) {
this.useCache = useCache;
if (useCache) {
- modelCache = new IdentityHashMap<Object, ModelReference>();
- refQueue = new ReferenceQueue<TemplateModel>();
+ modelCache = new IdentityHashMap<>();
+ refQueue = new ReferenceQueue<>();
} else {
modelCache = null;
refQueue = null;
@@ -136,7 +136,7 @@
}
TemplateModel getModel() {
- return (TemplateModel) this.get();
+ return this.get();
}
}
diff --git a/src/main/java/freemarker/template/Configuration.java b/src/main/java/freemarker/template/Configuration.java
index 3f0031d..f6b6368 100644
--- a/src/main/java/freemarker/template/Configuration.java
+++ b/src/main/java/freemarker/template/Configuration.java
@@ -373,7 +373,7 @@
private static final Map<String, OutputFormat> STANDARD_OUTPUT_FORMATS;
static {
- STANDARD_OUTPUT_FORMATS = new HashMap<String, OutputFormat>();
+ STANDARD_OUTPUT_FORMATS = new HashMap<>();
STANDARD_OUTPUT_FORMATS.put(UndefinedOutputFormat.INSTANCE.getName(), UndefinedOutputFormat.INSTANCE);
STANDARD_OUTPUT_FORMATS.put(HTMLOutputFormat.INSTANCE.getName(), HTMLOutputFormat.INSTANCE);
STANDARD_OUTPUT_FORMATS.put(XHTMLOutputFormat.INSTANCE.getName(), XHTMLOutputFormat.INSTANCE);
@@ -2236,7 +2236,7 @@
sb.append(StringUtil.jQuote(name));
sb.append(". The output formats registered in the Configuration are: ");
- Set<String> registeredNames = new TreeSet<String>();
+ Set<String> registeredNames = new TreeSet<>();
registeredNames.addAll(STANDARD_OUTPUT_FORMATS.keySet());
registeredNames.addAll(registeredCustomOutputFormats.keySet());
@@ -2296,7 +2296,7 @@
*/
public void setRegisteredCustomOutputFormats(Collection<? extends OutputFormat> registeredCustomOutputFormats) {
NullArgumentException.check(registeredCustomOutputFormats);
- Map<String, OutputFormat> m = new LinkedHashMap<String, OutputFormat>(
+ Map<String, OutputFormat> m = new LinkedHashMap<>(
registeredCustomOutputFormats.size() * 4 / 3, 1f);
for (OutputFormat outputFormat : registeredCustomOutputFormats) {
String name = outputFormat.getName();
@@ -3476,9 +3476,9 @@
*/
@Override
public Set<String> getSettingNames(boolean camelCase) {
- return new _UnmodifiableCompositeSet<String>(
+ return new _UnmodifiableCompositeSet<>(
super.getSettingNames(camelCase),
- new _SortedArraySet<String>(camelCase ? SETTING_NAMES_CAMEL_CASE : SETTING_NAMES_SNAKE_CASE));
+ new _SortedArraySet<>(camelCase ? SETTING_NAMES_CAMEL_CASE : SETTING_NAMES_SNAKE_CASE));
}
@Override
diff --git a/src/main/java/freemarker/template/DefaultNonListCollectionAdapter.java b/src/main/java/freemarker/template/DefaultNonListCollectionAdapter.java
index ab87cc6..11241e1 100644
--- a/src/main/java/freemarker/template/DefaultNonListCollectionAdapter.java
+++ b/src/main/java/freemarker/template/DefaultNonListCollectionAdapter.java
@@ -96,7 +96,7 @@
} catch (ClassCastException e) {
throw new _TemplateModelException(e,
"Failed to check if the collection contains the item. Probably the item's Java type, ",
- itemPojo != null ? new _DelayedShortClassName(itemPojo.getClass()) : (Object) "Null",
+ itemPojo != null ? new _DelayedShortClassName(itemPojo.getClass()) : "Null",
", doesn't match the type of (some of) the collection items; see cause exception.");
}
}
diff --git a/src/main/java/freemarker/template/DefaultObjectWrapper.java b/src/main/java/freemarker/template/DefaultObjectWrapper.java
index eac0198..c0337db 100644
--- a/src/main/java/freemarker/template/DefaultObjectWrapper.java
+++ b/src/main/java/freemarker/template/DefaultObjectWrapper.java
@@ -221,8 +221,8 @@
return DefaultListAdapter.adapt((List<?>) obj, this);
} else {
return forceLegacyNonListCollections
- ? (TemplateModel) new SimpleSequence((Collection<?>) obj, this)
- : (TemplateModel) DefaultNonListCollectionAdapter.adapt((Collection<?>) obj, this);
+ ? new SimpleSequence((Collection<?>) obj, this)
+ : DefaultNonListCollectionAdapter.adapt((Collection<?>) obj, this);
}
} else {
return new SimpleSequence((Collection<?>) obj, this);
@@ -230,16 +230,16 @@
}
if (obj instanceof Map) {
return useAdaptersForContainers
- ? (TemplateModel) DefaultMapAdapter.adapt((Map<?, ?>) obj, this)
- : (TemplateModel) new SimpleHash((Map<?, ?>) obj, this);
+ ? DefaultMapAdapter.adapt((Map<?, ?>) obj, this)
+ : new SimpleHash((Map<?, ?>) obj, this);
}
if (obj instanceof Boolean) {
return obj.equals(Boolean.TRUE) ? TemplateBooleanModel.TRUE : TemplateBooleanModel.FALSE;
}
if (obj instanceof Iterator) {
return useAdaptersForContainers
- ? (TemplateModel) DefaultIteratorAdapter.adapt((Iterator<?>) obj, this)
- : (TemplateModel) new SimpleCollection((Iterator<?>) obj, this);
+ ? DefaultIteratorAdapter.adapt((Iterator<?>) obj, this)
+ : new SimpleCollection((Iterator<?>) obj, this);
}
if (useAdapterForEnumerations && obj instanceof Enumeration) {
return DefaultEnumerationAdapter.adapt((Enumeration<?>) obj, this);
diff --git a/src/main/java/freemarker/template/DefaultObjectWrapperBuilder.java b/src/main/java/freemarker/template/DefaultObjectWrapperBuilder.java
index e73fa8b..1890ba9 100644
--- a/src/main/java/freemarker/template/DefaultObjectWrapperBuilder.java
+++ b/src/main/java/freemarker/template/DefaultObjectWrapperBuilder.java
@@ -39,10 +39,9 @@
public class DefaultObjectWrapperBuilder extends DefaultObjectWrapperConfiguration {
private final static Map<ClassLoader, Map<DefaultObjectWrapperConfiguration, WeakReference<DefaultObjectWrapper>>>
- INSTANCE_CACHE = new WeakHashMap<
- ClassLoader, Map<DefaultObjectWrapperConfiguration, WeakReference<DefaultObjectWrapper>>>();
+ INSTANCE_CACHE = new WeakHashMap<>();
private final static ReferenceQueue<DefaultObjectWrapper> INSTANCE_CACHE_REF_QUEUE
- = new ReferenceQueue<DefaultObjectWrapper>();
+ = new ReferenceQueue<>();
/**
* Creates a builder that creates a {@link DefaultObjectWrapper} with the given {@code incompatibleImprovements};
diff --git a/src/main/java/freemarker/template/Template.java b/src/main/java/freemarker/template/Template.java
index aa70c0b..578f48d 100644
--- a/src/main/java/freemarker/template/Template.java
+++ b/src/main/java/freemarker/template/Template.java
@@ -290,7 +290,7 @@
*/
@Deprecated
public Template(String name, Reader reader) throws IOException {
- this(name, reader, (Configuration) null);
+ this(name, reader, null);
}
/**
diff --git a/src/main/java/freemarker/template/TemplateException.java b/src/main/java/freemarker/template/TemplateException.java
index 30da1b8..7290a16 100644
--- a/src/main/java/freemarker/template/TemplateException.java
+++ b/src/main/java/freemarker/template/TemplateException.java
@@ -77,7 +77,7 @@
* or underlying cause.
*/
public TemplateException(Environment env) {
- this((String) null, null, env);
+ this(null, null, env);
}
/**
@@ -95,7 +95,7 @@
* backward-compatibility.
*/
public TemplateException(Exception cause, Environment env) {
- this((String) null, cause, env);
+ this(null, cause, env);
}
/**
@@ -108,7 +108,7 @@
* @since 2.3.20
*/
public TemplateException(Throwable cause, Environment env) {
- this((String) null, cause, env);
+ this(null, cause, env);
}
/**
@@ -195,7 +195,7 @@
if (!positionsCalculated) {
// The expressions is the argument of the template element, so we prefer it as it's more specific.
TemplateObject templateObject = blamedExpression != null
- ? (TemplateObject) blamedExpression
+ ? blamedExpression
: (
ftlInstructionStackSnapshot != null && ftlInstructionStackSnapshot.length != 0
? ftlInstructionStackSnapshot[0] : null);
diff --git a/src/main/java/freemarker/template/TemplateModelException.java b/src/main/java/freemarker/template/TemplateModelException.java
index 2926ba8..df1efd9 100644
--- a/src/main/java/freemarker/template/TemplateModelException.java
+++ b/src/main/java/freemarker/template/TemplateModelException.java
@@ -35,7 +35,7 @@
* specified detail message.
*/
public TemplateModelException() {
- this((String) null, null);
+ this(null, null);
}
/**
@@ -53,7 +53,7 @@
* backward-compatibility.
*/
public TemplateModelException(Exception cause) {
- this((String) null, cause);
+ this(null, cause);
}
/**
@@ -64,7 +64,7 @@
* exception to be raised
*/
public TemplateModelException(Throwable cause) {
- this((String) null, cause);
+ this(null, cause);
}
/**
diff --git a/src/main/java/freemarker/template/utility/ClassUtil.java b/src/main/java/freemarker/template/utility/ClassUtil.java
index 95fd3b8..7fc4046 100644
--- a/src/main/java/freemarker/template/utility/ClassUtil.java
+++ b/src/main/java/freemarker/template/utility/ClassUtil.java
@@ -94,7 +94,7 @@
private static final Map<String, Class<?>> PRIMITIVE_CLASSES_BY_NAME;
static {
- PRIMITIVE_CLASSES_BY_NAME = new HashMap<String, Class<?>>();
+ PRIMITIVE_CLASSES_BY_NAME = new HashMap<>();
PRIMITIVE_CLASSES_BY_NAME.put("boolean", boolean.class);
PRIMITIVE_CLASSES_BY_NAME.put("byte", byte.class);
PRIMITIVE_CLASSES_BY_NAME.put("char", char.class);
diff --git a/src/main/java/freemarker/template/utility/DeepUnwrap.java b/src/main/java/freemarker/template/utility/DeepUnwrap.java
index aa893a2..090aa6c 100644
--- a/src/main/java/freemarker/template/utility/DeepUnwrap.java
+++ b/src/main/java/freemarker/template/utility/DeepUnwrap.java
@@ -151,7 +151,7 @@
}
if (model instanceof TemplateHashModelEx) {
TemplateHashModelEx hash = (TemplateHashModelEx) model;
- Map<Object, Object> map = new LinkedHashMap<Object, Object>();
+ Map<Object, Object> map = new LinkedHashMap<>();
if (model instanceof TemplateHashModelEx2) {
KeyValuePairIterator kvps = ((TemplateHashModelEx2) model).keyValuePairIterator();
while (kvps.hasNext()) {
diff --git a/src/main/java/freemarker/template/utility/Execute.java b/src/main/java/freemarker/template/utility/Execute.java
index 034c961..4542a08 100644
--- a/src/main/java/freemarker/template/utility/Execute.java
+++ b/src/main/java/freemarker/template/utility/Execute.java
@@ -83,18 +83,15 @@
Process exec = Runtime.getRuntime().exec( aExecute );
// stdout from the process comes in here
- InputStream execOut = exec.getInputStream();
- try {
- Reader execReader = new InputStreamReader( execOut );
-
- char[] buffer = new char[ OUTPUT_BUFFER_SIZE ];
- int bytes_read = execReader.read( buffer );
- while ( bytes_read > 0 ) {
- aOutputBuffer.append( buffer, 0, bytes_read );
- bytes_read = execReader.read( buffer );
+ try (InputStream execOut = exec.getInputStream()) {
+ Reader execReader = new InputStreamReader(execOut);
+
+ char[] buffer = new char[OUTPUT_BUFFER_SIZE];
+ int bytes_read = execReader.read(buffer);
+ while (bytes_read > 0) {
+ aOutputBuffer.append(buffer, 0, bytes_read);
+ bytes_read = execReader.read(buffer);
}
- } finally {
- execOut.close();
}
} catch ( IOException ioe ) {
throw new TemplateModelException( ioe.getMessage() );
diff --git a/src/main/java/freemarker/template/utility/NumberUtil.java b/src/main/java/freemarker/template/utility/NumberUtil.java
index 9cd3382..f4ccdcd 100644
--- a/src/main/java/freemarker/template/utility/NumberUtil.java
+++ b/src/main/java/freemarker/template/utility/NumberUtil.java
@@ -66,31 +66,31 @@
*/
public static int getSignum(Number num) throws ArithmeticException {
if (num instanceof Integer) {
- int n = ((Integer) num).intValue();
+ int n = num.intValue();
return n > 0 ? 1 : (n == 0 ? 0 : -1);
} else if (num instanceof BigDecimal) {
BigDecimal n = (BigDecimal) num;
return n.signum();
} else if (num instanceof Double) {
- double n = ((Double) num).doubleValue();
+ double n = num.doubleValue();
if (n > 0) return 1;
else if (n == 0) return 0;
else if (n < 0) return -1;
else throw new ArithmeticException("The signum of " + n + " is not defined."); // NaN
} else if (num instanceof Float) {
- float n = ((Float) num).floatValue();
+ float n = num.floatValue();
if (n > 0) return 1;
else if (n == 0) return 0;
else if (n < 0) return -1;
else throw new ArithmeticException("The signum of " + n + " is not defined."); // NaN
} else if (num instanceof Long) {
- long n = ((Long) num).longValue();
+ long n = num.longValue();
return n > 0 ? 1 : (n == 0 ? 0 : -1);
} else if (num instanceof Short) {
- short n = ((Short) num).shortValue();
+ short n = num.shortValue();
return n > 0 ? 1 : (n == 0 ? 0 : -1);
} else if (num instanceof Byte) {
- byte n = ((Byte) num).byteValue();
+ byte n = num.byteValue();
return n > 0 ? 1 : (n == 0 ? 0 : -1);
} else if (num instanceof BigInteger) {
BigInteger n = (BigInteger) num;
diff --git a/src/main/java/freemarker/template/utility/TemplateModelUtils.java b/src/main/java/freemarker/template/utility/TemplateModelUtils.java
index aaadb33..e04d99f 100644
--- a/src/main/java/freemarker/template/utility/TemplateModelUtils.java
+++ b/src/main/java/freemarker/template/utility/TemplateModelUtils.java
@@ -155,7 +155,7 @@
throws TemplateModelException {
NullArgumentException.check("hashLikeObjects", hashLikeObjects);
- List<TemplateHashModel> hashes = new ArrayList<TemplateHashModel>(hashLikeObjects.size());
+ List<TemplateHashModel> hashes = new ArrayList<>(hashLikeObjects.size());
boolean allTHMEx = true;
for (Object hashLikeObject : hashLikeObjects) {
@@ -248,7 +248,7 @@
private void initKeys() throws TemplateModelException {
if (keys == null) {
- Set<String> keySet = new HashSet<String>();
+ Set<String> keySet = new HashSet<>();
SimpleSequence keySeq = new SimpleSequence(_TemplateAPI.SAFE_OBJECT_WRAPPER);
for (TemplateHashModelEx hash : hashes) {
addKeys(keySet, keySeq, hash);
diff --git a/src/main/java/freemarker/template/utility/ToCanonical.java b/src/main/java/freemarker/template/utility/ToCanonical.java
index 87752b8..1f1babb 100644
--- a/src/main/java/freemarker/template/utility/ToCanonical.java
+++ b/src/main/java/freemarker/template/utility/ToCanonical.java
@@ -66,11 +66,8 @@
File convertedFile = new File(dir, filename + ".canonical");
config.setDirectoryForTemplateLoading(dir);
Template template = config.getTemplate(filename);
- FileWriter output = new FileWriter(convertedFile);
- try {
+ try (FileWriter output = new FileWriter(convertedFile)) {
template.dump(output);
- } finally {
- output.close();
}
}
diff --git a/src/test/java/freemarker/core/ASTPrinter.java b/src/test/java/freemarker/core/ASTPrinter.java
index b84d779..a32f037 100644
--- a/src/test/java/freemarker/core/ASTPrinter.java
+++ b/src/test/java/freemarker/core/ASTPrinter.java
@@ -166,8 +166,7 @@
throw new IOException("Failed to get the length of " + file);
}
byte[] buffer = new byte[(int) ln];
- InputStream in = new FileInputStream(file);
- try {
+ try (InputStream in = new FileInputStream(file)) {
int offset = 0;
int bytesRead;
while (offset < buffer.length) {
@@ -177,8 +176,6 @@
}
offset += bytesRead;
}
- } finally {
- in.close();
}
try {
@@ -199,12 +196,9 @@
if (!parentDir.isDirectory() && !parentDir.mkdirs()) {
throw new IOException("Failed to create parent directory: " + parentDir);
}
-
- Writer w = new BufferedWriter(new FileWriter(file));
- try {
+
+ try (Writer w = new BufferedWriter(new FileWriter(file))) {
w.write(astStr);
- } finally {
- w.close();
}
}
diff --git a/src/test/java/freemarker/core/AttemptLoggingTest.java b/src/test/java/freemarker/core/AttemptLoggingTest.java
index aa2d2c2..9f3cf83 100644
--- a/src/test/java/freemarker/core/AttemptLoggingTest.java
+++ b/src/test/java/freemarker/core/AttemptLoggingTest.java
@@ -48,7 +48,7 @@
@Test
public void customConfigTest() throws IOException, TemplateException {
- List<String> reports = new ArrayList<String>();
+ List<String> reports = new ArrayList<>();
getConfiguration().setAttemptExceptionReporter(new TestAttemptExceptionReporter(reports));
assertOutput(
@@ -62,7 +62,7 @@
@Test
public void dontReportSuppressedExceptionsTest() throws IOException, TemplateException {
- List<String> reports = new ArrayList<String>();
+ List<String> reports = new ArrayList<>();
getConfiguration().setAttemptExceptionReporter(new TestAttemptExceptionReporter(reports));
getConfiguration().setTemplateExceptionHandler(new TemplateExceptionHandler() {
diff --git a/src/test/java/freemarker/core/CamelCaseTest.java b/src/test/java/freemarker/core/CamelCaseTest.java
index 22b3008..b1e1dcd 100644
--- a/src/test/java/freemarker/core/CamelCaseTest.java
+++ b/src/test/java/freemarker/core/CamelCaseTest.java
@@ -256,8 +256,8 @@
assertContainsBothNamingStyles(getConfiguration().getSupportedBuiltInNames(), new NamePairAssertion() {
public void assertPair(String name1, String name2) {
- BuiltIn bi1 = (BuiltIn) BuiltIn.BUILT_INS_BY_NAME.get(name1);
- BuiltIn bi2 = (BuiltIn) BuiltIn.BUILT_INS_BY_NAME.get(name2);
+ BuiltIn bi1 = BuiltIn.BUILT_INS_BY_NAME.get(name1);
+ BuiltIn bi2 = BuiltIn.BUILT_INS_BY_NAME.get(name2);
assertTrue("\"" + name1 + "\" and \"" + name2 + "\" doesn't belong to the same BI object.",
bi1 == bi2);
}
@@ -266,7 +266,7 @@
}
private void assertContainsBothNamingStyles(Set<String> names, NamePairAssertion namePairAssertion) {
- Set<String> underscoredNamesWithCamelCasePair = new HashSet<String>();
+ Set<String> underscoredNamesWithCamelCasePair = new HashSet<>();
for (String name : names) {
if (_CoreStringUtils.getIdentifierNamingConvention(name) == Configuration.CAMEL_CASE_NAMING_CONVENTION) {
String underscoredName = correctIsoBIExceptions(_CoreStringUtils.camelCaseToUnderscored(name));
diff --git a/src/test/java/freemarker/core/ConfigurableTest.java b/src/test/java/freemarker/core/ConfigurableTest.java
index e0a79c0..10ff854 100644
--- a/src/test/java/freemarker/core/ConfigurableTest.java
+++ b/src/test/java/freemarker/core/ConfigurableTest.java
@@ -83,8 +83,8 @@
public void testGetSettingNamesNameConventionsContainTheSame() throws Exception {
Configurable cfgable = createConfigurable();
ConfigurableTest.testGetSettingNamesNameConventionsContainTheSame(
- new ArrayList<String>(cfgable.getSettingNames(false)),
- new ArrayList<String>(cfgable.getSettingNames(true)));
+ new ArrayList<>(cfgable.getSettingNames(false)),
+ new ArrayList<>(cfgable.getSettingNames(true)));
}
public static void testKeyStaticFieldsHasAllVariationsAndCorrectFormat(
@@ -146,10 +146,10 @@
}
public static void testGetSettingNamesNameConventionsContainTheSame(List<String> namesSCList, List<String> namesCCList) {
- Set<String> namesSC = new HashSet<String>(namesSCList);
+ Set<String> namesSC = new HashSet<>(namesSCList);
assertEquals(namesSCList.size(), namesSC.size());
- Set<String> namesCC = new HashSet<String>(namesCCList);
+ Set<String> namesCC = new HashSet<>(namesCCList);
assertEquals(namesCCList.size(), namesCC.size());
assertEquals(namesSC.size(), namesCC.size());
diff --git a/src/test/java/freemarker/core/DirectiveCallPlaceTest.java b/src/test/java/freemarker/core/DirectiveCallPlaceTest.java
index dcbe59b..3a4e532 100644
--- a/src/test/java/freemarker/core/DirectiveCallPlaceTest.java
+++ b/src/test/java/freemarker/core/DirectiveCallPlaceTest.java
@@ -100,7 +100,7 @@
@SuppressWarnings("boxing")
@Override
protected Object createDataModel() {
- Map<String, Object> dm = new HashMap<String, Object>();
+ Map<String, Object> dm = new HashMap<>();
dm.put("uc", new CachingUpperCaseDirective());
dm.put("lc", new CachingLowerCaseDirective());
dm.put("pa", new PositionAwareDirective());
diff --git a/src/test/java/freemarker/core/LazilyGeneratedCollectionTest.java b/src/test/java/freemarker/core/LazilyGeneratedCollectionTest.java
index 0dee5f4..2004305 100644
--- a/src/test/java/freemarker/core/LazilyGeneratedCollectionTest.java
+++ b/src/test/java/freemarker/core/LazilyGeneratedCollectionTest.java
@@ -291,7 +291,7 @@
protected final List<Number> elements;
public ListContainingTemplateModel(Number... elements) {
- this.elements = new ArrayList<Number>(Arrays.asList(elements));
+ this.elements = new ArrayList<>(Arrays.asList(elements));
}
public int size() {
diff --git a/src/test/java/freemarker/core/NullTransparencyTest.java b/src/test/java/freemarker/core/NullTransparencyTest.java
index a5f6638..715e25c 100644
--- a/src/test/java/freemarker/core/NullTransparencyTest.java
+++ b/src/test/java/freemarker/core/NullTransparencyTest.java
@@ -37,15 +37,15 @@
@Override
protected Object createDataModel() {
- Map<String, Object> dataModel = new HashMap<String, Object>();
+ Map<String, Object> dataModel = new HashMap<>();
- List<String> list = new ArrayList<String>();
+ List<String> list = new ArrayList<>();
list.add("a");
list.add(null);
list.add("b");
dataModel.put("list", list);
- Map<String, String> map = new LinkedHashMap<String, String>();
+ Map<String, String> map = new LinkedHashMap<>();
map.put("ak", "av");
map.put(null, "bv");
map.put("ck", null);
diff --git a/src/test/java/freemarker/core/PrintfGTemplateNumberFormatFactory.java b/src/test/java/freemarker/core/PrintfGTemplateNumberFormatFactory.java
index 1fd0ed7..bb582b8 100644
--- a/src/test/java/freemarker/core/PrintfGTemplateNumberFormatFactory.java
+++ b/src/test/java/freemarker/core/PrintfGTemplateNumberFormatFactory.java
@@ -80,7 +80,7 @@
if (n instanceof BigInteger) {
gCompatibleN = new BigDecimal((BigInteger) n);
} else if (n instanceof Long) {
- gCompatibleN = BigDecimal.valueOf(((Long) n).longValue());
+ gCompatibleN = BigDecimal.valueOf(n.longValue());
} else {
gCompatibleN = Double.valueOf(n.doubleValue());
}
diff --git a/src/test/java/freemarker/core/TemplateConfigurationTest.java b/src/test/java/freemarker/core/TemplateConfigurationTest.java
index 5be84d7..e48c38a 100644
--- a/src/test/java/freemarker/core/TemplateConfigurationTest.java
+++ b/src/test/java/freemarker/core/TemplateConfigurationTest.java
@@ -152,7 +152,7 @@
private static final Map<String, Object> SETTING_ASSIGNMENTS;
static {
- SETTING_ASSIGNMENTS = new HashMap<String, Object>();
+ SETTING_ASSIGNMENTS = new HashMap<>();
// "Configurable" settings:
SETTING_ASSIGNMENTS.put("APIBuiltinEnabled", true);
@@ -214,7 +214,7 @@
public static List<PropertyDescriptor> getTemplateConfigurationSettingPropDescs(
boolean includeCompilerSettings, boolean includeSpecialSettings)
throws IntrospectionException {
- List<PropertyDescriptor> settingPropDescs = new ArrayList<PropertyDescriptor>();
+ List<PropertyDescriptor> settingPropDescs = new ArrayList<>();
BeanInfo beanInfo = Introspector.getBeanInfo(TemplateConfiguration.class);
for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) {
@@ -254,7 +254,7 @@
private static final Set<String> CONFIGURABLE_PROP_NAMES;
static {
- CONFIGURABLE_PROP_NAMES = new HashSet<String>();
+ CONFIGURABLE_PROP_NAMES = new HashSet<>();
try {
for (PropertyDescriptor propDesc : Introspector.getBeanInfo(Configurable.class).getPropertyDescriptors()) {
String propName = propDesc.getName();
@@ -269,7 +269,7 @@
private static final Set<String> PARSER_PROP_NAMES;
static {
- PARSER_PROP_NAMES = new HashSet<String>();
+ PARSER_PROP_NAMES = new HashSet<>();
// It's an interface; can't use standard Inrospector
for (Method m : ParserConfiguration.class.getMethods()) {
String propertyName;
@@ -291,7 +291,7 @@
private static final Set<String> SPECIAL_PROP_NAMES;
static {
- SPECIAL_PROP_NAMES = new HashSet<String>();
+ SPECIAL_PROP_NAMES = new HashSet<>();
SPECIAL_PROP_NAMES.add("encoding");
}
@@ -510,7 +510,7 @@
}
assertEquals("Y,N", t.getBooleanFormat());
assertEquals(ImmutableMap.of("a", "a.ftl", "b", "b.ftl", "c", "c.ftl"), t.getAutoImports());
- assertEquals(ImmutableList.of("a", "b", "c"), new ArrayList<String>(t.getAutoImports().keySet()));
+ assertEquals(ImmutableList.of("a", "b", "c"), new ArrayList<>(t.getAutoImports().keySet()));
assertEquals(ImmutableList.of("i1.ftl", "i2.ftl", "i3.ftl"), t.getAutoIncludes());
{
@@ -527,7 +527,7 @@
}
assertEquals("Y,N", t.getBooleanFormat());
assertEquals(ImmutableMap.of("d", "d.ftl", "a", "a.ftl", "b", "b.ftl", "c", "c.ftl"), t.getAutoImports());
- assertEquals(ImmutableList.of("d", "a", "b", "c"), new ArrayList<String>(t.getAutoImports().keySet()));
+ assertEquals(ImmutableList.of("d", "a", "b", "c"), new ArrayList<>(t.getAutoImports().keySet()));
assertEquals(ImmutableList.of("i4.ftl", "i1.ftl", "i2.ftl", "i3.ftl"), t.getAutoIncludes());
assertEquals(ImmutableMap.of( //
"b", LocaleSensitiveTemplateNumberFormatFactory.INSTANCE, //
@@ -597,7 +597,7 @@
@Test
public void testConfigureParser() throws Exception {
- Set<String> testedProps = new HashSet<String>();
+ Set<String> testedProps = new HashSet<>();
{
TemplateConfiguration tc = new TemplateConfiguration();
@@ -890,11 +890,7 @@
if (expectedConfiguredOutput == null) {
fail("Template should have fail.");
}
- } catch (TemplateException e) {
- if (expectedConfiguredOutput != null) {
- throw e;
- }
- } catch (ParseException e) {
+ } catch (TemplateException | ParseException e) {
if (expectedConfiguredOutput != null) {
throw e;
}
diff --git a/src/test/java/freemarker/core/WithArgsBuiltInTest.java b/src/test/java/freemarker/core/WithArgsBuiltInTest.java
index 71366e6..ebfb033 100644
--- a/src/test/java/freemarker/core/WithArgsBuiltInTest.java
+++ b/src/test/java/freemarker/core/WithArgsBuiltInTest.java
@@ -122,7 +122,7 @@
assertOutput("<@mCAO?withArgs({}) />", "o={}");
assertOutput("<@m b=2 a=1 c=null />", "a=1; b=2; c=d3");
- Map<String, Integer> cNull = new HashMap<String, Integer>();
+ Map<String, Integer> cNull = new HashMap<>();
cNull.put("c", null);
addToDataModel("cNull", cNull);
assertOutput("<@m?withArgs(cNull) b=2 a=1 />", "a=1; b=2; c=d3");
@@ -132,7 +132,7 @@
public void testNullsWithMacroWithNamedWithArgs() throws Exception {
// Null-s in ?withArgs should behave similarly as if they were given directly as argument.
assertOutput("<@mCAO a=null b=null />", "o={a=null, b=null}");
- Map<String, Integer> aNullBNull = new LinkedHashMap<String, Integer>();
+ Map<String, Integer> aNullBNull = new LinkedHashMap<>();
aNullBNull.put("a", null);
aNullBNull.put("b", null);
addToDataModel("aNullBNull", aNullBNull);
@@ -403,7 +403,7 @@
"{}{11 22}");
assertOutput("<@directive?withArgs({'a': 1, 'b': 2}) b=22 c=3; u>${u}</@>",
"{a=1, b=22, c=3}{11}");
- Map<String, Integer> args = new LinkedHashMap<String, Integer>();
+ Map<String, Integer> args = new LinkedHashMap<>();
args.put("a", null);
args.put("b", 2);
args.put("c", 3);
@@ -417,7 +417,7 @@
public void testTemplateDirectiveModelWithArgsLast() throws IOException, TemplateException {
addToDataModel("directive", new TestTemplateDirectiveModel());
- Map<String, Integer> args = new LinkedHashMap<String, Integer>();
+ Map<String, Integer> args = new LinkedHashMap<>();
args.put("a", null);
args.put("b", 2);
args.put("c", 3);
@@ -476,7 +476,7 @@
@Test
public void testMacroWithArgsLastNamedNullArgs() throws IOException, TemplateException {
assertOutput("<@mCA?withArgsLast({'c': 3, 'd': 4}) a=1 d=null b=2 />", "a=1; b=2; o={d=null, c=3}");
- Map<String, Integer> cAndDNull = new LinkedHashMap<String, Integer>();
+ Map<String, Integer> cAndDNull = new LinkedHashMap<>();
cAndDNull.put("c", 3);
cAndDNull.put("d", null);
addToDataModel("cAndDNull", cAndDNull);
@@ -520,7 +520,7 @@
@Test
public void testMacroWithArgsLastPositionalNullArgs() throws IOException, TemplateException {
- ArrayList<Object> twoAndNull = new ArrayList<Object>();
+ ArrayList<Object> twoAndNull = new ArrayList<>();
twoAndNull.add(2);
twoAndNull.add(null);
addToDataModel("twoAndNull", twoAndNull);
diff --git a/src/test/java/freemarker/ext/beans/BeansWrapperSingletonsTest.java b/src/test/java/freemarker/ext/beans/BeansWrapperSingletonsTest.java
index 3317fe4..d5054e8 100644
--- a/src/test/java/freemarker/ext/beans/BeansWrapperSingletonsTest.java
+++ b/src/test/java/freemarker/ext/beans/BeansWrapperSingletonsTest.java
@@ -145,7 +145,7 @@
}
public void testBeansWrapperBuilderProducts() throws Exception {
- List<BeansWrapper> hardReferences = new LinkedList<BeansWrapper>();
+ List<BeansWrapper> hardReferences = new LinkedList<>();
assertEquals(0, getBeansWrapperInstanceCacheSize());
@@ -349,7 +349,7 @@
}
public void testMultipleTCCLs() {
- List<BeansWrapper> hardReferences = new LinkedList<BeansWrapper>();
+ List<BeansWrapper> hardReferences = new LinkedList<>();
assertEquals(0, getBeansWrapperInstanceCacheSize());
@@ -407,7 +407,7 @@
BeansWrapperBuilder.clearInstanceCache();
checkClassIntrospectorCacheSize(0);
- List<BeansWrapper> hardReferences = new LinkedList<BeansWrapper>();
+ List<BeansWrapper> hardReferences = new LinkedList<>();
BeansWrapperBuilder factory;
{
diff --git a/src/test/java/freemarker/ext/beans/DefaultObjectWrapperMemberAccessPolicyTest.java b/src/test/java/freemarker/ext/beans/DefaultObjectWrapperMemberAccessPolicyTest.java
index 2c5ff54..c5b9761 100644
--- a/src/test/java/freemarker/ext/beans/DefaultObjectWrapperMemberAccessPolicyTest.java
+++ b/src/test/java/freemarker/ext/beans/DefaultObjectWrapperMemberAccessPolicyTest.java
@@ -608,7 +608,7 @@
private static Object exec(ObjectWrapperAndUnwrapper ow, TemplateModel objM, Object... args) throws TemplateModelException {
assertThat(objM, instanceOf(TemplateMethodModelEx.class));
- List<TemplateModel> argModels = new ArrayList<TemplateModel>();
+ List<TemplateModel> argModels = new ArrayList<>();
for (Object arg : args) {
argModels.add(ow.wrap(arg));
}
diff --git a/src/test/java/freemarker/ext/beans/Java7MembersOnlyBeansWrapper.java b/src/test/java/freemarker/ext/beans/Java7MembersOnlyBeansWrapper.java
index 9f4e4e5..f303e34 100644
--- a/src/test/java/freemarker/ext/beans/Java7MembersOnlyBeansWrapper.java
+++ b/src/test/java/freemarker/ext/beans/Java7MembersOnlyBeansWrapper.java
@@ -87,7 +87,7 @@
}
private static <T> Set<T> newHashSet(T... items) {
- HashSet<T> r = new HashSet<T>();
+ HashSet<T> r = new HashSet<>();
for (T item : items) {
r.add(item);
}
diff --git a/src/test/java/freemarker/ext/jsp/RealServletContainertTest.java b/src/test/java/freemarker/ext/jsp/RealServletContainertTest.java
index 2685297..ad0c7b6 100644
--- a/src/test/java/freemarker/ext/jsp/RealServletContainertTest.java
+++ b/src/test/java/freemarker/ext/jsp/RealServletContainertTest.java
@@ -105,7 +105,7 @@
+ "?action=" + AllKindOfContainersModel2Action.class.getName()
+ "&view=attributes.ftl&viewServlet=freemarker-2.3.0",
true,
- ImmutableList.<Pattern>of(
+ ImmutableList.of(
Pattern.compile("(?<=^Date-time: ).*", Pattern.MULTILINE), // Uses Date.toString, so plat. dep.
Pattern.compile("(?<=^MyMap: ).*", Pattern.MULTILINE) // Uses HashMap, so order unknown
));
diff --git a/src/test/java/freemarker/ext/jsp/taglibmembers/TestFunctions.java b/src/test/java/freemarker/ext/jsp/taglibmembers/TestFunctions.java
index b6fe1a3..37f3ba9 100644
--- a/src/test/java/freemarker/ext/jsp/taglibmembers/TestFunctions.java
+++ b/src/test/java/freemarker/ext/jsp/taglibmembers/TestFunctions.java
@@ -73,7 +73,7 @@
@SuppressWarnings("boxing")
public static Map<String, Integer> testMap() {
- return ImmutableMap.<String, Integer>of("a", 1, "b", 2, "c", 3);
+ return ImmutableMap.of("a", 1, "b", 2, "c", 3);
}
}
diff --git a/src/test/java/freemarker/manual/CustomFormatsExample.java b/src/test/java/freemarker/manual/CustomFormatsExample.java
index 2070217..5f2ff7c 100644
--- a/src/test/java/freemarker/manual/CustomFormatsExample.java
+++ b/src/test/java/freemarker/manual/CustomFormatsExample.java
@@ -42,13 +42,13 @@
Configuration cfg = getConfiguration();
Map<String, TemplateNumberFormatFactory> customNumberFormats
- = new HashMap<String, TemplateNumberFormatFactory>();
+ = new HashMap<>();
customNumberFormats.put("price", new AliasTemplateNumberFormatFactory(",000.00"));
customNumberFormats.put("weight", new AliasTemplateNumberFormatFactory("0.##;; roundingMode=halfUp"));
cfg.setCustomNumberFormats(customNumberFormats);
Map<String, TemplateDateFormatFactory> customDateFormats
- = new HashMap<String, TemplateDateFormatFactory>();
+ = new HashMap<>();
customDateFormats.put("fileDate", new AliasTemplateDateFormatFactory("dd/MMM/yy hh:mm a"));
customDateFormats.put("logEventTime", new AliasTemplateDateFormatFactory("iso ms u"));
cfg.setCustomDateFormats(customDateFormats);
@@ -66,7 +66,7 @@
Configuration cfg = getConfiguration();
Map<String, TemplateNumberFormatFactory> customNumberFormats
- = new HashMap<String, TemplateNumberFormatFactory>();
+ = new HashMap<>();
customNumberFormats.put("base", BaseNTemplateNumberFormatFactory.INSTANCE);
customNumberFormats.put("oct", new AliasTemplateNumberFormatFactory("@base 8"));
cfg.setCustomNumberFormats(customNumberFormats);
@@ -79,7 +79,7 @@
Configuration cfg = getConfiguration();
Map<String, TemplateNumberFormatFactory> customNumberFormats
- = new HashMap<String, TemplateNumberFormatFactory>();
+ = new HashMap<>();
customNumberFormats.put("ua", UnitAwareTemplateNumberFormatFactory.INSTANCE);
cfg.setCustomNumberFormats(customNumberFormats);
cfg.setNumberFormat("@ua 0.####;; roundingMode=halfUp");
diff --git a/src/test/java/freemarker/manual/ExamplesTest.java b/src/test/java/freemarker/manual/ExamplesTest.java
index 7738bc5..7478d74 100644
--- a/src/test/java/freemarker/manual/ExamplesTest.java
+++ b/src/test/java/freemarker/manual/ExamplesTest.java
@@ -36,11 +36,8 @@
protected Properties loadPropertiesFile(String name) throws IOException {
Properties props = new Properties();
- InputStream in = this.getClass().getResourceAsStream(name);
- try {
+ try (InputStream in = this.getClass().getResourceAsStream(name)) {
props.load(in);
- } finally {
- in.close();
}
return props;
}
diff --git a/src/test/java/freemarker/template/ConfigurationTest.java b/src/test/java/freemarker/template/ConfigurationTest.java
index 3ab21cc..586bd98 100644
--- a/src/test/java/freemarker/template/ConfigurationTest.java
+++ b/src/test/java/freemarker/template/ConfigurationTest.java
@@ -1251,7 +1251,7 @@
cfg.setSharedVariable("erased", "");
assertNotNull(cfg.getSharedVariable("erased"));
- Map<String, Object> vars = new HashMap<String, Object>();
+ Map<String, Object> vars = new HashMap<>();
vars.put("a", "aa");
vars.put("b", "bb");
vars.put("c", new MyScalarModel());
@@ -1905,7 +1905,7 @@
static {
try {
CONFIG_TEST_MEMBER_ACCESS_POLICY = new WhitelistMemberAccessPolicy(MemberSelectorListMemberAccessPolicy.MemberSelector.parse(
- ImmutableList.<String>of(
+ ImmutableList.of(
File.class.getName() + ".getName()",
File.class.getName() + ".isFile()"),
false,
@@ -1945,8 +1945,8 @@
public void testGetSettingNamesAreSorted() throws Exception {
Configuration cfg = new Configuration(Configuration.VERSION_2_3_22);
for (boolean camelCase : new boolean[] { false, true }) {
- List<String> names = new ArrayList<String>(cfg.getSettingNames(camelCase));
- List<String> cfgableNames = new ArrayList<String>(new Template(null, "", cfg).getSettingNames(camelCase));
+ List<String> names = new ArrayList<>(cfg.getSettingNames(camelCase));
+ List<String> cfgableNames = new ArrayList<>(new Template(null, "", cfg).getSettingNames(camelCase));
assertStartsWith(names, cfgableNames);
String prevName = null;
@@ -1964,15 +1964,15 @@
public void testGetSettingNamesNameConventionsContainTheSame() throws Exception {
Configuration cfg = new Configuration(Configuration.VERSION_2_3_22);
ConfigurableTest.testGetSettingNamesNameConventionsContainTheSame(
- new ArrayList<String>(cfg.getSettingNames(false)),
- new ArrayList<String>(cfg.getSettingNames(true)));
+ new ArrayList<>(cfg.getSettingNames(false)),
+ new ArrayList<>(cfg.getSettingNames(true)));
}
@Test
public void testStaticFieldKeysCoverAllGetSettingNames() throws Exception {
Configuration cfg = new Configuration(Configuration.VERSION_2_3_22);
- List<String> names = new ArrayList<String>(cfg.getSettingNames(false));
- List<String> cfgableNames = new ArrayList<String>(cfg.getSettingNames(false));
+ List<String> names = new ArrayList<>(cfg.getSettingNames(false));
+ List<String> cfgableNames = new ArrayList<>(cfg.getSettingNames(false));
assertStartsWith(names, cfgableNames);
for (int i = cfgableNames.size(); i < names.size(); i++) {
diff --git a/src/test/java/freemarker/template/CustomAttributeTest.java b/src/test/java/freemarker/template/CustomAttributeTest.java
index 612d2ca..2ff33da 100644
--- a/src/test/java/freemarker/template/CustomAttributeTest.java
+++ b/src/test/java/freemarker/template/CustomAttributeTest.java
@@ -44,7 +44,7 @@
private static final Object VALUE_2 = new Object();
private static final Object VALUE_3 = new Object();
private static final Object VALUE_LIST = ImmutableList.<Object>of(
- "s", BigDecimal.valueOf(2), Boolean.TRUE, ImmutableMap.<String, String>of("a", "A"));
+ "s", BigDecimal.valueOf(2), Boolean.TRUE, ImmutableMap.of("a", "A"));
private static final Object VALUE_BIGDECIMAL = BigDecimal.valueOf(22);
private static final CustomAttribute CUST_ATT_TMP_1 = new CustomAttribute(CustomAttribute.SCOPE_TEMPLATE);
diff --git a/src/test/java/freemarker/template/DefaultObjectWrapperTest.java b/src/test/java/freemarker/template/DefaultObjectWrapperTest.java
index 0719f00..3334301 100644
--- a/src/test/java/freemarker/template/DefaultObjectWrapperTest.java
+++ b/src/test/java/freemarker/template/DefaultObjectWrapperTest.java
@@ -85,7 +85,7 @@
@Test
public void testIncompatibleImprovementsVersionBreakPoints() throws Exception {
- List<Version> expected = new ArrayList<Version>();
+ List<Version> expected = new ArrayList<>();
for (int u = 0; u < 21; u++) {
expected.add(Configuration.VERSION_2_3_0);
}
@@ -100,7 +100,7 @@
expected.add(Configuration.VERSION_2_3_27); // no non-BC change in 2.3.29
expected.add(Configuration.VERSION_2_3_27); // no non-BC change in 2.3.30
- List<Version> actual = new ArrayList<Version>();
+ List<Version> actual = new ArrayList<>();
for (int i = _TemplateAPI.VERSION_INT_2_3_0; i <= Configuration.getVersion().intValue(); i++) {
int major = i / 1000000;
int minor = i % 1000000 / 1000;
@@ -451,8 +451,8 @@
{
// Check custom TM usage and round trip:
final TemplateModel mr = (TemplateModel) ((TemplateMethodModelEx) bean.get("incTupple"))
- .exec(Collections.singletonList(ow.wrap(new Tupple<Integer, Integer>(1, 2))));
- assertEquals(new Tupple<Integer, Integer>(2, 3), ow.unwrap(mr));
+ .exec(Collections.singletonList(ow.wrap(new Tupple<>(1, 2))));
+ assertEquals(new Tupple<>(2, 3), ow.unwrap(mr));
assertTrue(TuppleAdapter.class.isInstance(mr));
}
}
@@ -506,7 +506,7 @@
@SuppressWarnings("boxing")
@Test
public void testMapAdapter() throws TemplateModelException {
- HashMap<String, Object> testMap = new LinkedHashMap<String, Object>();
+ HashMap<String, Object> testMap = new LinkedHashMap<>();
testMap.put("a", 1);
testMap.put("b", null);
testMap.put("c", "C");
@@ -861,7 +861,7 @@
private void testIteratorWrapping(DefaultObjectWrapper ow, Class<?> expectedTMClass, Class<?> expectedPOJOClass)
throws TemplateModelException {
- final List<String> list = ImmutableList.<String> of("a", "b", "c");
+ final List<String> list = ImmutableList.of("a", "b", "c");
Iterator<String> it = list.iterator();
TemplateCollectionModel coll = (TemplateCollectionModel) ow.wrap(it);
@@ -990,7 +990,7 @@
@Test
public void testNoEnumerationAdapter() throws TemplateModelException {
DefaultObjectWrapper ow = new DefaultObjectWrapperBuilder(Configuration.VERSION_2_3_25).build();
- Vector<String> vector = new Vector<String>();
+ Vector<String> vector = new Vector<>();
vector.add("a");
vector.add("b");
@@ -1003,7 +1003,7 @@
@Test
public void testEnumerationAdapter() throws TemplateModelException {
DefaultObjectWrapper ow = new DefaultObjectWrapperBuilder(Configuration.VERSION_2_3_26).build();
- Vector<String> vector = new Vector<String>();
+ Vector<String> vector = new Vector<>();
vector.add("a");
vector.add("b");
diff --git a/src/test/java/freemarker/template/utility/DeepUnwrapTest.java b/src/test/java/freemarker/template/utility/DeepUnwrapTest.java
index 6b43431..765cb1f 100644
--- a/src/test/java/freemarker/template/utility/DeepUnwrapTest.java
+++ b/src/test/java/freemarker/template/utility/DeepUnwrapTest.java
@@ -39,7 +39,7 @@
@SuppressWarnings("rawtypes")
@Test
public void testHashEx2Unwrapping() throws Exception {
- Map<Object, Object> map = new LinkedHashMap<Object, Object>();
+ Map<Object, Object> map = new LinkedHashMap<>();
map.put("k1", "v1");
map.put("k2", null);
map.put(3, "v3");
diff --git a/src/test/java/freemarker/template/utility/TemplateModelUtilTest.java b/src/test/java/freemarker/template/utility/TemplateModelUtilTest.java
index 6122532..835f05c 100644
--- a/src/test/java/freemarker/template/utility/TemplateModelUtilTest.java
+++ b/src/test/java/freemarker/template/utility/TemplateModelUtilTest.java
@@ -56,7 +56,7 @@
@Test
public void testGetKeyValuePairIterator() throws Exception {
- Map<Object, Object> map = new LinkedHashMap<Object, Object>();
+ Map<Object, Object> map = new LinkedHashMap<>();
TemplateHashModelEx thme = new TemplateHashModelExOnly(map);
assertetGetKeyValuePairIteratorContent("", thme);
@@ -92,7 +92,7 @@
@Test
public void testGetKeyValuePairIteratorWithEx2() throws Exception {
- Map<Object, Object> map = new LinkedHashMap<Object, Object>();
+ Map<Object, Object> map = new LinkedHashMap<>();
TemplateHashModelEx thme = DefaultMapAdapter.adapt(map, ow);
assertetGetKeyValuePairIteratorContent("", thme);
@@ -222,15 +222,15 @@
assertEquals(expected.size(), actualEx.size());
- List<String> expectedKeys = new ArrayList<String>(expected.keySet());
- List<String> actualKeys = new ArrayList<String>();
+ List<String> expectedKeys = new ArrayList<>(expected.keySet());
+ List<String> actualKeys = new ArrayList<>();
for (TemplateModelIterator it = ((TemplateHashModelEx) actual).keys().iterator(); it.hasNext(); ) {
actualKeys.add(((TemplateScalarModel) it.next()).getAsString());
}
assertEquals(expectedKeys, actualKeys);
- List<Integer> expectedValues = new ArrayList<Integer>(expected.values());
- List<Integer> actualValues = new ArrayList<Integer>();
+ List<Integer> expectedValues = new ArrayList<>(expected.values());
+ List<Integer> actualValues = new ArrayList<>();
for (TemplateModelIterator it = ((TemplateHashModelEx) actual).values().iterator(); it.hasNext(); ) {
actualValues.add((Integer) ((TemplateNumberModel) it.next()).getAsNumber());
}
diff --git a/src/test/java/freemarker/test/CopyrightCommentRemoverTemplateLoader.java b/src/test/java/freemarker/test/CopyrightCommentRemoverTemplateLoader.java
index f09b88c..da37be4 100644
--- a/src/test/java/freemarker/test/CopyrightCommentRemoverTemplateLoader.java
+++ b/src/test/java/freemarker/test/CopyrightCommentRemoverTemplateLoader.java
@@ -49,12 +49,9 @@
}
public Reader getReader(Object templateSource, String encoding) throws IOException {
- Reader reader = innerTemplateLoader.getReader(templateSource, encoding);
- try {
+ try (Reader reader = innerTemplateLoader.getReader(templateSource, encoding)) {
String content = IOUtils.toString(reader);
return new StringReader(TestUtil.removeFTLCopyrightComment(content));
- } finally {
- reader.close();
}
}
diff --git a/src/test/java/freemarker/test/MonitoredTemplateLoader.java b/src/test/java/freemarker/test/MonitoredTemplateLoader.java
index cc504d8..8c9dea7 100644
--- a/src/test/java/freemarker/test/MonitoredTemplateLoader.java
+++ b/src/test/java/freemarker/test/MonitoredTemplateLoader.java
@@ -66,7 +66,7 @@
}
public List<String> getNamesSearched() {
- ArrayList<String> result = new ArrayList<String>();
+ ArrayList<String> result = new ArrayList<>();
for (AbstractTemplateLoaderEvent event : events) {
if (event instanceof FindTemplateSourceEvent) {
result.add(((FindTemplateSourceEvent) event).getName());
diff --git a/src/test/java/freemarker/test/ResourcesExtractor.java b/src/test/java/freemarker/test/ResourcesExtractor.java
index b1cca04..b96c85f 100644
--- a/src/test/java/freemarker/test/ResourcesExtractor.java
+++ b/src/test/java/freemarker/test/ResourcesExtractor.java
@@ -101,14 +101,11 @@
deleteDstRootDir = !dstRootDir.exists();
}
try {
- BufferedReader contR = new BufferedReader(new InputStreamReader(contIn, "UTF-8"));
- try {
+ try (BufferedReader contR = new BufferedReader(new InputStreamReader(contIn, "UTF-8"))) {
String contLine;
while ((contLine = contR.readLine()) != null) {
processLine(contLine, resolverClass, srcDirResourcePath, dstRootDir, contResource);
}
- } finally {
- contR.close();
}
jarMarkedSubdirectories(dstRootDir);
deleteDstRootDir = false;
@@ -231,16 +228,13 @@
private static void jarDirectory(File srcDir, File jarFile) throws FileNotFoundException, IOException {
boolean finished = false;
try {
- FileOutputStream fileOut = new FileOutputStream(jarFile);
- try {
+ try (FileOutputStream fileOut = new FileOutputStream(jarFile)) {
JarOutputStream jarOut = new JarOutputStream(fileOut);
try {
addFilesToJar("", srcDir, jarOut);
} finally {
jarOut.close();
}
- } finally {
- fileOut.close();
}
finished = true;
} finally {
@@ -275,11 +269,8 @@
for (File entry : entries) {
if (entry.isFile()) {
jarOut.putNextEntry(new ZipEntry(entryBasePath + entry.getName()));
- FileInputStream fileIn = new FileInputStream(entry);
- try {
+ try (FileInputStream fileIn = new FileInputStream(entry)) {
IOUtils.copy(fileIn, jarOut);
- } finally {
- fileIn.close();
}
jarOut.closeEntry();
} else if (entry.isDirectory()) {
diff --git a/src/test/java/freemarker/test/TemplateTest.java b/src/test/java/freemarker/test/TemplateTest.java
index 9377a45..b55eb62 100644
--- a/src/test/java/freemarker/test/TemplateTest.java
+++ b/src/test/java/freemarker/test/TemplateTest.java
@@ -204,7 +204,7 @@
@SuppressWarnings("boxing")
protected Map<String, Object> createCommonTestValuesDataModel() {
- Map<String, Object> dataModel = new HashMap<String, Object>();
+ Map<String, Object> dataModel = new HashMap<>();
dataModel.put("map", Collections.singletonMap("key", "value"));
dataModel.put("list", Collections.singletonList("item"));
dataModel.put("s", "text");
diff --git a/src/test/java/freemarker/test/servlet/WebAppTestCase.java b/src/test/java/freemarker/test/servlet/WebAppTestCase.java
index 3471795..0366bde 100644
--- a/src/test/java/freemarker/test/servlet/WebAppTestCase.java
+++ b/src/test/java/freemarker/test/servlet/WebAppTestCase.java
@@ -59,7 +59,7 @@
private static Server server;
private static ContextHandlerCollection contextHandlers;
- private static Map<String, WebAppContext> deployedWebApps = new HashMap<String, WebAppContext>();
+ private static Map<String, WebAppContext> deployedWebApps = new HashMap<>();
private static volatile File testTempDirectory;
@BeforeClass
@@ -123,11 +123,8 @@
final String content;
if (responseCode == 200) {
- InputStream in = httpCon.getInputStream();
- try {
+ try (InputStream in = httpCon.getInputStream()) {
content = IOUtils.toString(in, "UTF-8");
- } finally {
- in.close();
}
} else {
content = null;
@@ -184,12 +181,9 @@
final String expected;
{
ClassPathResource cpResource = findWebAppDirectoryResource(webAppName);
- final InputStream in = cpResource.resolverClass.getResourceAsStream(
- cpResource.path + EXPECTED_DIR + expectedFileName);
- try {
+ try (InputStream in = cpResource.resolverClass.getResourceAsStream(
+ cpResource.path + EXPECTED_DIR + expectedFileName)) {
expected = TestUtil.removeTxtCopyrightComment(normalizeWS(IOUtils.toString(in, "utf-8"), compressWS));
- } finally {
- in.close();
}
}
assertEquals(maskIgnored(expected, ignoredParts), maskIgnored(actual, ignoredParts));
diff --git a/src/test/java/freemarker/test/templatesuite/TemplateTestCase.java b/src/test/java/freemarker/test/templatesuite/TemplateTestCase.java
index ba418dd..f0cb148 100644
--- a/src/test/java/freemarker/test/templatesuite/TemplateTestCase.java
+++ b/src/test/java/freemarker/test/templatesuite/TemplateTestCase.java
@@ -120,7 +120,7 @@
private final boolean noOutput;
private final Configuration conf;
- private final HashMap<String, Object> dataModel = new HashMap<String, Object>();
+ private final HashMap<String, Object> dataModel = new HashMap<>();
public TemplateTestCase(String testName, String simpleTestName, String templateName, String expectedFileName, boolean noOutput,
Version incompatibleImprovements) {
@@ -249,7 +249,7 @@
} else if (simpleTestName.equals("beans")) {
dataModel.put("array", new String[] { "array-0", "array-1"});
dataModel.put("list", Arrays.asList(new String[] { "list-0", "list-1", "list-2"}));
- Map<Object, Object> tmap = new HashMap<Object, Object>();
+ Map<Object, Object> tmap = new HashMap<>();
tmap.put("key", "value");
Object objKey = new Object();
tmap.put(objKey, "objValue");
@@ -300,23 +300,23 @@
dataModel.put("bigDecimal", new SimpleNumber(java.math.BigDecimal.valueOf(1)));
dataModel.put("bigDecimal2", new SimpleNumber(java.math.BigDecimal.valueOf(1, 16)));
} else if (simpleTestName.equals("simplehash-char-key")) {
- HashMap<String, String> mStringC = new HashMap<String, String>();
+ HashMap<String, String> mStringC = new HashMap<>();
mStringC.put("c", "string");
dataModel.put("mStringC", mStringC);
- HashMap<String, String> mStringCNull = new HashMap<String, String>();
+ HashMap<String, String> mStringCNull = new HashMap<>();
mStringCNull.put("c", null);
dataModel.put("mStringCNull", mStringCNull);
- HashMap<Character, String> mCharC = new HashMap<Character, String>();
+ HashMap<Character, String> mCharC = new HashMap<>();
mCharC.put(Character.valueOf('c'), "char");
dataModel.put("mCharC", mCharC);
- HashMap<String, String> mCharCNull = new HashMap<String, String>();
+ HashMap<String, String> mCharCNull = new HashMap<>();
mCharCNull.put("c", null);
dataModel.put("mCharCNull", mCharCNull);
- HashMap<Object, String> mMixed = new HashMap<Object, String>();
+ HashMap<Object, String> mMixed = new HashMap<>();
mMixed.put(Character.valueOf('c'), "char");
mMixed.put("s", "string");
mMixed.put("s2", "string2");
@@ -336,8 +336,8 @@
} else if (simpleTestName.startsWith("type-builtins")) {
dataModel.put("testmethod", new TestMethod());
dataModel.put("testnode", new TestNode());
- dataModel.put("testcollection", new SimpleCollection(new ArrayList<Object>()));
- dataModel.put("testcollectionEx", DefaultNonListCollectionAdapter.adapt(new HashSet<Object>(), null));
+ dataModel.put("testcollection", new SimpleCollection(new ArrayList<>()));
+ dataModel.put("testcollectionEx", DefaultNonListCollectionAdapter.adapt(new HashSet<>(), null));
dataModel.put("bean", new TestBean());
} else if (simpleTestName.equals("date-type-builtins")) {
GregorianCalendar cal = new GregorianCalendar(2003, 4 - 1, 5, 6, 7, 8);
@@ -379,20 +379,20 @@
NodeModel nm = NodeModel.parse(is);
dataModel.put("doc", nm);
} else if (simpleTestName.startsWith("sequence-builtins")) {
- Set<String> abcSet = new TreeSet<String>();
+ Set<String> abcSet = new TreeSet<>();
abcSet.add("a");
abcSet.add("b");
abcSet.add("c");
dataModel.put("abcSet", abcSet);
dataModel.put("abcSetNonSeq", DefaultNonListCollectionAdapter.adapt(abcSet, beansWrapper));
- List<String> listWithNull = new ArrayList<String>();
+ List<String> listWithNull = new ArrayList<>();
listWithNull.add("a");
listWithNull.add(null);
listWithNull.add("c");
dataModel.put("listWithNull", listWithNull);
- List<String> listWithNullsOnly = new ArrayList<String>();
+ List<String> listWithNullsOnly = new ArrayList<>();
listWithNull.add(null);
listWithNull.add(null);
listWithNull.add(null);
@@ -400,7 +400,7 @@
dataModel.put("abcCollection", new SimpleCollection(abcSet));
- Set<String> set = new HashSet<String>();
+ Set<String> set = new HashSet<>();
set.add("a");
set.add("b");
set.add("c");
diff --git a/src/test/java/freemarker/test/templatesuite/TemplateTestSuite.java b/src/test/java/freemarker/test/templatesuite/TemplateTestSuite.java
index 17d35c2..52435d1 100644
--- a/src/test/java/freemarker/test/templatesuite/TemplateTestSuite.java
+++ b/src/test/java/freemarker/test/templatesuite/TemplateTestSuite.java
@@ -81,7 +81,7 @@
public static final String INCOMPATIBLE_IMPROVEMENTS_PROPERTY_NAME
= "freemareker.templateTestSuite.incompatibleImprovements";
- private final Map<String, String> testSuiteSettings = new LinkedHashMap<String, String>();
+ private final Map<String, String> testSuiteSettings = new LinkedHashMap<>();
private final ArrayList<Version> testSuiteIcis;
@@ -100,7 +100,7 @@
System.out.println("Note: " + TEST_FILTER_PROPERTY_NAME + " is " + StringUtil.jQuote(testCaseNameFilter));
}
- testSuiteIcis = new ArrayList<Version>();
+ testSuiteIcis = new ArrayList<>();
String testedIcIsStr = System.getProperty(INCOMPATIBLE_IMPROVEMENTS_PROPERTY_NAME);
if (testedIcIsStr != null) {
for (String iciStr : testedIcIsStr.split(",")) {
@@ -228,7 +228,7 @@
}
}
- List<TemplateTestCase> result = new ArrayList<TemplateTestCase>();
+ List<TemplateTestCase> result = new ArrayList<>();
for (Version iciToTest : icisToTest) {
TemplateTestCase testCase = new TemplateTestCase(
caseName + "(ici=" + iciToTest + ")", caseName,
@@ -247,7 +247,7 @@
}
private List<Version> parseVersionList(String versionsStr) {
- List<Version> versions = new ArrayList<Version>();
+ List<Version> versions = new ArrayList<>();
for (String versionStr : versionsStr.split(",")) {
versionStr = versionStr.trim();
if (versionStr.length() != 0) {
@@ -279,7 +279,7 @@
private Map<String, String> getCaseFMSettings(Element e) {
final Map<String, String> caseFMSettings;
- caseFMSettings = new LinkedHashMap<String, String>();
+ caseFMSettings = new LinkedHashMap<>();
NodeList settingElems = e.getElementsByTagName(ELEM_SETTING);
for (int elemIdx = 0; elemIdx < settingElems.getLength(); elemIdx++) {
NamedNodeMap attrs = settingElems.item(elemIdx).getAttributes();
diff --git a/src/test/java/freemarker/test/templatesuite/models/Listables.java b/src/test/java/freemarker/test/templatesuite/models/Listables.java
index 165dce8..cadcc01 100644
--- a/src/test/java/freemarker/test/templatesuite/models/Listables.java
+++ b/src/test/java/freemarker/test/templatesuite/models/Listables.java
@@ -49,7 +49,7 @@
private static final List<Integer> LIST;
static {
- List<Integer> list = new ArrayList<Integer>();
+ List<Integer> list = new ArrayList<>();
list.add(11);
list.add(22);
list.add(33);
@@ -58,7 +58,7 @@
private static final List<Integer> LINKED_LIST;
static {
- List<Integer> list = new LinkedList<Integer>();
+ List<Integer> list = new LinkedList<>();
list.add(11);
list.add(22);
list.add(33);
@@ -67,13 +67,13 @@
private static final List<Integer> EMPTY_LINKED_LIST;
static {
- List<Integer> list = new LinkedList<Integer>();
+ List<Integer> list = new LinkedList<>();
EMPTY_LINKED_LIST = list;
}
private static final Set<Integer> SET;
static {
- Set<Integer> set = new TreeSet<Integer>();
+ Set<Integer> set = new TreeSet<>();
set.add(11);
set.add(22);
set.add(33);
@@ -114,7 +114,7 @@
public List<TemplateHashModelEx2> getHashEx2s() throws TemplateModelException {
Map<Object, Object> map;
- map = new LinkedHashMap<Object, Object>();
+ map = new LinkedHashMap<>();
map.put("k1", "v1");
map.put(2, "v2");
map.put("k3", "v3");
@@ -126,7 +126,7 @@
}
public List<? extends TemplateHashModelEx> getEmptyHashes() throws TemplateModelException {
- List<TemplateHashModelEx> emptyMaps = new ArrayList<TemplateHashModelEx>();
+ List<TemplateHashModelEx> emptyMaps = new ArrayList<>();
emptyMaps.addAll(getMapsWrappedAsEx2(Collections.emptyMap()));
emptyMaps.add((TemplateHashModelEx) new DefaultObjectWrapperBuilder(Configuration.VERSION_2_3_24).build()
.wrap(Collections.emptyMap()));
@@ -137,7 +137,7 @@
* Returns the map wrapped on various ways.
*/
private List<TemplateHashModelEx2> getMapsWrappedAsEx2(Map<?, ?> map) throws TemplateModelException {
- List<TemplateHashModelEx2> maps = new ArrayList<TemplateHashModelEx2>();
+ List<TemplateHashModelEx2> maps = new ArrayList<>();
maps.add((SimpleHash) new DefaultObjectWrapperBuilder(Configuration.VERSION_2_3_0).build().wrap(map));
diff --git a/src/test/java/freemarker/test/templatesuite/models/OverloadedMethods2.java b/src/test/java/freemarker/test/templatesuite/models/OverloadedMethods2.java
index e73c696..8daf480 100644
--- a/src/test/java/freemarker/test/templatesuite/models/OverloadedMethods2.java
+++ b/src/test/java/freemarker/test/templatesuite/models/OverloadedMethods2.java
@@ -922,7 +922,7 @@
@SuppressWarnings("boxing")
public List<Integer> getJavaIntegerList() {
- List<Integer> list = new ArrayList<Integer>();
+ List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
return list;
@@ -930,7 +930,7 @@
@SuppressWarnings("boxing")
public List<Byte> getJavaByteList() {
- List<Byte> list = new ArrayList<Byte>();
+ List<Byte> list = new ArrayList<>();
list.add((byte) 1);
list.add((byte) 2);
return list;
@@ -938,7 +938,7 @@
@SuppressWarnings("boxing")
public List<Character> getJavaCharacterList() {
- List<Character> list = new ArrayList<Character>();
+ List<Character> list = new ArrayList<>();
list.add('c');
list.add('C');
return list;
diff --git a/src/test/java/freemarker/test/utility/FileTestCase.java b/src/test/java/freemarker/test/utility/FileTestCase.java
index c8ad159..8f4fc75 100644
--- a/src/test/java/freemarker/test/utility/FileTestCase.java
+++ b/src/test/java/freemarker/test/utility/FileTestCase.java
@@ -105,11 +105,8 @@
}
private void saveString(File actualFile, String actualContents) throws IOException {
- Writer w = new OutputStreamWriter(new FileOutputStream(actualFile), "UTF-8");
- try {
+ try (Writer w = new OutputStreamWriter(new FileOutputStream(actualFile), "UTF-8")) {
w.write(actualContents);
- } finally {
- w.close();
}
}