On Wed, 13 May 2009 17:51:41 +0200, Andreas Hartmann <[email protected]> wrote: > Hi André, > > Florent André schrieb: >> Hi, >> >> I try to add this : >> lenyaDoc.getRepositoryNode().getSession().commit(); (lenyaDoc is a >> o.a.l.cms.publication.Document object) >> >> between invoker A and invoker B. >> >> I have hope that it update the session... but I have the same error. > > do you think you could implement a unit test for this issue? This would > make it much easier to find the cause of the problem.
Heuuu, yes I will try. I have never do that before so preparing you to have some questions ! :) Do you think that I'm facing to a bug ? Regards > > Here's some information: > http://lenya.apache.org/docu20/tutorials/tests.html > > -- Andreas > > >> >> TIA >> >> Have a good day >> >> On Tue, 12 May 2009 19:16:53 +0200, Florent André >> <[email protected]> wrote: >>> On Tue, 12 May 2009 15:08:03 +0200, Andreas Hartmann >>> <[email protected]> >>> wrote: >>>> [[...]] >>>> >>>> My guess is that: >>>> >>>> * the second usecase invoker (let's call it B) initializes the session >>>> SB before the first usecase invoker is called >>>> >>>> * the changes which usecase invoker A makes to session SA are not >>>> visible in session SB >>>> >>>> * therefore the document in SB is still in authoring and the workflow >>>> transition can't fire >>>> >>>> Is this possible? Would you mind sending the complete code snippet? >>>> TIA! >>> This seems to me a very good possible explanation. >>> But with invoker I don't use a session explicitly (maybe the problem >> cause >>> ?). I set-up a session for the creation of the document and commit this >>> session at the end of doc creation. >>> >>> Here I send just send you the function that contain invoker. I can send >> the >>> full code of my lenyadoctransformer if needed (I hope to publish it one >> day >>> :) >>> >>> This piece of code is the actual result of many different test (the all >>> copy-past with 2 is the last)... so be gracefull please :) but i'm >>> really >>> open to all remark >>> >>> Here we go : >>> private void applyWorkflowState() >>> throws ProcessingException, SAXException{ >>> >>> UsecaseInvoker invoker = null; >>> try { >>> invoker = (UsecaseInvoker) >>> this.manager.lookup(UsecaseInvoker.ROLE); >>> Map params = new HashMap(); >>> //params.put(..., ...); >>> //invoker.invoke(getSourceUrl(), "publish", params); >>> //reportResult("","PROBLEM","USECASE >>> PROBLEM",lenyaDoc.getCanonicalDocumentURL(),lenyaDoc.getCanonicalWebappU\ >>> RL(),""); >>> invoker.invoke(lenyaDoc.getCanonicalWebappURL(), >>> "workflow.submit", params); >>> //invoker.invoke(lenyaDoc.getCanonicalWebappURL(), >>> "workflow.publish", params); >>> >>> if (invoker.getResult() != UsecaseInvoker.SUCCESS) { >>> /*A REMETTRE*/ >>> List messages = invoker.getErrorMessages(); >>> for (Iterator i = messages.iterator(); i.hasNext();) >> { >>> UsecaseMessage message = (UsecaseMessage) >> i.next(); >>> //addErrorMessage(message.getMessage(), >>> message.getParameters()); >>> reportResult("","PROBLEM","USECASE >>> >> PROBLEM",message.getMessage(),Arrays.toString(message.getParameters()),""); >>> } >>> } >>> } >>> catch( ServiceException se){ >>> >>> reportResult("","PROBLEM","ServiceException",se.getMessage(),"",""); >>> } >>> catch (UsecaseException ue){ >>> >>> reportResult("","PROBLEM","UsecaseException",ue.getMessage(),"",""); >>> } >>> finally { >>> if (invoker != null) { >>> this.manager.release(invoker); >>> } >>> } >>> >>> UsecaseInvoker invoker2 = null; >>> try { >>> UsecaseInvoker invoker2 = null; >>> try { >>> invoker2 = (UsecaseInvoker) >>> this.manager.lookup(UsecaseInvoker.ROLE); >>> Map params2 = new HashMap(); >>> //params.put(..., ...); >>> //invoker.invoke(getSourceUrl(), "publish", params); >>> //reportResult("","PROBLEM","USECASE >>> >> PROBLEM",lenyaDoc.getCanonicalDocumentURL(),lenyaDoc.getCanonicalWebappURL(),""); >>> //invoker.invoke(lenyaDoc.getCanonicalWebappURL(), >>> "workflow.submit", params); >>> invoker2.invoke(lenyaDoc.getCanonicalWebappURL(), >>> "workflow.publish", params2); >>> >>> if (invoker2.getResult() != UsecaseInvoker.SUCCESS) { >>> //A REMETTRE >>> List messages2 = invoker2.getErrorMessages(); >>> for (Iterator i2 = messages2.iterator(); >> i2.hasNext();) >>> { >>> UsecaseMessage message2 = (UsecaseMessage) >>> i2.next(); >>> //addErrorMessage(message2.getMessage(), >>> message2.getParameters()); >>> reportResult("","PROBLEM","USECASE >>> >> PROBLEM22",message2.getMessage(),Arrays.toString(message2.getParameters()),""); >>> } >>> } >>> } >>> catch( ServiceException se){ >>> >>> reportResult("","PROBLEM2","ServiceException",se.getMessage(),"",""); >>> } >>> catch (UsecaseException ue){ >>> >>> reportResult("","PROBLEM2","UsecaseException",ue.getMessage(),"",""); >>> } >>> finally { >>> if (invoker2 != null) { >>> this.manager.release(invoker2); >>> } >>> } >>> } >>> >>> Thanks for your help >>> >>> >>> >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: [email protected] >>> For additional commands, e-mail: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
