Hi Erik,

I'm pretty sure that it's your direct use of the currentTransaction().begin
and .commit() that's tripping up Isis.

Every action invocation (in fact, every interaction) is automatically
wrapped in a transaction, and any repository query automatically does a
flush.

If you simply miss out those calls to beginTran and commit(), does it work?
 Or have you "been there, done that" and there's a reason you chose to add
them?

Thx
Dan



On 1 April 2014 14:27, Erik de Hair <[email protected]> wrote:

> The actions creates a new company with the users company as the parent
> (reseller). There's a nested set JDO implementation for managing a company
> tree. The nested set is updated by the mentioned parent.addChild(childNode).
>
> I'm new to JDO. Try to execute a bulk update by modifying selected
> entities during an transaction.
>
>         List<CompanyNode> rightNodes =
> (List<CompanyNode>)qLeft.executeList();
>         // actual update
>         nsm.getPersistenceManager().currentTransaction().begin();
>         for (CompanyNode node : rightNodes) {
>            int newRight = node.getRightValue()+delta;
>                         node.setRightValue(newRight);
>                 }
>         nsm.getPersistenceManager().currentTransaction().commit();
>
>
>
> // action
> public AbstractCompany create(
>             final @Named("Bedrijfsnaam") String name,
>             final @Named("Is reseller") @Optional Boolean isReseller) {
>         AbstractCompany obj;
>         Company usersCompany =
> findCompanyRepresentedByUser(getUser().getName());
>
>         if(isReseller != null && isReseller){
>                 obj = newTransientInstance(Company.class);
>                 obj.setName(name);
>                 obj.setReseller(true);
>         } else {
>                 obj = newTransientInstance(EndUser.class);
>                 ((EndUser)obj).setReseller(usersCompany);
>                 obj.setReseller(false);
>                 obj.setName(name);
>         }
>         // create nestedSetElement for the new company
>         CompanyNode childNode = newTransientInstance(CompanyNode.class);
>         childNode.setName(obj.getName());
>         childNode.setCompany(obj);
>
>         Node<CompanyNode> parent =
> getNestedSetManager().getNode(usersCompany.getCompanyNode());
>         parent.addChild(childNode);
>         // Necessary?
>         obj.setCompanyNode(childNode);
>         persistIfNotAlready(obj);
>         persistIfNotAlready(parent);
>         return obj;
>     }
> ________________________________________
> From: Dan Haywood [[email protected]]
> Sent: Tuesday, April 01, 2014 3:11 PM
> To: users
> Subject: Re: Error returning from action
>
> Doesn't look right, that's for sure.
>
> Can you provide some more detail - what's in the action's implementation?
>
> Thx
> Dan
>
>
>
> On 1 April 2014 14:09, Erik de Hair <[email protected]> wrote:
>
> > Hello Isis users,
> >
> > I've got a problem popping up after returning from an action. Any one got
> > a clue?
> >
> > Thanks,
> > Erik
> >
> > Caused by: java.lang.IllegalStateException: illegal argument, expected:
> is
> > <true>
> > at
> >
> org.apache.isis.core.commons.ensure.Ensure.ensureThatState(Ensure.java:93)
> > at
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusObjectStore.ensureInHibernateTransaction(DataNucleusObjectStore.java:641)
> > at
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusObjectStore.ensureInTransaction(DataNucleusObjectStore.java:627)
> > at
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusObjectStore.execute(DataNucleusObjectStore.java:338)
> > at
> >
> org.apache.isis.core.runtime.system.transaction.IsisTransaction.doFlush(IsisTransaction.java:388)
> > at
> >
> org.apache.isis.core.runtime.system.transaction.IsisTransaction.flush(IsisTransaction.java:337)
> > at
> >
> org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.flushTransaction(IsisTransactionManager.java:298)
> > at
> >
> org.apache.isis.viewer.wicket.ui.components.actions.ActionPanel.executeActionOnTargetAndProcessResults(ActionPanel.java:210)
> > at
> >
> org.apache.isis.viewer.wicket.ui.components.actions.ActionPanel.executeActionAndProcessResults(ActionPanel.java:165)
> > at
> >
> org.apache.isis.viewer.wicket.ui.components.actions.ActionParametersFormPanel$ActionParameterForm$1.onSubmit(ActionParametersFormPanel.java:160)
> > at org.apache.wicket.markup.html.form.Form.delegateSubmit(Form.java:1253)
> > at org.apache.wicket.markup.html.form.Form.process(Form.java:925)
> > at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:771)
> > at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:704)
> >
>

Reply via email to