Discussion:
unknown
1970-01-01 00:00:00 UTC
Permalink
Yeah, especially nowadays, good IDE support is critical for success. I
have no idea how and when will I have time for that, however... The
plans for the summer effort are bold enough as they are, and they also
must be done, as those are the things everything else can build on.
Plus I have no experience with Eclipse plugin development. So for this
to happen, most probably someone else has to do it. I remember Angelo
Zerr has started to develop a DLTK-based plugin back in 2010, and he
needed some changes in FreeMarkerf for that to work. But then that
effort has died because it was developed against FreeMarker 3, which
was pretty much cancelled. Man, that was shame. Well, if I will see
that this time it will make it, I will contact him, although it was
like 3 years ago, so that's no much hope.
- ability to list the ftl-s that make use of a specific function / macro
- ability to refactor function / macro's name, parameter name
- detect function / macro usages error after changing the function / macro definition
These are tricky, as FreeMarker is not a static language. Of course
you can write a tool that helps in refactoring, but it will never be
100% reliable. Same with detecting errors. (Actually, I'm thinking of
language feature that can make these more reliable, by allowing one to
mark a template "strict", which means enforcing certain good practices
and banning making macros conditionally and so on. But I'm not yet
sure how that will work out.)
- can operate based on the configuration passed, like showing the
imported libraries in the template editor, or optionally show the settings
- can link current active template to another, and then it see what
variables are available (those assigned from the container template)
It's also a RFE to be able to query what data-model variables a
template accesses. It's again impossible to do reliably because of the
dynamic nature of the language, but of course if it's only to give you
hints while editing, it could work reasonably well.
- link a model to a concrete class to help support with
autocompletion on methods, data type validations, etc
And here the obstacle is that ObjectWrapper-s are pluggable and
configurable. But assuming a certain wrapper, it could be done to a
degree. But then, somewhere you had to declare what data-model
variables are expected with what type. I think in bigger projects you
want to document this anyway, and then if there was a standard way of
making documentation comments in templates, that would be a good place
to do this.

Funny that there's infinitely many things to do even in a poor little
MVC template engine. Then pair that with near 0 free time and having a
life... :)
--
Best regards,
Daniel Dekany
- etc
You aren't supposed to close the StringReader inside the
TemplateLoader.
Yeah, i returned a closed stringReader. What an omg-mistake !
Now i have changed it to close the 'wrapped' reader instead.
Thanks so much for the guides.
[snip]
I tried closing the reader and catching and logging the exception
instead of just using IOTools.closeQuietly(),
and notices that there's no exception happening, and still gave me the empty page.
Commenting the close reader section gave me back the output.
Are you returning a StringReader before calling
IOTools.closeQuietly()on *another* reader? Because then this
phenomenon it doesn't make any sense.
[snip]
Aha, maybe that's the reason it gave me the empty output.
According to
http://docs.oracle.com/javase/7/docs/api/java/io/StringReader.html#close()
"Closes the stream and releases any system resources associated with it.
Once the stream has been closed, further read(), ready(), mark(),
or reset() invocations will throw an IOException. Closing a
previously closed stream has no effect."
Maybe the caller of the closed-reader got an IOException somewhere and hence, the empty output ?
You aren't supposed to close the StringReader inside the
TemplateLoader. You should close the *other* reader, the one that you
don't return. Also, if FreeMarker gives empty output when an
IOException occurs, that's a bug. But I hope it doesn't do that, it's
rather the framework that calls it that suppresses that exception
instead of giving a HTTP 500.
[snip]
I actually have switched back to the normal FileTemplateLoader
- I actually make use of functions for URLs generation.
<#noescape>${url.home("Return to main page")}</#noescape>
I prefer using ?html as needed
It's a strange coincidence that you say this just after 2 weeks or so
after I have proposed #p. It addresses exactly this annoyance, but I
don't remember anybody but myself ever brought this up, till now.
Anyway, it will be in 2.3.20 most probably.
- Because i am using JBoss Tools for the freemarker editor (which
does help me in parsing error detection, highlighting, etc), it
errors the line of every noescape because it's not inside an escape
directive, which gives me the tension i dont need.
This will also be solved by #p, since then you won't need #noescpe
anymore. Indeed, I might as well deprecate #noescape then.
And thank you for the wrapReader sharing, i will add it to my
library in case i find a use of it in the future.
Regards from Jakarta,
Albert Kam
--
Best regards,
Daniel Dekany
Loading...