Details
-
Improvement
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
Description
A third party (Oracle MDS) would like to use their own InputStreamProvider to find skinning css files (like purple-desktop.css) in their own system. The current ways to find css files do not work for them.
1. We first discussed decorating ExternalContext.getResource(), since in
Trinidad we create the URL by calling FacesContext's ExternalContext's
getResource(style-sheet-name). For an example, see
http://insights2jsf.wordpress.com/2009/07/03/using-custom-factories-or-howto-wrap-facescontext/
2. This won't work for them because it returns an URL object
3. using ExternalContext's getResourceAsStream won't work because you can't find out if the file has been modified.
4. What would work is if they decorate or extend the InputStreamProvider, and we check this if none of the other means finds the .css file. The other means are those found in SkinStyleSheetProvider.java
5. To allow them to plugin their InputStreamProvider we
can do this with a service provider interface where we open up
META-INF/services/<fully qualified classname of service> and load all of the
services that way.