It appears that the problem is the package used. The package should org.rocsca not org.rocsca.MathCommentAuthenticator;
package org.rocsca; Also, when you compile the class the source file should be in a subdirectory org/rocsca I think you are close to getting this working, but it might be easiest to get a local Java developer to help out. - Dave On Thu, Jun 30, 2011 at 1:00 PM, Scappatura Rocco <[email protected]> wrote: >> -----Original Message----- >> From: Scappatura Rocco [mailto:[email protected]] >> Sent: Wednesday, June 29, 2011 6:46 PM >> To: [email protected] >> Subject: RE: Comment authentication problem >> >> Hello Dave, >> >> do you figure out why I can't see any debug information in my log file even >> after I compile my authentication module > > Maybe I'm wrong the directive in roller-custom.properties? > > authenticator.classname=org.rocsca.MathCommentAuthenticator > comment.authenticator.classname=org.rocsca.MathCommentAuthenticator > > log4j.category.org.apache.roller.weblogger.ui.rendering.plugins.comments=DEBUG > > rocsca > >> >> > -----Original Message----- >> > From: Scappatura Rocco [mailto:[email protected]] >> > Sent: Saturday, June 25, 2011 5:03 PM >> > To: [email protected] >> > Subject: RE: Comment authentication problem >> > >> > > -----Original Message----- >> > > From: Dave [mailto:[email protected]] >> > > Sent: Saturday, June 25, 2011 3:20 PM >> > > To: [email protected] >> > > Subject: Re: Comment authentication problem >> > > >> > > I believe your package name should be this: >> > > >> > > package org.rocsca; >> > >> > You have right.. I'm sorry for the trivial error. >> > >> > I have succesfull compiled the class, jarred it into rocsca.jar and put it >> > into %ROLLER%\WEB-INF\lib. >> > >> > Into my roller-custom.properties I have: >> > >> > comment.authenticator.classname=org.rocsca.MathCommentAuthenticator >> > >> > >> log4j.category.org.apache.roller.weblogger.ui.rendering.plugins.comments=DEBUG >> > >> > But also after have restarted roller application, I cant see any debug >> > messages into roller.log file.. >> > >> > It is possible that rocsca.jar archive has not been loaded? Or what else it >> > can be happened? >> > >> > Thanks, >> > >> > > - Dave >> > >> > rocsca >> > >> > > >> > > On Sat, Jun 25, 2011 at 9:07 AM, Scappatura Rocco >> > > <[email protected]> wrote: >> > > >> -----Original Message----- >> > > >> From: Dave [mailto:[email protected]] >> > > >> Sent: Wednesday, June 22, 2011 9:02 PM >> > > >> To: [email protected] >> > > >> Subject: Re: Comment authentication problem >> > > >> >> > > >> Looks like my original suggestion should work for you: >> > > >> Add this to your imports: >> > > >> >> > > >> import >> > > >> >> > > >> > >> org.apache.roller.weblogger.ui.rendering.plugins.comments.CommentAuthenticator >> > > > >> > > > Hello, >> > > > >> > > > compiling is success full but I get this runtime error: >> > > > >> > > > java.lang.NoClassDefFoundError: org/rocsca/MathCommentAuthenticator >> (wrong >> > > name: org/rocsca/MathCommentAuthenticator/MathCommentAuthenticator) >> > > > java.lang.ClassLoader.defineClass1(Native Method) >> > > > java.lang.ClassLoader.defineClass(Unknown Source) >> > > > java.security.SecureClassLoader.defineClass(Unknown Source) >> > > > >> > > >> > >> org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoa >> > > der.java:1880) >> > > > >> > > >> > >> org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java >> > > :889) >> > > > >> > > >> > >> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java >> > > :1353) >> > > > >> > > >> > >> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java >> > > :1232) >> > > > java.lang.ClassLoader.loadClassInternal(Unknown Source) >> > > > java.lang.Class.forName0(Native Method) >> > > > java.lang.Class.forName(Unknown Source) >> > > > >> > > >> > >> org.apache.roller.weblogger.ui.rendering.servlets.CommentServlet.init(Comment >> > > Servlet.java:91) >> > > > >> > > >> > >> org.apache.roller.weblogger.ui.rendering.WeblogRequestMapper.handleRequest(We >> > > blogRequestMapper.java:231) >> > > > >> > > >> > >> org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter.doFilte >> > > r(RequestMappingFilter.java:128) >> > > > >> > > >> > >> org.apache.roller.weblogger.ui.core.filters.InitFilter.doFilter(InitFilter.ja >> > > va:71) >> > > > >> > > >> > >> org.apache.roller.weblogger.ui.core.filters.PersistenceSessionFilter.doFilter >> > > (PersistenceSessionFilter.java:60) >> > > > >> > > >> > >> org.apache.roller.weblogger.ui.core.filters.BootstrapFilter.doFilter(Bootstra >> > > pFilter.java:67) >> > > > >> > > >> > >> org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilte >> > > r(FilterChainProxy.java:378) >> > > > >> > > >> > >> org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(F >> > > ilterSecurityInterceptor.java:109) >> > > > >> > > >> > >> org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter >> > > (FilterSecurityInterceptor.java:83) >> > > > >> > > >> > >> org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilte >> > > r(FilterChainProxy.java:390) >> > > > >> > > >> > >> org.springframework.security.ui.SessionFixationProtectionFilter.doFilterHttp( >> > > SessionFixationProtectionFilter.java:52) >> > > > >> > > >> > >> org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityF >> > > ilter.java:53) >> > > > >> > > >> > >> org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilte >> > > r(FilterChainProxy.java:390) >> > > > >> > > >> > >> org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(Excep >> > > tionTranslationFilter.java:101) >> > > > >> > > >> > >> org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityF >> > > ilter.java:53) >> > > > >> > > >> > >> org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilte >> > > r(FilterChainProxy.java:390) >> > > > >> > > >> > >> org.springframework.security.ui.rememberme.RememberMeProcessingFilter.doFilte >> > > rHttp(RememberMeProcessingFilter.java:109) >> > > > >> > > >> > >> org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityF >> > > ilter.java:53) >> > > > >> > > >> > >> org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilte >> > > r(FilterChainProxy.java:390) >> > > > >> > > >> > >> org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter. >> > > doFilterHttp(SecurityContextHolderAwareRequestFilter.java:91) >> > > > >> > > >> > >> org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityF >> > > ilter.java:53) >> > > > >> > > >> > >> org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilte >> > > r(FilterChainProxy.java:390) >> > > > >> > > >> > >> org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(Abstrac >> > > tProcessingFilter.java:278) >> > > > >> > > >> > >> org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityF >> > > ilter.java:53) >> > > > >> > > >> > >> org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilte >> > > r(FilterChainProxy.java:390) >> > > > >> > > >> > >> org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(Abstrac >> > > tProcessingFilter.java:278) >> > > > >> > > >> > >> org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityF >> > > ilter.java:53) >> > > > >> > > >> > >> org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilte >> > > r(FilterChainProxy.java:390) >> > > > >> > > >> > >> org.springframework.security.context.HttpSessionContextIntegrationFilter.doFi >> > > lterHttp(HttpSessionContextIntegrationFilter.java:235) >> > > > >> > > >> > >> org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityF >> > > ilter.java:53) >> > > > >> > > >> > >> org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilte >> > > r(FilterChainProxy.java:390) >> > > > >> > > >> > >> org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy. >> > > java:175) >> > > > >> > > >> > >> org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(Delegatin >> > > gFilterProxy.java:236) >> > > > >> > > >> > >> org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilte >> > > rProxy.java:167) >> > > > >> > > >> > >> org.apache.roller.weblogger.ui.core.filters.SchemeEnforcementFilter.doFilter( >> > > SchemeEnforcementFilter.java:121) >> > > > >> > > >> > >> org.apache.roller.weblogger.ui.core.filters.CharEncodingFilter.doFilter(CharE >> > > ncodingFilter.java:81) >> > > > >> > > >> - Dave >> > > > >> > > > Rocsca >> > > > >> > > >> On Tue, Jun 21, 2011 at 3:30 AM, Scappatura Rocco >> > > >> <[email protected]> wrote: >> > > >> >> -----Original Message----- >> > > >> >> From: Dave [mailto:[email protected]] >> > > >> >> Sent: Monday, June 20, 2011 10:09 PM >> > > >> >> To: [email protected] >> > > >> >> Subject: Re: Comment authentication problem >> > > >> >> >> > > >> >> Unfortunately, we don't accept attachments. >> > > >> >> Please paste into an email message. >> > > >> > >> > > >> > package org.rocsca.MathCommentAuthenticator; >> > > >> > >> > > >> > import java.util.ResourceBundle; >> > > >> > import javax.servlet.http.HttpServletRequest; >> > > >> > import javax.servlet.http.HttpSession; >> > > >> > import org.apache.commons.logging.Log; >> > > >> > import org.apache.commons.logging.LogFactory; >> > > >> > >> > > >> > >> > > >> > /** >> > > >> > * Asks the commenter to answer a simple math question. >> > > >> > */ >> > > >> > public class MathCommentAuthenticator implements >> > > >> > CommentAuthenticator >> { >> > > >> > >> > > >> > private transient ResourceBundle bundle = >> > > >> > ResourceBundle.getBundle("ApplicationResources"); >> > > >> > >> > > >> > private static Log mLogger = >> > > >> LogFactory.getLog(MathCommentAuthenticator.class); >> > > >> > >> > > >> > >> > > >> > public String getHtml(HttpServletRequest request) { >> > > >> > >> > > >> > String answer = ""; >> > > >> > >> > > >> > HttpSession session = request.getSession(true); >> > > >> > if (session.getAttribute("mathAnswer") == null) { >> > > >> > // starting a new test >> > > >> > int value1 = (int)(Math.random()*10.0); >> > > >> > int value2 = (int)(Math.random()*100.0); >> > > >> > int sum = value1 + value2; >> > > >> > session.setAttribute("mathValue1", new Integer(value1)); >> > > >> > session.setAttribute("mathValue2", new Integer(value2)); >> > > >> > session.setAttribute("mathAnswer", new Integer(sum)); >> > > >> > } else { >> > > >> > // preserve user's answer >> > > >> > answer = request.getParameter("answer"); >> > > >> > answer = (answer == null) ? "" : answer; >> > > >> > } >> > > >> > >> > > >> > // pull existing values out of session >> > > >> > Integer value1o = >> > > >> (Integer)request.getSession().getAttribute("mathValue1"); >> > > >> > Integer value2o = >> > > >> (Integer)request.getSession().getAttribute("mathValue2"); >> > > >> > >> > > >> > StringBuffer sb = new StringBuffer(); >> > > >> > >> > > >> > sb.append("<p>"); >> > > >> > >> > sb.append(bundle.getString("comments.mathAuthenticatorQuestion")); >> > > >> > sb.append("</p><p>"); >> > > >> > sb.append(value1o); >> > > >> > sb.append(" + "); >> > > >> > sb.append(value2o); >> > > >> > sb.append(" = "); >> > > >> > sb.append("<input name=\"answer\" value=\""); >> > > >> > sb.append(answer); >> > > >> > sb.append("\" /></p>"); >> > > >> > sb.append("<input type=hidden name=\"mathAnswer\" value=\""); >> > > >> > sb.append(mathAnswer); >> > > >> > sb.append("\" />"); >> > > >> > >> > > >> > return sb.toString(); >> > > >> > } >> > > >> > >> > > >> > >> > > >> > public boolean authenticate(HttpServletRequest request) { >> > > >> > >> > > >> > boolean authentic = false; >> > > >> > >> > > >> > HttpSession session = request.getSession(false); >> > > >> > String answerString = request.getParameter("answer"); >> > > >> > >> > > >> > if (answerString != null && session != null) { >> > > >> > try { >> > > >> > int answer = Integer.parseInt(answerString); >> > > >> > Integer sum = (Integer) >> > > session.getAttribute("mathAnswer"); >> > > >> > >> > > >> > if (mathAnswerString != null && answer == >> > > >> Integer.parseInt(mathAnswerString)) { >> > > >> > authentic = true; >> > > >> > session.removeAttribute("mathAnswer"); >> > > >> > session.removeAttribute("mathValue1"); >> > > >> > session.removeAttribute("mathValue2"); >> > > >> > } >> > > >> > } catch (NumberFormatException ignored) { >> > > >> > // ignored ... someone is just really bad at math >> > > >> > } catch (Exception e) { >> > > >> > // unexpected >> > > >> > mLogger.error(e); >> > > >> > } >> > > >> > } >> > > >> > >> > > >> > return authentic; >> > > >> > } >> > > >> > >> > > >> > } >> > > >> > >> > > >> >> - Dave >> > > >> > >> > > >> > rocsca >> > > >> > >> > > >> >> >> > > >> >> >> > > >> >> >> > > >> >> On Mon, Jun 20, 2011 at 3:57 PM, Scappatura Rocco >> > > >> >> <[email protected]> wrote: >> > > >> >> >> -----Original Message----- >> > > >> >> >> From: Dave [mailto:[email protected]] >> > > >> >> >> Sent: Monday, June 20, 2011 5:20 PM >> > > >> >> >> To: [email protected] >> > > >> >> >> Subject: Re: Comment authentication problem >> > > >> >> >> >> > > >> >> >> On Mon, Jun 20, 2011 at 9:28 AM, Scappatura Rocco >> > > >> >> >> <[email protected]> wrote: >> > > >> >> >> >> > import java.util.ResourceBundle; >> > > >> >> >> >> > import javax.servlet.http.HttpServletRequest; >> > > >> >> >> >> > import javax.servlet.http.HttpSession; >> > > >> >> >> >> > import org.apache.commons.logging.Log; >> > > >> >> >> >> > import org.apache.commons.logging.LogFactory; >> > > >> >> >> >> >> > > >> >> >> >> I don't see any org.apache.roller packages there. >> > > >> >> >> >> >> > > >> >> >> >> What is the package name of the class your are defining? >> > > >> >> >> > package org.rocsca.MathCommentAuthenticator; >> > > >> >> >> >> > > >> >> >> The problem is that you code cannot find the >> "CommentAuthenticator" >> > > >> >> >> >> > > >> >> >> You might be able to fix this by adding this to your imports: >> > > >> >> >> import >> > > >> >> >> >> > > >> >> >> > > >> >> > > >> > >> org.apache.roller.weblogger.ui.rendering.plugins.comments.CommentAuthenticator >> > > >> >> >> >> > > >> >> >> But it's hard to tell because I don't have your full source. >> > > >> >> > >> > > >> >> > Obviously my code is open source! :-P >> > > >> >> > >> > > >> >> > In attachment there is the java code. >> > > >> >> > >> > > >> >> >> Thanks, >> > > >> >> >> Dave >> > > >> >> > >> > > >> >> > Thanks to you! >> > > >> >> > rocsca >> > > >> >> > >> > > >> > >> > > > >
