I will try to debug it today.
Bill

On Tue, Jun 23, 2009 at 1:07 AM, indika kumara <indika.k...@gmail.com>wrote:

> But bill my change only with resources picked from the registry. This issue
> seems with XPath on Payload ...It is impossible to correlate those two .
> Could you re-check please?
>
> On Tue, Jun 23, 2009 at 10:34 AM, indika kumara <indika.k...@gmail.com>wrote:
>
>>
>> Bill I will check .. Thanks for pointing out issue .
>>
>> Thanks
>> Inidka
>>
>> On Tue, Jun 23, 2009 at 2:58 AM, Bill Harts <prgt...@gmail.com> wrote:
>>
>>> Hi Guys:
>>>
>>> I'm not sure but I believe something has broken with using xpath
>>> expressions in a log mediator possibly related to your recent changes.  I
>>> think this was working until I downloaded yesterday's snapshot I was using a
>>> 3-week old snapshot).
>>>
>>> Here's the code from my my mediator file:
>>>
>>> <!-- If there's a sessionID attribute in the message this must be a 
>>> response to a Login -->
>>> <filter 
>>> xpath="boolean(//cfl:LoginResponse/cfl:LoginResponseData/@sessionID)" 
>>> xmlns:cfl="http://www.harts.com/cfl"; >
>>>
>>>
>>>      <log level="custom">
>>>
>>>
>>>          <property name="sessID" 
>>> expression="//cfl:LoginResponse/cfl:LoginResponseData/@sessionID" 
>>> xmlns:cfl="http://www.harts.com/cfl"/>
>>>
>>>
>>>      </log>
>>>
>>>      <!-- Other logic goes here -->
>>>
>>>
>>> </filter>
>>>
>>> It passes the filter test but the log mediator just displays "sessID=".
>>> Since the expressions in the filter and log mediators are the same I don't
>>> think this should happen.
>>>
>>> Bill
>>>
>>>
>>> On Sun, Jun 21, 2009 at 1:11 PM, indika kumara <indika.k...@gmail.com>wrote:
>>>
>>>> Hi Saliya
>>>>
>>>> This Use case scenario is related with XPath evaluation on the
>>>> resources picked from the registry. After reading the resource we
>>>> close input stream as it is needed.
>>>>
>>>> In this use case, parent is always an OMDocument.
>>>>
>>>> For both following code, you get ‘org.apache.axiom.om.OMException:
>>>> com.ctc.wstx.exc.WstxIOException: Stream closed’.
>>>>
>>>> 1)     remove result.detach()
>>>>
>>>> 2)     replace result.detach() with  result.build()
>>>>
>>>> (Please refers SimpleURLRegistry.java)
>>>>
>>>> Note that here ‘result = builder.getDocumentElement();’ and it is not
>>>> builder.getDocument(). If It is possible to call build() method on
>>>> OMDocument this issue (‘Stream closed’) may not be occurred (I didn’t
>>>> look at AXIOM code).  As Andreas pointed out ‘OMDocument has no method
>>>> to build the entire tree and detach() do that as a side effect”.
>>>>
>>>> I didn't look at deep but feel current possible solutions are what
>>>> Andreas suggested.
>>>>
>>>> Thanks
>>>> Indika
>>>>
>>>> On Sun, Jun 21, 2009 at 5:31 PM, Saliya Ekanayake <esal...@gmail.com>
>>>> wrote:
>>>> >
>>>> > Hi Indika,
>>>> >
>>>> > I tested your point and found the cause. Simply, in the second case
>>>> there is no parent for the root element. Therefore, evaluating an XPath
>>>> containing <hello> element will cause an exception. But if you evaluate an
>>>> XPath like, //anotherthing/insideanother, you will get the desired result.
>>>> >
>>>> > So the solution I would like to suggest in this case is to first check
>>>> the parent of the element. If the parent is an instance of OMDocument then
>>>> we need not detach (if you need to build then just use OMNode#build()). If
>>>> the parent is an instance of OMElement then you need to detach since you
>>>> want the element to be isolated from the connecting tree.
>>>> >
>>>> > Thanks,
>>>> > Saliya
>>>> >
>>>> > On Sun, Jun 21, 2009 at 11:06 AM, indika kumara <
>>>> indika.k...@gmail.com> wrote:
>>>> >>
>>>> >>         Hi Saliya
>>>> >>
>>>> >>         Following shown my scenarios.
>>>> >>
>>>> >>
>>>> >>        Scenario 1  - without detach on root element
>>>> >>
>>>> >>         String str = "<hello><something>wow
>>>> nice</something><anotherthing><insideanother>great</insideanother></anotherthing></hello>";
>>>> >>         XMLStreamReader parser = XMLInputFactory.newInstance().
>>>> >>                 createXMLStreamReader(new
>>>> ByteArrayInputStream(str.getBytes()));
>>>> >>         StAXOMBuilder builder = new StAXOMBuilder(parser);
>>>> >>         OMElement root = builder.getDocumentElement();
>>>> >> //        root.detach();
>>>> >>
>>>> >>         AXIOMXPath xpath = new AXIOMXPath("//hello/something");
>>>> >>         OMElement node = (OMElement) xpath.selectSingleNode(root);
>>>> >>         System.out.println(node == null);
>>>> >>         if (node != null) {
>>>> >>             System.out.println(node.getText());
>>>> >>         }
>>>> >>
>>>> >>
>>>> >>       Out put :
>>>> >>
>>>> >>        false
>>>> >>        wow nice
>>>> >>
>>>> >>
>>>> >>        Scenario 2 - with  detach on root element
>>>> >>
>>>> >>         String str = "<hello><something>wow
>>>> nice</something><anotherthing><insideanother>great</insideanother></anotherthing></hello>";
>>>> >>         XMLStreamReader parser = XMLInputFactory.newInstance().
>>>> >>                 createXMLStreamReader(new
>>>> ByteArrayInputStream(str.getBytes()));
>>>> >>         StAXOMBuilder builder = new StAXOMBuilder(parser);
>>>> >>         OMElement root = builder.getDocumentElement();
>>>> >>         root.detach();
>>>> >>
>>>> >>         AXIOMXPath xpath = new AXIOMXPath("//hello/something");
>>>> >>         OMElement node = (OMElement) xpath.selectSingleNode(root);
>>>> >>         System.out.println(node == null);
>>>> >>         if (node != null) {
>>>> >>             System.out.println(node.getText());
>>>> >>         }
>>>> >>
>>>> >>        Output
>>>> >>
>>>> >>        true
>>>> >>
>>>> >>
>>>> >>    In second case , XPath  have not been evaluated correctly.
>>>> >>
>>>> >> Thanks
>>>> >> Indika
>>>> >>
>>>> >> On Sat, Jun 20, 2009 at 9:40 PM, Saliya Ekanayake <esal...@gmail.com>
>>>> wrote:
>>>> >>>
>>>> >>> Hi,
>>>> >>>
>>>> >>> Um, I am not really clarified with the problem here. I agree that
>>>> the full tree should be built before we can evaluate XPath. Adding the
>>>> element to a new OMDocument, however, just to get this done seems not 
>>>> right.
>>>> Additionally, the original OMDocument created by the builder will be there
>>>> even if you detach the element. Detach will only remove the element from 
>>>> the
>>>> tree to which it belongs. To check this, you can get the builder from the
>>>> detached element and ask for the OMDocument.  IMHO, we can call
>>>> result.build() if necessary.
>>>> >>>
>>>> >>> Btw. I am not clear why XPath doesn't work on the detached element.
>>>> I did a simple test as follows and XPath worked, may be I have missed
>>>> something (please let me know if so).
>>>> >>>
>>>> >>>     public static void main(String[] args) throws
>>>> XMLStreamException, JaxenException {
>>>> >>>         String str = "<hello><something>wow
>>>> nice</something><anotherthing><insideanother>great</insideanother></anotherthing></hello>";
>>>> >>>         StAXOMBuilder builder = new StAXOMBuilder(new
>>>> ByteArrayInputStream(str.getBytes()));
>>>> >>>         OMElement root = builder.getDocumentElement();
>>>> >>>
>>>> >>>         OMDocument doc = builder.getDocument();
>>>> >>>         System.out.println(doc == null);
>>>> >>>
>>>> >>>         OMElement anotherthing = root.getFirstChildWithName(new
>>>> QName("anotherthing"));
>>>> >>>         anotherthing.detach();
>>>> >>>
>>>> >>>         doc =
>>>> ((StAXOMBuilder)anotherthing.getBuilder()).getDocument();
>>>> >>>         System.out.println(doc == null);
>>>> >>>
>>>> >>>         AXIOMXPath xpath = new AXIOMXPath("//insideanother");
>>>> >>>         OMElement node = (OMElement)
>>>> xpath.selectSingleNode(anotherthing);
>>>> >>>         System.out.println(node.getText());
>>>> >>>     }
>>>> >>>
>>>> >>> Thanks,
>>>> >>> Saliya
>>>> >>>
>>>> >>> On Sat, Jun 20, 2009 at 4:45 AM, Andreas Veithen <
>>>> andreas.veit...@gmail.com> wrote:
>>>> >>>>
>>>> >>>> StAXOMBuilder actually already creates an OMDocument (which can be
>>>> >>>> retrieved by the getDocument method). The important thing is that
>>>> we
>>>> >>>> need to make sure that the Axiom tree is fully built before closing
>>>> >>>> the input stream. I guess that the detach method is used because it
>>>> >>>> has the side effect of fully building the element and because
>>>> >>>> OMDocument has no method to build the entire tree (see
>>>> WSCOMMONS-479).
>>>> >>>>
>>>> >>>> This gives us two solutions:
>>>> >>>>
>>>> >>>> - Use StAXOMBuilder#getDocument and iterate over its children to
>>>> make
>>>> >>>> sure the document is fully built.
>>>> >>>> - Continue to use "detach" and add the element to a new document,
>>>> as
>>>> >>>> you suggested. Note that you should not use OMDocumentImpl
>>>> directly,
>>>> >>>> but create it using the OMFactory.
>>>> >>>>
>>>> >>>> Andreas
>>>> >>>>
>>>> >>>> On Fri, Jun 19, 2009 at 09:30, indika kumara<indika.k...@gmail.com>
>>>> wrote:
>>>> >>>> > Devs
>>>> >>>> >
>>>> >>>> > $subject is due to we do  'detach()'  on picked resource
>>>> OMElement .
>>>> >>>> > If I add detached element to a OMDocument as a child, it works
>>>> >>>> >
>>>> >>>> > Existing code  SImpleURLRegistry
>>>> >>>> >
>>>> >>>> > result.detach();
>>>> >>>> > inputStream.close();
>>>> >>>> >
>>>> >>>> >
>>>> >>>> > Modified code
>>>> >>>> >
>>>> >>>> > result.detach();
>>>> >>>> > OMDocumentImpl omDocument = new OMDocumentImpl();
>>>> >>>> > omDocument.addChild(result);
>>>> >>>> > inputStream.close();
>>>> >>>> >
>>>> >>>> >
>>>> >>>> > Are there any best solution other than what I did ?  I haven't
>>>> deep
>>>> >>>> > AXIOM knowledge?  Could anyone help me?
>>>> >>>> >
>>>> >>>> > Thanks
>>>> >>>> > Indika
>>>> >>>> >
>>>> >>>> >
>>>> ---------------------------------------------------------------------
>>>> >>>> > To unsubscribe, e-mail: dev-unsubscr...@synapse.apache.org
>>>> >>>> > For additional commands, e-mail: dev-h...@synapse.apache.org
>>>> >>>> >
>>>> >>>> >
>>>> >>>>
>>>> >>>>
>>>> ---------------------------------------------------------------------
>>>> >>>> To unsubscribe, e-mail: dev-unsubscr...@synapse.apache.org
>>>> >>>> For additional commands, e-mail: dev-h...@synapse.apache.org
>>>> >>>>
>>>> >>>
>>>> >>>
>>>> >>>
>>>> >>> --
>>>> >>> Saliya Ekanayake
>>>> >>> http://www.esaliya.blogspot.com
>>>> >>> http://www.esaliya.wordpress.com
>>>> >>
>>>> >
>>>> >
>>>> >
>>>> > --
>>>> > Saliya Ekanayake
>>>> > http://www.esaliya.blogspot.com
>>>> > http://www.esaliya.wordpress.com
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: dev-unsubscr...@synapse.apache.org
>>>> For additional commands, e-mail: dev-h...@synapse.apache.org
>>>>
>>>>
>>>
>>
>

Reply via email to