[richfaces-svn-commits] JBoss Rich Faces SVN: r4582 - in branches/3.1.x/framework: api/src/main/java/org/richfaces/skin and 6 other directories.

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Thu Dec 6 18:59:36 EST 2007


Author: alexsmirnov
Date: 2007-12-06 18:59:35 -0500 (Thu, 06 Dec 2007)
New Revision: 4582

Added:
   branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/context/ViewResources.java
   branches/3.1.x/framework/impl/src/main/resources/META-INF/skins/NULL.skin.properties
Modified:
   branches/3.1.x/framework/api/src/main/java/org/ajax4jsf/resource/InternetResource.java
   branches/3.1.x/framework/api/src/main/java/org/ajax4jsf/resource/InternetResourceBuilder.java
   branches/3.1.x/framework/api/src/main/java/org/richfaces/skin/Skin.java
   branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/context/AjaxContextImpl.java
   branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/org/w3c/tidy/PPrint.java
   branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxRendererUtils.java
   branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/renderkit/RendererUtils.java
   branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/webapp/nekko/NekkoParser.java
   branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/xml/serializer/ToXHTMLStream.java
Log:
Merge from trunk :
fix for http://jira.jboss.com/jira/browse/RF-851
fix for http://jira.jboss.com/jira/browse/RF-1512

Modified: branches/3.1.x/framework/api/src/main/java/org/ajax4jsf/resource/InternetResource.java
===================================================================
--- branches/3.1.x/framework/api/src/main/java/org/ajax4jsf/resource/InternetResource.java	2007-12-06 23:56:51 UTC (rev 4581)
+++ branches/3.1.x/framework/api/src/main/java/org/ajax4jsf/resource/InternetResource.java	2007-12-06 23:59:35 UTC (rev 4582)
@@ -49,7 +49,6 @@
 	public static final int RESOURCE_URI_PREFIX_LENGTH = RESOURCE_URI_PREFIX.length();
 	public static final String DATA_SEPARATOR = "/DATA/";
 	static public final long DEFAULT_EXPIRE = 1000L * 60L * 60L * 24L;// 1 day
