Author: nbelaevski
Date: 2010-05-26 11:30:26 -0400 (Wed, 26 May 2010)
New Revision: 17267
Modified:
root/core/trunk/impl/src/main/java/org/richfaces/context/SkinningResourcesPhaseListener.java
Log:
https://jira.jboss.org/browse/RF-8682
Modified:
root/core/trunk/impl/src/main/java/org/richfaces/context/SkinningResourcesPhaseListener.java
===================================================================
---
root/core/trunk/impl/src/main/java/org/richfaces/context/SkinningResourcesPhaseListener.java 2010-05-26
15:24:35 UTC (rev 17266)
+++
root/core/trunk/impl/src/main/java/org/richfaces/context/SkinningResourcesPhaseListener.java 2010-05-26
15:30:26 UTC (rev 17267)
@@ -21,7 +21,7 @@
*/
package org.richfaces.context;
-import java.util.Map;
+import java.util.List;
import javax.el.ELContext;
import javax.faces.application.Application;
@@ -44,7 +44,7 @@
private static final long serialVersionUID = 7430448731396547419L;
- private static final String RESOURCES_PROCESSED_MARKER =
SkinningResourcesPhaseListener.class.getName();
+ private static final String SKINNING_RESOURCE_MARKER =
SkinningResourcesPhaseListener.class.getName();
private static final String CLASSES_ECSS = "_classes.ecss";
@@ -57,6 +57,8 @@
private static final String BOTH_SKINNING;
private static final String CLASSES_SKINNING;
+
+ private static final String HEAD = "head";
static {
String skinningName = "skinning";
@@ -133,16 +135,21 @@
UIViewRoot viewRoot = context.getViewRoot();
assert viewRoot != null;
-
- Map<String, Object> viewMap = viewRoot.getViewMap();
-
- //TODO nick - is this check sufficient?
- if (!Boolean.TRUE.equals(viewMap.get(RESOURCES_PROCESSED_MARKER))) {
- viewMap.put(RESOURCES_PROCESSED_MARKER, Boolean.TRUE);
-
+
+ boolean skinnigResourceFound = false;
+ List<UIComponent> resources = viewRoot.getComponentResources(context,
HEAD);
+ for (UIComponent resource : resources) {
+ if (resource.getAttributes().get(SKINNING_RESOURCE_MARKER) != null) {
+ skinnigResourceFound = true;
+ break;
+ }
+ }
+
+ if (!skinnigResourceFound) {
UIComponent basic = createComponentResource(context);
basic.setValueExpression("name", new
SkinningResourceNameExpression());
basic.setValueExpression("rendered", new
SkinningResourceRenderedExpression());
+ basic.getAttributes().put(SKINNING_RESOURCE_MARKER, Boolean.TRUE);
viewRoot.addComponentResource(context, basic);
}