freemarker-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Woonsan Ko <woon...@apache.org>
Subject Re: Please test/review FreeMarker 2.3.28
Date Sat, 24 Mar 2018 13:44:17 GMT
On Sat, Mar 24, 2018 at 3:21 AM, Daniel Dekany <ddekany@apache.org> wrote:
> Saturday, March 24, 2018, 3:13:06 AM, Woonsan Ko wrote:
>
>> When I tested with freemarker-2.3.28-incubating-SNAPSHOT.jar, which I
>> built and install it to my local maven repo from the latest "2.3"
>> branch myself, in my applications, I haven't found any regressions.
>> My applications are rather simpler probably than others as they simply
>> render model objects passed from request attributes through
>> FreeMarkerServlet.
>> But when I tried the new features and bug fixes [1], I think I found
>> somethings (perhaps there could be my misunderstandings):
>>
>> 1. The template example in
>> https://freemarker.apache.org/builds/fm2.3.28/ref_specvar.html#ref_specvar_get_optional_template
>>
>>   <#assign optTemp = .get_optional_template('some.ftl')>
>>   <#if optTemp.exists>
>>
>>   But if the 'some.ftl' doesn't exist, optTemp.exists fails as it's
>> null. So I ended up changing it to this:
>>
>>   <#assign optTemp = .get_optional_template('some.ftl')>
>>   <#if optTemp?? && optTemp.exists>
>
> That's bizarre. It works for me. Also for the test suite... that
> passes there, right? (It can't even be explained by accidentally using
> 2.3.27, as there .get_optional_template is parsing (syntax) error.)

Perhaps my build might be wrong. I did the following locally to build
fresh and install it to my local maven repo. (Yesterday, I used my
forked/forked GitHub branch, which could have caused the issue.)

(move to a temp folder)
$ git clone https://git-wip-us.apache.org/repos/asf/incubator-freemarker.git
$ cd incubator-freemarker/
$ git checkout 2.3
(edit build.properties)
$ git log --oneline | head -n 2
edefaa2f Merge remote-tracking branch 'origin/2.3-gae' into 2.3
01294537 Cleaned up more lexer/parser logic ...
$ ant clean maven-install
(confirm the log installing the jar and pom files to my maven repo to
compare with deployed jar later)

When I tested with this today, ${.version} printed: "version:
2.3.28-nightly_20180324T130919Z-incubating".

Could this local build cause a problem? (I saw differences between
"2.3" and "2.3-gae". See below. So I probably should have built
"2.3-gae" branch?)

Anyway, in my testing with "2.3" build, I needed optTemp?? additionally.

