tomcat-taglibs-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Matthew Broadhead <matthew.broadh...@nbmlaw.co.uk>
Subject Re: xalan usage in taglibs
Date Sun, 26 Nov 2017 22:17:38 GMT
So to run the tests I could reverse the changes of the commit and then 
update to javax.xml.* and run tests?

I am still struggling a bit to understand exactly what is happening wrt 
VariableStack and how I can change over to XPathVariableResolver.  And 
also don't see a way to replace XBoolean, XNumber, XString etc...

I will keep trying things.   Can I come back to you with specific queries?

On 26/11/2017 17:33, Jeremy Boynes wrote:
> On Nov 26, 2017, at 6:32 AM, Matthew Broadhead <matthew.broadhead@nbmlaw.co.uk>
wrote:
>> Hi,
>> I am currently evaluating whether the Xalan dependency can be dropped from taglibs
and replaced with javax.xml.*.
>>
>> The reason for this is a conflict which occurs when I have Apache Fop as a dependency:
>> java.lang.ClassCastException: org.apache.xml.dtm.ref.DTMManagerDefault cannot be
cast to org.apache.xml.dtm.DTMManager
>>      at org.apache.xml.dtm.DTMManager.newInstance(DTMManager.java:137)
>>      at org.apache.xpath.XPathContext.<init>(XPathContext.java:102)
>>      at org.apache.xpath.XPathContext.<init>(XPathContext.java:349)
>>      at org.apache.xpath.XPathContext.<init>(XPathContext.java:337)
>>      at org.apache.xalan.transformer.TransformerImpl.<init>(TransformerImpl.java:397)
>>      at org.apache.xalan.templates.StylesheetRoot.newTransformer(StylesheetRoot.java:200)
>>
>> In org.apache.taglibs.standard.tag.common.xml it seems like org.apache.xpath.XPath
could be replaced with javax.xml.xpath.XPathExpression.
>>
>> But the thing I don't understand is the method getContext in org.apache.taglibs.standard.tag.common.xml.XalanUtil
uses a VariableStack and returns an XPathContext.  I am not sure how they fit into the SAX
(?) model.
>>
>> Can anyone shed some light on the inner workings of this function?
> This was added <https://svn.apache.org/viewvc?view=revision&revision=1054175>
in 1.2.x to fix a performance problem (bug #27717 <https://bz.apache.org/bugzilla/show_bug.cgi?id=27717>)
with x:forEach. At the time, the default XPath implementation in javax.xml had the same n^2
behaviour as the previous implementation. There are some micro-benchmarks <https://svn.apache.org/viewvc/tomcat/taglibs/standard/trunk/impl/src/test/java/org/apache/taglibs/standard/tag/common/xml/ForEachTagTest.java?view=markup&pathrev=1054175#l126>
still in the test class if you want to see if that’s still true.
>
> Memory is a little fuzzy, but IIRC the JSTLVariableStack is used to make the JSP implicit
variables (e.g. ${request.something}) resolvable in the transform. It’s the low-level equivalent
of a custom XPathVariableResolver.
>
> If you’re not using the XML tags, you may be able to simply drop the Xalan dependency
from your application to avoid the conflict.


---------------------------------------------------------------------
To unsubscribe, e-mail: taglibs-user-unsubscribe@tomcat.apache.org
For additional commands, e-mail: taglibs-user-help@tomcat.apache.org


Mime
View raw message