Oups... ;)
No I'm on 4.2, but I suppose I'll be on 5.x soon...
Le 26 sept. 2013 18:52, "Thomas Mortagne" <thomas.mortagne(a)xwiki.com> a
écrit :
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
<jeremie.bousquet(a)gmail.com> wrote:
> 2013/9/26 Thomas Mortagne <thomas.mortagne(a)xwiki.com>
>>
>> On Thu, Sep 26, 2013 at 5:13 PM, Thomas Mortagne
>> <thomas.mortagne(a)xwiki.com> wrote:
>> > On Thu, Sep 26, 2013 at 4:40 PM, Jeremie BOUSQUET
>> > <jeremie.bousquet(a)gmail.com> wrote:
>> >> 2013/9/26 Thomas Mortagne <thomas.mortagne(a)xwiki.com>
>> >>
>> >>> On Thu, Sep 26, 2013 at 1:08 PM, Jeremie BOUSQUET
>> >>> <jeremie.bousquet(a)gmail.com> wrote:
>> >>> > 2013/9/26 Thomas Mortagne <thomas.mortagne(a)xwiki.com>
>> >>> >
>> >>> >> On Thu, Sep 26, 2013 at 11:20 AM, Jeremie BOUSQUET
>> >>> >> <jeremie.bousquet(a)gmail.com> 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
>> >>> >> > users(a)xwiki.org
>> >>> >> >
http://lists.xwiki.org/mailman/listinfo/users
>> >>> >>
>> >>> >>
>> >>> >>
>> >>> >> --
>> >>> >> Thomas Mortagne
>> >>> >> _______________________________________________
>> >>> >> users mailing list
>> >>> >> users(a)xwiki.org
>> >>> >>
http://lists.xwiki.org/mailman/listinfo/users
>> >>> >>
>> >>> > _______________________________________________
>> >>> > users mailing list
>> >>> > users(a)xwiki.org
>> >>> >
http://lists.xwiki.org/mailman/listinfo/users
>> >>>
>> >>>
>> >>>
>> >>> --
>> >>> Thomas Mortagne
>> >>> _______________________________________________
>> >>> users mailing list
>> >>> users(a)xwiki.org
>> >>>
http://lists.xwiki.org/mailman/listinfo/users
>> >>>
>> >> _______________________________________________
>> >> users mailing list
>> >> users(a)xwiki.org
>> >>
http://lists.xwiki.org/mailman/listinfo/users
>> >
>> >
>> >
>> > --
>> > Thomas Mortagne
>>
>>
>>
>> --
>> Thomas Mortagne
>> _______________________________________________
>> users mailing list
>> users(a)xwiki.org
>>
http://lists.xwiki.org/mailman/listinfo/users
> _______________________________________________
> users mailing list
> users(a)xwiki.org
>
http://lists.xwiki.org/mailman/listinfo/users
--
Thomas Mortagne
_______________________________________________
users mailing list
users(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/users