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.

>
>
>>
>> >
>> >
>> >>
>> >> >
>> >> > 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
_______________________________________________
users mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/users

Reply via email to