[4/5] incubator-freemarker git commit: Added workaround against "ZipException: ZipFile closed" when loading properties. Related to https://github.com/apache/incubator-freemarker/pull/37.
Added workaround against "ZipException: ZipFile closed" when loading properties. Related to https://github.com/apache/incubator-freemarker/pull/37. Also, fixed bug where we didn't try to find TLD resources with the thread context class loader. Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/15b97afa Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/15b97afa Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/15b97afa Branch: refs/heads/2.3 Commit: 15b97afa5026f6a53101f582840c11cc4d07e365 Parents: bd7498e Author: ddekanyAuthored: Sun Oct 8 13:52:12 2017 +0200 Committer: ddekany Committed: Sun Oct 8 13:52:12 2017 +0200 -- .../freemarker/ext/beans/UnsafeMethods.java | 15 +--- .../java/freemarker/ext/jsp/TaglibFactory.java | 9 +- .../java/freemarker/template/Configuration.java | 16 +--- .../freemarker/template/utility/ClassUtil.java | 94 src/manual/en_US/book.xml | 18 +++- 5 files changed, 104 insertions(+), 48 deletions(-) -- http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/15b97afa/src/main/java/freemarker/ext/beans/UnsafeMethods.java -- diff --git a/src/main/java/freemarker/ext/beans/UnsafeMethods.java b/src/main/java/freemarker/ext/beans/UnsafeMethods.java index f590085..c7b5f46 100644 --- a/src/main/java/freemarker/ext/beans/UnsafeMethods.java +++ b/src/main/java/freemarker/ext/beans/UnsafeMethods.java @@ -19,7 +19,6 @@ package freemarker.ext.beans; -import java.io.InputStream; import java.lang.reflect.Method; import java.util.HashMap; import java.util.HashSet; @@ -43,21 +42,13 @@ class UnsafeMethods { } private static final Set createUnsafeMethodsSet() { -Properties props = new Properties(); -String methodSpec = null; try { -InputStream in = ClassUtil.getReasourceAsStream(BeansWrapper.class, UNSAFE_METHODS_PROPERTIES); -try { -props.load(in); -} finally { -in.close(); -} +Properties props = ClassUtil.loadProperties(BeansWrapper.class, UNSAFE_METHODS_PROPERTIES); Set set = new HashSet(props.size() * 4 / 3, 1f); Map primClasses = createPrimitiveClassesMap(); for (Iterator iterator = props.keySet().iterator(); iterator.hasNext(); ) { -methodSpec = (String) iterator.next(); try { -set.add(parseMethodSpec(methodSpec, primClasses)); +set.add(parseMethodSpec((String) iterator.next(), primClasses)); } catch (ClassNotFoundException e) { if (ClassIntrospector.DEVELOPMENT_MODE) { throw e; @@ -70,7 +61,7 @@ class UnsafeMethods { } return set; } catch (Exception e) { -throw new RuntimeException("Could not load unsafe method " + methodSpec + " " + e.getClass().getName() + " " + e.getMessage()); +throw new RuntimeException("Could not load unsafe method set", e); } } http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/15b97afa/src/main/java/freemarker/ext/jsp/TaglibFactory.java -- diff --git a/src/main/java/freemarker/ext/jsp/TaglibFactory.java b/src/main/java/freemarker/ext/jsp/TaglibFactory.java index 0dc07b1..de4bcf3 100644 --- a/src/main/java/freemarker/ext/jsp/TaglibFactory.java +++ b/src/main/java/freemarker/ext/jsp/TaglibFactory.java @@ -1257,16 +1257,19 @@ public class TaglibFactory implements TemplateHashModel { public InputStream getInputStream() throws IOException { ClassLoader tccl = tryGetThreadContextClassLoader(); if (tccl != null) { -return ClassUtil.getReasourceAsStream(getClass(), resourcePath); +InputStream r = ClassUtil.getReasourceAsStream(tccl, resourcePath, true); +if (r != null) { +return r; +} } -return ClassUtil.getReasourceAsStream(getClass(), resourcePath); +return ClassUtil.getReasourceAsStream(getClass(), resourcePath, false); } public String getXmlSystemId() throws IOException { ClassLoader tccl = tryGetThreadContextClassLoader(); if (tccl != null) { -final URL url = getClass().getResource(resourcePath); +final URL url = tccl.getResource(resourcePath); if (url != null) {
incubator-freemarker git commit: Added workaround against "ZipException: ZipFile closed" when loading properties. Related to https://github.com/apache/incubator-freemarker/pull/37.
Repository: incubator-freemarker Updated Branches: refs/heads/2.3-gae bd7498e8d -> 15b97afa5 Added workaround against "ZipException: ZipFile closed" when loading properties. Related to https://github.com/apache/incubator-freemarker/pull/37. Also, fixed bug where we didn't try to find TLD resources with the thread context class loader. Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/15b97afa Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/15b97afa Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/15b97afa Branch: refs/heads/2.3-gae Commit: 15b97afa5026f6a53101f582840c11cc4d07e365 Parents: bd7498e Author: ddekanyAuthored: Sun Oct 8 13:52:12 2017 +0200 Committer: ddekany Committed: Sun Oct 8 13:52:12 2017 +0200 -- .../freemarker/ext/beans/UnsafeMethods.java | 15 +--- .../java/freemarker/ext/jsp/TaglibFactory.java | 9 +- .../java/freemarker/template/Configuration.java | 16 +--- .../freemarker/template/utility/ClassUtil.java | 94 src/manual/en_US/book.xml | 18 +++- 5 files changed, 104 insertions(+), 48 deletions(-) -- http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/15b97afa/src/main/java/freemarker/ext/beans/UnsafeMethods.java -- diff --git a/src/main/java/freemarker/ext/beans/UnsafeMethods.java b/src/main/java/freemarker/ext/beans/UnsafeMethods.java index f590085..c7b5f46 100644 --- a/src/main/java/freemarker/ext/beans/UnsafeMethods.java +++ b/src/main/java/freemarker/ext/beans/UnsafeMethods.java @@ -19,7 +19,6 @@ package freemarker.ext.beans; -import java.io.InputStream; import java.lang.reflect.Method; import java.util.HashMap; import java.util.HashSet; @@ -43,21 +42,13 @@ class UnsafeMethods { } private static final Set createUnsafeMethodsSet() { -Properties props = new Properties(); -String methodSpec = null; try { -InputStream in = ClassUtil.getReasourceAsStream(BeansWrapper.class, UNSAFE_METHODS_PROPERTIES); -try { -props.load(in); -} finally { -in.close(); -} +Properties props = ClassUtil.loadProperties(BeansWrapper.class, UNSAFE_METHODS_PROPERTIES); Set set = new HashSet(props.size() * 4 / 3, 1f); Map primClasses = createPrimitiveClassesMap(); for (Iterator iterator = props.keySet().iterator(); iterator.hasNext(); ) { -methodSpec = (String) iterator.next(); try { -set.add(parseMethodSpec(methodSpec, primClasses)); +set.add(parseMethodSpec((String) iterator.next(), primClasses)); } catch (ClassNotFoundException e) { if (ClassIntrospector.DEVELOPMENT_MODE) { throw e; @@ -70,7 +61,7 @@ class UnsafeMethods { } return set; } catch (Exception e) { -throw new RuntimeException("Could not load unsafe method " + methodSpec + " " + e.getClass().getName() + " " + e.getMessage()); +throw new RuntimeException("Could not load unsafe method set", e); } } http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/15b97afa/src/main/java/freemarker/ext/jsp/TaglibFactory.java -- diff --git a/src/main/java/freemarker/ext/jsp/TaglibFactory.java b/src/main/java/freemarker/ext/jsp/TaglibFactory.java index 0dc07b1..de4bcf3 100644 --- a/src/main/java/freemarker/ext/jsp/TaglibFactory.java +++ b/src/main/java/freemarker/ext/jsp/TaglibFactory.java @@ -1257,16 +1257,19 @@ public class TaglibFactory implements TemplateHashModel { public InputStream getInputStream() throws IOException { ClassLoader tccl = tryGetThreadContextClassLoader(); if (tccl != null) { -return ClassUtil.getReasourceAsStream(getClass(), resourcePath); +InputStream r = ClassUtil.getReasourceAsStream(tccl, resourcePath, true); +if (r != null) { +return r; +} } -return ClassUtil.getReasourceAsStream(getClass(), resourcePath); +return ClassUtil.getReasourceAsStream(getClass(), resourcePath, false); } public String getXmlSystemId() throws IOException { ClassLoader tccl = tryGetThreadContextClassLoader(); if (tccl != null) { -final URL url = getClass().getResource(resourcePath); +final