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.

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]


--
Andreas Hartmann, CTO
BeCompany GmbH
http://www.becompany.ch
Tel.: +41 (0) 43 818 57 01


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to