addJob(Job job) not addJob(String jobType, Request request) ;) But maybe you are not on 5.1 yet.
On Thu, Sep 26, 2013 at 6:28 PM, Jeremie BOUSQUET <[email protected]> wrote: > 2013/9/26 Thomas Mortagne <[email protected]> >> >> On Thu, Sep 26, 2013 at 5:13 PM, Thomas Mortagne >> <[email protected]> wrote: >> > On Thu, Sep 26, 2013 at 4:40 PM, Jeremie BOUSQUET >> > <[email protected]> wrote: >> >> 2013/9/26 Thomas Mortagne <[email protected]> >> >> >> >>> On Thu, Sep 26, 2013 at 1:08 PM, Jeremie BOUSQUET >> >>> <[email protected]> wrote: >> >>> > 2013/9/26 Thomas Mortagne <[email protected]> >> >>> > >> >>> >> On Thu, Sep 26, 2013 at 11:20 AM, Jeremie BOUSQUET >> >>> >> <[email protected]> wrote: >> >>> >> > Hello, >> >>> >> > >> >>> >> > I'm trying to use the Job Module [1] for my own needs. >> >>> >> > I know some of its APIs are marked as unstable, but well I > wanted to >> >>> give >> >>> >> > it a try. >> >>> >> > >> >>> >> > I'm on a XWiki 4.5.2 instance currently. >> >>> >> > >> >>> >> > So I created some dummy interface: >> >>> >> > >> >>> >> > @Role >> >>> >> > public interface ILoadingJob extends Job >> >>> >> > { >> >>> >> > } >> >>> >> >> >>> >> Job is already a @Role so I don't understand why override it with >> >>> >> ILoadingJob. >> >>> >> >> >>> > >> >>> > I completely removed the ILoadingJob interface, but still the same > issue >> >>> > occurs. >> >>> >> >>> Appart from this I did not seen anything wrong in your code. Are you >> >>> able to do this.componentManager.getInstance(Job.class, >> >>> "mailarchivejob"); ? >> >>> >> >> >> >> I added the line of code, that revealed a number of errors in my > component. >> >> I fixed them, and now this getInstance(...) appropriately returns a >> >> LoadingJob object. I've put the code just before my code calling >> >> executeJob(). >> >> But even after these corrections, I still get the same issue on >> >> executeJob(). BTW, I have same problem when calling addJob(). >> >> >> >> >> >>> >> >>> Is you jar installed as extension ? >> >>> >> >> >> >> Yes it is. >> >> As I'm currently using some SNAPSHOT version, I installed it once with > EM >> >> (linked to a local nexus repository), and now I patch the jar under >> >> $XWIKI_DATA_DIR/data/extensions/repository/..., during server restart. >> > >> > That's it then, I re-checked the DefaultJobManager and it only look at >> > root component manager. Fixing it in 5.2RC1. >> >> In the meantime you can use addJob(Job). > > addJob(Job) has the same problem: > > org.xwiki.job.JobException: Failed to lookup any Job for role hint > [mailarchivejob] > at > org.xwiki.job.internal.DefaultJobManager.createJob(DefaultJobManager.java:185) > ~[xwiki-commons-job-4.5.2.jar:na] > at > org.xwiki.job.internal.DefaultJobManager.addJob(DefaultJobManager.java:208) > ~[xwiki-commons-job-4.5.2.jar:na] > at > org.xwiki.contrib.mailarchive.script.MailArchiveScriptService.createLoadingJob(MailArchiveScriptService.java:140) > [org.xwiki.contrib.mailarchive%253Axwiki-contrib-mailarchive-api-0.3-SNAPSHOT.jar:na] > > >> >> >> > >> >> >> >> >> >>> >> >>> > >> >>> > >> >>> >> >> >>> >> > >> >>> >> > A Job implementation: >> >>> >> > >> >>> >> > @Component >> >>> >> > @Named(LoadingJob.JOBTYPE) >> >>> >> > public class LoadingJob extends AbstractJob<DefaultRequest> > implements >> >>> >> > ILoadingJob, Initializable >> >>> >> > { >> >>> >> > public static final String JOBTYPE = "mailarchivejob"; >> >>> >> > >> >>> >> > // ... >> >>> >> > } >> >>> >> > >> >>> >> > In debug mode, I run the following: >> >>> >> > >> >>> >> > >> >>> > this.componentManager.getComponentDescriptorList(org.xwiki.job.Job.class) >> >>> >> > >> >>> >> > It returns: >> >>> >> > >> >>> >> > [implementation = > [org.xwiki.contrib.mailarchive.internal.LoadingJob], >> >>> >> > instantiation = [PER_LOOKUP], implementation = >> >>> >> > [org.xwiki.extension.job.internal.UpgradePlanJob], ... ] >> >>> >> > >> >>> >> > So it seems OK. >> >>> >> > >> >>> >> > I have the following code to create and execute my Job: >> >>> >> > >> >>> >> > DefaultRequest request = new DefaultRequest(); >> >>> >> > request.setId("test"); >> >>> >> > request.setInteractive(false); >> >>> >> > // ... other properties set >> >>> >> > LoadingJob job = (LoadingJob) >> >>> >> > jobManager.executeJob("mailarchivejob", request); >> >>> >> > >> >>> >> > But this code fails with following stack trace: >> >>> >> > >> >>> >> > org.xwiki.job.JobException: Failed to lookup any Job for role > hint >> >>> >> > [mailarchivejob] >> >>> >> > at >> >>> >> > >> >>> >> >> >>> > org.xwiki.job.internal.DefaultJobManager.createJob(DefaultJobManager.java:185) >> >>> >> > at >> >>> >> > >> >>> >> >> >>> > org.xwiki.job.internal.DefaultJobManager.addJob(DefaultJobManager.java:208) >> >>> >> > at >> >>> >> > >> >>> >> >> >>> > org.xwiki.job.internal.DefaultJobManager.executeJob(DefaultJobManager.java:194) >> >>> >> > at >> >>> >> > >> >>> >> >> >>> > org.xwiki.contrib.mailarchive.internal.MailArchiveScriptService.createLoadingJob(MailArchiveScriptService.java:112) >> >>> >> > at >> >>> >> > >> >>> >> >> >>> > org.xwiki.contrib.mailarchive.internal.MailArchiveScriptService.load(MailArchiveScriptService.java:94) >> >>> >> > [...] >> >>> >> > Caused by: org.xwiki.component.manager.ComponentLookupException: > Can't >> >>> >> find >> >>> >> > descriptor for the component [role = [interface > org.xwiki.job.Job] >> >>> hint = >> >>> >> > [mailarchivejob]] >> >>> >> > at >> >>> >> > >> >>> >> >> >>> > org.xwiki.component.embed.EmbeddableComponentManager.getComponentInstance(EmbeddableComponentManager.java:355) >> >>> >> > at >> >>> >> > >> >>> >> >> >>> > org.xwiki.component.embed.EmbeddableComponentManager.getInstance(EmbeddableComponentManager.java:161) >> >>> >> > at >> >>> >> > >> >>> >> >> >>> > org.xwiki.job.internal.DefaultJobManager.createJob(DefaultJobManager.java:183) >> >>> >> > [...] >> >>> >> > >> >>> >> > I also tried to manually register my custom Job component, in the >> >>> >> > initialize() of a side component (I checked that this code got >> >>> executed >> >>> >> > previously to job creation), but with no different result: >> >>> >> > >> >>> >> > // Register custom job >> >>> >> > >> >>> >> > >> >>> >> >> >>> > this.componentManager.registerComponent(this.componentManager.getComponentDescriptor(Job.class, >> >>> >> > "mailarchivejob")); >> >>> >> > >> >>> >> > Do you see something wrong in my approach ? >> >>> >> > >> >>> >> > Thanks, >> >>> >> > Jeremie >> >>> >> > _______________________________________________ >> >>> >> > users mailing list >> >>> >> > [email protected] >> >>> >> > http://lists.xwiki.org/mailman/listinfo/users >> >>> >> >> >>> >> >> >>> >> >> >>> >> -- >> >>> >> Thomas Mortagne >> >>> >> _______________________________________________ >> >>> >> users mailing list >> >>> >> [email protected] >> >>> >> http://lists.xwiki.org/mailman/listinfo/users >> >>> >> >> >>> > _______________________________________________ >> >>> > users mailing list >> >>> > [email protected] >> >>> > http://lists.xwiki.org/mailman/listinfo/users >> >>> >> >>> >> >>> >> >>> -- >> >>> Thomas Mortagne >> >>> _______________________________________________ >> >>> users mailing list >> >>> [email protected] >> >>> http://lists.xwiki.org/mailman/listinfo/users >> >>> >> >> _______________________________________________ >> >> users mailing list >> >> [email protected] >> >> http://lists.xwiki.org/mailman/listinfo/users >> > >> > >> > >> > -- >> > Thomas Mortagne >> >> >> >> -- >> Thomas Mortagne >> _______________________________________________ >> users mailing list >> [email protected] >> http://lists.xwiki.org/mailman/listinfo/users > _______________________________________________ > users mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/users -- Thomas Mortagne _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
