Hi Joe,

I finally got back to this one and pushed the change with some minor whitespace 
diffs.

Thanks
Christoph

> -----Original Message-----
> From: Joe Wang [mailto:huizhe.w...@oracle.com]
> Sent: Montag, 28. November 2016 20:06
> To: Langer, Christoph <christoph.lan...@sap.com>
> Cc: core-libs-dev@openjdk.java.net
> Subject: Re: RFR: 8169631: [JAXP] XALAN: transformation of XML via
> namespace-unaware SAX input yields a different result than namespace-
> unaware DOM input
> 
> Hi Christoph,
> 
> The changes look good. I also run the other tests (smoke test and etc.),
> and they all passed.
> 
> Best,
> Joe
> 
> On 11/25/16, 4:25 AM, Langer, Christoph wrote:
> > Hi Joe,
> >
> > when trying to finish this up, I had a closer look again.
> >
> > I found out that it's necessary to look at attributes as well and handle 
> > the case
> where namespace prefixes are used.
> >
> > Here is a new version of the changeset that passes all jaxp jtreg tests:
> > http://cr.openjdk.java.net/~clanger/webrevs/8169631.1/
> >
> > Now I would also throw out prefixes in localName if we don't have
> namespace support - for both, elements and attributes (in
> SAX2DTM2.startElement()).
> >
> > I also removed some qname handling in DOM2SAX as it is not needed with
> my changes to SAX2DTM2 anymore.
> >
> > The test case was adopted.
> >
> > Thanks&  best regards
> > Christoph
> >
> >> -----Original Message-----
> >> From: Joe Wang [mailto:huizhe.w...@oracle.com]
> >> Sent: Dienstag, 22. November 2016 20:11
> >> To: Langer, Christoph<christoph.lan...@sap.com>
> >> Cc: core-libs-dev@openjdk.java.net
> >> Subject: Re: RFR: 8169631: [JAXP] XALAN: transformation of XML via
> >> namespace-unaware SAX input yields a different result than namespace-
> >> unaware DOM input
> >>
> >> Hi Christoph,
> >>
> >> Once you're able to run all tests, feel free to push the changeset.
> >> Frank has fixed the Smoke test.
> >>
> >> Thanks,
> >> Joe
> >>
> >> On 11/18/16, 3:37 PM, Joe Wang wrote:
> >>> Hi Christoph,
> >>>
> >>> Thanks for explaining the customer's dilemma with regard to their
> >>> legacy process.
> >>>
> >>> The testcase I sent you was extracted from an internal SQE smoke test.
> >>> I agree with your analysis, the 'golden' file which has been in there
> >>> for over 10 years turns out to be wrong and needs to be updated.
> >>>
> >>> To fix this issue, we need to get that test fixed, and the check-in of
> >>> your patch and that of the test need needs to happen simultaneously.
> >>> Would you mind wanting for me to go through an internal process to get
> >>> a patch ready, then we can check in almost at the same time?
> >>>
> >>> Best,
> >>> Joe
> >>>
> >>> On 11/18/16, 2:51 PM, Langer, Christoph wrote:
> >>>> Hi Joe,
> >>>>
> >>>> thanks for the feedback.
> >>>>
> >>>> I've now understood the testcase that you've sent over and the reason
> >>>> that it is reporting failure after my fix is that the output of its
> >>>> transform operation is rather correct now. And before it was wrong. :)
> >>>> The test is comparing the actual result to a "golden" result file in
> >>>> the end and both of these were not looking healthy so far. The reason
> >>>> is that your test is using a namespace unaware SAX Parser as input.
> >>>> With the current JDK XALAN, you could already modify your smoketest
> >>>> to use a namespace aware parser.
> >>>>
> >>>> E.g. replace lines
> >>>>
> >>>> 82        // Use the JAXP way to get an XMLReader
> >>>> 83        XMLReader reader =
> >>>> SAXParserFactory.newInstance().newSAXParser().getXMLReader();
> >>>>
> >>>> with
> >>>>
> >>>> 82        // Use the JAXP way to get an XMLReader
> >>>> 83        SAXParserFactory spf = SAXParserFactory.newInstance();
> >>>> 84        spf.setNamespaceAware(true);
> >>>> 85        XMLReader reader = spf.newSAXParser().getXMLReader();
> >>>>
> >>>> ...and you would already get correct results that also DOM input or
> >>>> Stream Input would yield.
> >>>>
> >>>> So, are there other concerns/issues with this fix? Do you want me to
> >>>> include a transformation operation like the one that your SmokeTest
> >>>> does to TransformerTest which would illustrate the problem with
> >>>> namespace unaware SAX input data?
> >>>>
> >>>> Best regards
> >>>> Christoph
> >>>>
> >>>>> -----Original Message-----
> >>>>> From: Joe Wang [mailto:huizhe.w...@oracle.com]
> >>>>> Sent: Freitag, 18. November 2016 05:53
> >>>>> To: Langer, Christoph<christoph.lan...@sap.com>
> >>>>> Cc: core-libs-dev@openjdk.java.net
> >>>>> Subject: Re: RFR: 8169631: [JAXP] XALAN: transformation of XML via
> >>>>> namespace-unaware SAX input yields a different result than namespace-
> >>>>> unaware DOM input
> >>>>>
> >>>>>
> >>>>>
> >>>>> On 11/14/16, 11:43 PM, Langer, Christoph wrote:
> >>>>>> Hi Joe,
> >>>>>>
> >>>>>> thanks for looking.
> >>>>>>
> >>>>>> Can you let me know which smoke test is failing? I didn't see
> >>>>>> issues so far - I
> >>>>> was merely running the jtreg unittests for transformer.
> >>>>>
> >>>>> I sent the test to your mailbox.
> >>>>>> I stepped back from replacing Vector with ArrayList for
> >>>>>> m_prefixMappings
> >>>>> because the code is using methods indexOf() with a start index and
> >>>>> setSize() for
> >>>>> which ArrayList has no direct matchings. One could, for sure, add
> >>>>> some other
> >>>>> coding, e.g. use ArrayList's subList() method for the index based
> >>>>> search - but I
> >>>>> wouldn't want to run the risk of adding a regression here just
> >>>>> because I
> >>>>> modified the code and did not well test it. But if you insist, I
> >>>>> could have another
> >>>>> look.
> >>>>>
> >>>>> Ok, that's fine. subList would do, but setSize may need a bit more
> >>>>> work.
> >>>>>
> >>>>> Best,
> >>>>> Joe
> >>>>>> Best regards
> >>>>>> Christoph
> >>>>>>
> >>>>>>> -----Original Message-----
> >>>>>>> From: Joe Wang [mailto:huizhe.w...@oracle.com]
> >>>>>>> Sent: Dienstag, 15. November 2016 03:23
> >>>>>>> To: Langer, Christoph<christoph.lan...@sap.com>
> >>>>>>> Cc: core-libs-dev@openjdk.java.net
> >>>>>>> Subject: Re: RFR: 8169631: [JAXP] XALAN: transformation of XML via
> >>>>>>> namespace-unaware SAX input yields a different result than
> namespace-
> >>>>>>> unaware DOM input
> >>>>>>>
> >>>>>>> Hi Christoph,
> >>>>>>>
> >>>>>>> Not all tests have finished yet, but there's at least one failure
> >>>>>>> in the
> >>>>>>> smoke test. I'll get to the details when I have time.
> >>>>>>>
> >>>>>>> Any reason why m_prefixMappings can not be replaced with
> ArrayList?
> >>>>>>>
> >>>>>>> Thanks,
> >>>>>>> Joe
> >>>>>>>
> >>>>>>> On 11/14/16, 6:10 AM, Langer, Christoph wrote:
> >>>>>>>> Hi,
> >>>>>>>>
> >>>>>>>> please review this fix for bug 8169631.
> >>>>>>>>
> >>>>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8169631
> >>>>>>>> Webrev: http://cr.openjdk.java.net/~clanger/webrevs/8169631.0/
> >>>>>>>>
> >>>>>>>> When XALAN is handling namespace unaware input, it behaves
> >>>>>>>> differently
> >>>>>>> while using SAX input compared to DOM input.
> >>>>>>>> With both input source types, the class
> >>>>>>> com.sun.org.apache.xml.internal.dtm.ref.sax2dtm.SAX2DTM2
> converts
> >> SAX
> >>>>>>> input into a DTM representation for processing by the XALAN
> >>>>>>> transformer.
> >>>>> Its
> >>>>>>> method startElement takes URI, localname and qName as attribute.
> >>>>>>> In case
> >>>>> of
> >>>>>>> missing feature namespaces, startElement and localname can be
> empty.
> >>>>>>> However, the function uses the localname value for the call to
> >>>>>>> m_expandedNameTable.getExpandedTypeID() and further processing.
> In
> >>>>>>> the
> >>>>>>> case where only qName has data, this leads to issues.
> >>>>>>>> When using DOM input, the class
> >>>>>>> com.sun.org.apache.xalan.internal.xsltc.trax.DOM2SAX converts the
> >> DOM
> >>>>> input
> >>>>>>> into SAX input. In the case of empty localname, it fills localname
> >>>>>>> with qname
> >>>>>>> data. See method getLocalName() [1], called by parse() [2].
> >>>>>>>> When directly using SAX input, the SAX parser calls the
> >>>>>>>> startElement()
> >>>>>>> function on XALAN's handler with empty uri and localname - which
> >>>>>>> seems
> >>>>>>> correct, as per the spec.
> >>>>>>>> Both paths end up in SAX2DTM2's startElement(). So I suggest to
> >>>>>>>> change
> >>>>> this
> >>>>>>> method to handle the case when uri and localname are empty and
> >>>>>>> then set
> >>>>>>> qname as localname. Maybe one should even change DOM2SAX's
> >>>>>>> getLocalName handling to not fill localname with qname in case it
> >>>>>>> is empty
> >>>>>>> after SAX2DTM was changed..
> >>>>>>>> Generally, JavaDoc for SAXSource says that "Attempting to
> >>>>>>>> transform an
> >>>>> input
> >>>>>>> source that is not generated with a namespace-aware parser may
> >>>>>>> result in
> >>>>>>> errors." But why not fix some of these :)
> >>>>>>>> Furthermore I did some cleanups in the code.
> >>>>>>>>
> >>>>>>>> Thanks and best regards
> >>>>>>>> Christoph
> >>>>>>>>
> >>>>>>>> [1]
> >>
> http://hg.openjdk.java.net/jdk9/dev/jaxp/file/71558b38bad7/src/java.xml/shar
> >>>>>
> >>
> e/classes/com/sun/org/apache/xalan/internal/xsltc/trax/DOM2SAX.java#l139
> >>>>>>>> [2]
> >>
> http://hg.openjdk.java.net/jdk9/dev/jaxp/file/71558b38bad7/src/java.xml/shar
> >>>>>
> >>
> e/classes/com/sun/org/apache/xalan/internal/xsltc/trax/DOM2SAX.java#l279
> >>>>>>>> [3]
> >>
> https://docs.oracle.com/javase/8/docs/api/javax/xml/transform/sax/SAXSource
> >>>>>>> .html

Reply via email to