This is an automated email from the ASF dual-hosted git repository.

ddekany pushed a commit to branch 3
in repository https://gitbox.apache.org/repos/asf/freemarker.git

commit 7e2732497922c10c401639437d75af150ce543c9
Author: ddekany <[email protected]>
AuthorDate: Sat Jan 18 17:20:02 2020 +0100

    Forward ported from 2.3-gae: Java 7 language cleanup
---
 .../core/FM2ASTToFM3SourceConverter.java           | 11 ++++-------
 .../org/apache/freemarker/core/ASTPrinter.java     | 12 +++--------
 .../apache/freemarker/core/AttemptLoggingTest.java |  4 ++--
 .../freemarker/core/ConcatenatedHashTest.java      | 12 +++++------
 .../apache/freemarker/core/ConfigurationTest.java  | 12 +++++------
 .../org/apache/freemarker/core/DateFormatTest.java |  2 +-
 .../freemarker/core/NullTransparencyTest.java      |  8 +++-----
 .../apache/freemarker/core/OutputFormatTest.java   |  8 ++++----
 .../core/model/impl/DefaultObjectWrapperTest.java  |  4 ++--
 .../model/impl/MemberAccessMonitoringTest.java     |  2 +-
 .../model/impl/TemplateHashModelAdapterTest.java   |  6 +++---
 .../freemarker/core/util/DeepUnwrapTest.java       |  2 +-
 .../core/util/TemplateModelUtilsTest.java          | 12 +++++------
 .../core/valueformat/NumberFormatTest.java         |  8 ++++----
 .../org/apache/freemarker/core/ASTDirSetting.java  |  2 +-
 .../org/apache/freemarker/core/ASTElement.java     |  2 +-
 .../org/apache/freemarker/core/Configuration.java  |  2 +-
 .../core/MutableProcessingConfiguration.java       |  2 +-
 .../java/org/apache/freemarker/core/Template.java  |  2 +-
 .../freemarker/core/TemplateElementsToVisit.java   |  2 +-
 .../freemarker/core/debug/DebuggerClient.java      |  9 +++------
 .../core/model/impl/ClassIntrospector.java         | 18 ++++++++---------
 .../core/model/impl/DefaultMemberAccessPolicy.java |  4 ++--
 .../impl/MemberSelectorListMemberAccessPolicy.java |  2 +-
 .../core/model/impl/ResourceBundleModel.java       |  2 +-
 .../model/impl/TemplateCollectionModelAdapter.java |  2 +-
 .../model/impl/TemplateIterableModelAdapter.java   |  2 +-
 .../model/impl/TemplateSequenceModelAdapter.java   |  2 +-
 .../apache/freemarker/core/util/DeepUnwrap.java    |  2 +-
 .../core/util/TemplateLanguageUtils.java           |  2 +-
 .../freemarker/core/util/TemplateModelUtils.java   |  2 +-
 .../freemarker/core/util/_ArrayAdapterList.java    |  4 ++--
 .../apache/freemarker/core/util/_ClassUtils.java   |  4 +---
 .../freemarker/core/util/_CollectionUtils.java     |  8 ++++----
 .../impl/ISOLikeTemplateDateFormatFactory.java     |  4 ++--
 .../apache/freemarker/dom/JaxenXPathSupport.java   |  2 +-
 .../java/org/apache/freemarker/dom/NodeModel.java  |  4 +---
 .../freemarker/servlet/FreemarkerServlet.java      |  6 ++----
 .../servlet/jsp/FreeMarkerPageContext.java         |  2 +-
 .../freemarker/servlet/jsp/TaglibFactory.java      | 23 ++++++----------------
 .../servlet/jsp/RealServletContainertTest.java     |  6 +++---
 .../freemarker/servlet/test/WebAppTestCase.java    |  5 +----
 .../freemarker/spring/model/UrlFunction.java       |  2 +-
 .../AbstractHtmlElementTemplateDirectiveModel.java |  2 +-
 .../model/form/ErrorsTemplateDirectiveModel.java   |  2 +-
 .../model/form/FormTemplateDirectiveModel.java     |  2 +-
 .../model/form/SelectableValueComparisonUtils.java |  2 +-
 .../freemarker/spring/model/form/TagOutputter.java |  2 +-
 .../spring/web/view/PageContextServletConfig.java  |  2 +-
 .../web/view/FreeMarkerViewResolverTest.java       |  2 +-
 .../spring/web/view/FreeMarkerViewTest.java        |  6 +++---
 .../freemarker/test/MonitoredTemplateLoader.java   |  2 +-
 .../apache/freemarker/test/ResourcesExtractor.java | 15 +++-----------
 53 files changed, 113 insertions(+), 156 deletions(-)

diff --git 
a/freemarker-converter/src/main/java/freemarker/core/FM2ASTToFM3SourceConverter.java
 
b/freemarker-converter/src/main/java/freemarker/core/FM2ASTToFM3SourceConverter.java
index ca7c1f2..1cb67b9 100644
--- 
a/freemarker-converter/src/main/java/freemarker/core/FM2ASTToFM3SourceConverter.java
+++ 
b/freemarker-converter/src/main/java/freemarker/core/FM2ASTToFM3SourceConverter.java
@@ -132,11 +132,8 @@ public class FM2ASTToFM3SourceConverter {
                 throw new FileNotFoundException("Template not found: " + 
template.getName());
             }
 
