I am attempting to add xsrf protect on an action in my plugin. My action definition looks like this:
<xwork name="actions: Admin"
key="gliffy-actions-admin">
<package name="gliffyadmin" extends="default" namespace="/admin/plugin-repository">
<default-interceptor-ref name="defaultStack" />
<action name="gliffypluginadmin"
class="com.gliffy.plugin.confluence.action.ShowGliffyAdminAction">
<interceptor-ref name="validatingStack"/>
<param name="RequireSecurityToken">true</param>
<result name="success" type="velocity">/templates/html/gliffy-admin.html.vm</result>
<result name="error" type="velocity">/templates/html/gliffy-admin.html.vm</result>
<result name="input" type="velocity">/templates/html/gliffy-admin-error.html.vm</result>
</action>
I am receiving the following exception when the action is called:
Cause
java.lang.RuntimeException: action method [ null ] not found on [ com.gliffy.plugin.confluence.action.ShowGliffyAdminAction ]
at com.atlassian.confluence.xwork.HttpMethodValidationInterceptor.intercept(HttpMethodValidationInterceptor.java:70)
caused by: java.lang.NoSuchMethodException: Unable to load action: com.gliffy.plugin.confluence.action.ShowGliffyAdminAction
at com.opensymphony.xwork.config.entities.ActionConfig.getMethod(ActionConfig.java:115)
Stack Trace:[hide]
java.lang.RuntimeException: action method [ null ] not found on [ com.gliffy.plugin.confluence.action.ShowGliffyAdminAction ]
at com.atlassian.confluence.xwork.HttpMethodValidationInterceptor.intercept(HttpMethodValidationInterceptor.java:70)
...
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoSuchMethodException: Unable to load action: com.gliffy.plugin.confluence.action.ShowGliffyAdminAction
at com.opensymphony.xwork.config.entities.ActionConfig.getMethod(ActionConfig.java:115)
at com.atlassian.xwork10.Xwork10VersionSupport.extractMethod(Xwork10VersionSupport.java:21)
at com.atlassian.xwork.interceptors.XsrfTokenInterceptor.intercept(XsrfTokenInterceptor.java:78)
at com.atlassian.confluence.xwork.ConfluenceXsrfTokenInterceptor.intercept(ConfluenceXsrfTokenInterceptor.java:29)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
at com.atlassian.confluence.security.interceptors.CaptchaInterceptor.intercept(CaptchaInterceptor.java:42)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
at com.atlassian.confluence.core.ConfluenceLicenseInterceptor.intercept(ConfluenceLicenseInterceptor.java:65)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
at com.atlassian.confluence.validation.MessageHolderInterceptor.intercept(MessageHolderInterceptor.java:37)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
at com.atlassian.confluence.util.LoggingContextInterceptor.intercept(LoggingContextInterceptor.java:44)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
at com.atlassian.confluence.core.CancellingInterceptor.intercept(CancellingInterceptor.java:21)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
at com.atlassian.confluence.xwork.HttpMethodValidationInterceptor.intercept(HttpMethodValidationInterceptor.java:68)
… 354 more