-
 	/**
 	 * @param resourceContext current {@link ResourceContext}
 	 * @return Returns the contentLength.

Modified: branches/3.1.x/framework/api/src/main/java/org/ajax4jsf/resource/InternetResourceBuilder.java
===================================================================
--- branches/3.1.x/framework/api/src/main/java/org/ajax4jsf/resource/InternetResourceBuilder.java	2007-12-06 23:56:51 UTC (rev 4581)
+++ branches/3.1.x/framework/api/src/main/java/org/ajax4jsf/resource/InternetResourceBuilder.java	2007-12-06 23:59:35 UTC (rev 4582)
@@ -38,6 +38,13 @@
 public abstract class InternetResourceBuilder {
 
     private static final Log log = LogFactory.getLog(InternetResourceBuilder.class);
+	public static final String LOAD_NONE = "NONE";
+	public static final String LOAD_ALL = "ALL";
+	public static final String COMMON_FRAMEWORK_SCRIPT = "/org/ajax4jsf/framework.pack.js";
+	public static final String COMMON_UI_SCRIPT = "/org/richfaces/ui.pack.js";
+	public static final String COMMON_STYLE = "/org/richfaces/skin.xcss";
+	public static final String LOAD_STYLE_STRATEGY_PARAM = "org.richfaces.LoadStyleStrategy";
+	public static final String LOAD_SCRIPT_STRATEGY_PARAM = "org.richfaces.LoadScriptStrategy";
 
     /**
          * Get application start time for check resources modification time.

Modified: branches/3.1.x/framework/api/src/main/java/org/richfaces/skin/Skin.java
===================================================================
--- branches/3.1.x/framework/api/src/main/java/org/richfaces/skin/Skin.java	2007-12-06 23:56:51 UTC (rev 4581)
+++ branches/3.1.x/framework/api/src/main/java/org/richfaces/skin/Skin.java	2007-12-06 23:59:35 UTC (rev 4582)
@@ -241,6 +241,8 @@
 
 	public static final String panelTextColor = "panelTextColor";
 	
+	public static final String loadStyleSheets = "loadStyleSheets";
+
 	// Preferable parameters
 	/**
 	 * Preferable parameters names for skin ( in common, for Preferable.Name

Modified: branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/context/AjaxContextImpl.java
===================================================================
--- branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/context/AjaxContextImpl.java	2007-12-06 23:56:51 UTC (rev 4581)
+++ branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/context/AjaxContextImpl.java	2007-12-06 23:59:35 UTC (rev 4582)
@@ -28,13 +28,11 @@
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
-import java.util.LinkedHashSet;
 import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
 
 import javax.faces.FacesException;
-import javax.faces.FactoryFinder;
 import javax.faces.application.Application;
 import javax.faces.application.StateManager;
 import javax.faces.application.ViewHandler;
@@ -47,8 +45,6 @@
 import javax.faces.context.ResponseWriter;
 import javax.faces.event.AbortProcessingException;
 import javax.faces.render.RenderKit;
-import javax.faces.render.RenderKitFactory;
-import javax.faces.render.Renderer;
 import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
 
@@ -56,13 +52,12 @@
 import org.ajax4jsf.application.AjaxViewHandler;
 import org.ajax4jsf.component.AjaxContainer;
 import org.ajax4jsf.component.AjaxViewRoot;
-import org.ajax4jsf.context.AjaxContext;
-import org.ajax4jsf.context.ViewIdHolder;
 import org.ajax4jsf.renderkit.AjaxContainerRenderer;
 import org.ajax4jsf.renderkit.AjaxRendererUtils;
-import org.ajax4jsf.renderkit.HeaderResourceProducer;
+import org.ajax4jsf.renderkit.RendererUtils;
 import org.ajax4jsf.renderkit.UserResourceRenderer;
 import org.ajax4jsf.renderkit.RendererUtils.HTML;
+import org.ajax4jsf.resource.InternetResourceBuilder;
 import org.ajax4jsf.webapp.BaseFilter;
 import org.ajax4jsf.webapp.FilterServletResponseWrapper;
 import org.apache.commons.logging.Log;
@@ -358,18 +353,49 @@
 							.debug("Process component tree for collect used scripts and styles");
 				}
 				UIViewRoot root = context.getViewRoot();
-				Set scripts = new LinkedHashSet();
-				Set styles = new LinkedHashSet();
-                                Set userScripts = new LinkedHashSet();
-                                Set userStyles = new LinkedHashSet();
-                                RenderKitFactory rkFactory = (RenderKitFactory) FactoryFinder
-                                                .getFactory(FactoryFinder.RENDER_KIT_FACTORY);
-                                RenderKit renderKit = rkFactory.getRenderKit(context, context
-                                                .getViewRoot().getRenderKitId());
-                                processHeadResources(context, root, scripts, userScripts, styles, userStyles, renderKit);
-                                // Append user scripts after components.
-                                scripts.addAll(userScripts);
-                                styles.addAll(userStyles);
+				ViewResources viewResources = new ViewResources();
+				try {
+					Skin skin = SkinFactory.getInstance().getSkin(
+							context);
+					// Set default style sheet for current skin.
+					String styleSheetUri = (String) skin.getParameter(context,
+							Skin.generalStyleSheet);
+					if(null != styleSheetUri){
+						String resourceURL = context.getApplication()
+						.getViewHandler().getResourceURL(context,
+								styleSheetUri);
+						viewResources.addStyle(resourceURL);
+					}
+					// For a "NULL" skin, do not collect components stylesheets
+					if("false".equals(skin.getParameter(context, Skin.loadStyleSheets))){
+						viewResources.setProcessStyles(false);
+					}
+				} catch (SkinNotFoundException e) {
+					log.warn("Current Skin is not found", e);
+				}
+				InternetResourceBuilder internetResourceBuilder = InternetResourceBuilder.getInstance();
+				// Check init parameters for a resources processing.
+				String scriptStrategy = externalContext.getInitParameter(InternetResourceBuilder.LOAD_SCRIPT_STRATEGY_PARAM);
+				if(null != scriptStrategy){
+					if(InternetResourceBuilder.LOAD_NONE.equals(scriptStrategy)){
+						viewResources.setProcessScripts(false);
+					} else if (InternetResourceBuilder.LOAD_ALL.equals(scriptStrategy)) {
+						viewResources.setProcessScripts(false);
+						viewResources.addScript(internetResourceBuilder.createResource(this, InternetResourceBuilder.COMMON_FRAMEWORK_SCRIPT).getUri(context, null));
+						viewResources.addScript(internetResourceBuilder.createResource(this, InternetResourceBuilder.COMMON_UI_SCRIPT).getUri(context, null));
+					}
+				}
+				String styleStrategy = externalContext.getInitParameter(InternetResourceBuilder.LOAD_STYLE_STRATEGY_PARAM);
+				if(null != styleStrategy){
+					if(InternetResourceBuilder.LOAD_NONE.equals(styleStrategy)){
+						viewResources.setProcessStyles(false);
+					} else if (InternetResourceBuilder.LOAD_ALL.equals(styleStrategy)) {
+						viewResources.setProcessStyles(false);
+						viewResources.addStyle(internetResourceBuilder.createResource(this, InternetResourceBuilder.COMMON_STYLE).getUri(context, null));
+					}
+				}
+				viewResources.collect(context);
+				Set scripts = viewResources.getScripts();
 				if (scripts.size() > 0) {
 					if (log.isDebugEnabled()) {
 						StringBuffer buff = new StringBuffer(
@@ -382,29 +408,7 @@
 					}
 					requestMap.put(SCRIPTS_PARAMETER, scripts);
 				}
-				// Set default style sheet for current skin.
-				String styleSheetUri = null;
-				try {
-					styleSheetUri = (String) SkinFactory.getInstance().getSkin(
-							context).getParameter(context,
-							Skin.generalStyleSheet);
-				} catch (SkinNotFoundException e) {
-					log.warn("Current Skin is not found", e);
-				}
-				if (null != styleSheetUri) {
-					String resourceURL = context.getApplication()
-							.getViewHandler().getResourceURL(context,
-									styleSheetUri);
-					// TODO - some resources can be non-session aware, we
-					// must
-					// skip encoding for this case ?
-					// But, in common case - static links not need session
-					// info,
-					// and dynamic resources perform encodings if nessesary
-					// resourceURL =
-					// context.getExternalContext().encodeResourceURL(resourceURL);
-					styles.add(resourceURL);
-				}
+				Set styles = viewResources.getStyles();
 				if (styles.size() > 0) {
 					if (log.isDebugEnabled()) {
 						StringBuffer buff = new StringBuffer(
@@ -426,79 +430,6 @@
 		}
 	}
 
-        /**
-         * Append nessesary scripts and styles from component ( if renderer
-         * implements {@link HeaderResourceProducer}) and recursive process all
-         * facets and childrens.
-         *
-         * @param context
-         *            TODO
-         * @param root
-         * @param scripts
-         * @param userScripts TODO
-         * @param styles
-         * @param userStyles TODO
-         * @param renderKit
-         *            TODO
-         */
-        private void processHeadResources(FacesContext context, UIComponent root,
-                        Set scripts, Set userScripts, Set styles, Set userStyles, RenderKit renderKit) {
-                Renderer renderer = getRenderer(context, root, renderKit);
-                if (null != renderer) {
-                        if (renderer instanceof HeaderResourceProducer) {
-                                HeaderResourceProducer producer = (HeaderResourceProducer) renderer;
-                                Set set = producer.getHeaderScripts(context, root);
-                                if (null != set) {
-                                        scripts.addAll(set);
-                                }
-                                set = producer.getHeaderStyles(context, root);
-                                if (null != set) {
-                                        styles.addAll(set);
-                                }
-                        } else if (renderer instanceof UserResourceRenderer) {
-                                UserResourceRenderer producer = (UserResourceRenderer) renderer;
-                                Set set = producer.getHeaderScripts(context, root);
-                                if (null != set) {
-                                        userScripts.addAll(set);
-                                }
-                                set = producer.getHeaderStyles(context, root);
-                                if (null != set) {
-                                        userStyles.addAll(set);
-                                }
-                        }
-        
-                }
-                for (Iterator iter = root.getFacets().values().iterator(); iter
-                                .hasNext();) {
-                        UIComponent child = (UIComponent) iter.next();
-                        processHeadResources(context, child, scripts, userScripts, styles, userStyles, renderKit);
-                }
-                for (Iterator iter = root.getChildren().iterator(); iter.hasNext();) {
-                        UIComponent child = (UIComponent) iter.next();
-                        processHeadResources(context, child, scripts, userScripts, styles, userStyles, renderKit);
-                }
-        }
-
-	/**
-	 * Find renderer for given component.
-	 * 
-	 * @param context
-	 * @param comp
-	 * @param renderKit
-	 * @return
-	 */
-	private Renderer getRenderer(FacesContext context, UIComponent comp,
-			RenderKit renderKit) {
-
-		String rendererType = comp.getRendererType();
-		if (rendererType != null) {
-			return (renderKit.getRenderer(comp.getFamily(), rendererType));
-		} else {
-			return (null);
-		}
-
-	}
-
 	public void saveViewState(FacesContext context) throws IOException {
 		// TODO - for facelets environment, we need to remove transient
 		// components.
@@ -596,7 +527,7 @@
 	/**
 	 * Test for relative id of target components. Attempt convert to absolute.
 	 * For use as argument for
-	 * {@link UIComponent#findComponent(java.lang.String)}
+	 * {@link RendererUtils#findComponentFor(UIComponent, String)}
 	 * 
 	 * @param component
 	 * @param id
@@ -610,7 +541,8 @@
 			throw new NullPointerException(
 					"Base component for search re-rendered compnnent is null");
 		}
-		UIComponent target = findComponentFor(component, id);
+		UIComponent target = RendererUtils.getInstance().
+			findComponentFor(component, id);
 		if (null != target) {
 			return AjaxRendererUtils.getAbsoluteId(target);
 		}
@@ -619,52 +551,6 @@
 	}
 
 	/**
-	 * @param component
-	 * @param id
-	 * @return
-	 */
-	private UIComponent findComponentFor(UIComponent component, String id) {
-		UIComponent target = null;
-		UIComponent parent = component;
-		UIComponent root = component;
-		while (null == target && null != parent) {
-			target = parent.findComponent(id);
-			root = parent;
-			parent = parent.getParent();
-		}
-		if (null == target) {
-			target = findUIComponentBelow(root, id);
-		}
-		return target;
-	}
-
-	private UIComponent findUIComponentBelow(UIComponent root, String id) {
-
-		UIComponent target = null;
-		for (Iterator iter = root.getFacetsAndChildren(); iter.hasNext();) {
-			UIComponent child = (UIComponent) iter.next();
-			if (child instanceof NamingContainer) {
-				try {
-					target = child.findComponent(id);
-				} catch (IllegalArgumentException iae) {
-					continue;
-				}
-			}
-			if (target == null) {
-				if (child.getChildCount() > 0) {
-					target = findUIComponentBelow(child, id);
-				}
-			}
-
-			if (target != null) {
-				break;
-			}
-
-		}
-		return target;
-	}
-
-	/**
 	 * @return Returns the ajaxRenderedAreas.
 	 */
 	public Set getAjaxRenderedAreas() {
@@ -813,8 +699,11 @@
 					"Illegal view Id for build AJAX Action URL: " + viewId);
 		}
 		ViewHandler viewHandler = context.getApplication().getViewHandler();