>
>> 2. Square bracket syntax through ftl directive
>>
>> It reads, "This directive also determines if the template uses angle
>> bracket syntax (e.g. <#include 'foo.ftl'>) or square bracket syntax
>> (e.g. [#include 'foo.ftl']). Simply, the syntax used for this
>> directive will be the syntax used for the whole template, regardless
>> of the FreeMarker configuration settings." [2]
>>
>> I applied it to an included .ftl template like this:
>>
>> [#ftl output_format="HTML"]
>> [="Hello"]
>> ${"Hello"}
>>
>> It prints: [="Hello"] Hello,
>> not: Hello ${"Hello"}
>
> There are two independent settings here: tag syntax and interpolation
> syntax. It's mere coincidence that both has "square bracket" in their
> names. [#ftl] only sets the first. I will clarify that in the

I see. When I tried this now,

[#ftl output_format="HTML"]
[#assign a=[1,2,3]]
[#list a as i]${i}[#sep],[/#list]
[="Hello"]
${"Hello"}

I got: 1,2,3 [="Hello"] Hello
Thanks for clarification!

> documentation. Or, it's a warning sign that we should rather use
> {{exp}}, as that doesn't have "square brackets" in it.

Perhaps. ;-)
I recently had a chance to look around other templating libraries
using the mustache as I have seen people loving it.
I didn't like the usages there in directives. For example, {{#if
user}} {{user.name}} {{/if}}. It's hard for me complete the if, ending
with {{/if}}, which is too much. ;-)
But the interpolation part (e.g, {{user.name}}) seems okay to me.
So, yes, I'm fine with mustache expression for interpolation and it
might be less confusing in this specific case.

What do others think?

>
>> 3. split with an empty string
>>
>> It says, "Bug fixed: When string?split(separator) is called with "" as
>> the argument, the string will be split to characters now. Earlier it
>> has thrown an IllegalArgumentException (unless the r flag was
>> specified)."
>> But when I tried it, it throws an IllegalArgumentException:
>>
>> <#assign a="hello"?split("l")>
> ==>>
>> java.lang.IllegalArgumentException: The separator string has 0 length
>> at freemarker.template.utility.StringUtil.split(StringUtil.java:752)
>
> Huh? "l" isn't even 0 long! Or you meant to copy-paste `?split("")`
> there? And yet again, it works for me here. Though this at least can
> be that you are accidentally using 2.3.27 (try ${.version}).

It was a copy-paste error.
Still I got the error: "java.lang.IllegalArgumentException: The
separator string has 0 length at
freemarker.template.utility.StringUtil.split(StringUtil.java:752)"

Now I realize that "2.3" branch is different from "2.3-gae" branch:
- https://github.com/apache/incubator-freemarker/blob/2.3/src/main/java/freemarker/template/utility/StringUtil.java#L752
- https://github.com/apache/incubator-freemarker/blob/2.3-gae/src/main/java/freemarker/template/utility/StringUtil.java#L753

Perhaps, should I have built/test from "2.3-gae"?

Thanks in advance!

Regards,

Woonsan

>
>> Please let me know if I miss or misinterpret somethings.
>>
>> Cheers,
>>
>> Woonsan
>>
>> [1] https://freemarker.apache.org/builds/fm2.3.28/versions_2_3_28.html
>> [2]
>> https://freemarker.apache.org/builds/fm2.3.28/ref_directive_ftl.html
>>
>> On Fri, Mar 23, 2018 at 4:08 AM, Daniel Dekany <ddekany@apache.org> wrote:
>>> Friday, March 23, 2018, 3:33:39 AM, Woonsan Ko wrote:
>>>
>>>> Great to see the real release without "incubating" mark soon!
>>>
>>> In theory it was decided 2 days ago, but I saw nothing about the board
>>> meeting so far. I guess they are overburdened with the May elections
>>> and all that.
>>>
>>>> Also ! I've just read the Change log and everything is awesome!
>>>> I'll just try out the snapshot binary tomorrow in our applications to
>>>> see if there's any regression just in case.
>>>
>>> Great, thanks!
>>>
>>>> Cheers,
>>>>
>>>> Woonsan
>>>>
>>>>
>>>> On Tue, Mar 20, 2018 at 6:39 PM, Daniel Dekany <ddekany@apache.org>
wrote:
>>>>> Before we start a VOTE on releasing 2.3.28, it would be good if more
>>>>> of you can test it, or otherwise review the upcoming 2.3.28! The main
>>>>> point in this phase is to catch technical issues.
>>>>>
>>>>> If you intend to help, but won't have time for it in the coming few
>>>>> days, please indicate that, so that I know that I should wait!
>>>>>
>>>>> Change log (so far, but I don't plan to add more):
>>>>> https://freemarker.apache.org/builds/fm2.3.28/versions_2_3_28.html
>>>>>
>>>>> Binary release artifacts:
>>>>> https://dist.apache.org/repos/dist/dev/incubator/freemarker/engine/2.3.28-incubating-SNAPSHOT/binaries/
>>>>>
>>>>> Source release artifacts:
>>>>> https://dist.apache.org/repos/dist/dev/incubator/freemarker/engine/2.3.28-incubating-SNAPSHOT/source/
>>>>>
>>>>> The Maven artifacts are available from the Apache snaphsot repository:
>>>>>
>>>>>   <repository>
>>>>>     <id>apache-snapshot-repository</id>
>>>>>     <url>https://repository.apache.org/content/repositories/snapshots/</url>
>>>>>     <releases><enabled>false</enabled></releases>
>>>>>     <snapshots><enabled>true</enabled></snapshots>
>>>>>   </repository>
>>>>>
>>>>> under the coordinates:
>>>>>
>>>>>   <groupId>org.freemarker</groupId>
>>>>>   <artifactId>freemarker</artifactId>
>>>>>   <version>2.3.28-incubating-SNAPSHOT</version>
>>>>>
>>>>> and for the Google App Engine compatible (GAE) version:
>>>>>
>>>>>   <groupId>org.freemarker</groupId>
>>>>>   <artifactId>freemarker-gae</artifactId>
>>>>>   <version>2.3.28-incubating-SNAPSHOT</version>
>>>>>
>>>>> The ASF Board will decide tomorrow (21th) if FreeMarker can graduate.
>>>>> If everything goes well, this release won't have "incubating" in its
>>>>> version number. This will be the first such release since mid 2015
>>>>> (2.3.23).
>>>>>
>>>>> --
>>>>> Thanks,
>>>>>  Daniel Dekany
>>>>>
>>>>
>>>
>>> --
>>> Thanks,
>>>  Daniel Dekany
>>>
>>
>
> --
> Thanks,
>  Daniel Dekany
>

Mime
View raw message