-            Reader reader = templateLoader.getReader(templateSource, 
template.getEncoding());
-            try {
+            try (Reader reader = templateLoader.getReader(templateSource, 
template.getEncoding())) {
                 this.src = IOUtils.toString(reader);
-            } finally {
-                reader.close();
             }
         } catch (IOException e) {
             throw new ConverterException("Failed to load template source", e);
@@ -1544,7 +1541,7 @@ public class FM2ASTToFM3SourceConverter {
     private static final Map<String, String> COMPARATOR_OP_MAP;
 
     static {
-        COMPARATOR_OP_MAP = new HashMap<String, String>();
+        COMPARATOR_OP_MAP = new HashMap<>();
         // For now we leave FM2 ops as is, but later in many cases they will 
be replaced.
         COMPARATOR_OP_MAP.put("==", "==");
         COMPARATOR_OP_MAP.put("=", "==");
@@ -1574,7 +1571,7 @@ public class FM2ASTToFM3SourceConverter {
     private static final Map<String, String> AND_OP_MAP;
 
     static {
-        AND_OP_MAP = new HashMap<String, String>();
+        AND_OP_MAP = new HashMap<>();
         AND_OP_MAP.put("&&", "&&");
         AND_OP_MAP.put("&", "&&");
         AND_OP_MAP.put("\\and", "and");
@@ -1588,7 +1585,7 @@ public class FM2ASTToFM3SourceConverter {
     private static final Map<String, String> OR_OP_MAP;
 
     static {
-        OR_OP_MAP = new HashMap<String, String>();
+        OR_OP_MAP = new HashMap<>();
         OR_OP_MAP.put("||", "||");
         OR_OP_MAP.put("|", "||");
     }
diff --git 
a/freemarker-core-test/src/test/java/org/apache/freemarker/core/ASTPrinter.java 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/ASTPrinter.java
index 297e975..0a94063 100644
--- 
a/freemarker-core-test/src/test/java/org/apache/freemarker/core/ASTPrinter.java
+++ 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/ASTPrinter.java
@@ -165,8 +165,7 @@ public class ASTPrinter {
             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) {
@@ -176,8 +175,6 @@ public class ASTPrinter {
                 }
                 offset += bytesRead;
             }
-        } finally {
-            in.close();
         }
         
         try {
@@ -198,12 +195,9 @@ public class ASTPrinter {
         if (!parentDir.isDirectory() && !parentDir.mkdirs()) {
             throw new IOException("Failed to invoke 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/freemarker-core-test/src/test/java/org/apache/freemarker/core/AttemptLoggingTest.java
 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/AttemptLoggingTest.java
index bfaef48..9204ac5 100644
--- 
a/freemarker-core-test/src/test/java/org/apache/freemarker/core/AttemptLoggingTest.java
+++ 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/AttemptLoggingTest.java
@@ -46,7 +46,7 @@ public class AttemptLoggingTest extends TemplateTest {
 
     @Test
     public void customConfigTest() throws IOException, TemplateException {
-        List<String> reports = new ArrayList<String>();
+        List<String> reports = new ArrayList<>();
         setConfiguration(newConfigurationBuilder()
                 .attemptExceptionReporter(new 
TestAttemptExceptionReporter(reports)));
 
@@ -61,7 +61,7 @@ public class AttemptLoggingTest extends TemplateTest {
 
     @Test
     public void dontReportSuppressedExceptionsTest() throws IOException, 
TemplateException {
-        List<String> reports = new ArrayList<String>();
+        List<String> reports = new ArrayList<>();
         setConfiguration(newConfigurationBuilder()
                 .attemptExceptionReporter(new 
TestAttemptExceptionReporter(reports))
                 .templateExceptionHandler(new TemplateExceptionHandler() {
diff --git 
a/freemarker-core-test/src/test/java/org/apache/freemarker/core/ConcatenatedHashTest.java
 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/ConcatenatedHashTest.java
index 7474bad..fea45d9 100644
--- 
a/freemarker-core-test/src/test/java/org/apache/freemarker/core/ConcatenatedHashTest.java
+++ 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/ConcatenatedHashTest.java
@@ -66,14 +66,14 @@ public class ConcatenatedHashTest {
                 getConcatenatedModel(toHashModelNonEx(CD_MAP), 
toHashModelNonEx(ABC33_MAP)));
         assertHashModelContent(AB_MAP,
                 getConcatenatedModel(
-                        toHashModelNonEx(AB_MAP), 
toHashModelNonEx(Collections.<String, Object>emptyMap())));
+                        toHashModelNonEx(AB_MAP), 
toHashModelNonEx(Collections.emptyMap())));
         assertHashModelContent(AB_MAP,
                 getConcatenatedModel(
-                        toHashModelNonEx(Collections.<String, 
Object>emptyMap()), toHashModelNonEx(AB_MAP)));
-        assertHashModelContent(Collections.<String, Object>emptyMap(),
+                        toHashModelNonEx(Collections.emptyMap()), 
toHashModelNonEx(AB_MAP)));
+        assertHashModelContent(Collections.emptyMap(),
                 getConcatenatedModel(
-                        toHashModelNonEx(Collections.<String, 
Object>emptyMap()),
-                        toHashModelNonEx(Collections.<String, 
Object>emptyMap())));
+                        toHashModelNonEx(Collections.emptyMap()),
+                        toHashModelNonEx(Collections.emptyMap())));
     }
 
     @Test
@@ -92,7 +92,7 @@ public class ConcatenatedHashTest {
         assertHashModelContent(AB_MAP,
                 getConcatenatedModel(
                         toHashModelEx(Collections.<String, Object>emptyMap()), 
toHashModelEx(AB_MAP)));
-        assertHashModelContent(Collections.<String, Object>emptyMap(),
+        assertHashModelContent(Collections.emptyMap(),
                 getConcatenatedModel(
                         toHashModelEx(Collections.<String, Object>emptyMap()),
                         toHashModelEx(Collections.<String, 
Object>emptyMap())));
diff --git 
a/freemarker-core-test/src/test/java/org/apache/freemarker/core/ConfigurationTest.java
 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/ConfigurationTest.java
index 6e3eab7..feca828 100644
--- 
a/freemarker-core-test/src/test/java/org/apache/freemarker/core/ConfigurationTest.java
+++ 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/ConfigurationTest.java
@@ -311,7 +311,7 @@ public class ConfigurationTest {
             assertEquals(StandardCharsets.ISO_8859_1, 
t.getActualSourceEncoding());
         }
         {
-            Template t = cfg.getTemplate(tFtl, (Locale) null);
+            Template t = cfg.getTemplate(tFtl, null);
             assertEquals(tFtl, t.getLookupName());
             assertEquals(tFtl, t.getSourceName());
             assertEquals(Locale.GERMAN, t.getLocale());
@@ -737,7 +737,7 @@ public class ConfigurationTest {
     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,
@@ -995,13 +995,13 @@ public class ConfigurationTest {
 
         @Override
         protected Map<String, TemplateNumberFormatFactory> 
getImpliedCustomNumberFormats() {
-            return ImmutableMap.<String, TemplateNumberFormatFactory>of(
+            return ImmutableMap.of(
                     "hex", HexTemplateNumberFormatFactory.INSTANCE);
         }
 
         @Override
         protected Map<String, TemplateDateFormatFactory> 
getImpliedCustomDateFormats() {
-            return ImmutableMap.<String, TemplateDateFormatFactory>of(
+            return ImmutableMap.of(
                     "epoch", EpochMillisTemplateDateFormatFactory.INSTANCE);
         }
 
@@ -1017,12 +1017,12 @@ public class ConfigurationTest {
 
         @Override
         protected Map<String, Object> getImpliedSharedVariables() {
-            return ImmutableMap.<String, Object>of("v", 1);
+            return ImmutableMap.of("v", 1);
         }
 
         @Override
         protected Collection<OutputFormat> 
getImpliedRegisteredCustomOutputFormats() {
-            return 
ImmutableList.<OutputFormat>of(CustomHTMLOutputFormat.INSTANCE, 
DummyOutputFormat.INSTANCE);
+            return ImmutableList.of(CustomHTMLOutputFormat.INSTANCE, 
DummyOutputFormat.INSTANCE);
         }
     }
 
diff --git 
a/freemarker-core-test/src/test/java/org/apache/freemarker/core/DateFormatTest.java
 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/DateFormatTest.java
index 78954cd..ae9fc02 100644
--- 
a/freemarker-core-test/src/test/java/org/apache/freemarker/core/DateFormatTest.java
+++ 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/DateFormatTest.java
@@ -228,7 +228,7 @@ public class DateFormatTest extends TemplateTest {
         assertOutput("${d}", "@@1970");
 
         setConfiguration(newConfigurationBuilder()
-                .customDateFormats(Collections.<String, 
TemplateDateFormatFactory>emptyMap())
+                .customDateFormats(Collections.emptyMap())
                 .dateTimeFormat("@epoch"));
         assertErrorContains("${d}", "custom", "\"epoch\"");
     }
diff --git 
a/freemarker-core-test/src/test/java/org/apache/freemarker/core/NullTransparencyTest.java
 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/NullTransparencyTest.java
index 93ea669..6047b5c 100644
--- 
a/freemarker-core-test/src/test/java/org/apache/freemarker/core/NullTransparencyTest.java
+++ 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/NullTransparencyTest.java
@@ -19,8 +19,6 @@
 
 package org.apache.freemarker.core;
 
-import static org.junit.Assert.*;
-
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -35,15 +33,15 @@ public class NullTransparencyTest extends TemplateTest {
 
     @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/freemarker-core-test/src/test/java/org/apache/freemarker/core/OutputFormatTest.java
 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/OutputFormatTest.java
index 5992a6e..8b18c04 100644
--- 
a/freemarker-core-test/src/test/java/org/apache/freemarker/core/OutputFormatTest.java
+++ 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/OutputFormatTest.java
@@ -260,11 +260,11 @@ public class OutputFormatTest extends TemplateTest {
         assertOutputForNamed("t.f3ah", "a&amp;x");
 
         setConfiguration(newConfigurationBuilder()
-                
.registeredCustomOutputFormats(Collections.<OutputFormat>singleton(CustomHTMLOutputFormat.INSTANCE)));
+                
.registeredCustomOutputFormats(Collections.singleton(CustomHTMLOutputFormat.INSTANCE)));
         assertOutputForNamed("t.f3ah", "a&amp;X");
 
         setConfiguration(newConfigurationBuilder()
-                
.registeredCustomOutputFormats(Collections.<OutputFormat>emptyList()));
+                .registeredCustomOutputFormats(Collections.emptyList()));
         assertOutputForNamed("t.f3ah", "a&amp;x");
     }
     
@@ -624,7 +624,7 @@ public class OutputFormatTest extends TemplateTest {
                 "<#outputFormat 'dummy'></#outputFormat>",
                 "dummy", "nregistered");
         setConfiguration(newConfigurationBuilder()
-                
.registeredCustomOutputFormats(Collections.<OutputFormat>singleton(DummyOutputFormat.INSTANCE)));
+                
.registeredCustomOutputFormats(Collections.singleton(DummyOutputFormat.INSTANCE)));
         assertOutput(
                 "<#outputFormat 'dummy'>${.outputFormat}</#outputFormat>",
                 "dummy");
@@ -804,7 +804,7 @@ public class OutputFormatTest extends TemplateTest {
             OutputFormat outpoutFormat)
             throws TemplateException {
         return super.newConfigurationBuilder()
-                .registeredCustomOutputFormats(ImmutableList.<OutputFormat>of(
+                .registeredCustomOutputFormats(ImmutableList.of(
                         SeldomEscapedOutputFormat.INSTANCE, 
DummyOutputFormat.INSTANCE))
                 .autoEscapingPolicy(autoEscPolicy)
                 .outputFormat(outpoutFormat)
diff --git 
a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapperTest.java
 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapperTest.java
index f83a333..010705c 100644
--- 
a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapperTest.java
+++ 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapperTest.java
@@ -375,7 +375,7 @@ public class DefaultObjectWrapperTest {
 
             assertCollectionTMEquals(seq, 1, null, "c");
 
-            TemplateModelIterator it = ((TemplateIterableModel) 
seq).iterator();
+            TemplateModelIterator it = seq.iterator();
             it.next();
             it.next();
             it.next();
@@ -685,7 +685,7 @@ public class DefaultObjectWrapperTest {
 
     @Test
     public void testEnumerationAdapter() throws TemplateException {
-        Vector<String> vector = new Vector<String>();
+        Vector<String> vector = new Vector<>();
         vector.add("a");
         vector.add("b");
 
diff --git 
a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/MemberAccessMonitoringTest.java
 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/MemberAccessMonitoringTest.java
index ed19141..536107a 100644
--- 
a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/MemberAccessMonitoringTest.java
+++ 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/MemberAccessMonitoringTest.java
@@ -90,7 +90,7 @@ public class MemberAccessMonitoringTest extends TemplateTest {
 
         public MonitoredDefaultObjectWrapper() {
             super(new 
DefaultObjectWrapper.Builder(Configuration.VERSION_3_0_0).exposeFields(true));
-            this.accessedMembers = Collections.synchronizedSet(new 
HashSet<String>());
+            this.accessedMembers = Collections.synchronizedSet(new 
HashSet<>());
         }
 
         @Override
diff --git 
a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/TemplateHashModelAdapterTest.java
 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/TemplateHashModelAdapterTest.java
index 6b6e51a..cfdc6fe 100644
--- 
a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/TemplateHashModelAdapterTest.java
+++ 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/TemplateHashModelAdapterTest.java
@@ -36,7 +36,7 @@ public class TemplateHashModelAdapterTest {
 
     @Test
     public void testNonEmpty() throws ObjectWrappingException {
-        Map<Object, Object> map = new LinkedHashMap<Object, Object>();
+        Map<Object, Object> map = new LinkedHashMap<>();
         map.put("k1", "v1");
         map.put("k2", 2);
         map.put("k3", null);
@@ -47,7 +47,7 @@ public class TemplateHashModelAdapterTest {
         DefaultObjectWrapper dow = new 
DefaultObjectWrapper.Builder(Configuration.VERSION_3_0_0).build();
         TemplateHashModel model = (TemplateHashModel) dow.wrap(map);
 
-        TemplateHashModelAdapter<Object, Object> adapted = new 
TemplateHashModelAdapter<Object, Object>(model, dow);
+        TemplateHashModelAdapter<Object, Object> adapted = new 
TemplateHashModelAdapter<>(model, dow);
 
         assertEquals("v1", adapted.get("k1"));
         assertEquals(2, adapted.get("k2"));
@@ -80,7 +80,7 @@ public class TemplateHashModelAdapterTest {
         DefaultObjectWrapper dow = new 
DefaultObjectWrapper.Builder(Configuration.VERSION_3_0_0).build();
         TemplateHashModel model = (TemplateHashModel) dow.wrap(map);
 
-        TemplateHashModelAdapter<Object, Object> adapted = new 
TemplateHashModelAdapter<Object, Object>(model, dow);
+        TemplateHashModelAdapter<Object, Object> adapted = new 
TemplateHashModelAdapter<>(model, dow);
 
         assertNull(adapted.get("k1"));
 
diff --git 
a/freemarker-core-test/src/test/java/org/apache/freemarker/core/util/DeepUnwrapTest.java
 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/util/DeepUnwrapTest.java
index 1e1a664..ac30f26 100644
--- 
a/freemarker-core-test/src/test/java/org/apache/freemarker/core/util/DeepUnwrapTest.java
+++ 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/util/DeepUnwrapTest.java
@@ -37,7 +37,7 @@ public class DeepUnwrapTest {
     @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/freemarker-core-test/src/test/java/org/apache/freemarker/core/util/TemplateModelUtilsTest.java
 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/util/TemplateModelUtilsTest.java
index 1c65346..2a294f0 100644
--- 
a/freemarker-core-test/src/test/java/org/apache/freemarker/core/util/TemplateModelUtilsTest.java
+++ 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/util/TemplateModelUtilsTest.java
@@ -82,9 +82,9 @@ public class TemplateModelUtilsTest {
                 TemplateModelUtils.wrapAsHashUnion(ow, th1, th4));
         assertUnionResult(ImmutableMap.of("a", 1, "b", 2), false,
                 TemplateModelUtils.wrapAsHashUnion(ow, th4, th1));
-        assertUnionResult(Collections.<String, Integer>emptyMap(), true,
+        assertUnionResult(Collections.emptyMap(), true,
                 TemplateModelUtils.wrapAsHashUnion(ow, thEx4, thEx4));
-        assertUnionResult(Collections.<String, Integer>emptyMap(), false,
+        assertUnionResult(Collections.emptyMap(), false,
                 TemplateModelUtils.wrapAsHashUnion(ow, th4, th4));
     }
 
@@ -135,15 +135,15 @@ public class TemplateModelUtilsTest {
             
             assertEquals(expected.size(), actualEx.getHashSize());
             
-            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(((TemplateStringModel) 
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/freemarker-core-test/src/test/java/org/apache/freemarker/core/valueformat/NumberFormatTest.java
 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/valueformat/NumberFormatTest.java
index 5ff0d6e..3b21a35 100644
--- 
a/freemarker-core-test/src/test/java/org/apache/freemarker/core/valueformat/NumberFormatTest.java
+++ 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/valueformat/NumberFormatTest.java
@@ -229,15 +229,15 @@ public class NumberFormatTest extends TemplateTest {
         assertOutput("${10}", "@@10");
 
         setConfigurationWithNumberFormat(
-                "@hex", Collections.<String, 
TemplateNumberFormatFactory>emptyMap());
+                "@hex", Collections.emptyMap());
         assertErrorContains("${10}", "custom", "\"hex\"");
 
         setConfigurationWithNumberFormat(
-                "'@'0", Collections.<String, 
TemplateNumberFormatFactory>emptyMap());
+                "'@'0", Collections.emptyMap());
         assertOutput("${10}", "@10");
 
         setConfigurationWithNumberFormat(
-                "@@0", Collections.<String, 
TemplateNumberFormatFactory>emptyMap());
+                "@@0", Collections.emptyMap());
         assertOutput("${10}", "@@10");
     }
 
@@ -271,7 +271,7 @@ public class NumberFormatTest extends TemplateTest {
     public void testAlieses2() throws Exception {
         setConfigurationWithNumberFormat(
                 "@n",
-                ImmutableMap.<String, TemplateNumberFormatFactory>of(
+                ImmutableMap.of(
                         "n", new AliasTemplateNumberFormatFactory("0.0",
                                 ImmutableMap.of(
                                         new Locale("en"), "0.0'_en'",
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirSetting.java 
b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirSetting.java
index 9d76aef..0365644 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirSetting.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirSetting.java
@@ -36,7 +36,7 @@ final class ASTDirSetting extends ASTDirective {
     private final String key;
     private final ASTExpression value;
     
-    static final Set<String> SETTING_NAMES = new _SortedArraySet<String>(
+    static final Set<String> SETTING_NAMES = new _SortedArraySet<>(
             // Must be sorted alphabetically!
             MutableProcessingConfiguration.BOOLEAN_FORMAT_KEY,
             MutableProcessingConfiguration.DATE_FORMAT_KEY,
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTElement.java 
b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTElement.java
index 5309177..d26ce03 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTElement.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTElement.java
@@ -137,7 +137,7 @@ abstract class ASTElement extends ASTNode {
             public Iterator<ASTElement> iterator() {
                 return new _ChildIterator();
             }
-        } : Collections.<ASTElement>emptyList();
+        } : Collections.emptyList();
     }
 
     public final int getChildCount() {
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/Configuration.java 
b/freemarker-core/src/main/java/org/apache/freemarker/core/Configuration.java
index cb90d19..63e352b 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/Configuration.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/Configuration.java
@@ -159,7 +159,7 @@ public final class Configuration implements 
TopLevelConfiguration, CustomStateSc
 
         static final Map<String, TemplateLanguage> 
PREDEFINED_TEMPLATE_LANGUAGES_BY_EXTENSION;
         static {
-            PREDEFINED_TEMPLATE_LANGUAGES_BY_EXTENSION = new HashMap<String, 
TemplateLanguage>(32);
+            PREDEFINED_TEMPLATE_LANGUAGES_BY_EXTENSION = new HashMap<>(32);
 
             for (TemplateLanguage tl : 
DefaultTemplateLanguage.STANDARD_INSTANCES) {
                 
PREDEFINED_TEMPLATE_LANGUAGES_BY_EXTENSION.put(tl.getFileExtension(), tl);
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/MutableProcessingConfiguration.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/MutableProcessingConfiguration.java
index 936cce3..e7e3241 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/MutableProcessingConfiguration.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/MutableProcessingConfiguration.java
@@ -1258,7 +1258,7 @@ public abstract class 
MutableProcessingConfiguration<SelfT extends MutableProces
                     uniqueItems.add(templateName);
                 }
             }
-            this.autoIncludes = Collections.<String>unmodifiableList(new 
ArrayList<>(uniqueItems));
+            this.autoIncludes = Collections.unmodifiableList(new 
ArrayList<>(uniqueItems));
         } else {
             this.autoIncludes = autoIncludes;
         }
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/Template.java 
b/freemarker-core/src/main/java/org/apache/freemarker/core/Template.java
index 9f6a7b7..eaba912 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/Template.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/Template.java
@@ -1136,7 +1136,7 @@ public class Template implements ProcessingConfiguration, 
CustomStateScope {
         }
 
         Map<Serializable, Object> inheritedAttrs = includeInherited ? 
cfg.getCustomSettings(true)
-                : Collections.<Serializable, Object>emptyMap();
+                : Collections.emptyMap();
 
         LinkedHashMap<Serializable, Object> mergedAttrs;
         if (nonInheritedAttrs.isEmpty()) {
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/TemplateElementsToVisit.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/TemplateElementsToVisit.java
index defcf5d..a21c37e 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/TemplateElementsToVisit.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/TemplateElementsToVisit.java
@@ -32,7 +32,7 @@ class TemplateElementsToVisit {
     private final Collection<ASTElement> templateElements;
 
     TemplateElementsToVisit(Collection<ASTElement> templateElements) {
-        this.templateElements = null != templateElements ? templateElements : 
Collections.<ASTElement> emptyList();
+        this.templateElements = null != templateElements ? templateElements : 
Collections.emptyList();
     }
 
     TemplateElementsToVisit(ASTElement nestedBlock) {
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/debug/DebuggerClient.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/debug/DebuggerClient.java
index 2af3136..26d5616 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/debug/DebuggerClient.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/debug/DebuggerClient.java
@@ -60,15 +60,14 @@ public class DebuggerClient {
     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 @@ public class DebuggerClient {
                 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/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/ClassIntrospector.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/ClassIntrospector.java
index dcb48c8..d250259 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/ClassIntrospector.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/ClassIntrospector.java
@@ -374,7 +374,7 @@ class ClassIntrospector {
                                     method.getParameterTypes());
                             if (replaced != null) {
                                 if (argTypesUsedByIndexerPropReaders == null) {
-                                    argTypesUsedByIndexerPropReaders = new 
IdentityHashMap<Method, Void>();
+                                    argTypesUsedByIndexerPropReaders = new 
IdentityHashMap<>();
                                 }
                                 argTypesUsedByIndexerPropReaders.put(method, 
null);
                             }
@@ -392,7 +392,7 @@ class ClassIntrospector {
     private List<PropertyDescriptor> getPropertyDescriptors(BeanInfo beanInfo, 
Class<?> clazz) {
         PropertyDescriptor[] introspectorPDsArray = 
beanInfo.getPropertyDescriptors();
         List<PropertyDescriptor> introspectorPDs = introspectorPDsArray != 
null ? Arrays.asList(introspectorPDsArray)
-                : Collections.<PropertyDescriptor>emptyList();
+                : Collections.emptyList();
 
         if (_JavaVersions.JAVA_8 == null) {
             // java.beans.Introspector was good enough then.
@@ -425,7 +425,7 @@ class ClassIntrospector {
                     if (propName != null) {
                         if (mergedPRMPs == null) {
                             // Lazy initialization
-                            mergedPRMPs = new LinkedHashMap<String, Object>();
+                            mergedPRMPs = new LinkedHashMap<>();
                         }
                         if (paramTypes.length == 0) {
                             mergeInPropertyReaderMethod(mergedPRMPs, propName, 
method);
@@ -448,7 +448,7 @@ class ClassIntrospector {
         }
 
         // 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();
@@ -586,7 +586,7 @@ class ClassIntrospector {
     private List<MethodDescriptor> getMethodDescriptors(BeanInfo beanInfo, 
Class<?> clazz) {
         MethodDescriptor[] introspectorMDArray = 
beanInfo.getMethodDescriptors();
         List<MethodDescriptor> introspectionMDs = introspectorMDArray != null 
&& introspectorMDArray.length != 0
-                ? Arrays.asList(introspectorMDArray) : 
Collections.<MethodDescriptor>emptyList();
+                ? Arrays.asList(introspectorMDArray) : Collections.emptyList();
 
         if (_JavaVersions.JAVA_8 == null) {
             // java.beans.Introspector was good enough then.
@@ -597,11 +597,11 @@ class ClassIntrospector {
         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);
@@ -615,7 +615,7 @@ class ClassIntrospector {
 
         // 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
@@ -694,7 +694,7 @@ class ClassIntrospector {
             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);
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/DefaultMemberAccessPolicy.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/DefaultMemberAccessPolicy.java
index faef934..975d3d7 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/DefaultMemberAccessPolicy.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/DefaultMemberAccessPolicy.java
@@ -126,7 +126,7 @@ public final class DefaultMemberAccessPolicy implements 
MemberAccessPolicy {
             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()) {
@@ -156,7 +156,7 @@ public final class DefaultMemberAccessPolicy implements 
MemberAccessPolicy {
     }
 
     private static List<String> loadMemberSelectorFileLines() throws 
IOException {
-        List<String> whitelist = new ArrayList<String>();
+        List<String> whitelist = new ArrayList<>();
         try (BufferedReader reader = new BufferedReader(
                 new InputStreamReader(
                         
DefaultMemberAccessPolicy.class.getResourceAsStream("DefaultMemberAccessPolicy-rules"),
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/MemberSelectorListMemberAccessPolicy.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/MemberSelectorListMemberAccessPolicy.java
index de82405..84d3410 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/MemberSelectorListMemberAccessPolicy.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/MemberSelectorListMemberAccessPolicy.java
@@ -272,7 +272,7 @@ public abstract class MemberSelectorListMemberAccessPolicy 
implements MemberAcce
         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/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/ResourceBundleModel.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/ResourceBundleModel.java
index 9f12c05..a974416 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/ResourceBundleModel.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/ResourceBundleModel.java
@@ -161,7 +161,7 @@ public class ResourceBundleModel extends BeanModel 
implements TemplateFunctionMo
         // consequences, and we avoid a performance hit.
         /* synchronized(formats) */
         {
-            format = (MessageFormat) formats.get(key);
+            format = formats.get(key);
             if (format == null) {
                 format = new MessageFormat(((ResourceBundle) 
object).getString(key));
                 format.setLocale(getBundle().getLocale());
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/TemplateCollectionModelAdapter.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/TemplateCollectionModelAdapter.java
index 91a38ed..b3b812a 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/TemplateCollectionModelAdapter.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/TemplateCollectionModelAdapter.java
@@ -68,7 +68,7 @@ class TemplateCollectionModelAdapter<T> extends 
AbstractCollection<T> implements
     @Override
     public Iterator<T> iterator() {
         try {
-            return new TemplateModelIteratorAdapter<T>(model.iterator(), 
wrapper);
+            return new TemplateModelIteratorAdapter<>(model.iterator(), 
wrapper);
         } catch (TemplateException e) {
             throw new UndeclaredThrowableException(e);
         }
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/TemplateIterableModelAdapter.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/TemplateIterableModelAdapter.java
index 58e1835..8937aaa 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/TemplateIterableModelAdapter.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/TemplateIterableModelAdapter.java
@@ -48,7 +48,7 @@ class TemplateIterableModelAdapter<T> implements 
TemplateModelAdapter, Iterable<
     @Override
     public Iterator<T> iterator() {
         try {
-            return new TemplateModelIteratorAdapter<T>(model.iterator(), 
wrapper);
+            return new TemplateModelIteratorAdapter<>(model.iterator(), 
wrapper);
         } catch (TemplateException e) {
             throw new UndeclaredThrowableException(e);
         }
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/TemplateSequenceModelAdapter.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/TemplateSequenceModelAdapter.java
index 49da53a..1f74aaf 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/TemplateSequenceModelAdapter.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/TemplateSequenceModelAdapter.java
@@ -75,7 +75,7 @@ class TemplateSequenceModelAdapter<T> extends AbstractList<T> 
implements Templat
     @Override
     public Iterator<T> iterator() {
         try {
-            return new TemplateModelIteratorAdapter<T>(model.iterator(), 
wrapper);
+            return new TemplateModelIteratorAdapter<>(model.iterator(), 
wrapper);
         } catch (TemplateException e) {
             throw new UndeclaredThrowableException(e);
         }
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/util/DeepUnwrap.java 
b/freemarker-core/src/main/java/org/apache/freemarker/core/util/DeepUnwrap.java
index ba6d132..ab51b05 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/util/DeepUnwrap.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/util/DeepUnwrap.java
@@ -145,7 +145,7 @@ public class DeepUnwrap {
             if (hash.isEmptyHash()) {
                 return Collections.emptyMap();
             }
-            Map<Object, Object> map = new LinkedHashMap<Object, 
Object>((hash.getHashSize() + 1) * 4 / 3, 0.75f);
+            Map<Object, Object> map = new LinkedHashMap<>((hash.getHashSize() 
+ 1) * 4 / 3, 0.75f);
             KeyValuePairIterator kvps = hash.keyValuePairIterator();
             while (kvps.hasNext()) {
                 KeyValuePair kvp = kvps.next();
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/util/TemplateLanguageUtils.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/util/TemplateLanguageUtils.java
index 4c70568..fcc9db4 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/util/TemplateLanguageUtils.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/util/TemplateLanguageUtils.java
@@ -758,7 +758,7 @@ public final class TemplateLanguageUtils {
      */
     public static String getTypeName(Class<? extends TemplateModel> cl) {
         StringBuilder sb = new StringBuilder();
-        appendTemplateModelTypeName(sb, new HashSet<String>(4), cl);
+        appendTemplateModelTypeName(sb, new HashSet<>(4), cl);
         return sb.toString();
     }
 
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/util/TemplateModelUtils.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/util/TemplateModelUtils.java
index 2bad2fd..95fe8ed 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/util/TemplateModelUtils.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/util/TemplateModelUtils.java
@@ -87,7 +87,7 @@ public class TemplateModelUtils {
             throws TemplateException {
         _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) {
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_ArrayAdapterList.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_ArrayAdapterList.java
index 95c06bc..c3e5d8f 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_ArrayAdapterList.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_ArrayAdapterList.java
@@ -32,7 +32,7 @@ public class _ArrayAdapterList<E> extends AbstractList<E> {
     private final E[] array;
 
     public static <E> _ArrayAdapterList<E> adapt(E[] array) {
-        return  array != null ? new _ArrayAdapterList<E>(array) : null;
+        return  array != null ? new _ArrayAdapterList<>(array) : null;
     }
 
     private _ArrayAdapterList(E[] array) {
@@ -51,7 +51,7 @@ public class _ArrayAdapterList<E> extends AbstractList<E> {
 
     @Override
     public Iterator<E> iterator() {
-        return new _ArrayIterator<E>(array);
+        return new _ArrayIterator<>(array);
     }
 
     @Override
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_ClassUtils.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_ClassUtils.java
index 43bf1ac..00aaadf 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_ClassUtils.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_ClassUtils.java
@@ -53,9 +53,7 @@ public class _ClassUtils {
             if (ctcl != null) {  // not null: we don't want to fall back to 
the bootstrap class loader
                 return Class.forName(className, true, ctcl);
             }
-        } catch (ClassNotFoundException e) {
-            // Intentionally ignored
-        } catch (SecurityException e) {
+        } catch (ClassNotFoundException | SecurityException e) {
             // Intentionally ignored
         }
         // Fall back to the defining class loader of the FreeMarker classes 
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_CollectionUtils.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_CollectionUtils.java
index 5801f2e..60b94a7 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_CollectionUtils.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_CollectionUtils.java
@@ -117,10 +117,10 @@ public class _CollectionUtils {
 
     private static final Class<?> UNMODIFIABLE_MAP_CLASS_1 = 
Collections.emptyMap().getClass();
     private static final Class<?> UNMODIFIABLE_MAP_CLASS_2 = 
Collections.unmodifiableMap(
-            new HashMap<Object, Object> (1)).getClass();
+            new HashMap<>(1)).getClass();
     private static final Class<?> UNMODIFIABLE_LIST_CLASS_1 = 
Collections.emptyList().getClass();
     private static final Class<?> UNMODIFIABLE_LIST_CLASS_2 = 
Collections.unmodifiableList(
-            new ArrayList<Object>(1)).getClass();
+            new ArrayList<>(1)).getClass();
 
     public static boolean isMapKnownToBeUnmodifiable(Map<?, ?> map) {
         if (map == null) {
@@ -158,8 +158,8 @@ public class _CollectionUtils {
         if (m2.isEmpty()) return m1;
 
         Map<K, V> mergedM = keepOriginalOrder
-                ? new LinkedHashMap<K, V>((m1.size() + m2.size()) * 4 / 3 + 1, 
0.75f)
-                : new HashMap<K, V>((m1.size() + m2.size()) * 4 / 3 + 1, 
0.75f);
+                ? new LinkedHashMap<>((m1.size() + m2.size()) * 4 / 3 + 1, 
0.75f)
+                : new HashMap<>((m1.size() + m2.size()) * 4 / 3 + 1, 0.75f);
         mergedM.putAll(m1);
         if (keepOriginalOrder) {
             for (K m2Key : m2.keySet()) {
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/valueformat/impl/ISOLikeTemplateDateFormatFactory.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/valueformat/impl/ISOLikeTemplateDateFormatFactory.java
index fe18a66..d10ac9c 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/valueformat/impl/ISOLikeTemplateDateFormatFactory.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/valueformat/impl/ISOLikeTemplateDateFormatFactory.java
@@ -47,11 +47,11 @@ abstract class ISOLikeTemplateDateFormatFactory extends 
TemplateDateFormatFactor
     protected ISOLikeTemplateDateFormatFactory() { }
 
     public DateToISO8601CalendarFactory getISOBuiltInCalendar(Environment env) 
{
-        return (DateToISO8601CalendarFactory) 
env.getCustomState(DATE_TO_CAL_CONVERTER_KEY);
+        return env.getCustomState(DATE_TO_CAL_CONVERTER_KEY);
     }
 
     public CalendarFieldsToDateConverter 
getCalendarFieldsToDateCalculator(Environment env) {
-        return (CalendarFieldsToDateConverter) 
env.getCustomState(CAL_TO_DATE_CONVERTER_KEY);
+        return env.getCustomState(CAL_TO_DATE_CONVERTER_KEY);
     }
     
 }
diff --git 
a/freemarker-dom/src/main/java/org/apache/freemarker/dom/JaxenXPathSupport.java 
b/freemarker-dom/src/main/java/org/apache/freemarker/dom/JaxenXPathSupport.java
index 24ff94c..ccf55fb 100644
--- 
a/freemarker-dom/src/main/java/org/apache/freemarker/dom/JaxenXPathSupport.java
+++ 
b/freemarker-dom/src/main/java/org/apache/freemarker/dom/JaxenXPathSupport.java
@@ -67,7 +67,7 @@ class JaxenXPathSupport implements XPathSupport {
             = new CustomStateKey<Map<String, BaseXPath>>() {
         @Override
         protected Map<String, BaseXPath> create() {
-            return new HashMap<String, BaseXPath>();
+            return new HashMap<>();
         }
     };
 
diff --git 
a/freemarker-dom/src/main/java/org/apache/freemarker/dom/NodeModel.java 
b/freemarker-dom/src/main/java/org/apache/freemarker/dom/NodeModel.java
index 3a92f7f..e405687 100644
--- a/freemarker-dom/src/main/java/org/apache/freemarker/dom/NodeModel.java
+++ b/freemarker-dom/src/main/java/org/apache/freemarker/dom/NodeModel.java
@@ -474,9 +474,7 @@ abstract public class NodeModel implements 
TemplateNodeModelEx, TemplateHashMode
                 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/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java
 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java
index 2727f00..f43ab1d 100644
--- 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java
+++ 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java
@@ -983,9 +983,7 @@ public class FreemarkerServlet extends HttpServlet {
                     ATTR_REQUEST_PARAMETERS_MODEL);
             params.putUnlistedModel(KEY_REQUEST_PARAMETERS, 
requestParametersModel);
             return params;
-        } catch (ServletException e) {
-            throw new TemplateException(e);
-        } catch (IOException e) {
+        } catch (ServletException | IOException e) {
             throw new TemplateException(e);
         }
     }
@@ -1028,7 +1026,7 @@ public class FreemarkerServlet extends HttpServlet {
         try {
             final String prop = 
_SecurityUtils.getSystemProperty(SYSTEM_PROPERTY_CLASSPATH_TLDS, null);
             classpathTldsFromSysProp = (prop != null) ? 
InitParamParser.parseCommaSeparatedList(prop)
-                    : Collections.<String>emptyList();
+                    : Collections.emptyList();
         } catch (ParseException e) {
             throw new TemplateException(
                     "Failed to parse system property \"" + 
SYSTEM_PROPERTY_CLASSPATH_TLDS + "\"", e);
diff --git 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/FreeMarkerPageContext.java
 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/FreeMarkerPageContext.java
index 29a3f54..b2a22ff 100644
--- 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/FreeMarkerPageContext.java
+++ 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/FreeMarkerPageContext.java
@@ -105,7 +105,7 @@ abstract class FreeMarkerPageContext extends PageContext 
implements TemplateMode
             session = request.getSession(false);
             response = reqHash.getResponse();
             ObjectWrapperAndUnwrapper ow = reqHash.getObjectWrapper();
-            wrapper = (ObjectWrapperAndUnwrapper) ow;
+            wrapper = ow;
         } else {
             throw new  TemplateException("Could not find an instance of " +
                     HttpRequestHashModel.class.getName() + 
diff --git 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
index 0edfffc..c34aab2 100644
--- 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
+++ 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
@@ -619,18 +619,14 @@ public class TaglibFactory implements TemplateHashModel {
             }
 
             try {
-                ZipInputStream zipIn = new ZipInputStream(in);
-
-                try {
+                try (ZipInputStream zipIn = new ZipInputStream(in)) {
                     for (ZipEntry entry = zipIn.getNextEntry(); entry != null; 
entry = zipIn.getNextEntry()) {
                         String curEntryPath = 
normalizeJarEntryPath(entry.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();
@@ -714,9 +710,7 @@ public class TaglibFactory implements TemplateHashModel {
             }
 
             try {
-                ZipInputStream zipIn = new ZipInputStream(in);
-
-                try {
+                try (ZipInputStream zipIn = new ZipInputStream(in)) {
                     for (ZipEntry entry = zipIn.getNextEntry(); entry != null; 
entry = zipIn.getNextEntry()) {
                         String curEntryPath = 
normalizeJarEntryPath(entry.getName(), false);
                         if (curEntryPath.startsWith(baseEntryPath) && 
curEntryPath.endsWith(".tld")) {
@@ -725,8 +719,6 @@ public class TaglibFactory implements TemplateHashModel {
                             addTldLocationFromTld(zipIn, new 
JarEntryUrlTldLocation(tldUrl, null));
                         }
                     }
-                } finally {
-                    zipIn.close();
                 }
             } catch (ZipException e) {
                 // ZipException messages miss the zip URL 
@@ -774,7 +766,6 @@ public class TaglibFactory implements TemplateHashModel {
      */
     private void addTldLocationFromTld(TldLocation tldLocation) throws 
IOException, SAXException {
         InputStream in = null;
-
         try {
             in = tldLocation.getInputStream();
             addTldLocationFromTld(in, tldLocation);
@@ -1865,9 +1856,7 @@ public class TaglibFactory implements TemplateHashModel {
                 throws TldParsingSAXException {
             try {
                 return _ClassUtils.forName(className);
-            } catch (LinkageError e) {
-                throw newTLDEntryClassLoadingException(e, className, 
entryType, entryName);
-            } catch (ClassNotFoundException e) {
+            } catch (LinkageError | ClassNotFoundException e) {
                 throw newTLDEntryClassLoadingException(e, className, 
entryType, entryName);
             }
         }
@@ -2100,7 +2089,7 @@ public class TaglibFactory implements TemplateHashModel {
          * Getter pair of {@link #setClasspathTlds(List)}
          */
         public List<? extends MetaInfTldSource> getMetaInfTldSources() {
-            return (metaInfTldSources != null) ? metaInfTldSources : 
Collections.<MetaInfTldSource> emptyList();
+            return (metaInfTldSources != null) ? metaInfTldSources : 
Collections.emptyList();
         }
 
         /**
@@ -2137,7 +2126,7 @@ public class TaglibFactory implements TemplateHashModel {
          * Getter pair of {@link #setClasspathTlds(List)}.
          */
         public List<String> getClasspathTlds() {
-            return (classpathTlds != null) ? classpathTlds : 
Collections.<String> emptyList();
+            return (classpathTlds != null) ? classpathTlds : 
Collections.emptyList();
         }
 
         /**
diff --git 
a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/RealServletContainertTest.java
 
b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/RealServletContainertTest.java
index bd4a75d..893a7cd 100644
--- 
a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/RealServletContainertTest.java
+++ 
b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/RealServletContainertTest.java
@@ -281,8 +281,8 @@ public class RealServletContainertTest extends 
WebAppTestCase {
 
         @Override
         public String execute(HttpServletRequest req, HttpServletResponse 
resp) throws Exception {
-            req.setAttribute("linkedList", initTestCollection(new 
LinkedList<Integer>()));
-            req.setAttribute("arrayList", initTestCollection(new 
ArrayList<Integer>()));
+            req.setAttribute("linkedList", initTestCollection(new 
LinkedList<>()));
+            req.setAttribute("arrayList", initTestCollection(new 
ArrayList<>()));
             req.setAttribute("myList", new MyList());
             
             req.setAttribute("linkedHashMap", initTestMap(new 
LinkedHashMap()));
@@ -310,7 +310,7 @@ public class RealServletContainertTest extends 
WebAppTestCase {
 
         @Override
         public Set<Map.Entry<String, Integer>> entrySet() {
-            return ImmutableSet.<Map.Entry<String, Integer>>of(
+            return ImmutableSet.of(
                     new MyEntry("a", 1), new MyEntry("b", 2), new MyEntry("c", 
3));
         }
         
diff --git 
a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/test/WebAppTestCase.java
 
b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/test/WebAppTestCase.java
index 961b812..050c92a 100644
--- 
a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/test/WebAppTestCase.java
+++ 
b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/test/WebAppTestCase.java
@@ -124,11 +124,8 @@ public class WebAppTestCase {
 
             final String content;
             if (responseCode == 200) {
-                InputStream in = httpCon.getInputStream();
-                try {
+                try (InputStream in = httpCon.getInputStream()) {
                     content = IOUtils.toString(in, 
StandardCharsets.UTF_8.name());
-                } finally {
-                    in.close();
                 }
             } else {
                 content = null;
diff --git 
a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/UrlFunction.java
 
b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/UrlFunction.java
index 66b458f..16a720d 100644
--- 
a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/UrlFunction.java
+++ 
b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/UrlFunction.java
@@ -145,7 +145,7 @@ class UrlFunction extends 
AbstractSpringTemplateFunctionModel {
                             this);
                 }
 
-                params.add(new _KeyValuePair<String, String>(paramName, 
paramValue));
+                params.add(new _KeyValuePair<>(paramName, paramValue));
             }
         }
 
diff --git 
a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractHtmlElementTemplateDirectiveModel.java
 
b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractHtmlElementTemplateDirectiveModel.java
index 8c072bc..9eb8ebb 100644
--- 
a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractHtmlElementTemplateDirectiveModel.java
+++ 
b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractHtmlElementTemplateDirectiveModel.java
@@ -295,7 +295,7 @@ abstract class AbstractHtmlElementTemplateDirectiveModel
         }
 
         if (dynamicAttributes == null) {
-            dynamicAttributes = new LinkedHashMap<String, Object>();
+            dynamicAttributes = new LinkedHashMap<>();
             unmodifiableDynamicAttributes = 
Collections.unmodifiableMap(dynamicAttributes);
         }
 
diff --git 
a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/ErrorsTemplateDirectiveModel.java
 
b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/ErrorsTemplateDirectiveModel.java
index 8adac5c..20f04ba 100644
--- 
a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/ErrorsTemplateDirectiveModel.java
+++ 
b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/ErrorsTemplateDirectiveModel.java
@@ -152,7 +152,7 @@ class ErrorsTemplateDirectiveModel extends 
AbstractHtmlElementTemplateDirectiveM
             return;
         }
 
-        List<String> messages = new ArrayList<String>();
+        List<String> messages = new ArrayList<>();
         messages.addAll(Arrays.asList(getBindStatus().getErrorMessages()));
         SimpleCollection messagesModel = new SimpleCollection(messages, 
objectWrapperAndUnwrapper);
         final TemplateModel[] nestedContentArgs = new TemplateModel[] { 
messagesModel };
diff --git 
a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/FormTemplateDirectiveModel.java
 
b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/FormTemplateDirectiveModel.java
index a3f084e..c95da6c 100644
--- 
a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/FormTemplateDirectiveModel.java
+++ 
b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/FormTemplateDirectiveModel.java
@@ -383,7 +383,7 @@ class FormTemplateDirectiveModel extends 
AbstractHtmlElementTemplateDirectiveMod
         HttpServletRequest request = getRequest();
 
         if (processor != null && request != null) {
-            action = processor.processAction((HttpServletRequest) request, 
action, getHttpMethod());
+            action = processor.processAction(request, action, getHttpMethod());
         }
 
         return action;
diff --git 
a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/SelectableValueComparisonUtils.java
 
b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/SelectableValueComparisonUtils.java
index 842d5fc..c02b74c 100644
--- 
a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/SelectableValueComparisonUtils.java
+++ 
b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/SelectableValueComparisonUtils.java
@@ -102,7 +102,7 @@ class SelectableValueComparisonUtils {
     private static boolean 
isValueInCollectionComparingWithEditorValue(Collection<?> collection, Object 
value,
             BindStatus bindStatus) {
 
-        final Map<PropertyEditor, Object> convertedValueCache = new 
HashMap<PropertyEditor, Object>(1);
+        final Map<PropertyEditor, Object> convertedValueCache = new 
HashMap<>(1);
         PropertyEditor editor = null;
         final boolean isValueString = (value instanceof String);
 
diff --git 
a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/TagOutputter.java
 
b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/TagOutputter.java
index 6f5b599..2d32f2d 100644
--- 
a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/TagOutputter.java
+++ 
b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/TagOutputter.java
@@ -36,7 +36,7 @@ class TagOutputter {
 
     private final Writer out;
 
-    private final Stack<TagEntry> tagStack = new Stack<TagEntry>();
+    private final Stack<TagEntry> tagStack = new Stack<>();
 
     public TagOutputter(final Environment env, final Writer out) {
         this.env = env;
diff --git 
a/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/PageContextServletConfig.java
 
b/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/PageContextServletConfig.java
index de94649..ad1bb2d 100644
--- 
a/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/PageContextServletConfig.java
+++ 
b/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/PageContextServletConfig.java
@@ -55,6 +55,6 @@ final class PageContextServletConfig implements ServletConfig 
{
 
     @Override
     public Enumeration<String> getInitParameterNames() {
-        return Collections.enumeration(Collections.<String> emptySet());
+        return Collections.enumeration(Collections.emptySet());
     }
 }
\ No newline at end of file
diff --git 
a/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreeMarkerViewResolverTest.java
 
b/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreeMarkerViewResolverTest.java
index 7d7a399..9cfab1a 100644
--- 
a/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreeMarkerViewResolverTest.java
+++ 
b/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreeMarkerViewResolverTest.java
@@ -82,7 +82,7 @@ public class FreeMarkerViewResolverTest {
         MockHttpServletResponse response = new MockHttpServletResponse();
 
         FreeMarkerView view = resolveFreemarkerView("hello", 
null);//Locale.ENGLISH);
-        Map<String, Object> model = new HashMap<String, Object>();
+        Map<String, Object> model = new HashMap<>();
         view.render(model, request, response);
 
         assertEquals("Hello, World!", response.getContentAsString());
diff --git 
a/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreeMarkerViewTest.java
 
b/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreeMarkerViewTest.java
index 64c1e79..10598f9 100644
--- 
a/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreeMarkerViewTest.java
+++ 
b/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreeMarkerViewTest.java
@@ -95,7 +95,7 @@ public class FreeMarkerViewTest {
         FreeMarkerView view = createFreemarkerView("hello.f3ah");
 
         int visitCount = 0;
-        Map<String, Object> model = new HashMap<String, Object>();
+        Map<String, Object> model = new HashMap<>();
 
         MockHttpServletResponse response = new MockHttpServletResponse();
         view.render(model, request, response);
@@ -128,7 +128,7 @@ public class FreeMarkerViewTest {
 
         FreeMarkerView view = createFreemarkerView("default-model.f3ah");
 
-        Map<String, Object> model = new HashMap<String, Object>();
+        Map<String, Object> model = new HashMap<>();
         model.put("name", "Dan");
 
         final long count = visitorCount.incrementAndGet();
@@ -151,7 +151,7 @@ public class FreeMarkerViewTest {
 
         FreeMarkerView view = createFreemarkerView("taglibs.f3ah");
 
-        Map<String, Object> model = new HashMap<String, Object>();
+        Map<String, Object> model = new HashMap<>();
         MockHttpServletResponse response = new MockHttpServletResponse();
         view.render(model, request, response);
         assertEquals("Hello!", response.getContentAsString());
diff --git 
a/freemarker-test-utils/src/main/java/org/apache/freemarker/test/MonitoredTemplateLoader.java
 
b/freemarker-test-utils/src/main/java/org/apache/freemarker/test/MonitoredTemplateLoader.java
index 0ab2922..d5f67b2 100644
--- 
a/freemarker-test-utils/src/main/java/org/apache/freemarker/test/MonitoredTemplateLoader.java
+++ 
b/freemarker-test-utils/src/main/java/org/apache/freemarker/test/MonitoredTemplateLoader.java
@@ -42,7 +42,7 @@ import com.google.common.base.Objects;
 public class MonitoredTemplateLoader implements TemplateLoader {
 
     private final List<AbstractTemplateLoader2Event> events
-            = Collections.synchronizedList(new 
ArrayList<AbstractTemplateLoader2Event>());
+            = Collections.synchronizedList(new ArrayList<>());
     
     private Map<String, StoredTemplate> templates
             = new ConcurrentHashMap<>();
diff --git 
a/freemarker-test-utils/src/main/java/org/apache/freemarker/test/ResourcesExtractor.java
 
b/freemarker-test-utils/src/main/java/org/apache/freemarker/test/ResourcesExtractor.java
index a0b4045..9de3f3b 100644
--- 
a/freemarker-test-utils/src/main/java/org/apache/freemarker/test/ResourcesExtractor.java
+++ 
b/freemarker-test-utils/src/main/java/org/apache/freemarker/test/ResourcesExtractor.java
@@ -101,14 +101,11 @@ public final class ResourcesExtractor {
             deleteDstRootDir = !dstRootDir.exists();
         }
         try {
-            BufferedReader contR = new BufferedReader(new 
InputStreamReader(contIn, StandardCharsets.UTF_8));
-            try {
+            try (BufferedReader contR = new BufferedReader(new 
InputStreamReader(contIn, StandardCharsets.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 @@ public final class ResourcesExtractor {
     private static void jarDirectory(File srcDir, File jarFile) throws 
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 @@ public final class ResourcesExtractor {
         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()) {

Reply via email to