I was noticing that I hooked up that service using Spring, rather than
in AppModule, but it shouldn't matter much.
private void init() {
_logger.debug("init() starting");
if (_configuration == null) {
_configuration = new Configuration();
String directory = null;
directory = Messages
.getString("SurveyActivityEmailRendererImpl.templateDirectory");
_configuration.setClassForTemplateLoading(getClass(),
directory);
if (_logger.isDebugEnabled())
_logger.debug("init(): set template directory
to " + directory);
} else {
_logger.debug("init(): using existing Configuration");
}
_configuration.setObjectWrapper(new DefaultObjectWrapper());
try {
String file = Messages
.getString("SurveyActivityEmailRendererImpl.templateHtml");
_template = _configuration.getTemplate(file);
if (_logger.isDebugEnabled())
_logger.debug("init(): loaded template
from " + file);
} catch (IOException e) {
throw new RuntimeException("init(): error on template
load", e);
}
initialized = true;
_logger.debug("init() completed initialization");
}
My messages.properties file contained in the same directory as the
service contains:
SurveyActivityEmailRendererImpl.templateDirectory=/
SurveyActivityEmailRendererImpl.templateHtml=nightly-notification.ftl
The template is in the root of the jar.
The actual generation uses:
try {
Writer out = new StringWriter();
_template.process(data, out);
out.flush();
htmlEmail = ((StringWriter) out).toString();
} catch (IOException e) {
throw new RuntimeException(e);
} catch (TemplateException e) {
throw new RuntimeException(e);
}
return htmlEmail;
On Tue, Jan 10, 2012 at 2:50 PM, Julien Martin <[email protected]> wrote:
> Thanks a lot for your reply Jonathan,
> Can you share some code sample (if you have it to hand) please?
> Also where does this code go?
> *configuration.setClassForTemplateLoading(Class clazz, String directory)*
> Regards,
> Julien.
>
> 2012/1/10 Jonathan Barker <[email protected]>
>
>> The Freemarker project gave me similar problems. They have a
>> Configuration object where you can do
>> configuration.setClassForTemplateLoading(Class clazz, String
>> directory). Does Velocity have the same option? If it does, I just
>> used getClass() within my service to supply that Class parameter.
>>
>> On Tue, Jan 10, 2012 at 2:19 PM, Thiago H. de Paula Figueiredo
>> <[email protected]> wrote:
>> > On Tue, 10 Jan 2012 16:09:07 -0200, Julien Martin <[email protected]>
>> wrote:
>> >
>> >> Caused by: org.apache.velocity.exception.ResourceNotFoundException:
>> Unable
>> >> to find resource 'request-childminder-confirmation-mail-template_fr.htm'
>> >> at
>> >>
>> org.apache.velocity.runtime.resource.ResourceManagerImpl.loadResource(ResourceManagerImpl.java:474)
>> >
>> >
>> > This is where the problem is. Tapestry itself doesn't change the
>> classpath
>> > at all, just the classloader for classes in the controlled packages, so
>> this
>> > isn't related to Tapestry.
>> >
>> >
>> > --
>> > Thiago H. de Paula Figueiredo
>> > Independent Java, Apache Tapestry 5 and Hibernate consultant, developer,
>> and
>> > instructor
>> > Owner, Ars Machina Tecnologia da Informação Ltda.
>> > http://www.arsmachina.com.br
>> >
>> > ---------------------------------------------------------------------
>> > To unsubscribe, e-mail: [email protected]
>> > For additional commands, e-mail: [email protected]
>> >
>>
>>
>>
>> --
>> Jonathan Barker
>> ITStrategic
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>>
--
Jonathan Barker
ITStrategic
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]