• We collect Confluence feedback from various sources, and we evaluate what we've collected when planning our product roadmap. To understand how this piece of feedback will be reviewed, see our Implementation of New Features Policy.

      NOTE: This suggestion is for Confluence Server. Using Confluence Cloud? See the corresponding suggestion.

      Currently job plugin modules are not dependency-injected (or "autowired"). They are instantiated by Quartz directly instead, because the module descriptor constructs the JobDetail bean this way:

      JobDetail jobDetail = new JobDetail();
      jobDetail.setGroup(getPluginKey());
      jobDetail.setName(getKey());
      jobDetail.setJobClass(getModuleClass());
      JobDataMap jobDetailMap = new JobDataMap();
      jobDetailMap.put("runOncePerCluster", String.valueOf(perClusterJob));
      jobDetail.setJobDataMap(jobDetailMap);
      return jobDetail;
      

      Although I haven't tested it, it should be possible to construct a delegating job class and pass the autowired plugin Job to it via the JobDataMap. I think this is how the MethodInvokingJobDetailFactoryBean works in Spring.

            [CONFSERVER-20162] Autowire job plugin modules

            Sen Geronimo made changes -
            Workflow Original: JAC Suggestion Workflow 4 [ 3566986 ] New: JAC Suggestion Workflow 3 [ 4332514 ]
            Katherine Yabut made changes -
            Workflow Original: JAC Suggestion Workflow 2 [ 3176133 ] New: JAC Suggestion Workflow 4 [ 3566986 ]
            Status Original: RESOLVED [ 5 ] New: Closed [ 6 ]
            Katherine Yabut made changes -
            Workflow Original: JAC Suggestion Workflow [ 3033796 ] New: JAC Suggestion Workflow 2 [ 3176133 ]
            Owen made changes -
            Workflow Original: Confluence Workflow - Public Facing v4 [ 2523684 ] New: JAC Suggestion Workflow [ 3033796 ]
            Rachel Lin (Inactive) made changes -
            Workflow Original: Confluence Workflow - Public Facing v3 [ 2258998 ] New: Confluence Workflow - Public Facing v4 [ 2523684 ]
            Katherine Yabut made changes -
            Workflow Original: Confluence Workflow - Public Facing v3 - TEMP [ 2195380 ] New: Confluence Workflow - Public Facing v3 [ 2258998 ]
            Katherine Yabut made changes -
            Workflow Original: Confluence Workflow - Public Facing v3 [ 1923217 ] New: Confluence Workflow - Public Facing v3 - TEMP [ 2195380 ]
            Katherine Yabut made changes -
            Workflow Original: Confluence Workflow - Public Facing v2 [ 1752439 ] New: Confluence Workflow - Public Facing v3 [ 1923217 ]
            jonah (Inactive) made changes -
            Description Original: Currently job plugin modules are not dependency-injected (or "autowired"). They are instantiated by Quartz directly instead, because the module descriptor constructs the JobDetail bean this way:

            {code:java}
            JobDetail jobDetail = new JobDetail();
            jobDetail.setGroup(getPluginKey());
            jobDetail.setName(getKey());
            jobDetail.setJobClass(getModuleClass());
            JobDataMap jobDetailMap = new JobDataMap();
            jobDetailMap.put("runOncePerCluster", String.valueOf(perClusterJob));
            jobDetail.setJobDataMap(jobDetailMap);
            return jobDetail;
            {code}

            Although I haven't tested it, it should be possible to construct a delegating job class and pass the autowired plugin Job to it via the JobDataMap. I think this is how the MethodInvokingJobDetailFactoryBean works in Spring.
            New: {panel:bgColor=#e7f4fa}
              *NOTE:* This suggestion is for *Confluence Server*. Using *Confluence Cloud*? [See the corresponding suggestion|http://jira.atlassian.com/browse/CONFCLOUD-20162].
              {panel}

            Currently job plugin modules are not dependency-injected (or "autowired"). They are instantiated by Quartz directly instead, because the module descriptor constructs the JobDetail bean this way:

            {code:java}
            JobDetail jobDetail = new JobDetail();
            jobDetail.setGroup(getPluginKey());
            jobDetail.setName(getKey());
            jobDetail.setJobClass(getModuleClass());
            JobDataMap jobDetailMap = new JobDataMap();
            jobDetailMap.put("runOncePerCluster", String.valueOf(perClusterJob));
            jobDetail.setJobDataMap(jobDetailMap);
            return jobDetail;
            {code}

            Although I haven't tested it, it should be possible to construct a delegating job class and pass the autowired plugin Job to it via the JobDataMap. I think this is how the MethodInvokingJobDetailFactoryBean works in Spring.
            jonah (Inactive) made changes -
            Link New: This issue relates to CONFCLOUD-20162 [ CONFCLOUD-20162 ]

              matt@atlassian.com Matt Ryall
              matt@atlassian.com Matt Ryall
              Votes:
              5 Vote for this issue
              Watchers:
              6 Start watching this issue

                Created:
                Updated:
                Resolved: