[richfaces-svn-commits] JBoss Rich Faces SVN: r2060 - in trunk: framework/impl/src/main/java/org/ajax4jsf/application and 35 other directories.

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Fri Aug 3 21:05:53 EDT 2007


Author: alexsmirnov
Date: 2007-08-03 21:05:53 -0400 (Fri, 03 Aug 2007)
New Revision: 2060

Added:
   trunk/framework/impl/src/main/java/org/ajax4jsf/resource/CacheContext.java
   trunk/framework/impl/src/main/resources/META-INF/.faces-config.xml.jsfdia
   trunk/ui/dataFilterSlider/src/main/java/META-INF/
   trunk/ui/dataFilterSlider/src/main/java/META-INF/MANIFEST.MF
   trunk/ui/dataTable/src/main/java/META-INF/
   trunk/ui/dataTable/src/main/java/META-INF/MANIFEST.MF
   trunk/ui/datascroller/src/main/java/META-INF/
   trunk/ui/datascroller/src/main/java/META-INF/MANIFEST.MF
   trunk/ui/drag-drop/src/main/java/META-INF/
   trunk/ui/drag-drop/src/main/java/META-INF/MANIFEST.MF
   trunk/ui/dropdown-menu/src/main/java/META-INF/
   trunk/ui/dropdown-menu/src/main/java/META-INF/MANIFEST.MF
   trunk/ui/gmap/src/main/java/META-INF/
   trunk/ui/gmap/src/main/java/META-INF/MANIFEST.MF
   trunk/ui/menu-components/src/main/java/META-INF/
   trunk/ui/menu-components/src/main/java/META-INF/MANIFEST.MF
   trunk/ui/modal-panel/src/main/java/META-INF/
   trunk/ui/modal-panel/src/main/java/META-INF/MANIFEST.MF
   trunk/ui/panel/src/main/java/META-INF/
   trunk/ui/panel/src/main/java/META-INF/MANIFEST.MF
   trunk/ui/panelbar/src/main/java/META-INF/
   trunk/ui/panelbar/src/main/java/META-INF/MANIFEST.MF
   trunk/ui/simpleTogglePanel/src/main/java/META-INF/
   trunk/ui/simpleTogglePanel/src/main/java/META-INF/MANIFEST.MF
   trunk/ui/spacer/src/main/java/META-INF/
   trunk/ui/spacer/src/main/java/META-INF/MANIFEST.MF
   trunk/ui/suggestionbox/src/main/java/META-INF/
   trunk/ui/suggestionbox/src/main/java/META-INF/MANIFEST.MF
   trunk/ui/togglePanel/src/main/java/META-INF/
   trunk/ui/togglePanel/src/main/java/META-INF/MANIFEST.MF
   trunk/ui/toolBar/src/main/java/META-INF/
   trunk/ui/toolBar/src/main/java/META-INF/MANIFEST.MF
Removed:
   trunk/framework/impl/src/main/java/org/ajax4jsf/resource/CacheKey.java
Modified:
   trunk/framework/api/src/main/java/org/richfaces/skin/SkinFactory.java
   trunk/framework/impl/src/main/java/org/ajax4jsf/application/DebugLifecycleFactory.java
   trunk/framework/impl/src/main/java/org/ajax4jsf/context/AjaxContextImpl.java
   trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/RendererUtils.java
   trunk/framework/impl/src/main/java/org/ajax4jsf/resource/ClientScript.java
   trunk/framework/impl/src/main/java/org/ajax4jsf/resource/InternetResourceBase.java
   trunk/framework/impl/src/main/java/org/ajax4jsf/resource/InternetResourceService.java
   trunk/framework/impl/src/main/java/org/ajax4jsf/resource/JarResource.java
   trunk/framework/impl/src/main/java/org/ajax4jsf/resource/TemplateCSSResource.java
   trunk/framework/impl/src/main/java/org/richfaces/skin/SkinFactoryImpl.java
   trunk/framework/impl/src/main/resources/META-INF/faces-config.xml
Log:
append skin name parameter "org.richfaces.SKIN"
fix "lastModified" property processing for a cacheable resources.
append method "findComponentFor" to the RendererUtils method.

Modified: trunk/framework/api/src/main/java/org/richfaces/skin/SkinFactory.java
===================================================================
--- trunk/framework/api/src/main/java/org/richfaces/skin/SkinFactory.java	2007-08-03 19:33:52 UTC (rev 2059)
+++ trunk/framework/api/src/main/java/org/richfaces/skin/SkinFactory.java	2007-08-04 01:05:53 UTC (rev 2060)
@@ -175,9 +175,9 @@
 	 * instance of {@link Skin } - used this instance. by default -
 	 * "org.exadel.chameleon.SKIN"
 	 */
-	public static final String SKIN_PARAMETER = "org.ajax4jsf.SKIN";
+	public static final String SKIN_PARAMETER = "org.richfaces.SKIN";
 
-	public static final String BASE_SKIN_PARAMETER = "org.ajax4jsf.BASE_SKIN";
+	public static final String BASE_SKIN_PARAMETER = "org.richfaces.BASE_SKIN";
 
 	/**
 	 * Get base {@link Skin} implementation

Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/application/DebugLifecycleFactory.java
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/application/DebugLifecycleFactory.java	2007-08-03 19:33:52 UTC (rev 2059)
+++ trunk/framework/impl/src/main/java/org/ajax4jsf/application/DebugLifecycleFactory.java	2007-08-04 01:05:53 UTC (rev 2060)
@@ -50,7 +50,7 @@
 	 */
 	private DebugLifecycle getDebugLifecycle() {
 		if (_debugLifecycle == null) {
-			_debugLifecycle = new DebugLifecycle(_defaultFactory);			
+			_debugLifecycle = new DebugLifecycle(_defaultFactory.getLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE));			
 		}
 		return _debugLifecycle;
 	}

Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/context/AjaxContextImpl.java
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/context/AjaxContextImpl.java	2007-08-03 19:33:52 UTC (rev 2059)
+++ trunk/framework/impl/src/main/java/org/ajax4jsf/context/AjaxContextImpl.java	2007-08-04 01:05:53 UTC (rev 2060)
@@ -564,17 +564,7 @@
 	    throw new NullPointerException(
 		    "Base component for search re-rendered compnnent is null");
 	}
-	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);
-	}
+	UIComponent target = findComponentFor(component, id);
 	if (null != target) {
 	    return AjaxRendererUtils.getAbsoluteId(target);
 	}
@@ -582,6 +572,26 @@
 	return id;
     }
 
