Added DirectiveCallPlace.getTemplate(); we aren't concerned about its BC impact anymore, as FM3 breaks BC anyway.
Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/846ef943 Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/846ef943 Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/846ef943 Branch: refs/heads/2.3 Commit: 846ef9434827229b3570a32ecd8067f73da0686a Parents: 6040177 Author: ddekany <ddek...@apache.org> Authored: Fri Mar 9 20:32:49 2018 +0100 Committer: ddekany <ddek...@apache.org> Committed: Fri Mar 9 21:26:49 2018 +0100 ---------------------------------------------------------------------- .../java/freemarker/core/DirectiveCallPlace.java | 16 +++++++++------- src/main/java/freemarker/core/TemplateObject.java | 4 ---- src/manual/en_US/book.xml | 5 +++++ .../freemarker/core/DirectiveCallPlaceTest.java | 6 +----- 4 files changed, 15 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/846ef943/src/main/java/freemarker/core/DirectiveCallPlace.java ---------------------------------------------------------------------- diff --git a/src/main/java/freemarker/core/DirectiveCallPlace.java b/src/main/java/freemarker/core/DirectiveCallPlace.java index f9c1dfc..ad6400f 100644 --- a/src/main/java/freemarker/core/DirectiveCallPlace.java +++ b/src/main/java/freemarker/core/DirectiveCallPlace.java @@ -36,12 +36,6 @@ import freemarker.template.utility.ObjectFactory; * directive call is first executed, via {@link #getOrCreateCustomData(Object, ObjectFactory)}. * * <p> - * Currently this method doesn't give you access to the {@link Template} object, because it's probable that future - * versions of FreeMarker will be able to use the same parsed representation of a "file" for multiple {@link Template} - * objects. Then the call place will be bound to the parsed representation, not to the {@link Template} objects that are - * based on it. - * - * <p> * <b>Don't implement this interface yourself</b>, as new methods can be added to it any time! It's only meant to be * implemented by the FreeMarker core. * @@ -54,7 +48,15 @@ import freemarker.template.utility.ObjectFactory; * @since 2.3.22 */ public interface DirectiveCallPlace { - + + /** + * The template that contains this call; {@code null} if the call is not from a template (but directly from + * user Java code, for example). + * + * @since 2.3.28 + */ + Template getTemplate(); + /** * The 1-based column number of the first character of the directive call in the template source code, or -1 if it's * not known. http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/846ef943/src/main/java/freemarker/core/TemplateObject.java ---------------------------------------------------------------------- diff --git a/src/main/java/freemarker/core/TemplateObject.java b/src/main/java/freemarker/core/TemplateObject.java index 18355d9..74afb1f 100644 --- a/src/main/java/freemarker/core/TemplateObject.java +++ b/src/main/java/freemarker/core/TemplateObject.java @@ -165,10 +165,6 @@ public abstract class TemplateObject { return true; } - /** - * @deprecated This method will be removed in FreeMarker 2.4 because of architectural changes! - */ - @Deprecated public Template getTemplate() { return template; } http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/846ef943/src/manual/en_US/book.xml ---------------------------------------------------------------------- diff --git a/src/manual/en_US/book.xml b/src/manual/en_US/book.xml index dab2c23..2346be1 100644 --- a/src/manual/en_US/book.xml +++ b/src/manual/en_US/book.xml @@ -27304,6 +27304,11 @@ TemplateModel x = env.getVariable("x"); // get variable x</programlisting> </listitem> <listitem> + <para><literal>DirectiveCallPlace</literal> now has a + <literal>Template getTemplate()</literal> method.</para> + </listitem> + + <listitem> <para>Fixes in exception handling when calling JSP tags:</para> <itemizedlist> http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/846ef943/src/test/java/freemarker/core/DirectiveCallPlaceTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/freemarker/core/DirectiveCallPlaceTest.java b/src/test/java/freemarker/core/DirectiveCallPlaceTest.java index 2617afc..dcbe59b 100644 --- a/src/test/java/freemarker/core/DirectiveCallPlaceTest.java +++ b/src/test/java/freemarker/core/DirectiveCallPlaceTest.java @@ -198,7 +198,7 @@ public class DirectiveCallPlaceTest extends TemplateTest { Writer out = env.getOut(); DirectiveCallPlace callPlace = env.getCurrentDirectiveCallPlace(); out.write("["); - out.write(getTemplateSourceName(callPlace)); + out.write(callPlace.getTemplate().getSourceName()); out.write(":"); out.write(Integer.toString(callPlace.getBeginLine())); out.write(":"); @@ -213,10 +213,6 @@ public class DirectiveCallPlaceTest extends TemplateTest { } } - private String getTemplateSourceName(DirectiveCallPlace callPlace) { - return ((UnifiedCall) callPlace).getTemplate().getSourceName(); - } - } private static class ArgPrinterDirective implements TemplateDirectiveModel {