excalibur-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ard Schrijvers (JIRA)" <...@excalibur.apache.org>
Subject [jira] Created: (EXLBR-31) When check-includes for stylesheets is true for caching, it only works for one level deep included/imported stylesheets: if you change an imported or included stylesheet the change does not take effect until you update the main stylesheet.
Date Thu, 12 Oct 2006 09:23:34 GMT
When check-includes for stylesheets is true for caching, it only works for one level deep included/imported
stylesheets: if you change an imported or included stylesheet the change does not take effect
until you update the main stylesheet. 
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

                 Key: EXLBR-31
                 URL: http://issues.apache.org/jira/browse/EXLBR-31
             Project: Excalibur Components
          Issue Type: Bug
          Components: XMLUtil
    Affects Versions: 1.2
            Reporter: Ard Schrijvers


When using cached stylesheets, and have for example in cocoon in the TraxTransformer the check-includes
set to true, the includes are only checked one level deep. So a change in directly imported/included
xsls do affect the validity of the main (the very first one) stylesheet, but a change in an
imported stylesheet of an imported one do need invalidate the main styleheet (therefor, you
need to touch the main stylesheet all the time when you work with many importing styleheets
and use them hierarchically). 

The bug is in XSLTProcessorImpl in public javax.xml.transform.Source resolve( String href,
String base ), at List includes = (List)m_includesMap.get( base );. The problem lies in the
"base", because the base is related to the stylesheet "calling" the import, so, if it is an
import calling an import, the "base" is different from the main stylesheet, therefor not adding
its validity to the main stylesheet aggregated validity. 

I added a global "m_id" of the main stylesheet that is now used in XSLTProcessorImpl, and
replace "base" in List includes = (List)m_includesMap.get( base ) by List includes = (List)m_includesMap.get(
m_id );. This solves the invalidation of main stylesheets. 

See patch.

Ard Schrijvers


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@excalibur.apache.org
For additional commands, e-mail: dev-help@excalibur.apache.org


Mime
View raw message