Good stuff. I'll add a page to our website to capture this little detail.
Cheers, Dan Sorry to be brief, sent from my phone On 1 Apr 2014 15:35, "Erik de Hair" <[email protected]> wrote: > That helped! Most examples of Datanucleus/JDO are without the Isis part. I > found the transaction code in JDO update examples. > > Thanks a lot. Right now I only have my domain model problems to solve ;-) > > Erik > ________________________________________ > From: Dan Haywood [[email protected]] > Sent: Tuesday, April 01, 2014 4:10 PM > To: users > Subject: Re: Error returning from action > > 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) > > > > > >
