Currently the plugin I am developing works fine when the user tries to access any of the plugin functionality when the user is logged - in. But it gives 404 error when the user is not logged-in. I tried to handle this by checking if the application user is null but it seems not to be working. How can I avoid this 404 error and redirect the user to JIRA default login page.
Community moderators have prevented the ability to post new answers.
In your action class, check for the logged in user and return "securitybreach".
Then include the following in atlassian-plugin.xml under the action.
<view name="securitybreach">/secure/views/securitybreach.jsp</view>
Hi Jobin, I added this code inside my action class @Override public String doDefault() { ApplicationUser user = getLoggedInApplicationUser(); if (user == null) { return SECURITY_BREACH; } return SUCCESS; } with the <view name="securitybreach">/secure/views/securitybreach.jsp</view> under my action in atlassian-plugin.xml. I still see the same error.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
After debugging i found out it's not even going inside the class as I get this error in the log Exception thrown from action 'LeangearsDiscoveryAction!default', returning 404 [INFO] [talledLocalContainer] org.springframework.beans.factory.BeanCreationException: Error creating bean with name
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
there is a tutorial that covers this .. just remove the || !userManager.isSystemAdmin(username) portion.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You can use jiraAuthenticationContext.isLoggedInUser(): https://docs.atlassian.com/jira/latest/com/atlassian/jira/security/JiraAuthenticationContext.html#isLoggedInUser()
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Volodymyr, I am still getting the same error. Oop's you have found a dead link 404. Plugin works fine when the user is logged in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Probably you have wrong link for your webwork doDefault action. It should end like: YouWebworkMapping!default.jspa. Without "!default" doExecute from you action class is invoked.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
<web-item key="start-discovery-link" name="Start" section="leangears-discovery/leangears-discovery-section" weight="10"> <label>StartDiscovery</label> <link linkId="start-discovery-link">/secure/LeangearsDiscoveryAction!default.jspa</link> <condition class="com.atlassian.jira.plugin.webfragment.conditions.UserHasVisibleProjectsCondition"> <param name="permission">project</param> </condition> </web-item> @Override public String doDefault() { ApplicationUser loggedInJiraUser = ComponentAccessor.getJiraAuthenticationContext().getUser(); //ApplicationUser user = getLoggedInApplicationUser(); if (loggedInJiraUser == null) { return SECURITY_BREACH; } return SUCCESS; } This is what I have currently
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Please add webwork config.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
<webwork1 key="leangears-discovery-action" name="LeangearsDiscoveryAction" i18n-name-key="leangears-discovery-action.name"> <description key="leangears-discovery-action.description">The LeangearsDiscoveryAction Plugin</description> <actions> <action name="com.leanpitch.leangears.jira.webwork.LeangearsDiscoveryAction" alias="LeangearsDiscoveryAction"> <view name="success">/templates/start-discovery/createDiscovery.vm</view> <view name="securitybreach">/secure/views/securitybreach.jsp</view> <view name="error">/templates/leangears-discovery-action/error.vm</view> </action> </actions> </webwork1>
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
The link is fine. I guess that the webwork action is not loaded due to some errors. Please check you logs when you start JIRA with the addon.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thanks a lot Volodymyr for the log suggestion. I can see one continuous error inside the log file 2015-10-03 19:06:04,674 http-bio-2990-exec-58 ERROR anonymous 1146x25870x1 1m1jwgd 127.0.0.1 /secure/LeangearsDiscoveryAction!default.jspa [jira.config.webwork.JiraActionFactory] Error autowiring Action 'com.leanpitch.leangears.jira.webwork.LeangearsDiscoveryAction'. org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.leanpitch.leangears.jira.webwork.LeangearsDiscoveryAction': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.leanpitch.leangears.jira.webwork.LeangearsDiscoveryAction]: Constructor threw exception; nested exception is java.lang.NullPointerException at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:254) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:925) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:835) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) at java.security.AccessController.doPrivileged(Native Method) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:300) <+3> (NativeMethodAccessorImpl.java:39) (DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.atlassian.plugin.osgi.spring.DefaultSpringContainerAccessor.createBean(DefaultSpringContainerAccessor.java:112) at com.atlassian.plugin.osgi.factory.OsgiPlugin.autowire(OsgiPlugin.java:370) at com.atlassian.plugin.osgi.factory.OsgiPlugin.autowire(OsgiPlugin.java:360) at com.atlassian.jira.config.webwork.JiraActionFactory$JiraPluginActionFactory.getActionImpl(JiraActionFactory.java:449) at webwork.action.factory.PrefixActionFactoryProxy.getActionImpl(PrefixActionFactoryProxy.java:99) at webwork.action.factory.JspActionFactoryProxy.getActionImpl(JspActionFactoryProxy.java:59) at webwork.action.factory.CommandActionFactoryProxy.getActionImpl(CommandActionFactoryProxy.java:60) at com.atlassian.jira.config.webwork.LookupAliasActionFactoryProxy.getActionImpl(LookupAliasActionFactoryProxy.java:65) at webwork.action.factory.CommandActionFactoryProxy.getActionImpl(CommandActionFactoryProxy.java:51) at webwork.action.factory.ContextActionFactoryProxy.getActionImpl(ContextActionFactoryProxy.java:36) at webwork.action.factory.PrepareActionFactoryProxy.getActionImpl(PrepareActionFactoryProxy.java:37) at com.atlassian.jira.config.webwork.JiraActionFactory$SafeParameterSettingActionFactoryProxy.getActionImpl(JiraActionFactory.java:159) at webwork.action.factory.ChainingActionFactoryProxy.getActionImpl(ChainingActionFactoryProxy.java:53) at com.atlassian.jira.config.webwork.JiraActionFactory.getActionImpl(JiraActionFactory.java:349) <+2> (GenericDispatcher.java:141) (JiraWebworkActionDispatcher.java:152) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) <+14> (ApplicationFilterChain.java:303) (ApplicationFilterChain.java:208) (ChainedFilterStepRunner.java:87) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (XContentTypeOptionsNoSniffFilter.java:22) (AbstractHttpFilter.java:31) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (HeaderSanitisingFilter.java:44) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (IteratingFilterChain.java:46) (DelegatingPluginFilter.java:70) at com.atlassian.jira.tzdetect.IncludeResourcesFilter.doFilter(IncludeResourcesFilter.java:40) <+3> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70) at com.atlassian.jira.baseurl.IncludeResourcesFilter.doFilter(IncludeResourcesFilter.java:38) <+4> (AbstractHttpFilter.java:31) (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70) at com.atlassian.jira.onboarding.postsetup.ui.PostSetupAnnouncementsFilter.doFilter(PostSetupAnnouncementsFilter.java:61) <+7> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70) (ContextFilter.java:25) (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70) at com.atlassian.mywork.client.filter.ServingRequestsFilter.doFilter(ServingRequestsFilter.java:37) <+3> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70) at com.atlassian.prettyurls.filter.PrettyUrlsSiteMeshFixupFilter.doFilter(PrettyUrlsSiteMeshFixupFilter.java:36) <+3> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70) at com.atlassian.prettyurls.filter.PrettyUrlsDispatcherFilter.doFilter(PrettyUrlsDispatcherFilter.java:60) <+3> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70) at com.atlassian.prettyurls.filter.PrettyUrlsSiteMeshFilter.doFilter(PrettyUrlsSiteMeshFilter.java:92) <+3> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70) at com.atlassian.prettyurls.filter.PrettyUrlsMatcherFilter.doFilter(PrettyUrlsMatcherFilter.java:56) <+3> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70) at com.atlassian.labs.botkiller.BotKillerFilter.doFilter(BotKillerFilter.java:36) <+3> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70) at com.atlassian.labs.httpservice.resource.ResourceFilter.doFilter(ResourceFilter.java:59) <+26> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (ServletFilterModuleContainerFilter.java:77) (ServletFilterModuleContainerFilter.java:63) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (AccessLogFilter.java:107) (AccessLogFilter.java:91) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (XsrfTokenAdditionRequestFilter.java:54) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (SiteMeshFilter.java:181) (SiteMeshFilter.java:85) (SitemeshPageFilter.java:124) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (PageBuilderFilter.java:90) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (CommittedResponseHtmlErrorRecoveryFilter.java:63) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (IteratingFilterChain.java:46) (DelegatingPluginFilter.java:70) at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter(PrettyUrlsCombinedMatchDispatcherFilter.java:61) <+22> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (ServletFilterModuleContainerFilter.java:77) (ServletFilterModuleContainerFilter.java:63) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (SecurityFilter.java:239) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (TrustedApplicationsFilter.java:100) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (BaseLoginFilter.java:172) (JiraLoginFilter.java:70) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (IteratingFilterChain.java:46) (DelegatingPluginFilter.java:70) (OAuthFilter.java:79) (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70) at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter(PrettyUrlsCombinedMatchDispatcherFilter.java:61) <+13> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (ServletFilterModuleContainerFilter.java:77) (ServletFilterModuleContainerFilter.java:63) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (ProfilingFilter.java:99) (JIRAProfilingFilter.java:19) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (AbstractJohnsonFilter.java:71) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176) at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145) at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92) <+10> (UrlRewriteFilter.java:394) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (GzipFilter.java:88) (GzipFilter.java:59) (JiraGzipFilter.java:56) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (IteratingFilterChain.java:46) (DelegatingPluginFilter.java:70) at com.atlassian.fastdev.AutoReloadFilter.doFilter(AutoReloadFilter.java:63) <+3> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70) at com.atlassian.analytics.client.filter.JiraAnalyticsFilter.doFilter(JiraAnalyticsFilter.java:40) at com.atlassian.analytics.client.filter.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32) <+3> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70) at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter(PrettyUrlsCombinedMatchDispatcherFilter.java:61) <+40> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (ServletFilterModuleContainerFilter.java:77) (ServletFilterModuleContainerFilter.java:63) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (ChainedFilterStepRunner.java:87) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (AbstractCachingFilter.java:33) (AbstractHttpFilter.java:31) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (AbstractEncodingFilter.java:41) (AbstractHttpFilter.java:31) (PathMatchingEncodingFilter.java:49) (AbstractHttpFilter.java:31) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (JiraStartupChecklistFilter.java:79) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (MultipartBoundaryCheckFilter.java:41) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (ChainedFilterStepRunner.java:87) (JiraFirstFilter.java:61) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (StandardWrapperValve.java:220) (StandardContextValve.java:122) (AuthenticatorBase.java:501) (StandardHostValve.java:170) (ErrorReportValve.java:98) (AccessLogValve.java:950) (StandardEngineValve.java:116) (CoyoteAdapter.java:408) (AbstractHttp11Processor.java:1040) (AbstractProtocol.java:607) (JIoEndpoint.java:313) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) at java.lang.Thread.run(Thread.java:662) Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.leanpitch.leangears.jira.webwork.LeangearsDiscoveryAction]: Constructor threw exception; nested exception is java.lang.NullPointerException at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:115) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87) at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:248) ... 213 more Caused by: java.lang.NullPointerException <+3> (NativeConstructorAccessorImpl.java:39) (DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:100) ... 215 more
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
The error speak for itself: you have NullPointerException in you LeangearsDiscoveryAction constructor.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I am not able to figure out why this is happening in first place because this works fine the moment I log in in JIRA. Constructor I have is private ProductDiscoveryConfService productDiscoveryConfService; public LeangearsDiscoveryAction(ProductDiscoveryConfService productDiscoveryConfService){ this.productDiscoveryConfService = productDiscoveryConfService; }
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You need to call constructor of the parent class: public LeangearsDiscoveryAction(ProductDiscoveryConfService productDiscoveryConfService){ super(); this.productDiscoveryConfService = productDiscoveryConfService; }
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Same concept works for other Actions, but it is failing for this particular action.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Community moderators have prevented the ability to post new answers.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.