You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by jw...@apache.org on 2010/09/18 00:52:00 UTC
svn commit: r998361 -
/myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinUtils.java
Author: jwaldman
Date: Fri Sep 17 22:51:59 2010
New Revision: 998361
URL: http://svn.apache.org/viewvc?rev=998361&view=rev
Log:
TRINIDAD-1914 provide a hook for external decorator to find trinidad-skins.xml from a location other than META-INF or WEB-INF.
code cleanup in SkinUtils.java. Protect against null in case the implementor of SkinResourceLoader#findResource returns null instead of an emptyList.
Modified:
myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinUtils.java
Modified: myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinUtils.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinUtils.java?rev=998361&r1=998360&r2=998361&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinUtils.java (original)
+++ myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinUtils.java Fri Sep 17 22:51:59 2010
@@ -431,29 +431,41 @@ public class SkinUtils
_registerSkinAdditions(fContext, skinFactory, skinAdditionNodeList, false);
}
+ _registerTrinidadSkinsFromSkinResourceLoaderServices(context, skinFactory);
+
+ }
+
+ // this finds the trinidad-skins.xml files by calling findResource on any SkinResourceLoader
+ // services. This is used by the DT to find trinidad-skins.xml files that are not in META-INF
+ // or WEB-INF. See TRINIDAD-1914
+ private static void _registerTrinidadSkinsFromSkinResourceLoaderServices(
+ ExternalContext context,
+ SkinFactory skinFactory)
+ {
// register skins found in DT using the META-INF/services
List<SkinResourceLoader> urlProviders = ClassLoaderUtils.getServices(
"org.apache.myfaces.trinidad.resource.SkinResourceLoader");
- List<SkinsNode> additionalSkins = _getAdditionalTrinidadSkins(context, urlProviders);
-
- // Go through each SkinsNode object
- // (contains List of SkinNodes and List of SkinAdditionNodes)
- // and return a List of the SkinNodes.
- List<SkinNode> additionalSkinNodeList = new ArrayList<SkinNode>();
- for (SkinsNode skinsNode : additionalSkins)
+ if (urlProviders != null && !urlProviders.isEmpty())
{
- additionalSkinNodeList.addAll(skinsNode.getSkinNodes());
- }
-
- List<SkinNode> sortedAdditionalSkinNodes = _sortSkinNodes(skinFactory, additionalSkinNodeList);
-
- for (SkinNode skinNode : sortedAdditionalSkinNodes)
- {
- _addSkinToFactory(skinFactory, skinNode, false);
+ List<SkinsNode> additionalSkins = _getAdditionalTrinidadSkins(context, urlProviders);
+
+ // Go through each SkinsNode object
+ // (contains List of SkinNodes and List of SkinAdditionNodes)
+ // and return a List of the SkinNodes.
+ List<SkinNode> additionalSkinNodeList = new ArrayList<SkinNode>();
+ for (SkinsNode skinsNode : additionalSkins)
+ {
+ additionalSkinNodeList.addAll(skinsNode.getSkinNodes());
+ }
+
+ List<SkinNode> sortedAdditionalSkinNodes = _sortSkinNodes(skinFactory, additionalSkinNodeList);
+
+ for (SkinNode skinNode : sortedAdditionalSkinNodes)
+ {
+ _addSkinToFactory(skinFactory, skinNode, false);
+ }
}
-
-
}
/**
@@ -920,57 +932,63 @@ public class SkinUtils
for (SkinResourceLoader urlProvider : providers )
{
Iterator<URL> urlIterator = urlProvider.findResources(context, _TRINIDAD_SKINS_XML);
- try
+
+ if (urlIterator != null)
{
- while (urlIterator.hasNext())
+ try
{
- URL url = urlIterator.next();
- // if url matches one we've already processed, skip it
- boolean successfullyAdded = urlPaths.add(url.getPath());
-
- if (!successfullyAdded)
- {
- if (_LOG.isFinest())
- {
- _LOG.finest("Skipping skin URL:{0} because it was already processed. " +
- "It was on the classpath more than once.", url);
- }
- // continue to the next url
- }
- else
+ while (urlIterator.hasNext())
{
- _LOG.finest("Processing skin URL:{0}", url);
- InputStream in = url.openStream();
- try
+ URL url = urlIterator.next();
+ // if url matches one we've already processed, skip it
+ boolean successfullyAdded = urlPaths.add(url.getPath());
+
+ if (!successfullyAdded)
{
- // parse the config file and register the skin's additional stylesheets.
-
- if (in != null)
+ if (_LOG.isFinest())
{
- SkinsNode metaInfSkinsNode =
- _getSkinsNodeFromInputStream(null, null, in, _getDefaultManager(),
- _META_INF_CONFIG_FILE);
-
- allSkinsNodes.add(metaInfSkinsNode);
+ _LOG.finest("Skipping skin URL:{0} because it was already processed. " +
+ "It was on the classpath more than once.",
+ url);
}
+ // continue to the next url
}
- catch (Exception e)
+ else
{
- _LOG.warning("ERR_PARSING", url);
- _LOG.warning(e);
+ _LOG.finest("Processing skin URL:{0}", url);
+ InputStream in = url.openStream();
+ try
+ {
+ // parse the config file and register the skin's additional stylesheets.
+
+ if (in != null)
+ {
+ SkinsNode metaInfSkinsNode =
+ _getSkinsNodeFromInputStream(null, null, in,
+ _getDefaultManager(),
+ _META_INF_CONFIG_FILE);
+
+ allSkinsNodes.add(metaInfSkinsNode);
+ }
+ }
+ catch (Exception e)
+ {
+ _LOG.warning("ERR_PARSING", url);
+ _LOG.warning(e);
+ }
+ finally
+ {
+ in.close();
+ }
}
- finally
- {
- in.close();
- }
}
+
+ }
+ catch (IOException e)
+ {
+ _LOG.severe("ERR_LOADING_FILE", _META_INF_CONFIG_FILE);
+ _LOG.severe(e);
}
-
- }
- catch (IOException e)
- {
- _LOG.severe("ERR_LOADING_FILE", _META_INF_CONFIG_FILE);
- _LOG.severe(e);
}
}