You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@freemarker.apache.org by dd...@apache.org on 2017/07/06 08:18:59 UTC

[08/17] incubator-freemarker git commit: FREEMARKER-55: cleanups (while loop and input streams)

FREEMARKER-55: cleanups (while loop and input streams)


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

Branch: refs/heads/3
Commit: 2a8d76179ba783de5d81e24fa2ec1ec7ad001e39
Parents: 196158b
Author: Woonsan Ko <wo...@apache.org>
Authored: Wed Jul 5 18:45:50 2017 -0400
Committer: Woonsan Ko <wo...@apache.org>
Committed: Wed Jul 5 18:45:50 2017 -0400

----------------------------------------------------------------------
 .../freemarker/servlet/jsp/TaglibFactory.java   | 57 +++++++++-----------
 1 file changed, 26 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2a8d7617/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 e1df54f..556c632 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
@@ -353,13 +353,9 @@ public class TaglibFactory implements TemplateHashModel {
 
     private TldLocation getExplicitlyMappedTldLocation(final String uri) throws SAXException, IOException,
             TaglibGettingException {
-        while (true) {
-            final TldLocation tldLocation = (TldLocation) tldLocations.get(uri);
-
-            if (tldLocation != null) {
-                return tldLocation;
-            }
+        TldLocation tldLocation;
 
+        for (tldLocation = tldLocations.get(uri); tldLocation == null; tldLocation = tldLocations.get(uri)) {
             switch (nextTldLocationLookupPhase) {
             case 0:
                 // Not in JSP spec.
@@ -385,6 +381,8 @@ public class TaglibFactory implements TemplateHashModel {
 
             nextTldLocationLookupPhase++;
         }
+
+        return tldLocation;
     }
 
     private void addTldLocationsFromWebXml() throws SAXException, IOException {
@@ -595,11 +593,8 @@ public class TaglibFactory implements TemplateHashModel {
                 ZipInputStream zipIn = new ZipInputStream(in);
 
                 try {
-                    while (true) {
-                        ZipEntry curEntry = zipIn.getNextEntry();
-                        if (curEntry == null) break;
-
-                        String curEntryPath = normalizeJarEntryPath(curEntry.getName(), false);
+                    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)); 
@@ -685,16 +680,16 @@ public class TaglibFactory implements TemplateHashModel {
             }
 
             final InputStream in = new URL(rawJarContentUrlEF).openStream();
+            if (in == null) {
+                throw new IOException("TLD resource in a jar resource not found: " + rawJarContentUrlEF);
+            }
 
             try {
                 ZipInputStream zipIn = new ZipInputStream(in);
 
                 try {
-                    while (true) {
-                        ZipEntry curEntry = zipIn.getNextEntry();
-                        if (curEntry == null) break;
-        
-                        String curEntryPath = normalizeJarEntryPath(curEntry.getName(), false);
+                    for (ZipEntry entry = zipIn.getNextEntry(); entry != null; entry = zipIn.getNextEntry()) {
+                        String curEntryPath = normalizeJarEntryPath(entry.getName(), false);
                         if (curEntryPath.startsWith(baseEntryPath) && curEntryPath.endsWith(".tld")) {
                             final String curEntryBaseRelativePath = curEntryPath.substring(baseEntryPath.length());
                             final URL tldUrl = createJarEntryUrl(jarBaseEntryUrl, curEntryBaseRelativePath);
@@ -749,12 +744,15 @@ public class TaglibFactory implements TemplateHashModel {
      * Adds the TLD location mapping from the TLD itself.
      */
     private void addTldLocationFromTld(TldLocation tldLocation) throws IOException, SAXException {
-        InputStream in = tldLocation.getInputStream();
+        InputStream in = null;
 
         try {
+            in = tldLocation.getInputStream();
             addTldLocationFromTld(in, tldLocation);
         } finally {
-            in.close();
+            if (in != null) {
+                in.close();
+            }
         }
     }
 
@@ -819,12 +817,8 @@ public class TaglibFactory implements TemplateHashModel {
 
     private static void collectMetaInfUrlsFromClassLoader(ClassLoader cl, Set<URLWithExternalForm> metainfDirUrls)
             throws IOException {
-        Enumeration<URL> urls = cl.getResources(META_INF_REL_PATH);
-
-        if (urls != null) {
-            while (urls.hasMoreElements()) {
-                metainfDirUrls.add(new URLWithExternalForm((URL) urls.nextElement()));
-            }
+        for (Enumeration<URL> urls = cl.getResources(META_INF_REL_PATH); urls.hasMoreElements(); ) {
+            metainfDirUrls.add(new URLWithExternalForm(urls.nextElement()));
         }
     }
 
@@ -1102,15 +1096,12 @@ public class TaglibFactory implements TemplateHashModel {
     }
 
     private static boolean isDescendantOfOrSameAs(ClassLoader descendant, ClassLoader parent) {
-        while (true) {
-            if (descendant == null) {
-                return false;
-            }
+        for (; descendant != null; descendant = descendant.getParent()) {
             if (descendant == parent) {
                 return true;
             }
-            descendant = descendant.getParent();
         }
+        return false;
     }
 
     /**
@@ -1195,6 +1186,7 @@ public class TaglibFactory implements TemplateHashModel {
     }
 
     private interface InputStreamFactory {
+
         InputStream getInputStream();
 
     }
@@ -1487,11 +1479,14 @@ public class TaglibFactory implements TemplateHashModel {
                 ServletContext ctx, TldLocation tldLocation, ObjectWrapper objectWrapper) throws IOException, SAXException {
             final TldParserForTaglibBuilding tldParser = new TldParserForTaglibBuilding(objectWrapper);
 
-            InputStream in = tldLocation.getInputStream();
+            InputStream in = null;
             try {
+                in = tldLocation.getInputStream();
                 parseXml(in, tldLocation.getXmlSystemId(), tldParser);
             } finally {
-                in.close();
+                if (in != null) {
+                    in.close();
+                }
             }
 
             EventForwarding eventForwarding = EventForwarding.getInstance(ctx);