freemarker-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ddek...@apache.org
Subject [11/17] incubator-freemarker git commit: FREEMARKER-55: code cleanups using generics
Date Thu, 06 Jul 2017 08:19:02 GMT
FREEMARKER-55: code cleanups using generics


Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/28102af6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/28102af6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/28102af6

Branch: refs/heads/3
Commit: 28102af69bca00e3cf29c2dc8a3a6a9d25c56ade
Parents: 14396c8
Author: Woonsan Ko <woonsan@apache.org>
Authored: Wed Jul 5 20:49:32 2017 -0400
Committer: Woonsan Ko <woonsan@apache.org>
Committed: Wed Jul 5 20:49:32 2017 -0400

----------------------------------------------------------------------
 .../freemarker/servlet/FreemarkerServlet.java   | 125 ++++++++++---------
 .../freemarker/servlet/InitParamParser.java     |   4 +-
 .../freemarker/servlet/jsp/TaglibFactory.java   |  18 +--
 3 files changed, 73 insertions(+), 74 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/28102af6/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java
----------------------------------------------------------------------
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 bcd4d04..a3f4e75 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
@@ -325,7 +325,7 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
  */
 // [FM3] Lot of things are marked here with "BC" and deprecated
 public class FreemarkerServlet extends HttpServlet {
-    
+
     private static final Logger LOG = LoggerFactory.getLogger(FreemarkerServlet.class);
 
     public static final long serialVersionUID = -2440216393145762479L;
@@ -335,7 +335,7 @@ public class FreemarkerServlet extends HttpServlet {
      * has existed long before 2.3.22, but this constant was only added then.)
      */
     public static final String INIT_PARAM_TEMPLATE_PATH = "TemplatePath";
-    
+
     /**
      * Init-param name - see the {@link FreemarkerServlet} class documentation about the
init-params. (This init-param
      * has existed long before 2.3.22, but this constant was only added then.)
@@ -367,7 +367,7 @@ public class FreemarkerServlet extends HttpServlet {
      * Init-param name - see the {@link FreemarkerServlet} class documentation about the
init-params.
      */
     public static final String INIT_PARAM_BUFFER_SIZE = "BufferSize";
-    
+
     /**
      * Init-param name - see the {@link FreemarkerServlet} class documentation about the
init-params.
      */
@@ -377,12 +377,12 @@ public class FreemarkerServlet extends HttpServlet {
      * Init-param name - see the {@link FreemarkerServlet} class documentation about the
init-params.
      */
     public static final String INIT_PARAM_EXCEPTION_ON_MISSING_TEMPLATE = "ExceptionOnMissingTemplate";
-    
+
     /**
      * Init-param name - see the {@link FreemarkerServlet} class documentation about the
init-params.
      */
     public static final String INIT_PARAM_CLASSPATH_TLDS = "ClasspathTlds";
-    
+
     private static final String INIT_PARAM_DEBUG = "Debug";
 
     private static final String DEPR_INITPARAM_TEMPLATE_DELAY = "TemplateDelay";
@@ -394,9 +394,9 @@ public class FreemarkerServlet extends HttpServlet {
     private static final String DEPR_INITPARAM_TEMPLATE_EXCEPTION_HANDLER_HTML_DEBUG = "htmlDebug";
     private static final String DEPR_INITPARAM_TEMPLATE_EXCEPTION_HANDLER_IGNORE = "ignore";
     private static final String DEPR_INITPARAM_DEBUG = "debug";
-    
+
     private static final ContentType DEFAULT_CONTENT_TYPE = new ContentType("text/html");
-    
+
     public static final String INIT_PARAM_VALUE_NEVER = "never";
     public static final String INIT_PARAM_VALUE_ALWAYS = "always";
     public static final String INIT_PARAM_VALUE_WHEN_TEMPLATE_HAS_MIME_TYPE = "whenTemplateHasMimeType";
@@ -417,17 +417,17 @@ public class FreemarkerServlet extends HttpServlet {
      * {@value #INIT_PARAM_CLASSPATH_TLDS} init-param. The value syntax is the same as of
the init-param.
      */
     public static final String SYSTEM_PROPERTY_CLASSPATH_TLDS = "org.freemarker.jsp.classpathTlds";
-    
+
     /**
      * Used as part of the value of the {@value #INIT_PARAM_META_INF_TLD_LOCATIONS} init-param.
      */
     public static final String META_INF_TLD_LOCATION_WEB_INF_PER_LIB_JARS = "webInfPerLibJars";
-    
+
     /**
      * Used as part of the value of the {@value #INIT_PARAM_META_INF_TLD_LOCATIONS} init-param.
      */
     public static final String META_INF_TLD_LOCATION_CLASSPATH = "classpath";
-    
+
     /**
      * Used as part of the value of the {@value #INIT_PARAM_META_INF_TLD_LOCATIONS} init-param.
      */
@@ -447,18 +447,18 @@ public class FreemarkerServlet extends HttpServlet {
     public static final String ATTR_REQUEST_MODEL = ".freemarker.Request";
     public static final String ATTR_REQUEST_PARAMETERS_MODEL = ".freemarker.RequestParameters";
     public static final String ATTR_SESSION_MODEL = ".freemarker.Session";
-    
+
     /** @deprecated We only keeps this attribute for backward compatibility, but actually
aren't using it. */
     @Deprecated
     private static final String ATTR_APPLICATION_MODEL = ".freemarker.Application";
-    
+
     /** @deprecated We only keeps this attribute for backward compatibility, but actually
aren't using it. */
     @Deprecated
     private static final String ATTR_JSP_TAGLIBS_MODEL = ".freemarker.JspTaglibs";
 
     private static final String ATTR_JETTY_CP_TAGLIB_JAR_PATTERNS
             = "org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern";
-    
+
     private static final String EXPIRATION_DATE;
 
     static {
@@ -476,14 +476,14 @@ public class FreemarkerServlet extends HttpServlet {
     private boolean noCache;
     private Integer bufferSize;
     private boolean exceptionOnMissingTemplate;
-    
+
     /**
      * @deprecated Not used anymore; to enable/disable debug logging, just set the logging
level of the logging library
      *             used by {@link Logger}.
      */
     @Deprecated
     protected boolean debug;
-    
+
     @SuppressFBWarnings(value="SE_BAD_FIELD", justification="Not investing into making this
Servlet serializable")
     private Configuration config;
     private ContentType contentType;
@@ -500,8 +500,6 @@ public class FreemarkerServlet extends HttpServlet {
     private ServletContextHashModel servletContextModel;
     @SuppressFBWarnings(value="SE_BAD_FIELD", justification="Not investing into making this
Servlet serializable")
     private TaglibFactory taglibFactory;
-    
-    private boolean objectWrapperMismatchWarnLogged;
 
     /**
      * Don't override this method to adjust FreeMarker settings! Override the protected methods
for that, such as
@@ -520,11 +518,11 @@ public class FreemarkerServlet extends HttpServlet {
                     + " servlet; see cause exception.", e);
         }
     }
-    
+
     private void initialize() throws InitParamValueException, MalformedWebXmlException, ConflictingInitParamsException,
             ConfigurationException {
         Configuration.ExtendableBuilder<?> cfgB = createConfigurationBuilder();
-        
+
         // Only override what's coming from the config if it was explicitly specified: 
         final String iciInitParamValue = getInitParameter(Configuration.ExtendableBuilder.INCOMPATIBLE_IMPROVEMENTS_KEY);
         if (iciInitParamValue != null) {
@@ -536,7 +534,7 @@ public class FreemarkerServlet extends HttpServlet {
         }
 
         contentType = DEFAULT_CONTENT_TYPE;
-        
+
         // Process object_wrapper init-param out of order:
         String objectWrapperInitParamValue = getInitParameter(
                 Configuration.Builder.OBJECT_WRAPPER_KEY, DEPR_INITPARAM_OBJECT_WRAPPER);
@@ -553,12 +551,12 @@ public class FreemarkerServlet extends HttpServlet {
                 throw new InitParamValueException(INIT_PARAM_TEMPLATE_PATH, templatePath,
e);
             }
         }
-        
+
         metaInfTldSources = createDefaultMetaInfTldSources();
         classpathTlds = createDefaultClassPathTlds();
 
         // Process all other init-params:
-        for (Enumeration initPNames = getServletConfig().getInitParameterNames(); initPNames.hasMoreElements();)
{
+        for (Enumeration<String> initPNames = getServletConfig().getInitParameterNames();
initPNames.hasMoreElements();) {
             final String name = (String) initPNames.nextElement();
             final String value = getInitParameter(name);
             if (name == null) {
@@ -571,7 +569,7 @@ public class FreemarkerServlet extends HttpServlet {
                         "init-param " + _StringUtil.jQuote(name) + " without param-value.
"
                         + "Maybe the web.xml is not well-formed?");
             }
-            
+
             try {
                 if (name.equals(DEPR_INITPARAM_OBJECT_WRAPPER)
                         || name.equals(Configuration.Builder.OBJECT_WRAPPER_KEY)
@@ -599,7 +597,7 @@ public class FreemarkerServlet extends HttpServlet {
                         throw new ConflictingInitParamsException(
                                 MutableProcessingConfiguration.TEMPLATE_EXCEPTION_HANDLER_KEY,
DEPR_INITPARAM_TEMPLATE_EXCEPTION_HANDLER);
                     }
-    
+
                     if (DEPR_INITPARAM_TEMPLATE_EXCEPTION_HANDLER_RETHROW.equals(value))
{
                         cfgB.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW);
                     } else if (DEPR_INITPARAM_TEMPLATE_EXCEPTION_HANDLER_DEBUG.equals(value))
{
@@ -640,7 +638,7 @@ public class FreemarkerServlet extends HttpServlet {
                 } else if (name.equals(INIT_PARAM_META_INF_TLD_LOCATIONS)) {
                     metaInfTldSources = TaglibFactory.parseMetaInfTldLocations(InitParamParser.parseCommaSeparatedList(value));
                 } else if (name.equals(INIT_PARAM_CLASSPATH_TLDS)) {
-                    List newClasspathTlds = new ArrayList();
+                    List<String> newClasspathTlds = new ArrayList<>();
                     if (classpathTlds != null) {
                         newClasspathTlds.addAll(classpathTlds);
                     }
@@ -655,7 +653,7 @@ public class FreemarkerServlet extends HttpServlet {
                 throw new InitParamValueException(name, value, e);
             }
         } // for initPNames
-        
+
         if (contentType.containsCharset && responseCharacterEncoding != ResponseCharacterEncoding.LEGACY)
{
             throw new InitParamValueException(INIT_PARAM_CONTENT_TYPE, contentType.httpHeaderValue,
                     new IllegalStateException("You can't specify the charset in the content
type, because the \"" +
@@ -689,7 +687,7 @@ public class FreemarkerServlet extends HttpServlet {
     protected TemplateLoader createTemplateLoader(String templatePath) throws IOException
{
         return InitParamParser.createTemplateLoader(templatePath, getClass(), getServletContext());
     }
-    
+
     @Override
     public void doGet(HttpServletRequest request, HttpServletResponse response)
         throws ServletException, IOException {
@@ -712,7 +710,7 @@ public class FreemarkerServlet extends HttpServlet {
         if (preprocessRequest(request, response)) {
             return;
         }
-        
+
         if (bufferSize != null && !response.isCommitted()) {
             try {
                 response.setBufferSize(bufferSize.intValue());
@@ -776,7 +774,7 @@ public class FreemarkerServlet extends HttpServlet {
                 }
             }
         }
-        
+
         if (responseCharacterEncoding != ResponseCharacterEncoding.LEGACY
                 && responseCharacterEncoding != ResponseCharacterEncoding.DO_NOT_SET)
{
             // Using the Servlet 2.4 way of setting character encoding.
@@ -865,7 +863,7 @@ public class FreemarkerServlet extends HttpServlet {
             // Converted with toString() for backward compatibility.
             return new ContentType(contentTypeAttr.toString());
         }
-        
+
         String outputFormatMimeType = template.getOutputFormat().getMimeType();
         if (outputFormatMimeType != null) {
             if (responseCharacterEncoding == ResponseCharacterEncoding.LEGACY) {
@@ -877,7 +875,7 @@ public class FreemarkerServlet extends HttpServlet {
                 return new ContentType(outputFormatMimeType, false);
             }
         }
-            
+
         return null;
     }
 
@@ -921,7 +919,7 @@ public class FreemarkerServlet extends HttpServlet {
                                         final HttpServletResponse response) throws TemplateModelException
{
         try {
             AllHttpScopesHashModel params = new AllHttpScopesHashModel(objectWrapper, servletContext,
request);
-    
+
             // Create hash model wrapper for servlet context (the application)
             final ServletContextHashModel servletContextModel;
             final TaglibFactory taglibFactory;
@@ -943,13 +941,14 @@ public class FreemarkerServlet extends HttpServlet {
                     taglibFactory = this.taglibFactory;
                 }
             }
-            
+
             params.putUnlistedModel(KEY_APPLICATION, servletContextModel);
             params.putUnlistedModel(KEY_APPLICATION_PRIVATE, servletContextModel);
             params.putUnlistedModel(KEY_JSP_TAGLIBS, taglibFactory);
             // Create hash model wrapper for session
             HttpSessionHashModel sessionModel;
             HttpSession session = request.getSession(false);
+
             if (session != null) {
                 sessionModel = (HttpSessionHashModel) session.getAttribute(ATTR_SESSION_MODEL);
                 if (sessionModel == null || sessionModel.isOrphaned(session)) {
@@ -960,6 +959,7 @@ public class FreemarkerServlet extends HttpServlet {
             } else {
                 sessionModel = new HttpSessionHashModel(this, request, response, objectWrapper);
             }
+
             params.putUnlistedModel(KEY_SESSION, sessionModel);
     
             // Create hash model wrapper for request
@@ -972,6 +972,7 @@ public class FreemarkerServlet extends HttpServlet {
                     ATTR_REQUEST_PARAMETERS_MODEL,
                     createRequestParametersHashModel(request));
             }
+
             params.putUnlistedModel(KEY_REQUEST, requestModel);
             params.putUnlistedModel(KEY_INCLUDE, new IncludePage(request, response));
             params.putUnlistedModel(KEY_REQUEST_PRIVATE, requestModel);
@@ -1027,7 +1028,7 @@ public class FreemarkerServlet extends HttpServlet {
         try {
             final String prop = _SecurityUtil.getSystemProperty(SYSTEM_PROPERTY_CLASSPATH_TLDS,
null);
             classpathTldsFromSysProp = (prop != null) ? InitParamParser.parseCommaSeparatedList(prop)
-                    : Collections.emptyList();
+                    : Collections.<String>emptyList();
         } catch (ParseException e) {
             throw new TemplateModelException(
                     "Failed to parse system property \"" + SYSTEM_PROPERTY_CLASSPATH_TLDS
+ "\"", e);
@@ -1050,7 +1051,7 @@ public class FreemarkerServlet extends HttpServlet {
      * 
      * @return A {@link List} of {@link String}-s; not {@code null}.
      */
-    protected List/*<MetaInfTldSource>*/ createDefaultClassPathTlds() {
+    protected List<String> createDefaultClassPathTlds() {
         return TaglibFactory.DEFAULT_CLASSPATH_TLDS;
     }
 
@@ -1063,8 +1064,9 @@ public class FreemarkerServlet extends HttpServlet {
      * 
      * @return A {@link List} of {@link MetaInfTldSource}-s; not {@code null}.
      */
-    protected List/*<MetaInfTldSource>*/ createDefaultMetaInfTldSources() {
-        return TaglibFactory.DEFAULT_META_INF_TLD_SOURCES;
+    @SuppressWarnings("unchecked")
+    protected List<MetaInfTldSource> createDefaultMetaInfTldSources() {
+        return (List<MetaInfTldSource>) TaglibFactory.DEFAULT_META_INF_TLD_SOURCES;
     }
 
     /**
@@ -1155,7 +1157,7 @@ public class FreemarkerServlet extends HttpServlet {
     protected void afterConfigurationBuilt(Configuration cfg) {
         // do nothing
     }
-    
+
     /**
      * Called from {@link #init()} to set the {@link ObjectWrapper} in the {@link ExtendableBuilder}
      * from the init-param value.
@@ -1254,7 +1256,7 @@ public class FreemarkerServlet extends HttpServlet {
         TemplateModel data)
         throws ServletException, IOException {
     }
-    
+
     /**
      * Returns the {@link org.apache.freemarker.core.Configuration} object used by this servlet.
      * Please don't forget that {@link org.apache.freemarker.core.Configuration} is not thread-safe
@@ -1288,7 +1290,7 @@ public class FreemarkerServlet extends HttpServlet {
             res.setHeader("Expires", EXPIRATION_DATE);
         }
     }
-    
+
     private int parseSize(String value) throws ParseException {
         int lastDigitIdx;
         for (lastDigitIdx = value.length() - 1; lastDigitIdx >= 0; lastDigitIdx--) {
@@ -1297,11 +1299,12 @@ public class FreemarkerServlet extends HttpServlet {
                 break;
             }
         }
-        
+
         final int n = Integer.parseInt(value.substring(0, lastDigitIdx + 1).trim());
-        
+
         final String unitStr = value.substring(lastDigitIdx + 1).trim().toUpperCase();
         final int unit;
+
         if (unitStr.length() == 0 || unitStr.equals("B")) {
             unit = 1;
         } else if (unitStr.equals("K") || unitStr.equals("KB") || unitStr.equals("KIB"))
{
@@ -1311,7 +1314,7 @@ public class FreemarkerServlet extends HttpServlet {
         } else {
             throw new ParseException("Unknown unit: " + unitStr, lastDigitIdx + 1);
         }
-        
+
         long size = (long) n * unit;
         if (size < 0) {
             throw new IllegalArgumentException("Buffer size can't be negative");
@@ -1322,8 +1325,9 @@ public class FreemarkerServlet extends HttpServlet {
         return (int) size;
     }
 
+    @SuppressWarnings("serial")
     private static class InitParamValueException extends Exception {
-        
+
         InitParamValueException(String initParamName, String initParamValue, Throwable casue)
{
             super("Failed to set the " + _StringUtil.jQuote(initParamName) + " servlet init-param
to "
                     + _StringUtil.jQuote(initParamValue) + "; see cause exception.",
@@ -1334,11 +1338,12 @@ public class FreemarkerServlet extends HttpServlet {
             super("Failed to set the " + _StringUtil.jQuote(initParamName) + " servlet init-param
to "
                     + _StringUtil.jQuote(initParamValue) + ": " + cause);
         }
-        
+
     }
-    
+
+    @SuppressWarnings("serial")
     private static class ConflictingInitParamsException extends Exception {
-        
+
         ConflictingInitParamsException(String recommendedName, String otherName) {
             super("Conflicting servlet init-params: "
                     + _StringUtil.jQuote(recommendedName) + " and " + _StringUtil.jQuote(otherName)
@@ -1346,18 +1351,19 @@ public class FreemarkerServlet extends HttpServlet {
         }
     }
 
+    @SuppressWarnings("serial")
     private static class MalformedWebXmlException extends Exception {
 
         MalformedWebXmlException(String message) {
             super(message);
         }
-        
+
     }
-    
+
     private static class ContentType {
         private final String httpHeaderValue;
         private final boolean containsCharset;
-        
+
         public ContentType(String httpHeaderValue) {
             this(httpHeaderValue, contentTypeContainsCharset(httpHeaderValue));
         }
@@ -1366,7 +1372,7 @@ public class FreemarkerServlet extends HttpServlet {
             this.httpHeaderValue = httpHeaderValue;
             this.containsCharset = containsCharset;
         }
-        
+
         private static boolean contentTypeContainsCharset(String contentType) {
             int charsetIdx = contentType.toLowerCase().indexOf("charset=");
             if (charsetIdx != -1) {
@@ -1383,7 +1389,7 @@ public class FreemarkerServlet extends HttpServlet {
             }
             return false;
         }
-        
+
         /**
          * Extracts the MIME type without the charset specifier or other such extras.
          */
@@ -1391,9 +1397,9 @@ public class FreemarkerServlet extends HttpServlet {
             int scIdx = httpHeaderValue.indexOf(';');
             return (scIdx == -1 ? httpHeaderValue : httpHeaderValue.substring(0, scIdx)).trim();
         }
-        
+
     }
-    
+
     private <T extends InitParamValueEnum> T initParamValueToEnum(String initParamValue,
T[] enumValues) {
         for (T enumValue : enumValues) {
             String enumInitParamValue = enumValue.getInitParamValue();
@@ -1403,7 +1409,7 @@ public class FreemarkerServlet extends HttpServlet {
                 return enumValue;
             }
         }
-        
+
         StringBuilder sb = new StringBuilder();
         sb.append(_StringUtil.jQuote(initParamValue));
         sb.append(" is not a one of the enumeration values: ");
@@ -1436,14 +1442,14 @@ public class FreemarkerServlet extends HttpServlet {
     private interface InitParamValueEnum {
         String getInitParamValue();
     }
-    
+
     private enum OverrideResponseContentType implements InitParamValueEnum {
         ALWAYS(INIT_PARAM_VALUE_ALWAYS),
         NEVER(INIT_PARAM_VALUE_NEVER),
         WHEN_TEMPLATE_HAS_MIME_TYPE(INIT_PARAM_VALUE_WHEN_TEMPLATE_HAS_MIME_TYPE);
 
         private final String initParamValue;
-        
+
         OverrideResponseContentType(String initParamValue) {
             this.initParamValue = initParamValue;
         }
@@ -1453,7 +1459,7 @@ public class FreemarkerServlet extends HttpServlet {
             return initParamValue;
         }
     }
-    
+
     private enum ResponseCharacterEncoding implements InitParamValueEnum {
         // [FM3] Get rid of LEGACY
         LEGACY(INIT_PARAM_VALUE_LEGACY),
@@ -1462,7 +1468,7 @@ public class FreemarkerServlet extends HttpServlet {
         FORCE_CHARSET(INIT_PARAM_VALUE_FORCE_PREFIX + "${charsetName}");
 
         private final String initParamValue;
-        
+
         ResponseCharacterEncoding(String initParamValue) {
             this.initParamValue = initParamValue;
         }
@@ -1489,5 +1495,4 @@ public class FreemarkerServlet extends HttpServlet {
         }
     }
 
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/28102af6/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/InitParamParser.java
----------------------------------------------------------------------
diff --git a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/InitParamParser.java
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/InitParamParser.java
index 747dc50..323e15f 100644
--- a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/InitParamParser.java
+++ b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/InitParamParser.java
@@ -125,8 +125,8 @@ final class InitParamParser {
         return "/" + path;
     }
 
-    static List/*<String>*/ parseCommaSeparatedList(String value) throws ParseException
{
-        List/*<String>*/ valuesList = new ArrayList();
+    static List<String> parseCommaSeparatedList(String value) throws ParseException
{
+        List<String> valuesList = new ArrayList<>();
         String[] values = _StringUtil.split(value, ',');
         for (int i = 0; i < values.length; i++) {
             final String s = values[i].trim();

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/28102af6/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
----------------------------------------------------------------------
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 cb45aa4..7a45001 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
@@ -2053,7 +2053,7 @@ public class TaglibFactory implements TemplateHashModel {
         /**
          * TLD locations to look for when finding available JSP tag libraries.
          */
-        private List<MetaInfTldSource> metaInfTldSources;
+        private List<? extends MetaInfTldSource> metaInfTldSources;
 
         /**
          * TLD classpath locations to look for when finding available JSP tag libraries.
@@ -2097,11 +2097,8 @@ public class TaglibFactory implements TemplateHashModel {
          * Get the list of places where to look for {@code META-INF/**}{@code /*.tld} files.
          * @return the list of places where to look for {@code META-INF/**}{@code /*.tld}
files
          */
-        public List<MetaInfTldSource> getMetaInfTldSources() {
-            if (metaInfTldSources == null) {
-                return Collections.emptyList();
-            }
-            return metaInfTldSources;
+        public List<? extends MetaInfTldSource> getMetaInfTldSources() {
+            return (metaInfTldSources != null) ? metaInfTldSources : Collections.<MetaInfTldSource>
emptyList();
         }
 
         /**
@@ -2120,7 +2117,7 @@ public class TaglibFactory implements TemplateHashModel {
          * 
          * @see #setClasspathTlds(List)
          */
-        public void setMetaInfTldSources(List<MetaInfTldSource> metaInfTldSources)
{
+        public void setMetaInfTldSources(List<? extends MetaInfTldSource> metaInfTldSources)
{
             _NullArgumentException.check("metaInfTldSources", metaInfTldSources);
             this.metaInfTldSources = Collections.unmodifiableList(new ArrayList<>(metaInfTldSources));
         }
@@ -2133,7 +2130,7 @@ public class TaglibFactory implements TemplateHashModel {
          *            {@link MetaInfTldSource} wins.
          * @return this builder
          */
-        public Builder metaInfTldSources(List<MetaInfTldSource> metaInfTldSources)
{
+        public Builder metaInfTldSources(List<? extends MetaInfTldSource> metaInfTldSources)
{
             setMetaInfTldSources(metaInfTldSources);
             return this;
         }
@@ -2145,10 +2142,7 @@ public class TaglibFactory implements TemplateHashModel {
          * {@link #setMetaInfTldSources(List)}, yet you want them to be discovered
          */
         public List<String> getClasspathTlds() {
-            if (classpathTlds == null) {
-                return Collections.emptyList();
-            }
-            return classpathTlds;
+            return (classpathTlds != null) ? classpathTlds : Collections.<String> emptyList();
         }
 
         /**


Mime
View raw message