The addChild method also removes the node from its original parent. Therefore there should be a call to Iterator#remove between the call to Iterator#next and the invocation of addChild.
Andreas On Sun, Apr 15, 2012 at 10:48, Sadeep Jayasumana <[email protected]> wrote: > Hi, > > I'm able to reproduce the exception mentioned by Hiranya with a fresh online > build from the trunk (see [1] for the stack-trace). Culprit code snippet is > as follows: > > PayloadFactoryMediator.java > 69. SOAPBody soapBody = synCtx.getEnvelope().getBody(); > ..... > 84. for (Iterator itr = soapBody.getChildElements(); itr.hasNext();) { > 85. OMElement child = (OMElement) itr.next(); > 86. child.detach(); > 87. } > 88. > 89. for (Iterator itr = resultElement.getChildElements(); itr.hasNext();) > { > 90. OMElement child = (OMElement) itr.next(); > 91. soapBody.addChild(child); > 92. } > > I'm able to get rid of the exception at line 84 by replacing line 86 with > itr.remove(), but then the same exception occurs at line 89. > > Is this a wrong usage of Axiom API? Note that the same code snippet exists > within XSLTMediator.java. However, I'm unable to test the functionality of > that mediator because it's apparently broken due to some other issue (a > separate mail was fired on that). > > [1] > java.util.ConcurrentModificationException: The current node has been removed > using a method other than Iterator#remove() > at > org.apache.axiom.om.impl.traverse.OMAbstractIterator.hasNext(OMAbstractIterator.java:67) > at > org.apache.axiom.om.impl.traverse.OMFilterIterator.hasNext(OMFilterIterator.java:54) > at > org.apache.synapse.mediators.transform.PayloadFactoryMediator.mediate(PayloadFactoryMediator.java:84) > at > org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:60) > > > Thanks, > Sadeep > > On Sun, Apr 15, 2012 at 4:58 PM, Sadeep Jayasumana <[email protected]> > wrote: >> >> Hi, >> >> I will add some unit tests for PayloadFactory mediator. >> >> Thanks, >> Sadeep >> >> >> On Sat, Apr 14, 2012 at 9:08 PM, Andreas Veithen >> <[email protected]> wrote: >>> >>> That makes wonder if it is now considered standard practice in the >>> Synapse project to add new features without providing unit tests. >>> There is not a single unit test for PayloadFactoryMediator, although >>> it is really not hard to write such a unit test (there are lots of >>> examples in the code that show how to do that). >>> >>> Andreas >>> >>> On Wed, Apr 11, 2012 at 08:26, Hiranya Jayathilaka <[email protected]> >>> wrote: >>> > It looks like the PayloadFactory mediator is broken in latest trunk. >>> > I'm >>> > getting a concurrent modification exception. Possibly due to some >>> > change in >>> > Axiom side. Sadeep, will you have some time to look into this? >>> > >>> > Thanks >>> > -- >>> > Hiranya Jayathilaka >>> > Associate Technical Lead; >>> > WSO2 Inc.; http://wso2.org >>> > E-mail: [email protected]; Mobile: +94 77 633 3491 >>> > Blog: http://techfeast-hiranya.blogspot.com >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: [email protected] >>> For additional commands, e-mail: [email protected] >>> >> >> >> >> -- >> >> Sadeep Jayasumana >> >> Email: [email protected] >> >> Mobile: +61 4 1468 8521 >> >> > > > > -- > > Sadeep Jayasumana > > Email: [email protected] > > Mobile: +61 4 1468 8521 > > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
