On Thu, Nov 20, 2014 at 10:45 PM, Stefan
Bernsdorf
<gruener.heinrich(a)web.de> wrote:
>
> Thomas,
> thanks. I managed to build my thread as an XWiki Job and also managed
> to
> add
> it to the JobExecutor.
> However, my initial problem still persists.
> I am not able to add an attachment to a document in this job.
> Find the stack trace below. Looking at the source of
> XWikiHibernateBaseStore
> tells me, it has something to do with the Execution context of the Job,
> but
> this should be managed by the job executor, right?
> This is my code snip to add the attachment:
> XWikiContext mycon = (XWikiContext)
> execution.getContext().getProperty("xwikicontext");
The ExecutionContext is initialized automatically but XWikiContext is
something else and you should never try to get it directly from the
ExecutionContext but use the provider instead as in:
@Inject
private Provider<XWikiContext> xcontextProvider;
> XWikiDocument doc=mycon.getWiki().getDocument(m_adoc,
> mycon);
> XWikiAttachment att=doc.getAttachment(m_file);
> if (att!=null) {
> doc.deleteAttachment(att,mycon);
> att=null;
> }
> if (att==null) {
> att=doc.addAttachment(m_file,ins ,mycon);
> XWikiAttachmentStoreInterface
> ai=doc.getAttachmentStore(mycon);
> XWikiHibernateAttachmentStore
> hib=(XWikiHibernateAttachmentStore)ai;
> hib.beginTransaction(mycon);
> ai.saveAttachmentContent(att, mycon, true);
> hib.endTransaction(mycon,true);
> att.updateContentArchive(mycon);
> }
>
>
> This is the stack trace:
> com.xpn.xwiki.XWikiException: Error number 3301 in 3: Exception while
> switching to database xwiki
> at
>
>
>
com.xpn.xwiki.store.XWikiHibernateBaseStore.setDatabase(XWikiHibernateBaseStore.java:739)
> ~[xwiki-platform-legacy-oldcore-6.2.1.jar:na]
> at
>
>
>
com.xpn.xwiki.store.XWikiHibernateBaseStore.beginTransaction(XWikiHibernateBaseStore.java:911)
> ~[xwiki-platform-legacy-oldcore-6.2.1.jar:na]
> at
>
>
>
com.xpn.xwiki.store.XWikiHibernateBaseStore.beginTransaction(XWikiHibernateBaseStore.java:811)
> ~[xwiki-platform-legacy-oldcore-6.2.1.jar:na]
> at
> org.centauron.xwiki.help.XWikiUpload.doCommand(XWikiUpload.java:68)
> ~[centauron_xwiki.jar:na]
> at
> org.centauron.ant.TestScript.executeExtraData(TestScript.java:208)
> ~[centauron_xwiki.jar:na]
> at org.centauron.ant.TestProcess.doPost(TestProcess.java:249)
> ~[centauron_xwiki.jar:na]
> at org.centauron.ant.TestProcess.start(TestProcess.java:228)
> ~[centauron_xwiki.jar:na]
> at
> org.centauron.xwiki.job.XWikiAntJob.internalCall(XWikiAntJob.java:112)
> [centauron_xwiki.jar:na]
> at
> org.centauron.xwiki.job.XWikiAntJob.doStart(XWikiAntJob.java:98)
> [centauron_xwiki.jar:na]
> at org.centauron.xwiki.job.XWikiAntJob.run(XWikiAntJob.java:41)
> [centauron_xwiki.jar:na]
> at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown
> Source)
> [na:1.8.0_05]
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown
> Source)
> [na:1.8.0_05]
> at java.lang.Thread.run(Unknown Source) [na:1.8.0_05]
> Caused by: java.lang.NullPointerException: null
> at
>
>
>
com.xpn.xwiki.store.migration.AbstractDataMigrationManager.getXWikiContext(AbstractDataMigrationManager.java:282)
> ~[xwiki-platform-legacy-oldcore-6.2.1.jar:na]
> at
>
>
>
com.xpn.xwiki.store.migration.AbstractDataMigrationManager.getDataMigrationStatus(AbstractDataMigrationManager.java:406)
> ~[xwiki-platform-legacy-oldcore-6.2.1.jar:na]
> at
>
>
>
com.xpn.xwiki.store.migration.AbstractDataMigrationManager.getDatabaseStatus(AbstractDataMigrationManager.java:548)
> ~[xwiki-platform-legacy-oldcore-6.2.1.jar:na]
> at
>
>
>
com.xpn.xwiki.store.migration.AbstractDataMigrationManager.checkDatabase(AbstractDataMigrationManager.java:516)
> ~[xwiki-platform-legacy-oldcore-6.2.1.jar:na]
> at
>
>
>
com.xpn.xwiki.store.XWikiHibernateBaseStore.setDatabase(XWikiHibernateBaseStore.java:735)
> ~[xwiki-platform-legacy-oldcore-6.2.1.jar:na]
> ... 12 common frames omitted
> Am 20.11.2014 10:31, schrieb Thomas Mortagne:
>
>> Everything in XWiki is based on JobExecutor now so I can assure you it
>> does not wait. Maybe your job is doing something slow in initialize.
>>
>> On Thu, Nov 20, 2014 at 10:24 AM, Stefan Bernsdorf
>> <gruener.heinrich(a)web.de> wrote:
>>>
>>> Thomas,
>>> if I start a job using
>>> jobExecutor.execute("antjob", req);
>>> it waits until the job is finished.
>>>
>>> Am 20.11.2014 09:44, schrieb Thomas Mortagne:
>>>
>>>> As indicated in the javadoc of JobExecutor all jobs are executed
>>>> asychronously. You actually need to use Job#join when you want to
>>>> wait.
>>>>
>>>> On Thu, Nov 20, 2014 at 9:38 AM, Stefan Bernsdorf
>>>> <gruener.heinrich(a)web.de> wrote:
>>>>>
>>>>> Hi,
>>>>> I have seen that the jobManager is deprecated since 6.1.
>>>>> But how would I schedule a job and return immediately using the
>>>>> jobExecutor?
>>>>> (Using the jobManager it would be something like :
>>>>> Job job = jobManager.addJob("jobtype", request))
>>>>> Thanks , Stefan.
>>>>> _______________________________________________
>>>>> 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
>>
>>
>>
> _______________________________________________
> users mailing list
> users(a)xwiki.org
>
http://lists.xwiki.org/mailman/listinfo/users
_______________________________________________
users mailing list
users(a)xwiki.org