+		String actionURL = viewHandler.getActionURL(context, viewId);
+		// Mark Ajax action url as transparent with jsf-portlet bridge.
+		actionURL = actionURL + ((actionURL.lastIndexOf('?')>0)?"&":"?")+"javax.portlet.faces.DirectLink=true";
 		return context.getExternalContext().encodeActionURL(
-				viewHandler.getActionURL(context, viewId));
+				actionURL);
 	}
 
 	/**

Copied: branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/context/ViewResources.java (from rev 4578, trunk/framework/impl/src/main/java/org/ajax4jsf/context/ViewResources.java)
===================================================================
--- branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/context/ViewResources.java	                        (rev 0)
+++ branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/context/ViewResources.java	2007-12-06 23:59:35 UTC (rev 4582)
@@ -0,0 +1,166 @@
+/**
+ * 
+ */
+package org.ajax4jsf.context;
+
+import java.util.Iterator;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+import javax.faces.FactoryFinder;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+import javax.faces.render.RenderKit;
+import javax.faces.render.RenderKitFactory;
+import javax.faces.render.Renderer;
+
+import org.ajax4jsf.renderkit.HeaderResourceProducer;
+import org.ajax4jsf.renderkit.UserResourceRenderer;
+
+/**
+ * @author asmirnov
+ * 
+ */
+public class ViewResources {
+
+	LinkedHashSet scripts = new LinkedHashSet();
+	LinkedHashSet styles = new LinkedHashSet();
+	LinkedHashSet userScripts = new LinkedHashSet();
+	LinkedHashSet userStyles = new LinkedHashSet();
+	boolean processStyles = true;
+	boolean processScripts = true;
+	RenderKit renderKit = null;
+
+	public void collect(FacesContext context) {
+		UIViewRoot root = context.getViewRoot();
+		RenderKitFactory rkFactory = (RenderKitFactory) FactoryFinder
+				.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+		renderKit = rkFactory.getRenderKit(context, context
+				.getViewRoot().getRenderKitId());
+		processHeadResources(context, root);
+		styles.addAll(userStyles);
+		scripts.addAll(userScripts);
+	}
+
+	/**
+	 * Append nessesary scripts and styles from component ( if renderer
+	 * implements {@link HeaderResourceProducer}) and recursive process all
+	 * facets and childrens.
+	 * 
+	 * @param context
+	 *            TODO
+	 * @param root
+	 */
+	private void processHeadResources(FacesContext context, UIComponent root) {
+		Renderer renderer = getRenderer(context, root);
+		if (null != renderer) {
+			if ((processScripts || processStyles ) && renderer instanceof HeaderResourceProducer) {
+				HeaderResourceProducer producer = (HeaderResourceProducer) renderer;
+				if (processScripts) {
+					Set set = producer.getHeaderScripts(context, root);
+					if (null != set) {
+						scripts.addAll(set);
+					}
+
+				}
+				if (processStyles) {
+					Set set = producer.getHeaderStyles(context, root);
+					if (null != set) {
+						styles.addAll(set);
+					}
+
+				}
+			} else if (renderer instanceof UserResourceRenderer) {
+				UserResourceRenderer producer = (UserResourceRenderer) renderer;
+				Set set = producer.getHeaderScripts(context, root);
+				if (null != set) {
+					userScripts.addAll(set);
+				}
+				set = producer.getHeaderStyles(context, root);
+				if (null != set) {
+					userStyles.addAll(set);
+				}
+			}
+
+		}
+		for (Iterator iter = root.getFacets().values().iterator(); iter
+				.hasNext();) {
+			UIComponent child = (UIComponent) iter.next();
+			processHeadResources(context, child);
+		}
+		for (Iterator iter = root.getChildren().iterator(); iter.hasNext();) {
+			UIComponent child = (UIComponent) iter.next();
+			processHeadResources(context, child);
+		}
+	}
+
+	/**
+	 * Find renderer for given component.
+	 * 
+	 * @param context
+	 * @param comp
+	 * @param renderKit
+	 * @return
+	 */
+	private Renderer getRenderer(FacesContext context, UIComponent comp) {
+
+		String rendererType = comp.getRendererType();
+		if (rendererType != null) {
+			return (renderKit.getRenderer(comp.getFamily(), rendererType));
+		} else {
+			return (null);
+		}
+
+	}
+
+	/**
+	 * @return the processStyles
+	 */
+	public boolean isProcessStyles() {
+		return processStyles;
+	}
+
+	/**
+	 * @param processStyles the processStyles to set
+	 */
+	public void setProcessStyles(boolean processStyles) {
+		this.processStyles = processStyles;
+	}
+
+	/**
+	 * @return the processScripts
+	 */
+	public boolean isProcessScripts() {
+		return processScripts;
+	}
+
+	/**
+	 * @param processScripts the processScripts to set
+	 */
+	public void setProcessScripts(boolean processScripts) {
+		this.processScripts = processScripts;
+	}
+
+	/**
+	 * @return the scripts
+	 */
+	public Set getScripts() {
+		return scripts;
+	}
+
+	/**
+	 * @return the styles
+	 */
+	public Set getStyles() {
+		return styles;
+	}
+
+	public void addScript(String scriptUrl) {
+		scripts.add(scriptUrl);
+	}
+
+	public void addStyle(String styleUrl) {
+		styles.add(styleUrl);
+	}
+}

