Hi Francesco, ok - if it's considered useful, I can have a closer look at it. I've opened a corresponding JIRA issue (https://issues.apache.org/jira/browse/SYNCOPE-487). Possibly I have time for this this week, but I cannot promise.
I don't think adding the Velocity tools to the context passed to the generation is possible without modifying the NotificationManager, as I do not see a way to affect the context only by configuring the Velocity engine (which seems consistent with the information in the link [3] you posted). If I can provide a suggested implementation, should this be against 1_1_X or trunk? Should I provide a patch file first? Cheers, Guido > Gesendet: Dienstag, 11. März 2014 um 08:59 Uhr > Von: "Francesco Chicchiriccò" <[email protected]> > An: [email protected] > Betreff: Re: Escaping in Velocity templates for notifications > > On 11/03/2014 08:36, Francesco Chicchiriccò wrote: > > On 10/03/2014 15:55, Guido Wimmel wrote: > >> Hi, > >> > >> we have the requirement that the username in a notification mail must > >> be URL-encoded (as part of a link inside the mail). > >> > >> Is there a way to do this in Syncope currently? > >> As far as I understand the code generating the mails > >> (NotificationManager), probably not? > >> > >> If not, a way to achieve this could be to add the Velocity EscapeTool > >> [1] to the Velocity context before executing the template. This could > >> be generalized by making NotificationManager extensible such that the > >> creation of the Velocity context can be modified, and possibly > >> providing an implementation that adds the Velocity toolbox, maybe in > >> a similar way as in Spring MVC [2]. > >> > >> What do you think? > > > > Hi Guido, > > +1, adding such feature seems noticeable. > > > > Only, I was wondering whether you can add the EscapeTool to the > > Velocity context just via Spring configuration: as you can see, in > > fact, the NotificationManager autowires the VelocityEngine from the > > following Spring bean (defined in workflowContext.xml): > > > > <bean id="velocityEngine" > > class="org.springframework.ui.velocity.VelocityEngineFactoryBean"> > > <property name="velocityProperties"> > > <value> > > resource.loader=class > > class.resource.loader.class=org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader > > > > > > </value> > > </property> > > </bean> > > > > I am not sure of the way to do this, but it seems logical to me that > > [1] (which seems to be provided by Maven dependency > > velocity-tools::velocity-tools-generic::1.4) can be injected into the > > velocityEngine bean above without affecting the actual > > NotificationManager Java code: am I wrong? > > Update: I've found that the latest stable version of Velocity Tools > seems to be > > <dependency> > <groupId>org.apache.velocity</groupId> > <artifactId>velocity-tools</artifactId> > <version>2.0</version> > </dependency> > > Moreover, the approach shown in [3] (more or less the one that I suggest > above) seems to be problematic: could you please check? > > Regards. > > >> [1] http://velocity.apache.org/tools/devel/generic/EscapeTool.html > >> [2] > >> http://docs.spring.io/spring/docs/3.2.8.RELEASE/javadoc-api/org/springframework/web/servlet/view/velocity/VelocityViewResolver.html > [3] > http://stackoverflow.com/questions/14237862/how-get-velocityengine-with-velocity-tools-in-spring-3 > > -- > Francesco Chicchiriccò > > Tirasa - Open Source Excellence > http://www.tirasa.net/ > > Involved at The Apache Software Foundation: > member, Syncope PMC chair, Cocoon PMC, Olingo PPMC > http://people.apache.org/~ilgrosso/ > >
