Re: Looking for contributors as part of Apache incubation

Woonsan Ko <[email protected]> Thu, 04 Jun 2015 17:14:33 -0400
Newsgroups gmane.comp.web.freemarker.devel
Message-ID <[email protected]>
On 6/3/15 5:18 PM, Daniel Dekany wrote:
> The contentType matter... thanks for looking after these! So then,
> FreemarkerServlet surely should set the HttpServletResponse
> contentType when it's still null. OTOH there should be an option to
> only set it then (if it's not null), not always as it happens now. So
> then the "ContetType" init-param remains as is, and we add a new
> init-param, "OverrideResponseContentType" (better name?), whose
> default is true for backward compatibility, but this default can be
> changed to false by extending FreemarkerServlet. WDYT?

That sounds like a plan!

> 
> If the out-of-the-box default worth to be changed, then we can make
> the default of "OverrideResponseContentType" be dependent on
> cfg.incompatibleImprovements (IcI from now on). It's surely not a IcI
> 2.3.x thing though.

I think we're fine with overriding the default value in our custom
FreemarkerServlet.

> 
> [snip]
>>> Doesn't that just sets the locale in the RequestContext? That's a
>>> Spring-specific object. Because then overriding deduceLocale(...) is
>>> still the only option. If they were using FreemarkerSerlvet at all,
>>> that is...
>>
>> Spring Framework primarily store request specific locale into its own
>> RequestContext. However, it also falls back to
>> ServletRequest#getLocale() if not set in its framework level
>> (org.springframework.web.servlet.support.RequestContextUtils.getLocale(HttpServletRequest)).
>> ServletRequest#getLocale() returns the preferred locale that the client
>> will accept content in, based on the Accept-Language header, by default.
>> However, many other frameworks can wrap servlet request to override this
>> method. In our case, our HMVC framework (HST-2) supports URL prefix
>> based locale setting feature and wraps request to support seamless JSTL
>> tags integration for instance.
>> In portal/portlet world, it's very common/crucial to see request
>> wrappers for portlets where users are able to set locale preferences.
>> Wicket also has wrappers to support this kind of things.
>> In hierarchical aggregation frameworks (portal, HMVC, Wicket, etc), they
>> have to wrap request/response objects anyway, and if they want to invoke
>> controller and dispatch a view in a part of the page rendering, then
>> they need to control #getLocale() somehow from the page request
>> processing level, not from each part rendering level.
>>
>> So, if #deduceLocale() can somehow use either ServletRequest#getLocale()
>> or global setting more intelligently (not sure how we can make it easier
>> to config though), then it would be more ideal to me.
> 
> Then, I think, the default implementation of deduceLocale() should
> take the a new init-param into account, let's call it
> "LocaleFromRequest". The default of that should be false for backward
> compatibility. But if someone sets that setting to true, and the
> request locale isn't null, we use that instead of the Freemarker
> Configuration setting. And here again, you could override what the
> *default* is.

I like it!
Thank you so much for your considerations!

Cheers,

Woonsan

> 
> Just like with "OverrideResponseContentType", the default can depend
> on the IcI on the long run.
> 


-- 
[email protected]     www.onehippo.com
Boston - 745 Atlantic Ave, 8th Floor, Boston MA 02111
Amsterdam - Oosteinde 11, 1017 WT Amsterdam
US +1 877 414 4776 (toll free)
Europe +31(0)20 522 4466

------------------------------------------------------------------------------