FREEMARKER-55: using namespace variable for status variable.

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

Branch: refs/heads/3
Commit: 19a3277c5809e30243a921a2ee42d3a40ecf9ebc
Parents: 6709117
Author: Woonsan Ko <[email protected]>
Authored: Mon Aug 28 23:11:12 2017 -0400
Committer: Woonsan Ko <[email protected]>
Committed: Mon Aug 28 23:11:12 2017 -0400

----------------------------------------------------------------------
 .../apache/freemarker/spring/model/BindDirective.java  | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/19a3277c/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/BindDirective.java
----------------------------------------------------------------------
diff --git 
a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/BindDirective.java
 
b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/BindDirective.java
index 967344d..9ca7c6a 100644
--- 
a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/BindDirective.java
+++ 
b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/BindDirective.java
@@ -91,10 +91,15 @@ public class BindDirective implements 
TemplateDirectiveModel {
             resolvedPath = resolveNestedPath(resolvedPath);
         }
 
-        BindStatus status = requestContext.getBindStatus(resolvedPath);
-        env.setLocalVariable(STATUS_VARIABLE_NAME, new BeanModel(status, 
(DefaultObjectWrapper) objectWrapper));
-
-        callPlace.executeNestedContent(null, out, env);
+        final TemplateModel oldStatusModel = 
env.getVariable(STATUS_VARIABLE_NAME);
+
+        try {
+            BindStatus status = requestContext.getBindStatus(resolvedPath);
+            env.setVariable(STATUS_VARIABLE_NAME, new BeanModel(status, 
(DefaultObjectWrapper) objectWrapper));
+            callPlace.executeNestedContent(null, out, env);
+        } finally {
+            env.setVariable(STATUS_VARIABLE_NAME, oldStatusModel);
+        }
     }
 
     @Override

Reply via email to