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).
>
>>
>>
>>>
>>> >
>>> >
>>> >>
>>> >> >
>>> >> > 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