+	/**
+	 * @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) {
 

Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/RendererUtils.java
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/RendererUtils.java	2007-08-03 19:33:52 UTC (rev 2059)
+++ trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/RendererUtils.java	2007-08-04 01:05:53 UTC (rev 2060)
@@ -25,11 +25,13 @@
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.Map;
 
 import javax.faces.FacesException;
 import javax.faces.application.ViewHandler;
 import javax.faces.component.EditableValueHolder;
+import javax.faces.component.NamingContainer;
 import javax.faces.component.UIComponent;
 import javax.faces.component.UIForm;
 import javax.faces.component.UIViewRoot;
@@ -44,16 +46,16 @@
 import org.ajax4jsf.resource.Java2Dresource;
 import org.ajax4jsf.util.HtmlDimensions;
 
-
 /**
  * Util class for common render operations - render passthru html attributes,
  * iterate over child components etc.
+ * 
  * @author asmirnov at exadel.com (latest modification by $Author: alexsmirnov $)
  * @version $Revision: 1.1.2.6 $ $Date: 2007/02/08 19:07:16 $
- *
+ * 
  */
 public class RendererUtils {
-	
+
 	public static final String DUMMY_FORM_ID = ":_form";
 	/**
 	 * Substitutions for components properies names and HTML attributes names.
@@ -61,16 +63,18 @@
 	private static Map substitutions = new HashMap();
 
 	static {
-		substitutions.put(HTML.class_ATTRIBUTE,"styleClass");
+		substitutions.put(HTML.class_ATTRIBUTE, "styleClass");
 		Arrays.sort(HTML.PASS_THRU);
 		Arrays.sort(HTML.PASS_THRU_BOOLEAN);
 		Arrays.sort(HTML.PASS_THRU_URI);
 	}
+
 	/**
 	 * Common HTML elements and attributes names.
+	 * 
 	 * @author asmirnov at exadel.com (latest modification by $Author: alexsmirnov $)
 	 * @version $Revision: 1.1.2.6 $ $Date: 2007/02/08 19:07:16 $
-	 *
+	 * 
 	 */
 	public interface HTML {
 		// elements
@@ -78,13 +82,13 @@
 		// attributes
 		public static final String id_ATTRIBUTE = "id";
 		public static final String class_ATTRIBUTE = "class";
-//		public static final String STYLE_ATTRIBUTE = "style";
-//	    public static final String dir_ATTRIBUTE   = "dir";
-//	    public static final String lang_ATTRIBUTE  = "lang";
-//	    public static final String title_ATTRIBUTE = "title";
-	    public static final String accesskey_ATTRIBUTE = "accesskey";
-	    public static final String alt_ATTRIBUTE = "alt";
-	    public static final String cols_ATTRIBUTE = "cols";
+		// public static final String STYLE_ATTRIBUTE = "style";
+		// public static final String dir_ATTRIBUTE = "dir";
+		// public static final String lang_ATTRIBUTE = "lang";
+		// public static final String title_ATTRIBUTE = "title";
+		public static final String accesskey_ATTRIBUTE = "accesskey";
+		public static final String alt_ATTRIBUTE = "alt";
+		public static final String cols_ATTRIBUTE = "cols";
 
 		public static final String height_ATTRIBUTE = "height";
 
@@ -126,8 +130,8 @@
 
 		public static final String onselect_ATTRIBUTE = "onselect";
 
-		//	    public static final String onsubmit_ATTRIBUTE = "onsubmit";
-	    public static final String onunload_ATTRIBUTE = "onunload";
+		// public static final String onsubmit_ATTRIBUTE = "onsubmit";
+		public static final String onunload_ATTRIBUTE = "onunload";
 
 		public static final String rows_ATTRIBUTE = "rows";
 
@@ -177,107 +181,42 @@
 
 		public static final String src_ATTRIBUTE = "src";
 
-		//public static final String onreset_ATTRIBUTE = "onreset"; 
-	    // attributes sets.
+		// public static final String onreset_ATTRIBUTE = "onreset";
+		// attributes sets.
 		public static final String[] PASS_THRU = {
-//			DIR_ATTRIBUTE,
-//			LANG_ATTRIBUTE,
-//			STYLE_ATTRIBUTE,
-//			TITLE_ATTRIBUTE
-			"accesskey",
-			"alt",
-			"cols",
-			"height",
-			"lang",
-			"longdesc",
-			"maxlength",
-			"onblur",
-			"onchange",
-			"onclick",
-			"ondblclick",
-			"onfocus",
-			"onkeydown",
-			"onkeypress",
-			"onkeyup",
-			"onload",
-			"onmousedown",
-			"onmousemove",
-			"onmouseout",
-			"onmouseover",
-			"onmouseup",
-			"onreset",
-			"onselect",
-			"onsubmit",
-			"onunload",
-			"rows",
-			"size",
-			"tabindex",
-			"title",
-			"width",
-			"dir",
-			"rules",
-			"frame",
-			"border",
-			"cellspacing",
-			"cellpadding",
-			"summary",
-			"bgcolor",
-			"usemap",
-			"enctype",
-			"accept-charset",
-			"accept",
-			"target",
-			"charset",
-			"coords",
-			"hreflang",
-			"rel",
-			"rev",
-			"shape",
-	        "disabled",
-	        "readonly",
-	        "ismap"			
+				// DIR_ATTRIBUTE,
+				// LANG_ATTRIBUTE,
+				// STYLE_ATTRIBUTE,
+				// TITLE_ATTRIBUTE
+				"accesskey", "alt", "cols", "height", "lang", "longdesc",
+				"maxlength", "onblur", "onchange", "onclick", "ondblclick",
+				"onfocus", "onkeydown", "onkeypress", "onkeyup", "onload",
+				"onmousedown", "onmousemove", "onmouseout", "onmouseover",
+				"onmouseup", "onreset", "onselect", "onsubmit", "onunload",
+				"rows", "size", "tabindex", "title", "width", "dir", "rules",
+				"frame", "border", "cellspacing", "cellpadding", "summary",
+				"bgcolor", "usemap", "enctype", "accept-charset", "accept",
+				"target", "charset", "coords", "hreflang", "rel", "rev",
+				"shape", "disabled", "readonly", "ismap"
 
 		};
-		
+
 		/**
-		 * HTML attributes allowed boolean-values only 
+		 * HTML attributes allowed boolean-values only
 		 */
-		public static final String[] PASS_THRU_BOOLEAN = {
-	        "disabled",
-	        "declare",
-	        "readonly",
-	        "compact",
-	        "ismap",
-	        "selected",
-	        "checked",
-	        "nowrap",
-	        "noresize",
-	        "nohref",
-	        "noshade",
-	        "multiple"
-		};
-		
-		
+		public static final String[] PASS_THRU_BOOLEAN = { "disabled",
+				"declare", "readonly", "compact", "ismap", "selected",
+				"checked", "nowrap", "noresize", "nohref", "noshade",
+				"multiple" };
+
 		/**
-		 * all HTML attributes with URI value. 
+		 * all HTML attributes with URI value.
 		 */
-		public static final String[] PASS_THRU_URI = {
-	        "usemap",
-	        "background",
-	        "codebase",
-	        "cite",
-	        "data",
-	        "classid",
-	        "href",
-	        "longdesc",
-	        "profile",
-	        "src"
-		};
+		public static final String[] PASS_THRU_URI = { "usemap", "background",
+				"codebase", "cite", "data", "classid", "href", "longdesc",
+				"profile", "src" };
 
-		public static final String[] PASS_THRU_STYLES = {
-	        "style",
-	        "class",
-		};
+		public static final String[] PASS_THRU_STYLES = { "style", "class", };
 
 		public static final String SPAN_ELEM = "span";
 		public static final String DIV_ELEM = "div";
@@ -313,107 +252,126 @@
 	}
 
 	/**
-	 * Encode id attribute with clientId component property 
+	 * Encode id attribute with clientId component property
+	 * 
 	 * @param context
 	 * @param component
 	 * @throws IOException
 	 */
-	public void encodeId(FacesContext context, UIComponent component) throws IOException {
-		encodeId(context,component,HTML.id_ATTRIBUTE);
+	public void encodeId(FacesContext context, UIComponent component)
+			throws IOException {
+		encodeId(context, component, HTML.id_ATTRIBUTE);
 	}
-	
+
 	/**
 	 * Encode clientId to custom attribute ( for example, to control name )
+	 * 
 	 * @param context
 	 * @param component
 	 * @param attribute
 	 * @throws IOException
 	 */
-	public void encodeId(FacesContext context,UIComponent component, String attribute) throws IOException {
+	public void encodeId(FacesContext context, UIComponent component,
+			String attribute) throws IOException {
 		String clientId = null;
 		try {
 			clientId = component.getClientId(context);
-		} catch(Exception e) {
-			//just ignore if clientId wasn't inited yet
+		} catch (Exception e) {
+			// just ignore if clientId wasn't inited yet
 		}
 		if (null != clientId) {
-			context.getResponseWriter().writeAttribute(attribute,
-					clientId,
-					(String) getComponentAttributeName(attribute)); 
+			context.getResponseWriter().writeAttribute(attribute, clientId,
+					(String) getComponentAttributeName(attribute));
 		}
 	}
+
 	/**
-	 * Encode id attribute with clientId component property.
-	 * Encoded only if id not auto generated.  
+	 * Encode id attribute with clientId component property. Encoded only if id
+	 * not auto generated.
+	 * 
 	 * @param context
 	 * @param component
 	 * @throws IOException
 	 */
-	public void encodeCustomId(FacesContext context, UIComponent component) throws IOException {
-		if(component.getId() != null && !component.getId().startsWith(UIViewRoot.UNIQUE_ID_PREFIX)){
-			context.getResponseWriter().writeAttribute(HTML.id_ATTRIBUTE,component.getClientId(context),HTML.id_ATTRIBUTE);
+	public void encodeCustomId(FacesContext context, UIComponent component)
+			throws IOException {
+		if (component.getId() != null
+				&& !component.getId().startsWith(UIViewRoot.UNIQUE_ID_PREFIX)) {
+			context.getResponseWriter().writeAttribute(HTML.id_ATTRIBUTE,
+					component.getClientId(context), HTML.id_ATTRIBUTE);
 		}
 	}
-	
+
 	/**
 	 * Encode common pass-thru html attributes.
+	 * 
 	 * @param context
 	 * @param component
 	 * @throws IOException
 	 */
-	public void encodePassThru(FacesContext context, UIComponent component) throws IOException {
-		encodeAttributesFromArray(context,component,HTML.PASS_THRU);
+	public void encodePassThru(FacesContext context, UIComponent component)
+			throws IOException {
+		encodeAttributesFromArray(context, component, HTML.PASS_THRU);
 	}
-	
+
 	/**
 	 * Encode pass-through attributes except specified ones
+	 * 
 	 * @param context
 	 * @param component
 	 * @param exclusions
 	 * @throws IOException
 	 */
-	public void encodePassThruWithExclusions(FacesContext context, UIComponent component,String exclusions) throws IOException{
+	public void encodePassThruWithExclusions(FacesContext context,
+			UIComponent component, String exclusions) throws IOException {
 		if (null != exclusions) {
 			String[] exclusionsArray = exclusions.split(",");
-			encodePassThruWithExclusionsArray(context,component,exclusionsArray);
+			encodePassThruWithExclusionsArray(context, component,
+					exclusionsArray);
 		}
 	}
 
-	public void encodePassThruWithExclusionsArray(FacesContext context, UIComponent component,String[] exclusions) throws IOException {
+	public void encodePassThruWithExclusionsArray(FacesContext context,
+			UIComponent component, String[] exclusions) throws IOException {
 		ResponseWriter writer = context.getResponseWriter();
 		Map attributes = component.getAttributes();
 		Arrays.sort(exclusions);
 		for (int i = 0; i < HTML.PASS_THRU.length; i++) {
 			String attribute = HTML.PASS_THRU[i];
-			if(Arrays.binarySearch(exclusions, attribute) < 0){
+			if (Arrays.binarySearch(exclusions, attribute) < 0) {
 				encodePassThruAttribute(context, attributes, writer, attribute);
 			}
 		}
 	}
 
 	/**
-	 * Encode one pass-thru attribute, with plain/boolean/url value, got from properly component attribute.
+	 * Encode one pass-thru attribute, with plain/boolean/url value, got from
+	 * properly component attribute.
+	 * 
 	 * @param context
 	 * @param component
 	 * @param writer
 	 * @param attribute
 	 * @throws IOException
 	 */
-	public void encodePassThruAttribute(FacesContext context, Map attributes, ResponseWriter writer, String attribute) throws IOException {
-		Object value = attributeValue(attribute,attributes.get(getComponentAttributeName(attribute)));
+	public void encodePassThruAttribute(FacesContext context, Map attributes,
+			ResponseWriter writer, String attribute) throws IOException {
+		Object value = attributeValue(attribute, attributes
+				.get(getComponentAttributeName(attribute)));
 		if (null != value && shouldRenderAttribute(value)) {
-			if(Arrays.binarySearch(HTML.PASS_THRU_URI, attribute)>=0){
-				String url = context.getApplication().getViewHandler().getResourceURL(context, value.toString());
+			if (Arrays.binarySearch(HTML.PASS_THRU_URI, attribute) >= 0) {
+				String url = context.getApplication().getViewHandler()
+						.getResourceURL(context, value.toString());
 				url = context.getExternalContext().encodeResourceURL(url);
-				writer.writeURIAttribute(attribute,url,attribute);
+				writer.writeURIAttribute(attribute, url, attribute);
 			} else {
-				writer.writeAttribute(attribute,value,attribute);
+				writer.writeAttribute(attribute, value, attribute);
 			}
 		}
 	}
 
-	
-	public void encodeAttributesFromArray(FacesContext context, UIComponent component,String[] attrs) throws IOException {
+	public void encodeAttributesFromArray(FacesContext context,
+			UIComponent component, String[] attrs) throws IOException {
 		ResponseWriter writer = context.getResponseWriter();
 		Map attributes = component.getAttributes();
 		for (int i = 0; i < attrs.length; i++) {
@@ -422,76 +380,89 @@
 		}
 	}
 
-	
 	/**
 	 * Encode attributes given by comma-separated string list.
-	 * @param context current JSF context
-	 * @param component for with render attributes values
-	 * @param attrs comma separated list of attributes
+	 * 
+	 * @param context
+	 *            current JSF context
+	 * @param component
+	 *            for with render attributes values
+	 * @param attrs
+	 *            comma separated list of attributes
 	 * @throws IOException
 	 */
-	public void encodeAttributes(FacesContext context, UIComponent component,String attrs) throws IOException {
+	public void encodeAttributes(FacesContext context, UIComponent component,
+			String attrs) throws IOException {
 		if (null != attrs) {
 			String[] attrsArray = attrs.split(",");
-			encodeAttributesFromArray(context,component,attrsArray);
+			encodeAttributesFromArray(context, component, attrsArray);
 		}
 	}
+
 	/**
 	 * @param context
 	 * @param component
 	 * @param string
 	 * @param string2
-	 * @throws IOException 
+	 * @throws IOException
 	 */
-	public void encodeAttribute(FacesContext context, UIComponent component, Object property, String attributeName) throws IOException {
+	public void encodeAttribute(FacesContext context, UIComponent component,
+			Object property, String attributeName) throws IOException {
 		ResponseWriter writer = context.getResponseWriter();
 		Object value = component.getAttributes().get(property);
 		if (shouldRenderAttribute(value)) {
-			writer.writeAttribute(attributeName,value,property.toString());
+			writer.writeAttribute(attributeName, value, property.toString());
 		}
-		
+
 	}
 
-	public void encodeAttribute(FacesContext context, UIComponent component,String attribute) throws IOException {
-		encodeAttribute(context,component,getComponentAttributeName(attribute),attribute);
+	public void encodeAttribute(FacesContext context, UIComponent component,
+			String attribute) throws IOException {
+		encodeAttribute(context, component,
+				getComponentAttributeName(attribute), attribute);
 	}
+
 	/**
 	 * Write html-attribute
+	 * 
 	 * @param writer
 	 * @param attribute
 	 * @param value
 	 * @throws IOException
 	 */
-	public  void writeAttribute(ResponseWriter writer, String attribute, Object value ) throws IOException {
-		if ( shouldRenderAttribute(value) ) {
-			writer.writeAttribute(attribute, value.toString(), attribute );
+	public void writeAttribute(ResponseWriter writer, String attribute,
+			Object value) throws IOException {
+		if (shouldRenderAttribute(value)) {
+			writer.writeAttribute(attribute, value.toString(), attribute);
 		}
 	}
 
-    /**
-     * @return true if and only if the argument
-     *         <code>attributeVal</code> is an instance of a wrapper for a
-     *         primitive type and its value is equal to the default value for
-     *         that type as given in the spec.
-     */
+	/**
+	 * @return true if and only if the argument <code>attributeVal</code> is
+	 *         an instance of a wrapper for a primitive type and its value is
+	 *         equal to the default value for that type as given in the spec.
+	 */
 
-    public  boolean shouldRenderAttribute(Object attributeVal) {
-    	if(null == attributeVal){
-    		return false;
-    	} else if (attributeVal instanceof Boolean &&
-            ((Boolean) attributeVal).booleanValue() ==
-            Boolean.FALSE.booleanValue()) {
-            return false;
-        } else if(attributeVal.toString().length() == 0){
+	public boolean shouldRenderAttribute(Object attributeVal) {
+		if (null == attributeVal) {
 			return false;
-		} else return isValidProperty(attributeVal);
-    }
-	
-	
+		} else if (attributeVal instanceof Boolean
+				&& ((Boolean) attributeVal).booleanValue() == Boolean.FALSE
+						.booleanValue()) {
+			return false;
+		} else if (attributeVal.toString().length() == 0) {
+			return false;
+		} else
+			return isValidProperty(attributeVal);
+	}
+
 	/**
-	 * Test for valid value of property. by default, for non-setted properties with Java primitive types of
-	 * JSF component return appropriate MIN_VALUE .
-	 * @param property - value of property returned from {@link UIComponent#getAttributes()}
+	 * Test for valid value of property. by default, for non-setted properties
+	 * with Java primitive types of JSF component return appropriate MIN_VALUE .
+	 * 
+	 * @param property -
+	 *            value of property returned from
+	 *            {@link UIComponent#getAttributes()}
 	 * @return true for setted property, false otherthise.
 	 */
 	public boolean isValidProperty(Object property) {
@@ -530,7 +501,7 @@
 	 */
 	protected Object getComponentAttributeName(Object key) {
 		Object converted = substitutions.get(key);
-		if (null==converted) {
+		if (null == converted) {
 			return key;
 		} else {
 			return converted;
@@ -538,41 +509,47 @@
 	}
 
 	/**
-	 * Convert attribute value to proper object. For known html boolean attributes return name
-	 * for true value, otherthise - null. For non-boolean attributes return same value.
-	 * @param name attribute name.
+	 * Convert attribute value to proper object. For known html boolean
+	 * attributes return name for true value, otherthise - null. For non-boolean
+	 * attributes return same value.
+	 * 
+	 * @param name
+	 *            attribute name.
 	 * @param value
 	 * @return
 	 */
-	protected Object attributeValue(String name, Object value){
-		if (null != value && Arrays.binarySearch(HTML.PASS_THRU_BOOLEAN,name)>=0) {
+	protected Object attributeValue(String name, Object value) {
+		if (null != value
+				&& Arrays.binarySearch(HTML.PASS_THRU_BOOLEAN, name) >= 0) {
 			boolean checked = false;
 			if (value instanceof Boolean) {
-				checked = ((Boolean) value).booleanValue();				
-			} else  {
-				if( ! (value instanceof String) ){
+				checked = ((Boolean) value).booleanValue();
+			} else {
+				if (!(value instanceof String)) {
 					value = value.toString();
 				}
 				checked = (new Boolean((String) value)).booleanValue();
 			}
-			return checked?name:null;
+			return checked ? name : null;
 		} else {
 			return value;
 		}
 	}
-	
-	
+
 	/**
 	 * Get boolean value of logical attribute
-	 * @param component 
-	 * @param name attribute name
-	 * @return true if attribute is equals  Boolean.TRUE or String "true" , false otherwise.
+	 * 
+	 * @param component
+	 * @param name
+	 *            attribute name
+	 * @return true if attribute is equals Boolean.TRUE or String "true" , false
+	 *         otherwise.
 	 */
-	public boolean isBooleanAttribute(UIComponent component, String name){
+	public boolean isBooleanAttribute(UIComponent component, String name) {
 		Object attrValue = component.getAttributes().get(name);
 		boolean result = false;
-		if(null != attrValue){
-			if(attrValue instanceof String ){
+		if (null != attrValue) {
+			if (attrValue instanceof String) {
 				result = "true".equalsIgnoreCase((String) attrValue);
 			} else {
 				result = Boolean.TRUE.equals(attrValue);
@@ -580,10 +557,11 @@
 		}
 		return result;
 	}
-	
+
 	/**
-	 * Return converted value for {@link javax.faces.component.ValueHolder} as String,
-	 * perform nessesary convertions.
+	 * Return converted value for {@link javax.faces.component.ValueHolder} as
+	 * String, perform nessesary convertions.
+	 * 
 	 * @param context
 	 * @param component
 	 * @return
@@ -593,27 +571,33 @@
 		if (component instanceof EditableValueHolder) {
 			EditableValueHolder input = (EditableValueHolder) component;
 			String submittedValue = (String) input.getSubmittedValue();
-			if(null != submittedValue) {
+			if (null != submittedValue) {
 				return submittedValue;
 			}
 		}
 		// If no submitted value presented - convert same for UIInput/UIOutput
 		if (component instanceof ValueHolder) {
-			return formatValue(context, component, ((ValueHolder) component).getValue() );
+			return formatValue(context, component, ((ValueHolder) component)
+					.getValue());
 		} else {
-			throw new IllegalArgumentException(Messages.getMessage(Messages.CONVERTING_NON_VALUE_HOLDER_COMPONENT_ERROR, component.getId()));
+			throw new IllegalArgumentException(Messages.getMessage(
+					Messages.CONVERTING_NON_VALUE_HOLDER_COMPONENT_ERROR,
+					component.getId()));
 		}
 	}
 
 	/**
-	 * Convert any object value to string. If component instance of {@link ValueHolder } got {@link Converter} for formatting.
-	 * If not, attempt to use converter based on value type.
+	 * Convert any object value to string. If component instance of
+	 * {@link ValueHolder } got {@link Converter} for formatting. If not,
+	 * attempt to use converter based on value type.
+	 * 
 	 * @param context
 	 * @param component
 	 * @return
 	 */
-	public String formatValue(FacesContext context, UIComponent component,Object value) {
-		if(value instanceof String) {
+	public String formatValue(FacesContext context, UIComponent component,
+			Object value) {
+		if (value instanceof String) {
 			return (String) value;
 		}
 		Converter converter = null;
@@ -621,7 +605,7 @@
 			ValueHolder holder = (ValueHolder) component;
 			converter = holder.getConverter();
 		}
-		if(null == converter && null != value ) {
+		if (null == converter && null != value) {
 			try {
 				converter = context.getApplication().createConverter(
 						value.getClass());
@@ -629,8 +613,8 @@
 				// TODO - log converter exception.
 			}
 		}
-		if(null == converter) {
-			if(null != value) {
+		if (null == converter) {
+			if (null != value) {
 				return value.toString();
 			}
 		} else {
@@ -638,68 +622,73 @@
 		}
 		return "";
 	}
-	
-	public void encodeDimensions(FacesContext context, UIComponent component, InternetResource resource) throws IOException {
+
+	public void encodeDimensions(FacesContext context, UIComponent component,
+			InternetResource resource) throws IOException {
 		if (resource instanceof Java2Dresource) {
 			Java2Dresource j2d = (Java2Dresource) resource;
 			Dimension dim = j2d.getDimensions(context, component);
 			ResponseWriter writer = context.getResponseWriter();
 			writer.writeAttribute("width", String.valueOf(dim.width), "width");
-			writer.writeAttribute("height", String.valueOf(dim.height), "height");
+			writer.writeAttribute("height", String.valueOf(dim.height),
+					"height");
 		}
 	}
-	public String encodePx(String value){
+
+	public String encodePx(String value) {
 		return HtmlDimensions.formatPx(HtmlDimensions.decode(value));
 	}
+
 	/**
-	 * formats given value to 
+	 * formats given value to
+	 * 
 	 * @param value
 	 * @param pattern
 	 * @return
 	 */
-	public String encodePctOrPx(String value){
-		if(value.indexOf('%') > 0){
+	public String encodePctOrPx(String value) {
+		if (value.indexOf('%') > 0) {
 			return value;
 		} else {
 			return encodePx(value);
 		}
 	}
-	
-    /**
-     * Find nested form for given component
-     * @param component
-     * @return nested <code>UIForm</code> component, or <code>null</code>
-     */
-    public  UIForm getNestingForm(FacesContext context,UIComponent component)
-    {
-        UIComponent parent = component.getParent();
-        while (parent != null && !(parent instanceof UIForm))
-        {
-            parent = parent.getParent();
-        }
 
-        UIForm nestingForm = null;
-        if (parent != null)
-        {
-            //link is nested inside a form
-            nestingForm = (UIForm) parent;
-        }
-        return nestingForm;
-    }
+	/**
+	 * Find nested form for given component
+	 * 
+	 * @param component
+	 * @return nested <code>UIForm</code> component, or <code>null</code>
+	 */
+	public UIForm getNestingForm(FacesContext context, UIComponent component) {
+		UIComponent parent = component.getParent();
+		while (parent != null && !(parent instanceof UIForm)) {
+			parent = parent.getParent();
+		}
 
+		UIForm nestingForm = null;
+		if (parent != null) {
+			// link is nested inside a form
+			nestingForm = (UIForm) parent;
+		}
+		return nestingForm;
+	}
+
 	/**
 	 * @param context
 	 * @param component
 	 * @return
-	 * @throws IOException 
+	 * @throws IOException
 	 */
-	public void encodeBeginFormIfNessesary(FacesContext context, UIComponent component) throws IOException {
+	public void encodeBeginFormIfNessesary(FacesContext context,
+			UIComponent component) throws IOException {
 		UIForm form = getNestingForm(context, component);
-		if(null == form) {
-	        ResponseWriter writer = context.getResponseWriter();
-	        String clientId = component.getClientId(context)+DUMMY_FORM_ID;
-	        encodeBeginForm(context, component, writer, clientId);
-//	        writer.writeAttribute(HTML.style_ATTRIBUTE, "margin:0; padding:0;", null);
+		if (null == form) {
+			ResponseWriter writer = context.getResponseWriter();
+			String clientId = component.getClientId(context) + DUMMY_FORM_ID;
+			encodeBeginForm(context, component, writer, clientId);
+			// writer.writeAttribute(HTML.style_ATTRIBUTE, "margin:0;
+			// padding:0;", null);
 		}
 	}
 
@@ -710,31 +699,34 @@
 	 * @param clientId
 	 * @throws IOException
 	 */
-	public void encodeBeginForm(FacesContext context, UIComponent component, ResponseWriter writer, String clientId) throws IOException {
+	public void encodeBeginForm(FacesContext context, UIComponent component,
+			ResponseWriter writer, String clientId) throws IOException {
 		String actionURL = getActionUrl(context);
-		String encodeActionURL = context.getExternalContext().encodeActionURL(actionURL);
+		String encodeActionURL = context.getExternalContext().encodeActionURL(
+				actionURL);
 
 		writer.startElement(HTML.FORM_ELEMENT, component);
 		writer.writeAttribute(HTML.id_ATTRIBUTE, clientId, null);
 		writer.writeAttribute(HTML.NAME_ATTRIBUTE, clientId, null);
 		writer.writeAttribute(HTML.METHOD_ATTRIBUTE, "post", null);
-        writer.writeAttribute(HTML.style_ATTRIBUTE, "margin:0; padding:0;", null);
-		writer.writeURIAttribute(HTML.ACTION_ATTRIBUTE,
-		                         encodeActionURL,
-		                         "action");
+		writer.writeAttribute(HTML.style_ATTRIBUTE, "margin:0; padding:0;",
+				null);
+		writer.writeURIAttribute(HTML.ACTION_ATTRIBUTE, encodeActionURL,
+				"action");
 	}
 
 	/**
 	 * @param context
 	 * @param component
-	 * @throws IOException 
+	 * @throws IOException
 	 */
-	public void encodeEndFormIfNessesary(FacesContext context, UIComponent component) throws IOException {
+	public void encodeEndFormIfNessesary(FacesContext context,
+			UIComponent component) throws IOException {
 		UIForm form = getNestingForm(context, component);
-		if(null == form) {
-        	ResponseWriter writer = context.getResponseWriter();
+		if (null == form) {
+			ResponseWriter writer = context.getResponseWriter();
 			// TODO - hidden form parameters ?
-	        encodeEndForm(context, writer);
+			encodeEndForm(context, writer);
 		}
 	}
 
@@ -743,64 +735,118 @@
 	 * @param writer
 	 * @throws IOException
 	 */
-	public void encodeEndForm(FacesContext context, ResponseWriter writer) throws IOException {
+	public void encodeEndForm(FacesContext context, ResponseWriter writer)
+			throws IOException {
 		AjaxRendererUtils.writeState(context);
 		writer.endElement(HTML.FORM_ELEMENT);
 	}
 
-    /**
-     * @param facesContext
-     * @return String A String representing the action URL
-     */
-    public String getActionUrl(FacesContext facesContext)
-    {
-        ViewHandler viewHandler = facesContext.getApplication().getViewHandler();
-        String viewId = facesContext.getViewRoot().getViewId();
-        return viewHandler.getActionURL(facesContext, viewId);
-    }
-    /**
-     * 
-     * @param context
-     * @param value
-     * @return URL of target resource (src, href, etc)
-     */
-    public String encodeResourceURL(TemplateContext context, Object value){
-    	if(value == null){
-    		return "";
-    	}
-    	FacesContext facesContext = context.getFacesContext();
-    	value = facesContext.getApplication().getViewHandler().getResourceURL(facesContext, value.toString());
-    	return facesContext.getExternalContext().encodeResourceURL((String)value);
-    }
-    /**
-     * Simplified version of {@link encodeId}
-     * @param context
-     * @param component
-     * @return client id of current component
-     */
-    public String clientId(FacesContext context, UIComponent component){
-    	String clientId = "";
-    	try {
+	/**
+	 * @param facesContext
+	 * @return String A String representing the action URL
+	 */
+	public String getActionUrl(FacesContext facesContext) {
+		ViewHandler viewHandler = facesContext.getApplication()
+				.getViewHandler();
+		String viewId = facesContext.getViewRoot().getViewId();
+		return viewHandler.getActionURL(facesContext, viewId);
+	}
+
+	/**
+	 * 
+	 * @param context
+	 * @param value
+	 * @return URL of target resource (src, href, etc)
+	 */
+	public String encodeResourceURL(TemplateContext context, Object value) {
+		if (value == null) {
+			return "";
+		}
+		FacesContext facesContext = context.getFacesContext();
+		value = facesContext.getApplication().getViewHandler().getResourceURL(
+				facesContext, value.toString());
+		return facesContext.getExternalContext().encodeResourceURL(
+				(String) value);
+	}
+
+	/**
+	 * Simplified version of {@link encodeId}
+	 * 
+	 * @param context
+	 * @param component
+	 * @return client id of current component
+	 */
+	public String clientId(FacesContext context, UIComponent component) {
+		String clientId = "";
+		try {
 			clientId = component.getClientId(context);
 		} catch (Exception e) {
-			//just ignore
+			// just ignore
 		}
 		return clientId;
-    }
+	}
 
 	/**
 	 * Wtrie JavaScript with start/end elements and type.
+	 * 
 	 * @param context
 	 * @param tab
 	 * @param string
 	 */
 
-	public void writeScript(FacesContext context, UIComponent component, Object script) throws IOException {
+	public void writeScript(FacesContext context, UIComponent component,
+			Object script) throws IOException {
 		ResponseWriter writer = context.getResponseWriter();
-		writer.startElement(HTML.SCRIPT_ELEM,component);
-		writer.writeAttribute(HTML.TYPE_ATTR,"text/javascript","type");
-		writer.writeText(script,null);
+		writer.startElement(HTML.SCRIPT_ELEM, component);
+		writer.writeAttribute(HTML.TYPE_ATTR, "text/javascript", "type");
+		writer.writeText(script, null);
 		writer.endElement(HTML.SCRIPT_ELEM);
 	}
 
+	/**
+	 * @param component
+	 * @param id
+	 * @return
+	 */
+	public UIComponent findComponentFor(FacesContext context,
+			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;
+	}
+
 }
\ No newline at end of file

Copied: trunk/framework/impl/src/main/java/org/ajax4jsf/resource/CacheContext.java (from rev 2057, trunk/framework/impl/src/main/java/org/ajax4jsf/resource/CacheKey.java)
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/resource/CacheContext.java	                        (rev 0)
+++ trunk/framework/impl/src/main/java/org/ajax4jsf/resource/CacheContext.java	2007-08-04 01:05:53 UTC (rev 2060)
@@ -0,0 +1,31 @@
+/**
+ * 
+ */
+package org.ajax4jsf.resource;
+
+
+/**
+ * @author Nick - mailto:nbelaevski at exadel.com
+ * created 01.05.2007
+ * 
+ */
+public class CacheContext {
+	private CachedResourceContext resourceContext;
+    private InternetResource resource;
+	public CacheContext(CachedResourceContext resourceContext,
+			InternetResource resource) {
+		super();
+		this.resourceContext = resourceContext;
+		this.resource = resource;
+	}
+	/**
+	 * @return the resourceContext
+	 */
+	public CachedResourceContext getResourceContext() {
+		return resourceContext;
+	}
+	public InternetResource getResource() {
+		return resource;
+	}
+	
+}

Deleted: trunk/framework/impl/src/main/java/org/ajax4jsf/resource/CacheKey.java
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/resource/CacheKey.java	2007-08-03 19:33:52 UTC (rev 2059)
+++ trunk/framework/impl/src/main/java/org/ajax4jsf/resource/CacheKey.java	2007-08-04 01:05:53 UTC (rev 2060)
@@ -1,43 +0,0 @@
-/**
- * 
- */
-package org.ajax4jsf.resource;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.ajax4jsf.resource.InternetResource;
-
-/**
- * @author Nick - mailto:nbelaevski at exadel.com
- * created 01.05.2007
- * 
- */
-public class CacheKey {
-	private Object resourceData;
-	private HttpServletRequest request;
-    private HttpServletResponse response;
-    private InternetResource resource;
-	public CacheKey(Object resourceData,
-			HttpServletRequest request, HttpServletResponse response,
-			InternetResource resource) {
-		super();
-		this.resourceData = resourceData;
-		this.request = request;
-		this.response = response;
-		this.resource = resource;
-	}
-	public Object getResourceData() {
-		return resourceData;
-	}
-	public HttpServletRequest getRequest() {
-		return request;
-	}
-	public HttpServletResponse getResponse() {
-		return response;
-	}
-	public InternetResource getResource() {
-		return resource;
-	}
-	
-}

Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/resource/ClientScript.java
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/resource/ClientScript.java	2007-08-03 19:33:52 UTC (rev 2059)
+++ trunk/framework/impl/src/main/java/org/ajax4jsf/resource/ClientScript.java	2007-08-04 01:05:53 UTC (rev 2060)
@@ -82,7 +82,7 @@
 	 */
 	public Date getLastModified(ResourceContext resourceContext) {
 
-		if (isCacheable(null)) {
+		if (isCacheable(resourceContext)) {
 			return super.getLastModified(resourceContext);
 		} else {
 			return new Date(System.currentTimeMillis()+1000L);

Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/resource/InternetResourceBase.java
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/resource/InternetResourceBase.java	2007-08-03 19:33:52 UTC (rev 2059)
+++ trunk/framework/impl/src/main/java/org/ajax4jsf/resource/InternetResourceBase.java	2007-08-04 01:05:53 UTC (rev 2060)
@@ -59,7 +59,7 @@
 
 	private int contentLength = -1;
 
-	private Date lastModified;
+	private Date lastModified = new Date(System.currentTimeMillis());
 
 	private Date expired;
 
@@ -383,7 +383,7 @@
 	 * @see org.ajax4jsf.chameleon.resource.InternetResource#sendHeaders(javax.servlet.http.HttpServletResponse)
 	 */
 	public void sendHeaders(ResourceContext context) {
-		boolean cached = context.isCacheEnabled() && isCacheable(null);
+		boolean cached = context.isCacheEnabled() && isCacheable(context);
 		if (log.isDebugEnabled()) {
 			log.debug(Messages.getMessage(Messages.SET_RESPONSE_HEADERS_INFO,
 					getKey()));

Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/resource/InternetResourceService.java
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/resource/InternetResourceService.java	2007-08-03 19:33:52 UTC (rev 2059)
+++ trunk/framework/impl/src/main/java/org/ajax4jsf/resource/InternetResourceService.java	2007-08-04 01:05:53 UTC (rev 2060)
@@ -57,324 +57,288 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
+public class InternetResourceService implements CacheLoader,
+		CacheConfigurationLoader {
+	private static final Log log = LogFactory
+			.getLog(InternetResourceService.class);
 
-public class InternetResourceService implements CacheLoader, CacheConfigurationLoader {
-    private static final Log log = LogFactory
-	    .getLog(InternetResourceService.class);
+	static final String ENABLE_CACHING_PARAMETER = "enable-cache";
 
-    static final String ENABLE_CACHING_PARAMETER = "enable-cache";
+	private static final String RESOURCE_LIFECYCLE_PARAMETER = "org.ajax4jsf.RESOURCE_LIFECYCLE";
 
-    private static final String RESOURCE_LIFECYCLE_PARAMETER = "org.ajax4jsf.RESOURCE_LIFECYCLE";
+	private FilterConfig filterConfig;
 
-    private FilterConfig filterConfig;
+	private boolean cacheEnabled = true;
 
-    private boolean cacheEnabled = true;
+	private Cache cache = null;
 
-    private Cache cache = null;
-    
-    //private ServletCacheAdministrator cacheAdmin;
+	// private ServletCacheAdministrator cacheAdmin;
 
-    private FacesContextFactory contextFactory;
+	private FacesContextFactory contextFactory;
 
-    // private RenderKitFactory renderKitFactory;
-    private String lifecycleClass;
+	// private RenderKitFactory renderKitFactory;
+	private String lifecycleClass;
 
-    private ResourceLifecycle lifecycle;
+	private ResourceLifecycle lifecycle;
 
-    private InternetResourceBuilder resourceBuilder;
-    
-    private WebXml webXml;
+	private InternetResourceBuilder resourceBuilder;
 
-    public InternetResourceService() {
-    }
+	private WebXml webXml;
 
-    public void setCacheEnabled(boolean b) {
-	cacheEnabled = b;
-    }
+	public InternetResourceService() {
+	}
 
-    public void init(FilterConfig config) throws ServletException {
-	filterConfig = config;
-	ServletContext servletContext = config.getServletContext();
-	if ("false".equalsIgnoreCase(config
-		.getInitParameter(ENABLE_CACHING_PARAMETER))) {
-	    setCacheEnabled(false);
-	    // this.cacheEnabled = false;
-	    //this.cacheAdmin = null;
-	} else {
-	    //this.cacheAdmin = ServletCacheAdministrator.getInstance(
-		//    servletContext, cacheProperties);
-	    try {
-			CacheManager cacheManager = CacheManager.getInstance();
-			Map env = new ServletContextInitMap(servletContext);
-			CacheFactory cacheFactory = cacheManager.getCacheFactory(env);
-			this.cache = cacheFactory.createCache(env, this, this);
-		} catch (CacheException e) {
-			throw new FacesException(e.getMessage(), e);
-		}
+	public void setCacheEnabled(boolean b) {
+		cacheEnabled = b;
 	}
-	// Create Resource-specific Faces Lifecycle instance.
-	lifecycleClass = servletContext
-		.getInitParameter(RESOURCE_LIFECYCLE_PARAMETER);
-	if (lifecycleClass != null) {
-	    ClassLoader classLoader = Thread.currentThread()
-		    .getContextClassLoader();
-	    try {
-		Class clazz = classLoader.loadClass(lifecycleClass);
-		lifecycle = (ResourceLifecycle) clazz.newInstance();
-	    } catch (Exception e) {
-		throw new FacesException(
-			"Error create instance of resource Lifecycle "
-				+ lifecycleClass, e);
-	    }
-	} else {
-	    lifecycle = new ResourceLifecycle();
-	}
-	webXml = new WebXml();
-	webXml.init(servletContext,filterConfig.getFilterName());
-	if (log.isDebugEnabled()) {
-	    log.debug("Resources service initialized");
-	}
-    }
 
-    public boolean serviceResource(HttpServletRequest httpServletRequest,
-	    HttpServletResponse httpServletResponse) throws ServletException,
-	    IOException {
-	String resourceKey = webXml
-		.getFacesResourceKey(httpServletRequest);
-	if (null != resourceKey) {
-	    serviceResource(resourceKey, httpServletRequest,
-		    httpServletResponse);
-	    return true;
+	public void init(FilterConfig config) throws ServletException {
+		filterConfig = config;
+		ServletContext servletContext = config.getServletContext();
+		if ("false".equalsIgnoreCase(config
+				.getInitParameter(ENABLE_CACHING_PARAMETER))) {
+			setCacheEnabled(false);
+			// this.cacheEnabled = false;
+			// this.cacheAdmin = null;
+		} else {
+			// this.cacheAdmin = ServletCacheAdministrator.getInstance(
+			// servletContext, cacheProperties);
+			try {
+				CacheManager cacheManager = CacheManager.getInstance();
+				Map env = new ServletContextInitMap(servletContext);
+				CacheFactory cacheFactory = cacheManager.getCacheFactory(env);
+				this.cache = cacheFactory.createCache(env, this, this);
+			} catch (CacheException e) {
+				throw new FacesException(e.getMessage(), e);
+			}
+		}
+		// Create Resource-specific Faces Lifecycle instance.
+		lifecycleClass = servletContext
+				.getInitParameter(RESOURCE_LIFECYCLE_PARAMETER);
+		if (lifecycleClass != null) {
+			ClassLoader classLoader = Thread.currentThread()
+					.getContextClassLoader();
+			try {
+				Class clazz = classLoader.loadClass(lifecycleClass);
+				lifecycle = (ResourceLifecycle) clazz.newInstance();
+			} catch (Exception e) {
+				throw new FacesException(
+						"Error create instance of resource Lifecycle "
+								+ lifecycleClass, e);
+			}
+		} else {
+			lifecycle = new ResourceLifecycle();
+		}
+		webXml = new WebXml();
+		webXml.init(servletContext, filterConfig.getFilterName());
+		if (log.isDebugEnabled()) {
+			log.debug("Resources service initialized");
+		}
 	}
-	return false;
-    }
 
-    public void serviceResource(String resourceKey, HttpServletRequest request,
-	    HttpServletResponse response) throws ServletException, IOException {
-	InternetResource resource;// getInternetResource(request);
-	try {
-	    resource = getResourceBuilder().getResourceForKey(resourceKey);
-	} catch (ResourceNotFoundException e) {
-	    throw new ServletException(e);
+	public boolean serviceResource(HttpServletRequest httpServletRequest,
+			HttpServletResponse httpServletResponse) throws ServletException,
+			IOException {
+		String resourceKey = webXml.getFacesResourceKey(httpServletRequest);
+		if (null != resourceKey) {
+			serviceResource(resourceKey, httpServletRequest,
+					httpServletResponse);
+			return true;
+		}
+		return false;
 	}
-	Object resourceDataForKey = getResourceBuilder()
-		.getResourceDataForKey(resourceKey);
-	if (resource.isCacheable(null) && this.cacheEnabled) {
-	    // Test for client request modification time.
-	    try {
-		long ifModifiedSince = request
-			.getDateHeader("If-Modified-Since");
-		if (ifModifiedSince >= 0) {
-		    // Test for modification. 1000 ms due to round
-                        // modification
-		    // time to seconds.
-		    long lastModified = resource.getLastModified(null)
-			    .getTime() - 1000;
-		    if (lastModified <= ifModifiedSince) {
-			response.setStatus(304);
-			return;
-		    }
+
+	public void serviceResource(String resourceKey, HttpServletRequest request,
+			HttpServletResponse response) throws ServletException, IOException {
+		InternetResource resource;// getInternetResource(request);
+		try {
+			resource = getResourceBuilder().getResourceForKey(resourceKey);
+		} catch (ResourceNotFoundException e) {
+			throw new ServletException(e);
 		}
-	    } catch (IllegalArgumentException e) {
-		log
-			.warn(
-				Messages
-					.getMessage(Messages.PARSING_IF_MODIFIED_SINCE_WARNING),
-				e);
-	    }
-	    String cacheKey = resourceKey;// + "?" +
-                                                // request.getQueryString();
-	    // TODO - select session/application scope.
-	    //Cache cache = cacheAdmin.getAppScopeCache(getServletContext());
-//	    try {
-		// TODO - use last modified/expires time
-		
-	    CacheKey key = new CacheKey(resourceDataForKey, request, response, resource);
-	    
-	    CacheContent content;
+		Object resourceDataForKey = getResourceBuilder().getResourceDataForKey(
+				resourceKey);
+
+		ResourceContext resourceContext = getResourceContext(resource, request,
+				response);
+		resourceContext.setResourceData(resourceDataForKey);
 		try {
-			content = (CacheContent) cache
-				.get(cacheKey, key);
-			if (log.isDebugEnabled()) {
-			    log.debug(Messages.getMessage(
-				    Messages.GET_CONTENT_FROM_CACHE_INFO, cacheKey));
-			}
-			content.sendHeaders(response);
-			// Correct expires date for resource.
-			Date expired = resource.getExpired(null);
-			if (expired != null) {
-			    response.setDateHeader("Expires", expired.getTime());
+
+			if (resource.isCacheable(resourceContext) && this.cacheEnabled) {
+				// Test for client request modification time.
+				try {
+					long ifModifiedSince = request
+							.getDateHeader("If-Modified-Since");
+					if (ifModifiedSince >= 0) {
+						// Test for modification. 1000 ms due to round
+						// modification
+						// time to seconds.
+						long lastModified = resource.getLastModified(
+								resourceContext).getTime() - 1000;
+						if (lastModified <= ifModifiedSince) {
+							response.setStatus(304);
+							return;
+						}
+					}
+				} catch (IllegalArgumentException e) {
+					log
+							.warn(
+									Messages
+											.getMessage(Messages.PARSING_IF_MODIFIED_SINCE_WARNING),
+									e);
+				}
+				String cacheKey = resourceKey;
+				CachedResourceContext cachedResourceContext = new CachedResourceContext(
+						resourceContext);
+
+				CacheContext cacheLoaderContext = new CacheContext(
+						cachedResourceContext, resource);
+
+				try {
+					CacheContent content = (CacheContent) cache.get(cacheKey,
+							cacheLoaderContext);
+					if (log.isDebugEnabled()) {
+						log
+								.debug(Messages.getMessage(
+										Messages.GET_CONTENT_FROM_CACHE_INFO,
+										cacheKey));
+					}
+					content.sendHeaders(response);
+					// Correct expires date for resource.
+					Date expired = resource.getExpired(resourceContext);
+					if (expired != null) {
+						response.setDateHeader("Expires", expired.getTime());
+					} else {
+						response.setDateHeader("Expires", System
+								.currentTimeMillis()
+								+ InternetResource.DEFAULT_EXPIRE);
+					}
+					if (!request.getMethod().equals("HEAD")) {
+						content.send(response);
+					}
+				} catch (CacheException e) {
+					log.error(
+							Messages.getMessage(Messages.SEND_RESOURCE_ERROR),
+							e);
+					throw new ServletException(Messages.getMessage(
+							Messages.SEND_RESOURCE_ERROR_2, e.getMessage()), e);
+				}
 			} else {
-			    response.setDateHeader("Expires", System
-				    .currentTimeMillis()
-				    + InternetResource.DEFAULT_EXPIRE);
+				getLifecycle().send(resourceContext, resource);
+				// sendResource(resource, request, response,
+				// resourceDataForKey);
 			}
-			if (!request.getMethod().equals("HEAD")) {
-			    content.send(response);
-			}/*
-		    } catch (NeedsRefreshException e) {
-			try {
-			    if (log.isDebugEnabled()) {
-				log.debug(Messages.getMessage(
-					Messages.CONTENT_NOT_FOUND_ERROR, cacheKey));
-			    }
-			    CachedResourceContext context = (CachedResourceContext) sendResource(
-				    resource, request, response, resourceDataForKey);
-			    // TODO - set refresh interval ?
-			    cache.put(cacheKey, context.getContent());
-			} catch (Exception ex) {
-			    //cache.cancelUpdate(cacheKey);
-			    log.error(
-				    Messages.getMessage(Messages.SEND_RESOURCE_ERROR),
-				    ex);
-			    throw new ServletException(Messages.getMessage(
-				    Messages.SEND_RESOURCE_ERROR_2, ex.getMessage()),
-				    ex);
-			}
-		    }*/
-		} catch (CacheException e) {
-		    log.error(
-				    Messages.getMessage(Messages.SEND_RESOURCE_ERROR),
-				    e);
-			    throw new ServletException(Messages.getMessage(
-				    Messages.SEND_RESOURCE_ERROR_2, e.getMessage()),
-				    e);
+
+		} finally {
+			resourceContext.release();
 		}
-	} else {
-	    sendResource(resource, request, response, resourceDataForKey);
 	}
-    }
 
-    /**
-         * @param resource
-         * @param request
-         * @param response
-         * @throws IOException
-         */
-    protected ResourceContext sendResource(InternetResource resource,
-	    HttpServletRequest request, HttpServletResponse response,
-	    Object data) throws IOException {
-	ResourceContext resourceContext = getResourceContext(resource, request,
-		response);
-	resourceContext.setResourceData(data);
-	getLifecycle().send(resourceContext, resource);
-	resourceContext.release();
-	return resourceContext;
-    }
-
-    /**
-         * @param resource
-         * @param request
-         * @param response
-         * @return
-         * @throws ServletException
-         * @throws FacesException
-         */
-    protected ResourceContext getResourceContext(InternetResource resource,
-	    HttpServletRequest request, HttpServletResponse response)
-	    throws FacesException {
-	FacesContext facesContext = null;
-	ResourceContext resourceContext;
-	if (resource.requireFacesContext()) {
-	    facesContext = getFacesContext(request, response);
-	    resourceContext = new FacesResourceContext(facesContext);
-	} else {
-	    resourceContext = new ServletResourceContext(getServletContext(),
-		    request, response);
+	/**
+	 * @param resource
+	 * @param request
+	 * @param response
+	 * @return
+	 * @throws ServletException
+	 * @throws FacesException
+	 */
+	protected ResourceContext getResourceContext(InternetResource resource,
+			HttpServletRequest request, HttpServletResponse response)
+			throws FacesException {
+		FacesContext facesContext = null;
+		ResourceContext resourceContext;
+		if (resource.requireFacesContext()) {
+			facesContext = getFacesContext(request, response);
+			resourceContext = new FacesResourceContext(facesContext);
+		} else {
+			resourceContext = new ServletResourceContext(getServletContext(),
+					request, response);
+		}
+		return resourceContext;
 	}
-	if (resource.isCacheable(null) && this.cacheEnabled) {
-	    resourceContext = new CachedResourceContext(resourceContext);
-	}
-	return resourceContext;
-    }
 
-    /**
-         * Get properties file from classpath
-         * 
-         * @param name
-         * @return
-         */
-    protected Properties getProperties(String name) {
-	Properties properties = new Properties();
-	InputStream props = BaseFilter.class.getResourceAsStream(name);
-	if (null != props) {
-	    try {
-		properties.load(props);
-	    } catch (IOException e) {
-		// TODO Auto-generated catch block
-		log.warn(Messages.getMessage(Messages.READING_PROPERTIES_ERROR,
-			name), e);
-	    } finally {
-		try {
-		    props.close();
-		} catch (IOException e) {
-		    // Can be ignored
+	/**
+	 * Get properties file from classpath
+	 * 
+	 * @param name
+	 * @return
+	 */
+	protected Properties getProperties(String name) {
+		Properties properties = new Properties();
+		InputStream props = BaseFilter.class.getResourceAsStream(name);
+		if (null != props) {
+			try {
+				properties.load(props);
+			} catch (IOException e) {
+				// TODO Auto-generated catch block
+				log.warn(Messages.getMessage(Messages.READING_PROPERTIES_ERROR,
+						name), e);
+			} finally {
+				try {
+					props.close();
+				} catch (IOException e) {
+					// Can be ignored
+				}
+			}
 		}
-	    }
+		return properties;
+
 	}
-	return properties;
 
-    }
+	/**
+	 * @return Returns the servletContext.
+	 */
+	protected ServletContext getServletContext() {
+		return filterConfig.getServletContext();
+	}
 
-    /**
-         * @return Returns the servletContext.
-         */
-    protected ServletContext getServletContext() {
-	return filterConfig.getServletContext();
-    }
+	/**
+	 * @return the lifecycle
+	 * @throws ServletException
+	 */
+	protected ResourceLifecycle getLifecycle() throws FacesException {
+		return lifecycle;
+	}
 
-    /**
-         * @return the lifecycle
-         * @throws ServletException
-         */
-    protected ResourceLifecycle getLifecycle() throws FacesException {
-	return lifecycle;
-    }
+	/**
+	 * @return the contextFactory
+	 */
+	protected synchronized FacesContextFactory getContextFactory() {
+		if (contextFactory == null) {
+			contextFactory = (FacesContextFactory) FactoryFinder
+					.getFactory(FactoryFinder.FACES_CONTEXT_FACTORY);
+		}
 
-    /**
-         * @return the contextFactory
-         */
-    protected synchronized FacesContextFactory getContextFactory() {
-	if (contextFactory == null) {
-		contextFactory = (FacesContextFactory) FactoryFinder
-		.getFactory(FactoryFinder.FACES_CONTEXT_FACTORY);
+		return contextFactory;
 	}
 
-	return contextFactory;
-    }
+	protected FacesContext getFacesContext(ServletRequest request,
+			ServletResponse response) throws FacesException {
+		return getContextFactory().getFacesContext(getServletContext(),
+				request, response, getLifecycle());
+	}
 
-    protected FacesContext getFacesContext(ServletRequest request,
-	    ServletResponse response) throws FacesException {
-	return getContextFactory().getFacesContext(getServletContext(),
-		request, response, getLifecycle());
-    }
-
-    /**
-         * @return the resourceBuilder
-         */
-    protected InternetResourceBuilder getResourceBuilder() {
-	if (resourceBuilder == null) {
-		// Create resource builder for this filter.
-		resourceBuilder = InternetResourceBuilder.getInstance();
+	/**
+	 * @return the resourceBuilder
+	 */
+	protected InternetResourceBuilder getResourceBuilder() {
+		if (resourceBuilder == null) {
+			// Create resource builder for this filter.
+			resourceBuilder = InternetResourceBuilder.getInstance();
+		}
+		return resourceBuilder;
 	}
-	return resourceBuilder;
-    }
 
 	public Object load(Object key, Object context) throws CacheException {
-		CacheKey cacheKey = (CacheKey) context;
-		
-		CachedResourceContext resourceContext = (CachedResourceContext) getResourceContext(cacheKey.getResource(), cacheKey.getRequest(),
-				cacheKey.getResponse());
-			resourceContext.setResourceData(cacheKey.getResourceData());
-			try {
-				getLifecycle().send(resourceContext, cacheKey.getResource());
-			} catch (IOException e) {
-				throw new CacheException(e.getMessage(), e);
-			}
-			resourceContext.release();
-
-		    // TODO - set refresh interval ?
-		    //cache.put(cacheKey, resourceContext.getContent());
+		CacheContext cacheKey = (CacheContext) context;
+		CachedResourceContext resourceContext = cacheKey.getResourceContext();
+		try {
+			getLifecycle().send(resourceContext, cacheKey.getResource());
+		} catch (IOException e) {
+			throw new CacheException(e.getMessage(), e);
+		}
+		// TODO - set refresh interval ?
+		// cache.put(cacheKey, resourceContext.getContent());
 		return resourceContext.getContent();
 	}
 

Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/resource/JarResource.java
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/resource/JarResource.java	2007-08-03 19:33:52 UTC (rev 2059)
+++ trunk/framework/impl/src/main/java/org/ajax4jsf/resource/JarResource.java	2007-08-04 01:05:53 UTC (rev 2060)
@@ -21,7 +21,11 @@
 
 package org.ajax4jsf.resource;
 
+import java.io.IOException;
 import java.io.InputStream;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.Date;
 
 import org.ajax4jsf.resource.ResourceContext;
 

Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/resource/TemplateCSSResource.java
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/resource/TemplateCSSResource.java	2007-08-03 19:33:52 UTC (rev 2059)
+++ trunk/framework/impl/src/main/java/org/ajax4jsf/resource/TemplateCSSResource.java	2007-08-04 01:05:53 UTC (rev 2060)
@@ -156,7 +156,7 @@
 	 * @see org.ajax4jsf.resource.InternetResource#getLastModified(ResourceContext)
 	 */
 	public Date getLastModified(ResourceContext resourceContext) {
-		return _resource.getLastModified(null);
+		return _resource.getLastModified(resourceContext);
 	}
 
 	/**
@@ -192,7 +192,7 @@
 	 * @see org.ajax4jsf.resource.InternetResource#isCacheable(ResourceContext)
 	 */
 	public boolean isCacheable(ResourceContext resourceContext) {
-		return _resource.isCacheable(null);
+		return _resource.isCacheable(resourceContext);
 	}
 
 	/**

Modified: trunk/framework/impl/src/main/java/org/richfaces/skin/SkinFactoryImpl.java
===================================================================
--- trunk/framework/impl/src/main/java/org/richfaces/skin/SkinFactoryImpl.java	2007-08-03 19:33:52 UTC (rev 2059)
+++ trunk/framework/impl/src/main/java/org/richfaces/skin/SkinFactoryImpl.java	2007-08-04 01:05:53 UTC (rev 2060)
@@ -46,9 +46,11 @@
 import org.richfaces.skin.SkinNotFoundException;
 
 /**
- * Implementation of {@link SkinFactory} with building skins from properties files.
+ * Implementation of {@link SkinFactory} with building skins from properties
+ * files.
+ * 
  * @author shura
- *
+ * 
  */
 public class SkinFactoryImpl extends SkinFactory {
 
@@ -75,12 +77,15 @@
 	 * definitions. in this realisation "META-INF/skins/" for vendor , "" -
 	 * user-defined.
 	 */
-	private static final String[] SKINS_PATHS = { "META-INF/skins/%s.skin.properties", "%s.skin.properties" };
+	private static final String[] SKINS_PATHS = {
+			"META-INF/skins/%s.skin.properties", "%s.skin.properties" };
 	private static final String[] DEFAULT_SKIN_PATHS = { DEFAULT_SKIN_PROPERTIES_RESOURCE };
 
-	private static final String[] CONFIGURATIONS_PATHS = { "META-INF/skins/%s.configuration.properties", "%s.configuration.properties" };
+	private static final String[] CONFIGURATIONS_PATHS = {
+			"META-INF/skins/%s.configuration.properties",
+			"%s.configuration.properties" };
 	private static final String[] DEFAULT_CONFIGURATION_PATHS = { "META-INF/skins/DEFAULT.configuration.properties" };
-	
+
 	private Map skins = Collections.synchronizedMap(new HashMap());
 	private Properties defaultSkinProperties = null;
 	private String skinName = null;
@@ -89,6 +94,10 @@
 	private ValueBinding baseSkinBinding = null;
 	private static final Log log = LogFactory.getLog(SkinFactoryImpl.class);
 
+	private static final String A4J_BASE_SKIN_PARAMETER = "org.ajax4jsf.BASE_SKIN";
+
+	private static final String A4J_SKIN_PARAMETER = "org.ajax4jsf.SKIN";
+
 	protected Skin getSkinByName(Object currentSkinOrName) {
 		if (null == currentSkinOrName) {
 			throw new SkinNotFoundException(Messages
@@ -110,14 +119,14 @@
 			currentSkin = buildSkin(currentSkinName, getDefaultSkinProperties());
 			skins.put(currentSkinName, currentSkin);
 		}
-	
+
 		return currentSkin;
 	}
 
 	public Skin getDefaultSkin(FacesContext context) {
 		return getSkinByName(DEFAULT_SKIN_NAME);
 	}
-	
+
 	public Skin getSkin(FacesContext context) {
 		// TODO - cache skin for current thread ? or for current Faces Lifecycle
 		// Phase ?
@@ -144,8 +153,7 @@
 		ClassLoader loader = Thread.currentThread().getContextClassLoader();
 		Properties defaultProperties = new Properties();
 		try {
-			Enumeration properties = loader
-					.getResources(path);
+			Enumeration properties = loader.getResources(path);
 			while (properties.hasMoreElements()) {
 				URL url = (URL) properties.nextElement();
 				InputStream propertyStream = null;
@@ -155,8 +163,8 @@
 				} catch (IOException e) {
 					// DO Nothing...
 					log.info(Messages.getMessage(
-							Messages.DEFAULT_PROPERTIES_NOT_FOUND_ERROR,
-							path), e);
+							Messages.DEFAULT_PROPERTIES_NOT_FOUND_ERROR, path),
+							e);
 					continue;
 				} finally {
 					if (null != propertyStream) {
@@ -166,8 +174,7 @@
 			}
 		} catch (IOException e) {
 			log.info(Messages.getMessage(
-					Messages.DEFAULT_PROPERTIES_NOT_FOUND_ERROR,
-					path), e);
+					Messages.DEFAULT_PROPERTIES_NOT_FOUND_ERROR, path), e);
 		}
 		return defaultProperties;
 	}
@@ -195,10 +202,23 @@
 				binding = skinBinding;
 				skin = skinName;
 			}
-			
+
 			if (binding == null && skin == null) {
 				String currentSkinName = context.getExternalContext()
-						.getInitParameter(useBase ? BASE_SKIN_PARAMETER : SKIN_PARAMETER);
+						.getInitParameter(
+								useBase ? BASE_SKIN_PARAMETER : SKIN_PARAMETER);
+				if (null == currentSkinName) {
+					// Check for a old ( deprecated ) parameter name.
+					currentSkinName = context.getExternalContext()
+							.getInitParameter(
+									useBase ? A4J_BASE_SKIN_PARAMETER
+											: A4J_SKIN_PARAMETER);
+					if (null != currentSkinName) {
+						log.warn("Init parameter for a skin name changed to "+ (useBase ? A4J_BASE_SKIN_PARAMETER
+											: A4J_SKIN_PARAMETER));
+					}
+
+				}
 				if (currentSkinName == null) {
 					// not set - usr default.
 					return DEFAULT_SKIN_NAME;
@@ -211,7 +231,7 @@
 					skin = currentSkinName;
 				}
 			}
-			
+
 			if (useBase) {
 				baseSkinBinding = binding;
 				baseSkinName = skin;
@@ -219,7 +239,7 @@
 				skinBinding = binding;
 				skinName = skin;
 			}
-			
+
 			// }
 		}
 		if (binding != null) {
@@ -243,8 +263,9 @@
 	 * @throws SkinNotFoundException -
 	 *             if no skin properies found for name.
 	 */
-	protected Skin buildSkin(String name, Properties defaultProperties) throws SkinNotFoundException {
-		Map skinParams = loadProperties(name, defaultProperties,SKINS_PATHS);
+	protected Skin buildSkin(String name, Properties defaultProperties)
+			throws SkinNotFoundException {
+		Map skinParams = loadProperties(name, defaultProperties, SKINS_PATHS);
 		return new SkinImpl(skinParams);
 	}
 
@@ -256,7 +277,9 @@
 	 * @throws FacesException
 	 * @throws ReferenceSyntaxException
 	 */
-	protected Map loadProperties(String name, Properties defaultProperties,String[] paths) throws SkinNotFoundException, FacesException, ReferenceSyntaxException {
+	protected Map loadProperties(String name, Properties defaultProperties,
+			String[] paths) throws SkinNotFoundException, FacesException,
+			ReferenceSyntaxException {
 		ClassLoader loader = Thread.currentThread().getContextClassLoader();
 		// Get properties for concrete skin.
 		Properties skinProperties = new Properties(defaultProperties);
@@ -309,14 +332,16 @@
 			String property = skinProperties.getProperty(propertyName);
 			if (null != property) {
 				int count = 0;
-				while ( property.startsWith("&")) {
+				while (property.startsWith("&")) {
 					property = skinProperties
 							.getProperty(property.substring(1));
-					if(null == property){
-						throw new FacesException(Messages.getMessage(Messages.SKIN_ILLEGAL_REFERENCE,propertyName));						
+					if (null == property) {
+						throw new FacesException(Messages.getMessage(
+								Messages.SKIN_ILLEGAL_REFERENCE, propertyName));
 					}
-					if(count++>1000){
-						throw new FacesException(Messages.getMessage(Messages.SKIN_CYCLIC_REFERENCE,propertyName));
+					if (count++ > 1000) {
+						throw new FacesException(Messages.getMessage(
+								Messages.SKIN_CYCLIC_REFERENCE, propertyName));
 					}
 				}
 				if (SkinFactory.isValueReference(property)) {

Added: trunk/framework/impl/src/main/resources/META-INF/.faces-config.xml.jsfdia
===================================================================
--- trunk/framework/impl/src/main/resources/META-INF/.faces-config.xml.jsfdia	                        (rev 0)
+++ trunk/framework/impl/src/main/resources/META-INF/.faces-config.xml.jsfdia	2007-08-04 01:05:53 UTC (rev 2060)
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PROCESS ENTITY="JSFProcess"/>

Modified: trunk/framework/impl/src/main/resources/META-INF/faces-config.xml
===================================================================
--- trunk/framework/impl/src/main/resources/META-INF/faces-config.xml	2007-08-03 19:33:52 UTC (rev 2059)
+++ trunk/framework/impl/src/main/resources/META-INF/faces-config.xml	2007-08-04 01:05:53 UTC (rev 2060)
@@ -31,6 +31,11 @@
        <managed-bean-class>org.richfaces.skin.SkinBean</managed-bean-class>
        <managed-bean-scope>application</managed-bean-scope>
     </managed-bean>
+    <managed-bean>
+       <managed-bean-name>richSkin</managed-bean-name>
+       <managed-bean-class>org.richfaces.skin.SkinBean</managed-bean-class>
+       <managed-bean-scope>application</managed-bean-scope>
+    </managed-bean>
     <managed-bean>
     	<managed-bean-name>ajaxContext</managed-bean-name>
     	<managed-bean-class>org.ajax4jsf.context.AjaxContextImpl</managed-bean-class>

Added: trunk/ui/dataFilterSlider/src/main/java/META-INF/MANIFEST.MF
===================================================================
--- trunk/ui/dataFilterSlider/src/main/java/META-INF/MANIFEST.MF	                        (rev 0)
+++ trunk/ui/dataFilterSlider/src/main/java/META-INF/MANIFEST.MF	2007-08-04 01:05:53 UTC (rev 2060)
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+


Property changes on: trunk/ui/dataFilterSlider/src/main/java/META-INF/MANIFEST.MF
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: trunk/ui/dataTable/src/main/java/META-INF/MANIFEST.MF
===================================================================
--- trunk/ui/dataTable/src/main/java/META-INF/MANIFEST.MF	                        (rev 0)
+++ trunk/ui/dataTable/src/main/java/META-INF/MANIFEST.MF	2007-08-04 01:05:53 UTC (rev 2060)
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+


Property changes on: trunk/ui/dataTable/src/main/java/META-INF/MANIFEST.MF
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: trunk/ui/datascroller/src/main/java/META-INF/MANIFEST.MF
===================================================================
--- trunk/ui/datascroller/src/main/java/META-INF/MANIFEST.MF	                        (rev 0)
+++ trunk/ui/datascroller/src/main/java/META-INF/MANIFEST.MF	2007-08-04 01:05:53 UTC (rev 2060)
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+


Property changes on: trunk/ui/datascroller/src/main/java/META-INF/MANIFEST.MF
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: trunk/ui/drag-drop/src/main/java/META-INF/MANIFEST.MF
===================================================================
--- trunk/ui/drag-drop/src/main/java/META-INF/MANIFEST.MF	                        (rev 0)
+++ trunk/ui/drag-drop/src/main/java/META-INF/MANIFEST.MF	2007-08-04 01:05:53 UTC (rev 2060)
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+


Property changes on: trunk/ui/drag-drop/src/main/java/META-INF/MANIFEST.MF
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: trunk/ui/dropdown-menu/src/main/java/META-INF/MANIFEST.MF
===================================================================
--- trunk/ui/dropdown-menu/src/main/java/META-INF/MANIFEST.MF	                        (rev 0)
+++ trunk/ui/dropdown-menu/src/main/java/META-INF/MANIFEST.MF	2007-08-04 01:05:53 UTC (rev 2060)
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+


Property changes on: trunk/ui/dropdown-menu/src/main/java/META-INF/MANIFEST.MF
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: trunk/ui/gmap/src/main/java/META-INF/MANIFEST.MF
===================================================================
--- trunk/ui/gmap/src/main/java/META-INF/MANIFEST.MF	                        (rev 0)
+++ trunk/ui/gmap/src/main/java/META-INF/MANIFEST.MF	2007-08-04 01:05:53 UTC (rev 2060)
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+


Property changes on: trunk/ui/gmap/src/main/java/META-INF/MANIFEST.MF
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: trunk/ui/menu-components/src/main/java/META-INF/MANIFEST.MF
===================================================================
--- trunk/ui/menu-components/src/main/java/META-INF/MANIFEST.MF	                        (rev 0)
+++ trunk/ui/menu-components/src/main/java/META-INF/MANIFEST.MF	2007-08-04 01:05:53 UTC (rev 2060)
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+


Property changes on: trunk/ui/menu-components/src/main/java/META-INF/MANIFEST.MF
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: trunk/ui/modal-panel/src/main/java/META-INF/MANIFEST.MF
===================================================================
--- trunk/ui/modal-panel/src/main/java/META-INF/MANIFEST.MF	                        (rev 0)
+++ trunk/ui/modal-panel/src/main/java/META-INF/MANIFEST.MF	2007-08-04 01:05:53 UTC (rev 2060)
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+


Property changes on: trunk/ui/modal-panel/src/main/java/META-INF/MANIFEST.MF
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: trunk/ui/panel/src/main/java/META-INF/MANIFEST.MF
===================================================================
--- trunk/ui/panel/src/main/java/META-INF/MANIFEST.MF	                        (rev 0)
+++ trunk/ui/panel/src/main/java/META-INF/MANIFEST.MF	2007-08-04 01:05:53 UTC (rev 2060)
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+


Property changes on: trunk/ui/panel/src/main/java/META-INF/MANIFEST.MF
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: trunk/ui/panelbar/src/main/java/META-INF/MANIFEST.MF
===================================================================
--- trunk/ui/panelbar/src/main/java/META-INF/MANIFEST.MF	                        (rev 0)
+++ trunk/ui/panelbar/src/main/java/META-INF/MANIFEST.MF	2007-08-04 01:05:53 UTC (rev 2060)
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+


Property changes on: trunk/ui/panelbar/src/main/java/META-INF/MANIFEST.MF
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: trunk/ui/simpleTogglePanel/src/main/java/META-INF/MANIFEST.MF
===================================================================
--- trunk/ui/simpleTogglePanel/src/main/java/META-INF/MANIFEST.MF	                        (rev 0)
+++ trunk/ui/simpleTogglePanel/src/main/java/META-INF/MANIFEST.MF	2007-08-04 01:05:53 UTC (rev 2060)
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+


Property changes on: trunk/ui/simpleTogglePanel/src/main/java/META-INF/MANIFEST.MF
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: trunk/ui/spacer/src/main/java/META-INF/MANIFEST.MF
===================================================================
--- trunk/ui/spacer/src/main/java/META-INF/MANIFEST.MF	                        (rev 0)
+++ trunk/ui/spacer/src/main/java/META-INF/MANIFEST.MF	2007-08-04 01:05:53 UTC (rev 2060)
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+


Property changes on: trunk/ui/spacer/src/main/java/META-INF/MANIFEST.MF
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: trunk/ui/suggestionbox/src/main/java/META-INF/MANIFEST.MF
===================================================================
--- trunk/ui/suggestionbox/src/main/java/META-INF/MANIFEST.MF	                        (rev 0)
+++ trunk/ui/suggestionbox/src/main/java/META-INF/MANIFEST.MF	2007-08-04 01:05:53 UTC (rev 2060)
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+


Property changes on: trunk/ui/suggestionbox/src/main/java/META-INF/MANIFEST.MF
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: trunk/ui/togglePanel/src/main/java/META-INF/MANIFEST.MF
===================================================================
--- trunk/ui/togglePanel/src/main/java/META-INF/MANIFEST.MF	                        (rev 0)
+++ trunk/ui/togglePanel/src/main/java/META-INF/MANIFEST.MF	2007-08-04 01:05:53 UTC (rev 2060)
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+


Property changes on: trunk/ui/togglePanel/src/main/java/META-INF/MANIFEST.MF
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: trunk/ui/toolBar/src/main/java/META-INF/MANIFEST.MF
===================================================================
--- trunk/ui/toolBar/src/main/java/META-INF/MANIFEST.MF	                        (rev 0)
+++ trunk/ui/toolBar/src/main/java/META-INF/MANIFEST.MF	2007-08-04 01:05:53 UTC (rev 2060)
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+


Property changes on: trunk/ui/toolBar/src/main/java/META-INF/MANIFEST.MF
___________________________________________________________________
Name: svn:mime-type
   + text/plain




More information about the richfaces-svn-commits mailing list