Modified: branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/org/w3c/tidy/PPrint.java
===================================================================
--- branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/org/w3c/tidy/PPrint.java	2007-12-06 23:56:51 UTC (rev 4581)
+++ branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/org/w3c/tidy/PPrint.java	2007-12-06 23:59:35 UTC (rev 4582)
@@ -1047,13 +1047,13 @@
         }
 
         // look for ASP, Tango or PHP instructions for computed attribute value
-        if (valueChars != null && valueChars.length >= 5 && valueChars[0] == '<')
-        {
-            if (valueChars[1] == '%' || valueChars[1] == '@' || (new String(valueChars, 0, 5)).equals("<?php"))
-            {
-                mode |= CDATA;
-            }
-        }
+//        if (valueChars != null && valueChars.length >= 5 && valueChars[0] == '<')
+//        {
+//            if (valueChars[1] == '%' || valueChars[1] == '@' || (new String(valueChars, 0, 5)).equals("<?php"))
+//            {
+//                mode |= CDATA;
+//            }
+//        }
 
         if (delim == 0)
         {

Modified: branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxRendererUtils.java
===================================================================
--- branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxRendererUtils.java	2007-12-06 23:56:51 UTC (rev 4581)
+++ branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxRendererUtils.java	2007-12-06 23:59:35 UTC (rev 4582)
@@ -285,7 +285,8 @@
 			if (null != ajaxAreas) {
 				for (Iterator iter = ajaxAreas.iterator(); iter.hasNext();) {
 					String id = (String) iter.next();
-					UIComponent comp = uiComponent.findComponent(id);
+					UIComponent comp = RendererUtils.getInstance().
+						findComponentFor(uiComponent, id);
 					if (null != comp) {
 						areasIds.add(comp.getClientId(facesContext));
 					} else {
@@ -541,24 +542,9 @@
 			statusId = (String) component.getAttributes().get(STATUS_ATTR_NAME);
 		}
 		if (null != statusId) {
-			UIComponent status = null;
-			UIComponent currentParent = component;
-			try {
-				// Check the naming container of the current
-				// component for component identified by
-				// 'forComponent'
-				while (currentParent != null) {
-					// If the current component is a NamingContainer,
-					// see if it contains what we're looking for.
-					status = currentParent.findComponent(statusId);
-					if (status != null)
-						break;
-					// if not, start checking further up in the view
-					currentParent = currentParent.getParent();
-				}
-			} catch (Exception e) {
-				// ignore - log the warning
-			}
+			UIComponent status = RendererUtils.getInstance().
+				findComponentFor(component, statusId);
+
 			if (null != status) {
 				statusId = status
 						.getClientId(FacesContext.getCurrentInstance());

Modified: branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/renderkit/RendererUtils.java
===================================================================
--- branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/renderkit/RendererUtils.java	2007-12-06 23:56:51 UTC (rev 4581)
+++ branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/renderkit/RendererUtils.java	2007-12-06 23:59:35 UTC (rev 4582)
@@ -55,7 +55,11 @@
  * 
  */
 public class RendererUtils {
+    
+    //we'd better use this instance multithreadly quickly
+    	private static final RendererUtils instance = new RendererUtils();
 
+
 	public static final String DUMMY_FORM_ID = ":_form";
 	/**
 	 * Substitutions for components properies names and HTML attributes names.
@@ -69,6 +73,14 @@
 		Arrays.sort(HTML.PASS_THRU_URI);
 	}
 
+        /**
+         * Use this method to get singleton instance of RendererUtils
+         * @return singleton instance
+         */
+        public static RendererUtils getInstance() {
+                return instance;
+        }
+
 	/**
 	 * Common HTML elements and attributes names.
 	 * 
@@ -803,13 +815,18 @@
 		writer.endElement(HTML.SCRIPT_ELEM);
 	}
 
+	
+	public UIComponent findComponentFor(FacesContext context,
+		UIComponent component, String id) {
+	    	return findComponentFor(component,id);
+	}
+
 	/**
 	 * @param component
 	 * @param id
 	 * @return
 	 */
-	public UIComponent findComponentFor(FacesContext context,
-			UIComponent component, String id) {
+	public UIComponent findComponentFor(UIComponent component, String id) {
 		UIComponent target = null;
 		UIComponent parent = component;
 		UIComponent root = component;

Modified: branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/webapp/nekko/NekkoParser.java
===================================================================
--- branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/webapp/nekko/NekkoParser.java	2007-12-06 23:56:51 UTC (rev 4581)
+++ branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/webapp/nekko/NekkoParser.java	2007-12-06 23:59:35 UTC (rev 4582)
@@ -362,8 +362,14 @@
 				} else if ("head".equalsIgnoreCase(element.rawname)) {
 					haveHead = true;
 					super.startElement(element, attributes, augs);
-					insertResources();
+					// insertResources();
 					return;
+				} else if (haveHead) {
+					// <title> or <base> in the head
+					if (!("title".equalsIgnoreCase(element.rawname) || "base"
+							.equalsIgnoreCase(element.rawname))) {
+						insertResources();
+					}
 				} else {
 					if (!haveHtml) {
 						insertStartElement("html");
@@ -374,7 +380,7 @@
 				}
 
 			}
-			if (isStateMarker(element, attributes)) {
+			if (stateMarkerLevel <0 && isStateMarker(element, attributes)) {
 				stateMarkerLevel = 0;
 				return;
 			}
@@ -464,7 +470,13 @@
 				}
 			}
 			if (!headParsed) {
-				if ("head".equalsIgnoreCase(name.rawname)) {
+				if (haveHead) {
+					// <title> or <base> in the head
+					if (!("title".equalsIgnoreCase(name.rawname) || "base"
+							.equalsIgnoreCase(name.rawname))) {
+						insertResources();
+					}
+				} else if ("head".equalsIgnoreCase(name.rawname)) {
 					haveHead = true;
 					super.startElement(name, attributes, augmentation);
 					insertResources();

Modified: branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/xml/serializer/ToXHTMLStream.java
===================================================================
--- branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/xml/serializer/ToXHTMLStream.java	2007-12-06 23:56:51 UTC (rev 4581)
+++ branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/xml/serializer/ToXHTMLStream.java	2007-12-06 23:59:35 UTC (rev 4582)
@@ -966,7 +966,7 @@
         {
 
             ElemContext elemContext = m_elemContext;
-            final ElemDesc elemDesc = elemContext.m_elementDesc;
+            final ElemDesc elemDesc = elemContext.m_elementDesc != null?elemContext.m_elementDesc:m_dummy;
             final int elemFlags = elemDesc.getFlags();
             final boolean elemEmpty = (elemFlags & ElemDesc.EMPTY) != 0;
 

Added: branches/3.1.x/framework/impl/src/main/resources/META-INF/skins/NULL.skin.properties
===================================================================
--- branches/3.1.x/framework/impl/src/main/resources/META-INF/skins/NULL.skin.properties	                        (rev 0)
+++ branches/3.1.x/framework/impl/src/main/resources/META-INF/skins/NULL.skin.properties	2007-12-06 23:59:35 UTC (rev 4582)
@@ -0,0 +1,65 @@
+loadStyleSheets=false
+#Colors
+headerBackgroundColor=#D4CFC7
+headerGradientColor=#EDEAE6
+headerTextColor=#000000
+headerWeightFont=bold
+
+generalBackgroundColor=#FFFFFF
+generalTextColor=#000000
+generalSizeFont=11px
+generalFamilyFont=Arial, Verdana, sans-serif 
+
+controlTextColor=#000000
+controlBackgroundColor=#ffffff
+additionalBackgroundColor=#F1EEE9
+
+shadowBackgroundColor=#000000
+shadowOpacity=1
+
+panelBorderColor=#C4C0B9
+subBorderColor=#ffffff
+
+tabBackgroundColor=#E3DED5
+tabDisabledTextColor=#B1ADA7
+
+trimColor=#DFDCD5
+
+tipBackgroundColor=\#FAE6B0 
+tipBorderColor=\#E5973E 
+
+selectControlColor=#E79A00
+
+
+generalLinkColor=#0078D0
+hoverLinkColor=#0090FF
+visitedLinkColor=#0090FF
+
+# Fonts
+headerSizeFont=11px
+headerFamilyFont=Arial, Verdana, sans-serif
+
+tabSizeFont=11
+tabFamilyFont=Arial, Verdana, sans-serif
+
+buttonSizeFont=11
+buttonFamilyFont=Arial, Verdana, sans-serif
+
+tableBackgroundColor=#FFFFFF
+tableFooterBackgroundColor=#cccccc
+tableSubfooterBackgroundColor=#f1f1f1
+tableBorderColor=#C4C0C9
+tableBorderWidth=1px
+
+
+#Calendar colors
+calendarWeekBackgroundColor=#F1EEE9
+
+calendarHolidaysBackgroundColor=#FFEBDA
+calendarHolidaysTextColor=#FF7800
+
+calendarCurrentBackgroundColor=#FF7800
+calendarCurrentTextColor=#FFEBDA
+
+calendarSpecBackgroundColor=#F1EEE9
+calendarSpecTextColor=#000000


Property changes on: branches/3.1.x/framework/impl/src/main/resources/META-INF/skins/NULL.skin.properties
___________________________________________________________________
Name: svn:mime-type
   + text/plain




More information about the richfaces-svn-commits mailing list