[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.

2017-10-08 Thread ddekany
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: ddekany 
Authored: 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.

2017-10-08 Thread ddekany
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: ddekany 
Authored: 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