Register.java, template "email/Confirmation.vm" and a NullPointer
Nigel Tamplin <[email protected]> Thu, 18 Sep 2008 22:44:54 +0100
| Newsgroups | gmane.comp.java.scarab.devel |
|---|---|
| Message-ID | <[email protected]> |
I've checked out and built Scarab from the trunk, I've spotted a little
problem that I'd like to fix.
The problem is during registration.
The template "email/Confirmation.vm" (which is used to generate the body
text of the confirmation email when registering) causes a NullPointer
exception when it gets merged, thus stopping the registration email from
being sent. (Stack trace attached)
Method sendConfirmationEmail() in class
org.tigris.scarab.actions.Register (which gets called from
doConfirmregistration and doResendconfirmationcode) uses the template
and the template contains the line
$link.setPage("Confirm.vm").addPathInfo("Confirm",
$scarabR.User.Confirmed).addPathInfo("UserName",$scarabR.User.UserName).setEncodeUrl(false).setRelative(false).overrideSecurity()
The problem arises as $scarabR.User is null - as the java code in
Register.java never calls scarabR.setuser(su).
I see in 0.21 that Register.java does call scarabR.setuser(su) prior to
merging the template.
To get the registrations working I added
if (scarabR != null)
{
scarabR.setUser(su);
}
just before the 2 calls to
sendConfirmationEmail(su, context);
to my copy of Register.java
However my thoughts are that either
a) Register.java has evolved and email/Confirmation.vm needs updating to
match; or
b) Register.java should still be doing a scarabR.setUser(su);
I opted for b, but I could be wrong.
Your comments please,
Nigel
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
stacktrace.txt
(text/plain, 7.8 KB)
org.apache.turbine.TurbineException: org.apache.commons.mail.EmailException: Cannot parse email template at org.apache.turbine.pipeline.DefaultActionValve.invoke(DefaultActionValve.java:104) at org.apache.turbine.pipeline.TurbinePipeline.invokeNext(TurbinePipeline.java:231) at org.apache.turbine.pipeline.DefaultACLCreationValve.invoke(DefaultACLCreationValve.java:127) at org.apache.turbine.pipeline.TurbinePipeline.invokeNext(TurbinePipeline.java:231) at org.tigris.scarab.pipeline.SetLocaleValve.invoke(SetLocaleValve.java:112) at org.apache.turbine.pipeline.TurbinePipeline.invokeNext(TurbinePipeline.java:231) at org.tigris.scarab.pipeline.FreshenUserValve.invoke(FreshenUserValve.java:189) at org.apache.turbine.pipeline.TurbinePipeline.invokeNext(TurbinePipeline.java:231) at org.apache.turbine.pipeline.DefaultSessionValidationValve.invoke(DefaultSessionValidationValve.java:131) at org.apache.turbine.pipeline.TurbinePipeline.invokeNext(TurbinePipeline.java:231) at org.apache.turbine.pipeline.DefaultLoginValve.invoke(DefaultLoginValve.java:109) at org.apache.turbine.pipeline.TurbinePipeline.invokeNext(TurbinePipeline.java:231) at org.tigris.scarab.pipeline.AnonymousLoginValve.invoke(AnonymousLoginValve.java:62) at org.apache.turbine.pipeline.TurbinePipeline.invokeNext(TurbinePipeline.java:231) at org.tigris.scarab.pipeline.NTLMLoginValve.invoke(NTLMLoginValve.java:78) at org.apache.turbine.pipeline.TurbinePipeline.invokeNext(TurbinePipeline.java:231) at org.apache.turbine.pipeline.DefaultSessionTimeoutValve.invoke(DefaultSessionTimeoutValve.java:121) at org.apache.turbine.pipeline.TurbinePipeline.invokeNext(TurbinePipeline.java:231) at org.tigris.scarab.pipeline.DetermineTargetValve.invoke(DetermineTargetValve.java:138) at org.apache.turbine.pipeline.TurbinePipeline.invokeNext(TurbinePipeline.java:231) at org.apache.turbine.pipeline.DetermineActionValve.invoke(DetermineActionValve.java:107) at org.apache.turbine.pipeline.TurbinePipeline.invokeNext(TurbinePipeline.java:231) at org.tigris.scarab.pipeline.SetInfoMessageValve.invoke(SetInfoMessageValve.java:85) at org.apache.turbine.pipeline.TurbinePipeline.invokeNext(TurbinePipeline.java:231) at org.tigris.scarab.pipeline.ResetCacheValve.invoke(ResetCacheValve.java:77) at org.apache.turbine.pipeline.TurbinePipeline.invokeNext(TurbinePipeline.java:231) at org.tigris.scarab.pipeline.DetermineCharsetValve.invoke(DetermineCharsetValve.java:103) at org.apache.turbine.pipeline.TurbinePipeline.invokeNext(TurbinePipeline.java:231) at org.tigris.scarab.pipeline.TimingInfoValve.invoke(TimingInfoValve.java:131) at org.apache.turbine.pipeline.TurbinePipeline.invokeNext(TurbinePipeline.java:231) at org.apache.turbine.pipeline.TurbinePipeline.invoke(TurbinePipeline.java:213) at org.apache.turbine.Turbine.doGet(Turbine.java:298) at org.apache.turbine.Turbine.doPost(Turbine.java:343) at javax.servlet.http.HttpServlet.service(HttpServlet.java:709) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAsPrivileged(Subject.java:517) at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:275) at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:161) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:245) at org.apache.catalina.core.ApplicationFilterChain.access$0(ApplicationFilterChain.java:177) at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:156) at java.security.AccessController.doPrivileged(Native Method) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:152) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Thread.java:619) Caused by: org.apache.commons.mail.EmailException: Cannot parse email template at org.tigris.scarab.services.email.TemplateHtmlEmail.send(TemplateHtmlEmail.java:261) at org.tigris.scarab.actions.Register.sendConfirmationEmail(Register.java:307) at org.tigris.scarab.actions.Register.doConfirmregistration(Register.java:174) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.turbine.modules.actions.TemplateAction.executeEvents(TemplateAction.java:160) at org.apache.turbine.modules.ActionEvent.perform(ActionEvent.java:144) at org.apache.turbine.modules.ActionEvent.execute(ActionEvent.java:179) at org.apache.turbine.pipeline.DefaultActionValve.executeAction(DefaultActionValve.java:139) at org.apache.turbine.pipeline.DefaultActionValve.invoke(DefaultActionValve.java:99) ... 61 more Caused by: org.apache.fulcrum.ServiceException: Error rendering Velocity template: email/Confirmation.vm at org.tigris.scarab.services.email.VelocityEmailService.renderingError(VelocityEmailService.java:413) at org.tigris.scarab.services.email.VelocityEmailService.handleRequest(VelocityEmailService.java:334) at org.tigris.scarab.services.email.VelocityEmail.handleRequest(VelocityEmail.java:176) at org.tigris.scarab.services.email.TemplateHtmlEmail.handleRequest(TemplateHtmlEmail.java:218) at org.tigris.scarab.services.email.TemplateHtmlEmail.send(TemplateHtmlEmail.java:256) ... 72 more Caused by: java.lang.NullPointerException at org.apache.turbine.DynamicURI.addPathInfo(DynamicURI.java:347) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:267) at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:197) at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:175) at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:220) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:230) at org.apache.velocity.Template.merge(Template.java:256) at org.apache.velocity.app.VelocityEngine.mergeTemplate(VelocityEngine.java:450) at org.tigris.scarab.services.email.VelocityEmailService.handleRequest(VelocityEmailService.java:329)