[richfaces-svn-commits] JBoss Rich Faces SVN: r5837 - in trunk: framework/impl/src/main/javascript/ajaxjsf and 4 other directories.

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Tue Feb 5 13:04:57 EST 2008


Author: alexsmirnov
Date: 2008-02-05 13:04:57 -0500 (Tue, 05 Feb 2008)
New Revision: 5837

Removed:
   trunk/framework/impl/src/test/resources/bindedtest.skin.properties
Modified:
   trunk/framework/impl/src/main/java/org/ajax4jsf/webapp/nekko/NekkoParser.java
   trunk/framework/impl/src/main/javascript/ajaxjsf/JSFAJAX.js
   trunk/framework/impl/src/main/javascript/ajaxjsf/sarissa.js
   trunk/framework/impl/src/main/javascript/ajaxjsf/sarissa_ieemu_xpath.js
   trunk/samples/seamPortletEar/ear/pom.xml
   trunk/samples/tomahawkCompability/pom.xml
   trunk/samples/tomahawkCompability/src/main/webapp/WEB-INF/faces-config.xml
Log:
Update Sarissa library to version 0.9.9

Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/webapp/nekko/NekkoParser.java
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/webapp/nekko/NekkoParser.java	2008-02-05 17:57:49 UTC (rev 5836)
+++ trunk/framework/impl/src/main/java/org/ajax4jsf/webapp/nekko/NekkoParser.java	2008-02-05 18:04:57 UTC (rev 5837)
@@ -425,6 +425,9 @@
 					return;
 				}
 			}
+			if (!headParsed && "head".equalsIgnoreCase(element.rawname)) {
+				insertResources();
+			}
 			super.endElement(element, augs);
 		}
 

Modified: trunk/framework/impl/src/main/javascript/ajaxjsf/JSFAJAX.js
===================================================================
--- trunk/framework/impl/src/main/javascript/ajaxjsf/JSFAJAX.js	2008-02-05 17:57:49 UTC (rev 5836)
+++ trunk/framework/impl/src/main/javascript/ajaxjsf/JSFAJAX.js	2008-02-05 18:04:57 UTC (rev 5837)
@@ -904,7 +904,7 @@
 							return;							
 						}
 						LOG.debug("replace all page content with response");
-	         			var isIE = _SARISSA_IS_IE;
+	         			var isIE = Sarissa._SARISSA_IS_IE;
 						// maksimkaszynski
 						//Prevent "Permission denied in IE7"
 						//Reset calling principal

Modified: trunk/framework/impl/src/main/javascript/ajaxjsf/sarissa.js
===================================================================
--- trunk/framework/impl/src/main/javascript/ajaxjsf/sarissa.js	2008-02-05 17:57:49 UTC (rev 5836)
+++ trunk/framework/impl/src/main/javascript/ajaxjsf/sarissa.js	2008-02-05 18:04:57 UTC (rev 5837)
@@ -1,12 +1,11 @@
 /**
  * ====================================================================
- * About
+ * About Sarissa: http://dev.abiss.gr/sarissa
  * ====================================================================
  * Sarissa is an ECMAScript library acting as a cross-browser wrapper for native XML APIs.
  * The library supports Gecko based browsers like Mozilla and Firefox,
- * Internet Explorer (5.5+ with MSXML3.0+), Konqueror, Safari and a little of Opera
- * @version ${project.version}
- * @author: Manos Batsis, mailto: mbatsis at users full stop sourceforge full stop net
+ * Internet Explorer (5.5+ with MSXML3.0+), Konqueror, Safari and Opera
+ * @author: @author: Copyright 2004-2007 Emmanouil Batsis, mailto: mbatsis at users full stop sourceforge full stop net
  * ====================================================================
  * Licence
  * ====================================================================
@@ -17,6 +16,7 @@
  * In case your copy of Sarissa does not include the license texts, you may find
  * them online in various formats at <a href="http://www.gnu.org">http://www.gnu.org</a> and 
  * <a href="http://www.apache.org">http://www.apache.org</a>.
+ *
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY 
  * KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE 
  * WARRANTIES OF MERCHANTABILITY,FITNESS FOR A PARTICULAR PURPOSE 
@@ -30,45 +30,72 @@
  * <p>Sarissa is a utility class. Provides "static" methods for DOMDocument, 
  * DOM Node serialization to XML strings and other utility goodies.</p>
  * @constructor
+ * @static
  */
-function Sarissa(){};
-Sarissa.VERSION = "${project.version}";
+function Sarissa(){}
+Sarissa.VERSION = "0.9.9";
 Sarissa.PARSED_OK = "Document contains no parsing errors";
 Sarissa.PARSED_EMPTY = "Document is empty";
 Sarissa.PARSED_UNKNOWN_ERROR = "Not well-formed or other error";
 Sarissa.IS_ENABLED_TRANSFORM_NODE = false;
-var _sarissa_iNsCounter = 0;
-var _SARISSA_IEPREFIX4XSLPARAM = "";
-var _SARISSA_HAS_DOM_IMPLEMENTATION = document.implementation && true;
-var _SARISSA_HAS_DOM_CREATE_DOCUMENT = _SARISSA_HAS_DOM_IMPLEMENTATION && document.implementation.createDocument;
-var _SARISSA_HAS_DOM_FEATURE = _SARISSA_HAS_DOM_IMPLEMENTATION && document.implementation.hasFeature;
-var _SARISSA_IS_MOZ = _SARISSA_HAS_DOM_CREATE_DOCUMENT && _SARISSA_HAS_DOM_FEATURE;
-var _SARISSA_IS_SAFARI = (navigator.userAgent && navigator.vendor && (navigator.userAgent.toLowerCase().indexOf("applewebkit") != -1 || navigator.vendor.indexOf("Apple") != -1));
-var _SARISSA_IS_IE = document.all && window.ActiveXObject && navigator.userAgent.toLowerCase().indexOf("msie") > -1  && navigator.userAgent.toLowerCase().indexOf("opera") == -1;
+Sarissa.REMOTE_CALL_FLAG = "gr.abiss.sarissa.REMOTE_CALL_FLAG";
+/** @private */
+Sarissa._sarissa_iNsCounter = 0;
+/** @private */
+Sarissa._SARISSA_IEPREFIX4XSLPARAM = "";
+/** @private */
+Sarissa._SARISSA_HAS_DOM_IMPLEMENTATION = document.implementation && true;
+/** @private */
+Sarissa._SARISSA_HAS_DOM_CREATE_DOCUMENT = Sarissa._SARISSA_HAS_DOM_IMPLEMENTATION && document.implementation.createDocument;
+/** @private */
+Sarissa._SARISSA_HAS_DOM_FEATURE = Sarissa._SARISSA_HAS_DOM_IMPLEMENTATION && document.implementation.hasFeature;
+/** @private */
+Sarissa._SARISSA_IS_MOZ = Sarissa._SARISSA_HAS_DOM_CREATE_DOCUMENT && Sarissa._SARISSA_HAS_DOM_FEATURE;
+/** @private */
+Sarissa._SARISSA_IS_SAFARI = navigator.userAgent.toLowerCase().indexOf("safari") != -1 || navigator.userAgent.toLowerCase().indexOf("konqueror") != -1;
+/** @private */
+Sarissa._SARISSA_IS_SAFARI_OLD = Sarissa._SARISSA_IS_SAFARI && (parseInt((navigator.userAgent.match(/AppleWebKit\/(\d+)/)||{})[1], 10) < 420);
+/** @private */
+Sarissa._SARISSA_IS_IE = document.all && window.ActiveXObject && navigator.userAgent.toLowerCase().indexOf("msie") > -1  && navigator.userAgent.toLowerCase().indexOf("opera") == -1;
+/** @private */
+Sarissa._SARISSA_IS_OPERA = navigator.userAgent.toLowerCase().indexOf("opera") != -1;
 if(!window.Node || !Node.ELEMENT_NODE){
     Node = {ELEMENT_NODE: 1, ATTRIBUTE_NODE: 2, TEXT_NODE: 3, CDATA_SECTION_NODE: 4, ENTITY_REFERENCE_NODE: 5,  ENTITY_NODE: 6, PROCESSING_INSTRUCTION_NODE: 7, COMMENT_NODE: 8, DOCUMENT_NODE: 9, DOCUMENT_TYPE_NODE: 10, DOCUMENT_FRAGMENT_NODE: 11, NOTATION_NODE: 12};
-};
+}
 
+//This breaks for(x in o) loops in the old Safari
+if(Sarissa._SARISSA_IS_SAFARI_OLD){
+	HTMLHtmlElement = document.createElement("html").constructor;
+	Node = HTMLElement = {};
+	HTMLElement.prototype = HTMLHtmlElement.__proto__.__proto__;
+	HTMLDocument = Document = document.constructor;
+	var x = new DOMParser();
+	XMLDocument = x.constructor;
+	Element = x.parseFromString("<Single />", "text/xml").documentElement.constructor;
+	x = null;
+}
 if(typeof XMLDocument == "undefined" && typeof Document !="undefined"){ XMLDocument = Document; } 
 
 // IE initialization
-if(_SARISSA_IS_IE){
+if(Sarissa._SARISSA_IS_IE){
     // for XSLT parameter names, prefix needed by IE
-    _SARISSA_IEPREFIX4XSLPARAM = "xsl:";
+    Sarissa._SARISSA_IEPREFIX4XSLPARAM = "xsl:";
     // used to store the most recent ProgID available out of the above
     var _SARISSA_DOM_PROGID = "";
     var _SARISSA_XMLHTTP_PROGID = "";
     var _SARISSA_DOM_XMLWRITER = "";
     /**
-     * Called when the Sarissa_xx.js file is parsed, to pick most recent
+     * Called when the sarissa.js file is parsed, to pick most recent
      * ProgIDs for IE, then gets destroyed.
+     * @memberOf Sarissa
      * @private
      * @param idList an array of MSXML PROGIDs from which the most recent will be picked for a given object
      * @param enabledList an array of arrays where each array has two items; the index of the PROGID for which a certain feature is enabled
      */
     Sarissa.pickRecentProgID = function (idList){
         // found progID flag
-        var bFound = false;
+        var bFound = false, e;
+        var o2Store;
         for(var i=0; i < idList.length && !bFound; i++){
             try{
                 var oDoc = new ActiveXObject(idList[i]);
@@ -76,11 +103,12 @@
                 bFound = true;
             }catch (objException){
                 // trap; try next progID
-            };
-        };
+                e = objException;
+            }
+        }
         if (!bFound) {
-            throw "Could not retreive a valid progID of Class: " + idList[idList.length-1]+". (original exception: "+e+")";
-        };
+            throw "Could not retrieve a valid progID of Class: " + idList[idList.length-1]+". (original exception: "+e+")";
+        }
         idList = null;
         return o2Store;
     };
@@ -97,10 +125,10 @@
         XMLHttpRequest = function() {
             if(!_SARISSA_XMLHTTP_PROGID){
                 _SARISSA_XMLHTTP_PROGID = Sarissa.pickRecentProgID(["Msxml2.XMLHTTP.6.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]);
-            };
+            }
             return new ActiveXObject(_SARISSA_XMLHTTP_PROGID);
         };
-    };
+    }
     // we dont need this anymore
     //============================================
     // Factory methods (IE)
@@ -109,7 +137,7 @@
     Sarissa.getDomDocument = function(sUri, sName){
         if(!_SARISSA_DOM_PROGID){
             _SARISSA_DOM_PROGID = Sarissa.pickRecentProgID(["Msxml2.DOMDocument.6.0", "Msxml2.DOMDocument.3.0", "MSXML2.DOMDocument", "MSXML.DOMDocument", "Microsoft.XMLDOM"]);
-        };
+        }
         var oDoc = new ActiveXObject(_SARISSA_DOM_PROGID);
         // if a root tag name was provided, we need to load it in the DOM object
         if (sName){
@@ -121,22 +149,22 @@
                     prefix = sName.substring(0, sName.indexOf(":"));
                     sName = sName.substring(sName.indexOf(":")+1); 
                 }else{
-                    prefix = "a" + (_sarissa_iNsCounter++);
-                };
-            };
+                    prefix = "a" + (Sarissa._sarissa_iNsCounter++);
+                }
+            }
             // use namespaces if a namespace URI exists
             if(sUri){
                 oDoc.loadXML('<' + prefix+':'+sName + " xmlns:" + prefix + "=\"" + sUri + "\"" + " />");
             } else {
                 oDoc.loadXML('<' + sName + " />");
-            };
-        };
+            }
+        }
         return oDoc;
     };
     // see non-IE version   
     Sarissa.getParseErrorText = function (oDoc) {
         var parseErrorText = Sarissa.PARSED_OK;
-        if(oDoc && oDoc.parseError && oDoc.parseError.errorCode && oDoc.parseError.errorCode != 0){
+        if(oDoc && oDoc.parseError && oDoc.parseError.errorCode && oDoc.parseError.errorCode !== 0){
             parseErrorText = "XML Parsing Error: " + oDoc.parseError.reason + 
                 "\nLocation: " + oDoc.parseError.url + 
                 "\nLine Number " + oDoc.parseError.line + ", Column " + 
@@ -145,28 +173,28 @@
                 "\n";
             for(var i = 0;  i < oDoc.parseError.linepos;i++){
                 parseErrorText += "-";
-            };
+            }
             parseErrorText +=  "^\n";
         }
-        else if(oDoc.documentElement == null){
+        else if(oDoc.documentElement === null){
             parseErrorText = Sarissa.PARSED_EMPTY;
-        };
+        }
         return parseErrorText;
     };
     // see non-IE version
     Sarissa.setXpathNamespaces = function(oDoc, sNsSet) {
         oDoc.setProperty("SelectionLanguage", "XPath");
         oDoc.setProperty("SelectionNamespaces", sNsSet);
-    };   
+    };
     /**
-     * Basic implementation of Mozilla's XSLTProcessor for IE. 
+     * An implementation of Mozilla's XSLTProcessor for IE. 
      * Reuses the same XSLT stylesheet for multiple transforms
      * @constructor
      */
     XSLTProcessor = function(){
         if(!_SARISSA_XSLTEMPLATE_PROGID){
             _SARISSA_XSLTEMPLATE_PROGID = Sarissa.pickRecentProgID(["Msxml2.XSLTemplate.6.0", "MSXML2.XSLTemplate.3.0"]);
-        };
+        }
         this.template = new ActiveXObject(_SARISSA_XSLTEMPLATE_PROGID);
         this.processor = null;
     };
@@ -178,29 +206,39 @@
     XSLTProcessor.prototype.importStylesheet = function(xslDoc){
         if(!_SARISSA_THREADEDDOM_PROGID){
             _SARISSA_THREADEDDOM_PROGID = Sarissa.pickRecentProgID(["MSXML2.FreeThreadedDOMDocument.6.0", "MSXML2.FreeThreadedDOMDocument.3.0"]);
-        };
+        }
         xslDoc.setProperty("SelectionLanguage", "XPath");
         xslDoc.setProperty("SelectionNamespaces", "xmlns:xsl='http://www.w3.org/1999/XSL/Transform'");
         // convert stylesheet to free threaded
         var converted = new ActiveXObject(_SARISSA_THREADEDDOM_PROGID);
         // make included/imported stylesheets work if exist and xsl was originally loaded from url
-        if(xslDoc.url && xslDoc.selectSingleNode("//xsl:*[local-name() = 'import' or local-name() = 'include']") != null){
+        try{
+            converted.resolveExternals = true; 
+            converted.setProperty("AllowDocumentFunction", true); 
+        }
+        catch(e){
+            // Ignore. "AllowDocumentFunction" is only supported in MSXML 3.0 SP4 and later.
+        } 
+        if(xslDoc.url && xslDoc.selectSingleNode("//xsl:*[local-name() = 'import' or local-name() = 'include']") !== null){
             converted.async = false;
-            if (_SARISSA_THREADEDDOM_PROGID == "MSXML2.FreeThreadedDOMDocument.6.0") { 
-                converted.setProperty("AllowDocumentFunction", true); 
-                converted.resolveExternals = true; 
-            }
             converted.load(xslDoc.url);
-        } else {
+        } 
+        else {
             converted.loadXML(xslDoc.xml);
-        };
+        }
         converted.setProperty("SelectionNamespaces", "xmlns:xsl='http://www.w3.org/1999/XSL/Transform'");
         var output = converted.selectSingleNode("//xsl:output");
-        this.outputMethod = output ? output.getAttribute("method") : "html";
+        //this.outputMethod = output ? output.getAttribute("method") : "html";
+        if(output) {
+            this.outputMethod = output.getAttribute("method");
+        } 
+        else {
+            delete this.outputMethod;
+        } 
         this.template.stylesheet = converted;
         this.processor = this.template.createProcessor();
         // for getParameter and clearParameters
-        this.paramsSet = new Array();
+        this.paramsSet = [];
     };
 
     /**
@@ -210,9 +248,10 @@
      */
     XSLTProcessor.prototype.transformToDocument = function(sourceDoc){
         // fix for bug 1549749
+        var outDoc;
         if(_SARISSA_THREADEDDOM_PROGID){
             this.processor.input=sourceDoc;
-            var outDoc=new ActiveXObject(_SARISSA_DOM_PROGID);
+            outDoc=new ActiveXObject(_SARISSA_DOM_PROGID);
             this.processor.output=outDoc;
             this.processor.transform();
             return outDoc;
@@ -220,15 +259,15 @@
         else{
             if(!_SARISSA_DOM_XMLWRITER){
                 _SARISSA_DOM_XMLWRITER = Sarissa.pickRecentProgID(["Msxml2.MXXMLWriter.6.0", "Msxml2.MXXMLWriter.3.0", "MSXML2.MXXMLWriter", "MSXML.MXXMLWriter", "Microsoft.XMLDOM"]);
-            };
+            }
             this.processor.input = sourceDoc;
-            var outDoc = new ActiveXObject(_SARISSA_DOM_XMLWRITER);
+            outDoc = new ActiveXObject(_SARISSA_DOM_XMLWRITER);
             this.processor.output = outDoc; 
             this.processor.transform();
             var oDoc = new ActiveXObject(_SARISSA_DOM_PROGID);
             oDoc.loadXML(outDoc.output+"");
             return oDoc;
-        };
+        }
     };
     
     /**
@@ -243,10 +282,11 @@
         this.processor.transform();
         var s = this.processor.output;
         var f = ownerDoc.createDocumentFragment();
+        var container;
         if (this.outputMethod == 'text') {
             f.appendChild(ownerDoc.createTextNode(s));
         } else if (ownerDoc.body && ownerDoc.body.innerHTML) {
-            var container = ownerDoc.createElement('div');
+            container = ownerDoc.createElement('div');
             container.innerHTML = s;
             while (container.hasChildNodes()) {
                 f.appendChild(container.firstChild);
@@ -259,7 +299,7 @@
             }
             var xml = ''.concat('<my>', s, '</my>');
             oDoc.loadXML(xml);
-            var container = oDoc.documentElement;
+            container = oDoc.documentElement;
             while (container.hasChildNodes()) {
                 f.appendChild(container.firstChild);
             }
@@ -273,21 +313,22 @@
      * @argument name The parameter base name
      * @argument value The new parameter value
      */
-    XSLTProcessor.prototype.setParameter = function(nsURI, name, value){
-        // make value a zero length string if null to allow clearing
-        value = value ? value : "";
-        // nsURI is optional but cannot be null 
-        if(nsURI){
-            this.processor.addParameter(name, value, nsURI);
-        }else{
-            this.processor.addParameter(name, value);
-        };
-        // update updated params for getParameter 
-        if(!this.paramsSet[""+nsURI]){
-            this.paramsSet[""+nsURI] = new Array();
-        };
-        this.paramsSet[""+nsURI][name] = value;
-    };
+     XSLTProcessor.prototype.setParameter = function(nsURI, name, value){
+         // make value a zero length string if null to allow clearing
+         value = value ? value : "";
+         // nsURI is optional but cannot be null
+         if(nsURI){
+             this.processor.addParameter(name, value, nsURI);
+         }else{
+             this.processor.addParameter(name, value);
+         }
+         // update updated params for getParameter
+         nsURI = "" + (nsURI || "");
+         if(!this.paramsSet[nsURI]){
+             this.paramsSet[nsURI] = [];
+         }
+         this.paramsSet[nsURI][name] = value;
+     };
     /**
      * Gets a parameter if previously set by setParameter. Returns null
      * otherwise
@@ -296,30 +337,31 @@
      * @return The parameter value if reviously set by setParameter, null otherwise
      */
     XSLTProcessor.prototype.getParameter = function(nsURI, name){
-        nsURI = "" + nsURI;
+        nsURI = "" + (nsURI || "");
         if(this.paramsSet[nsURI] && this.paramsSet[nsURI][name]){
             return this.paramsSet[nsURI][name];
         }else{
             return null;
-        };
+        }
     };
+    
     /**
      * Clear parameters (set them to default values as defined in the stylesheet itself)
      */
     XSLTProcessor.prototype.clearParameters = function(){
         for(var nsURI in this.paramsSet){
             for(var name in this.paramsSet[nsURI]){
-                if(nsURI){
+                if(nsURI!==""){
                     this.processor.addParameter(name, "", nsURI);
                 }else{
                     this.processor.addParameter(name, "");
-                };
-            };
-        };
-        this.paramsSet = new Array();
+                }
+            }
+        }
+        this.paramsSet = [];
     };
 }else{ /* end IE initialization, try to deal with real browsers now ;-) */
-    if(_SARISSA_HAS_DOM_CREATE_DOCUMENT){
+    if(Sarissa._SARISSA_HAS_DOM_CREATE_DOCUMENT){
         /**
          * <p>Ensures the document was loaded correctly, otherwise sets the
          * parseError to -1 to indicate something went wrong. Internal use</p>
@@ -338,6 +380,7 @@
         /**
          * <p>Sets the readyState property of the given DOM Document object.
          * Internal use.</p>
+         * @memberOf Sarissa
          * @private
          * @argument oDoc the DOM Document object to fire the
          *          readystatechange event
@@ -346,9 +389,11 @@
         Sarissa.__setReadyState__ = function(oDoc, iReadyState){
             oDoc.readyState = iReadyState;
             oDoc.readystate = iReadyState;
-            if (oDoc.onreadystatechange != null && typeof oDoc.onreadystatechange == "function")
+            if (oDoc.onreadystatechange !== null && typeof oDoc.onreadystatechange == "function") {
                 oDoc.onreadystatechange();
+            }
         };
+        
         Sarissa.getDomDocument = function(sUri, sName){
             var oDoc = document.implementation.createDocument(sUri?sUri:null, sName?sName:null, null);
             if(!oDoc.onreadystatechange){
@@ -357,7 +402,7 @@
                 * <p>Emulate IE's onreadystatechange attribute</p>
                 */
                 oDoc.onreadystatechange = null;
-            };
+            }
             if(!oDoc.readyState){
                 /**
                 * <p>Emulates IE's readyState property, which always gives an integer from 0 to 4:</p>
@@ -367,17 +412,18 @@
                 * <li>4 == COMPLETED</li></ul>
                 */
                 oDoc.readyState = 0;
-            };
+            }
             oDoc.addEventListener("load", _sarissa_XMLDocument_onload, false);
             return oDoc;
         };
         if(window.XMLDocument){
             // do nothing
         }// TODO: check if the new document has content before trying to copynodes, check  for error handling in DOM 3 LS
-        else if(_SARISSA_HAS_DOM_FEATURE && window.Document && !Document.prototype.load && document.implementation.hasFeature('LS', '3.0')){
-            //Opera 9 may get the XPath branch which gives creates XMLDocument, therefore it doesn't reach here which is good
+        else if(Sarissa._SARISSA_HAS_DOM_FEATURE && window.Document && !Document.prototype.load && document.implementation.hasFeature('LS', '3.0')){
+    		//Opera 9 may get the XPath branch which gives creates XMLDocument, therefore it doesn't reach here which is good
             /**
             * <p>Factory method to obtain a new DOM Document object</p>
+            * @memberOf Sarissa
             * @argument sUri the namespace of the root node (if any)
             * @argument sUri the local name of the root node (if any)
             * @returns a new DOM Document
@@ -393,17 +439,17 @@
                 // looks like safari does not create the root element for some unknown reason
                 if(oDoc && (sUri || sName) && !oDoc.documentElement){
                     oDoc.appendChild(oDoc.createElementNS(sUri, sName));
-                };
+                }
                 return oDoc;
             };
-        };
-    };//if(_SARISSA_HAS_DOM_CREATE_DOCUMENT)
-};
+        }
+    }//if(Sarissa._SARISSA_HAS_DOM_CREATE_DOCUMENT)
+}
 //==========================================
 // Common stuff
 //==========================================
 if(!window.DOMParser){
-    if(_SARISSA_IS_SAFARI){
+    if(Sarissa._SARISSA_IS_SAFARI){
         /*
          * DOMParser is a utility class, used to construct DOMDocuments from XML strings
          * @constructor
@@ -428,10 +474,10 @@
             doc.loadXML(sXml);
             return doc;
         };
-    };
-};
+    }
+}
 
-if((typeof(document.importNode) == "undefined") && _SARISSA_IS_IE){
+if((typeof(document.importNode) == "undefined") && Sarissa._SARISSA_IS_IE){
     try{
         /**
         * Implementation of importNode for the context window document in IE.
@@ -443,7 +489,7 @@
         document.importNode = function(oNode, bChildren){
             var tmp;
             if (oNode.nodeName=='#text') {
-                return document.createTextElement(oNode.data);
+                return document.createTextNode(oNode.data);
             }
             else {
                 if(oNode.nodeName == "tbody" || oNode.nodeName == "tr"){
@@ -457,24 +503,24 @@
                 }
                 else{
                     tmp = document.createElement("div");
-                };
+                }
                 if(bChildren){
                     tmp.innerHTML = oNode.xml ? oNode.xml : oNode.outerHTML;
                 }else{
                     tmp.innerHTML = oNode.xml ? oNode.cloneNode(false).xml : oNode.cloneNode(false).outerHTML;
-                };
+                }
                 return tmp.getElementsByTagName("*")[0];
-            };
-            
+            }
         };
-    }catch(e){ };
-};
+    }catch(e){ }
+}
 if(!Sarissa.getParseErrorText){
     /**
      * <p>Returns a human readable description of the parsing error. Usefull
      * for debugging. Tip: append the returned error string in a &lt;pre&gt;
      * element if you want to render it.</p>
      * <p>Many thanks to Christian Stocker for the initial patch.</p>
+     * @memberOf Sarissa
      * @argument oDoc The target DOM document
      * @returns The parsing error description of the target Document in
      *          human readable form (preformated text)
@@ -489,12 +535,18 @@
         } else if(oDoc.getElementsByTagName("parsererror").length > 0){
             var parsererror = oDoc.getElementsByTagName("parsererror")[0];
             parseErrorText = Sarissa.getText(parsererror, true)+"\n";
-        } else if(oDoc.parseError && oDoc.parseError.errorCode != 0){
+        } else if(oDoc.parseError && oDoc.parseError.errorCode !== 0){
             parseErrorText = Sarissa.PARSED_UNKNOWN_ERROR;
-        };
+        }
         return parseErrorText;
     };
-};
+}
+/**
+ * Get a string with the concatenated values of all string nodes under the given node
+ * @memberOf Sarissa
+ * @argument oNode the given DOM node
+ * @argument deep whether to recursively scan the children nodes of the given node for text as well. Default is <code>false</code> 
+ */
 Sarissa.getText = function(oNode, deep){
     var s = "";
     var nodes = oNode.childNodes;
@@ -503,18 +555,13 @@
         var nodeType = node.nodeType;
         if(nodeType == Node.TEXT_NODE || nodeType == Node.CDATA_SECTION_NODE){
             s += node.data;
-        } else if(deep == true
-                    && (nodeType == Node.ELEMENT_NODE
-                        || nodeType == Node.DOCUMENT_NODE
-                        || nodeType == Node.DOCUMENT_FRAGMENT_NODE)){
+        } else if(deep === true && (nodeType == Node.ELEMENT_NODE || nodeType == Node.DOCUMENT_NODE || nodeType == Node.DOCUMENT_FRAGMENT_NODE)){
             s += Sarissa.getText(node, true);
-        };
-    };
+        }
+    }
     return s;
 };
-if(!window.XMLSerializer 
-    && Sarissa.getDomDocument 
-    && Sarissa.getDomDocument("","foo", null).xml){
+if(!window.XMLSerializer && Sarissa.getDomDocument && Sarissa.getDomDocument("","foo", null).xml){
     /**
      * Utility class to serialize DOM Node objects to XML strings
      * @constructor
@@ -527,56 +574,65 @@
     XMLSerializer.prototype.serializeToString = function(oNode) {
         return oNode.xml;
     };
-};
+}
 
 /**
- * strips tags from a markup string
+ * Strips tags from the given markup string
+ * @memberOf Sarissa
  */
 Sarissa.stripTags = function (s) {
     return s.replace(/<[^>]+>/g,"");
 };
 /**
  * <p>Deletes all child nodes of the given node</p>
+ * @memberOf Sarissa
  * @argument oNode the Node to empty
  */
 Sarissa.clearChildNodes = function(oNode) {
     // need to check for firstChild due to opera 8 bug with hasChildNodes
     while(oNode.firstChild) {
         oNode.removeChild(oNode.firstChild);
-    };
+    }
 };
 /**
  * <p> Copies the childNodes of nodeFrom to nodeTo</p>
  * <p> <b>Note:</b> The second object's original content is deleted before 
  * the copy operation, unless you supply a true third parameter</p>
+ * @memberOf Sarissa
  * @argument nodeFrom the Node to copy the childNodes from
  * @argument nodeTo the Node to copy the childNodes to
  * @argument bPreserveExisting whether to preserve the original content of nodeTo, default is false
  */
 Sarissa.copyChildNodes = function(nodeFrom, nodeTo, bPreserveExisting) {
+    if(Sarissa._SARISSA_IS_SAFARI && nodeTo.nodeType == Node.DOCUMENT_NODE){ // SAFARI_OLD ??
+    	nodeTo = nodeTo.documentElement; //Appearantly there's a bug in safari where you can't appendChild to a document node
+    }
+    
     if((!nodeFrom) || (!nodeTo)){
         throw "Both source and destination nodes must be provided";
-    };
+    }
     if(!bPreserveExisting){
         Sarissa.clearChildNodes(nodeTo);
-    };
+    }
     var ownerDoc = nodeTo.nodeType == Node.DOCUMENT_NODE ? nodeTo : nodeTo.ownerDocument;
     var nodes = nodeFrom.childNodes;
+    var i;
     if(typeof(ownerDoc.importNode) != "undefined")  {
-        for(var i=0;i < nodes.length;i++) {
+        for(i=0;i < nodes.length;i++) {
             nodeTo.appendChild(ownerDoc.importNode(nodes[i], true));
-        };
+        }
     } else {
-        for(var i=0;i < nodes.length;i++) {
+        for(i=0;i < nodes.length;i++) {
             nodeTo.appendChild(nodes[i].cloneNode(true));
-        };
-    };
+        }
+    }
 };
 
 /**
  * <p> Moves the childNodes of nodeFrom to nodeTo</p>
  * <p> <b>Note:</b> The second object's original content is deleted before 
  * the move operation, unless you supply a true third parameter</p>
+ * @memberOf Sarissa
  * @argument nodeFrom the Node to copy the childNodes from
  * @argument nodeTo the Node to copy the childNodes to
  * @argument bPreserveExisting whether to preserve the original content of nodeTo, default is
@@ -584,81 +640,271 @@
 Sarissa.moveChildNodes = function(nodeFrom, nodeTo, bPreserveExisting) {
     if((!nodeFrom) || (!nodeTo)){
         throw "Both source and destination nodes must be provided";
-    };
+    }
     if(!bPreserveExisting){
         Sarissa.clearChildNodes(nodeTo);
-    };
+    }
     var nodes = nodeFrom.childNodes;
     // if within the same doc, just move, else copy and delete
     if(nodeFrom.ownerDocument == nodeTo.ownerDocument){
         while(nodeFrom.firstChild){
             nodeTo.appendChild(nodeFrom.firstChild);
-        };
+        }
     } else {
         var ownerDoc = nodeTo.nodeType == Node.DOCUMENT_NODE ? nodeTo : nodeTo.ownerDocument;
+        var i;
         if(typeof(ownerDoc.importNode) != "undefined") {
-           for(var i=0;i < nodes.length;i++) {
+           for(i=0;i < nodes.length;i++) {
                nodeTo.appendChild(ownerDoc.importNode(nodes[i], true));
-           };
+           }
         }else{
-           for(var i=0;i < nodes.length;i++) {
+           for(i=0;i < nodes.length;i++) {
                nodeTo.appendChild(nodes[i].cloneNode(true));
-           };
-        };
+           }
+        }
         Sarissa.clearChildNodes(nodeFrom);
-    };
+    }
 };
 
 /** 
- * <p>Serialize any object to an XML string. All properties are serialized using the property name
+ * <p>Serialize any <strong>non</strong> DOM object to an XML string. All properties are serialized using the property name
  * as the XML element name. Array elements are rendered as <code>array-item</code> elements, 
  * using their index/key as the value of the <code>key</code> attribute.</p>
+ * @memberOf Sarissa
  * @argument anyObject the object to serialize
  * @argument objectName a name for that object
- * @return the XML serializationj of the given object as a string
+ * @return the XML serialization of the given object as a string
  */
 Sarissa.xmlize = function(anyObject, objectName, indentSpace){
     indentSpace = indentSpace?indentSpace:'';
     var s = indentSpace  + '<' + objectName + '>';
     var isLeaf = false;
-    if(!(anyObject instanceof Object) || anyObject instanceof Number || anyObject instanceof String 
-        || anyObject instanceof Boolean || anyObject instanceof Date){
+    if(!(anyObject instanceof Object) || anyObject instanceof Number || anyObject instanceof String || anyObject instanceof Boolean || anyObject instanceof Date){
         s += Sarissa.escape(""+anyObject);
         isLeaf = true;
     }else{
         s += "\n";
-        var itemKey = '';
         var isArrayItem = anyObject instanceof Array;
         for(var name in anyObject){
             s += Sarissa.xmlize(anyObject[name], (isArrayItem?"array-item key=\""+name+"\"":name), indentSpace + "   ");
-        };
+        }
         s += indentSpace;
-    };
-    return s += (objectName.indexOf(' ')!=-1?"</array-item>\n":"</" + objectName + ">\n");
+    }
+    return (s += (objectName.indexOf(' ')!=-1?"</array-item>\n":"</" + objectName + ">\n"));
 };
 
 /** 
  * Escape the given string chacters that correspond to the five predefined XML entities
+ * @memberOf Sarissa
  * @param sXml the string to escape
  */
 Sarissa.escape = function(sXml){
-    return sXml.replace(/&/g, "&amp;")
-        .replace(/</g, "&lt;")
-        .replace(/>/g, "&gt;")
-        .replace(/"/g, "&quot;")
-        .replace(/'/g, "&apos;");
+    return sXml.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&apos;");
 };
 
 /** 
  * Unescape the given string. This turns the occurences of the predefined XML 
  * entities to become the characters they represent correspond to the five predefined XML entities
+ * @memberOf Sarissa
  * @param sXml the string to unescape
  */
 Sarissa.unescape = function(sXml){
-    return sXml.replace(/&apos;/g,"'")
-        .replace(/&quot;/g,"\"")
-        .replace(/&gt;/g,">")
-        .replace(/&lt;/g,"<")
-        .replace(/&amp;/g,"&");
+    return sXml.replace(/&apos;/g,"'").replace(/&quot;/g,"\"").replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/&amp;/g,"&");
 };
+
+/** @private */
+Sarissa.updateCursor = function(oTargetElement, sValue) {
+    if(oTargetElement && oTargetElement.style && oTargetElement.style.cursor !== undefined ){
+        oTargetElement.style.cursor = sValue;
+    }
+};
+
+/**
+ * Asynchronously update an element with response of a GET request on the given URL.  Passing a configured XSLT 
+ * processor will result in transforming and updating oNode before using it to update oTargetElement.
+ * You can also pass a callback function to be executed when the update is finished. The function will be called as 
+ * <code>functionName(oNode, oTargetElement);</code>
+ * @memberOf Sarissa
+ * @param sFromUrl the URL to make the request to
+ * @param oTargetElement the element to update
+ * @param xsltproc (optional) the transformer to use on the returned
+ *                  content before updating the target element with it
+ * @param callback (optional) a Function object to execute once the update is finished successfuly, called as <code>callback(oNode, oTargetElement)</code>
+ * @param skipCache (optional) whether to skip any cache
+ */
+Sarissa.updateContentFromURI = function(sFromUrl, oTargetElement, xsltproc, callback, skipCache) {
+    try{
+        Sarissa.updateCursor(oTargetElement, "wait");
+        var xmlhttp = new XMLHttpRequest();
+        xmlhttp.open("GET", sFromUrl, true);
+        sarissa_dhtml_loadHandler = function() {
+            if (xmlhttp.readyState == 4) {
+                Sarissa.updateContentFromNode(xmlhttp.responseXML, oTargetElement, xsltproc, callback);
+            }
+        };
+        xmlhttp.onreadystatechange = sarissa_dhtml_loadHandler;
+        if (skipCache) {
+             var oldage = "Sat, 1 Jan 2000 00:00:00 GMT";
+             xmlhttp.setRequestHeader("If-Modified-Since", oldage);
+        }
+        xmlhttp.send("");
+    }
+    catch(e){
+        Sarissa.updateCursor(oTargetElement, "auto");
+        throw e;
+    }
+};
+
+/**
+ * Update an element's content with the given DOM node. Passing a configured XSLT 
+ * processor will result in transforming and updating oNode before using it to update oTargetElement.
+ * You can also pass a callback function to be executed when the update is finished. The function will be called as 
+ * <code>functionName(oNode, oTargetElement);</code>
+ * @memberOf Sarissa
+ * @param oNode the URL to make the request to
+ * @param oTargetElement the element to update
+ * @param xsltproc (optional) the transformer to use on the given 
+ *                  DOM node before updating the target element with it
+ * @param callback (optional) a Function object to execute once the update is finished successfuly, called as <code>callback(oNode, oTargetElement)</code>
+ */
+Sarissa.updateContentFromNode = function(oNode, oTargetElement, xsltproc, callback) {
+    try {
+        Sarissa.updateCursor(oTargetElement, "wait");
+        Sarissa.clearChildNodes(oTargetElement);
+        // check for parsing errors
+        var ownerDoc = oNode.nodeType == Node.DOCUMENT_NODE?oNode:oNode.ownerDocument;
+        if(ownerDoc.parseError && ownerDoc.parseError !== 0) {
+            var pre = document.createElement("pre");
+            pre.appendChild(document.createTextNode(Sarissa.getParseErrorText(ownerDoc)));
+            oTargetElement.appendChild(pre);
+        }
+        else {
+            // transform if appropriate
+            if(xsltproc) {
+                oNode = xsltproc.transformToDocument(oNode);
+            }
+            // be smart, maybe the user wants to display the source instead
+            if(oTargetElement.tagName.toLowerCase() == "textarea" || oTargetElement.tagName.toLowerCase() == "input") {
+                oTargetElement.value = new XMLSerializer().serializeToString(oNode);
+            }
+            else {
+                // ok that was not smart; it was paranoid. Keep up the good work by trying to use DOM instead of innerHTML
+                if(oNode.nodeType == Node.DOCUMENT_NODE || oNode.ownerDocument.documentElement == oNode) {
+                    oTargetElement.innerHTML = new XMLSerializer().serializeToString(oNode);
+                }
+                else{
+                    oTargetElement.appendChild(oTargetElement.ownerDocument.importNode(oNode, true));
+                }
+            }
+        }
+        if (callback) {
+            callback(oNode, oTargetElement);
+        }
+    }
+    catch(e) {
+            throw e;
+    }
+    finally{
+        Sarissa.updateCursor(oTargetElement, "auto");
+    }
+};
+
+
+/**
+ * Creates an HTTP URL query string from the given HTML form data
+ * @memberOf Sarissa
+ */
+Sarissa.formToQueryString = function(oForm){
+    var qs = "";
+    for(var i = 0;i < oForm.elements.length;i++) {
+        var oField = oForm.elements[i];
+        var sFieldName = oField.getAttribute("name") ? oField.getAttribute("name") : oField.getAttribute("id"); 
+        // ensure we got a proper name/id and that the field is not disabled
+        if(sFieldName && 
+            ((!oField.disabled) || oField.type == "hidden")) {
+            switch(oField.type) {
+                case "hidden":
+                case "text":
+                case "textarea":
+                case "password":
+                    qs += sFieldName + "=" + encodeURIComponent(oField.value) + "&";
+                    break;
+                case "select-one":
+                    qs += sFieldName + "=" + encodeURIComponent(oField.options[oField.selectedIndex].value) + "&";
+                    break;
+                case "select-multiple":
+                    for (var j = 0; j < oField.length; j++) {
+                        var optElem = oField.options[j];
+                        if (optElem.selected === true) {
+                            qs += sFieldName + "[]" + "=" + encodeURIComponent(optElem.value) + "&";
+                        }
+                     }
+                     break;
+                case "checkbox":
+                case "radio":
+                    if(oField.checked) {
+                        qs += sFieldName + "=" + encodeURIComponent(oField.value) + "&";
+                    }
+                    break;
+            }
+        }
+    }
+    // return after removing last '&'
+    return qs.substr(0, qs.length - 1); 
+};
+
+
+/**
+ * Asynchronously update an element with response of an XMLHttpRequest-based emulation of a form submission. <p>The form <code>action</code> and 
+ * <code>method</code> attributess will be followed. Passing a configured XSLT processor will result in 
+ * transforming and updating the server response before using it to update the target element.
+ * You can also pass a callback function to be executed when the update is finished. The function will be called as 
+ * <code>functionName(oNode, oTargetElement);</code></p>
+ * <p>Here is an example of using this in a form element:</p>
+ * <pre name="code" class="xml">&lt;form action="/my/form/handler" method="post" 
+ *     onbeforesubmit="return Sarissa.updateContentFromForm(this, document.getElementById('targetId'));"&gt;<pre>
+ * <p>If JavaScript is supported, the form will not be submitted. Instead, Sarissa will
+ * scan the form and make an appropriate AJAX request, also adding a parameter 
+ * to signal to the server that this is an AJAX call. The parameter is 
+ * constructed as <code>Sarissa.REMOTE_CALL_FLAG = "=true"</code> so you can change the name in your webpage
+ * simply by assigning another value to Sarissa.REMOTE_CALL_FLAG. If JavaScript is not supported
+ * the form will be submitted normally.
+ * @memberOf Sarissa
+ * @param oForm the form submition to emulate
+ * @param oTargetElement the element to update
+ * @param xsltproc (optional) the transformer to use on the returned
+ *                  content before updating the target element with it
+ * @param callback (optional) a Function object to execute once the update is finished successfuly, called as <code>callback(oNode, oTargetElement)</code>
+ * @param skipCache (optional) whether to skip any cache
+ */
+Sarissa.updateContentFromForm = function(oForm, oTargetElement, xsltproc, callback) {
+    try{
+        Sarissa.updateCursor(oTargetElement, "wait");
+        // build parameters from form fields
+        var params = Sarissa.formToQueryString(oForm) + "&" + Sarissa.REMOTE_CALL_FLAG + "=true";
+        var xmlhttp = new XMLHttpRequest();
+        if(oForm.getAttribute("method") && oForm.getAttribute("method").toLowerCase() == "get") {
+            xmlhttp.open("GET", oForm.getAttribute("action")+"?"+params, true);
+        }
+        else{
+            xmlhttp.open('POST', oForm.getAttribute("action"), true);
+            xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
+            xmlhttp.setRequestHeader("Content-length", params.length);
+            xmlhttp.setRequestHeader("Connection", "close");
+        }
+        sarissa_dhtml_loadHandler = function() {
+            if (xmlhttp.readyState == 4) {
+                Sarissa.updateContentFromNode(xmlhttp.responseXML, oTargetElement, xsltproc, callback);
+            }
+        };
+        xmlhttp.onreadystatechange = sarissa_dhtml_loadHandler;
+        xmlhttp.send("");
+    }
+    catch(e){
+        Sarissa.updateCursor(oTargetElement, "auto");
+        throw e;
+    }
+    return false;
+};
+
 //   EOF

Modified: trunk/framework/impl/src/main/javascript/ajaxjsf/sarissa_ieemu_xpath.js
===================================================================
--- trunk/framework/impl/src/main/javascript/ajaxjsf/sarissa_ieemu_xpath.js	2008-02-05 17:57:49 UTC (rev 5836)
+++ trunk/framework/impl/src/main/javascript/ajaxjsf/sarissa_ieemu_xpath.js	2008-02-05 18:04:57 UTC (rev 5837)
@@ -3,8 +3,8 @@
  * About
  * ====================================================================
  * Sarissa cross browser XML library - IE XPath Emulation 
- * @version ${project.version}
- * @author: Manos Batsis, mailto: mbatsis at users full stop sourceforge full stop net
+ * @version 0.9.9
+ * @author: Copyright 2004-2007 Emmanouil Batsis, mailto: mbatsis at users full stop sourceforge full stop net
  *
  * This script emulates Internet Explorer's selectNodes and selectSingleNode
  * for Mozilla. Associating namespace prefixes with URIs for your XPath queries
@@ -12,7 +12,6 @@
  * USers may also map a namespace prefix to a default (unprefixed) namespace in the
  * source document with Sarissa.setXpathNamespaces
  *
- *
  * ====================================================================
  * Licence
  * ====================================================================
@@ -33,7 +32,7 @@
  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 
  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
-if(_SARISSA_HAS_DOM_FEATURE && document.implementation.hasFeature("XPath", "3.0")){
+if(Sarissa._SARISSA_HAS_DOM_FEATURE && document.implementation.hasFeature("XPath", "3.0")){
     /**
     * <p>SarissaNodeList behaves as a NodeList but is only used as a result to <code>selectNodes</code>,
     * so it also has some properties IEs proprietery object features.</p>
@@ -41,7 +40,7 @@
     * @constructor
     * @argument i the (initial) list size
     */
-    function SarissaNodeList(i){
+    SarissaNodeList = function (i){
         this.length = i;
     };
     /** <p>Set an Array as the prototype object</p> */
@@ -197,4 +196,4 @@
             throw "Method selectNodes is only supported by XML Elements";
     };
     Sarissa.IS_ENABLED_SELECT_NODES = true;
-};
+};
\ No newline at end of file

Deleted: trunk/framework/impl/src/test/resources/bindedtest.skin.properties
===================================================================
--- trunk/framework/impl/src/test/resources/bindedtest.skin.properties	2008-02-05 17:57:49 UTC (rev 5836)
+++ trunk/framework/impl/src/test/resources/bindedtest.skin.properties	2008-02-05 18:04:57 UTC (rev 5837)
@@ -1,4 +0,0 @@
-render.kit=TEST
-string.property=bindedstring
-int.property=10
-bind.property=\#{test.bean}

Modified: trunk/samples/seamPortletEar/ear/pom.xml
===================================================================
--- trunk/samples/seamPortletEar/ear/pom.xml	2008-02-05 17:57:49 UTC (rev 5836)
+++ trunk/samples/seamPortletEar/ear/pom.xml	2008-02-05 18:04:57 UTC (rev 5837)
@@ -60,6 +60,13 @@
 							</includeInApplicationXml>
 							<bundleDir>/</bundleDir>
 						</jarModule>
+						<webModule>
+						<groupId>org.richfaces.samples.seamPortletEar</groupId>
+						<artifactId>seamBookingPortlet</artifactId>
+							<contextRoot>
+								/portalBookingDemo
+							</contextRoot>
+						</webModule>
 					</modules>
 					<artifactTypeMappings>
 						<artifactTypeMapping type="jar" mapping="ejb" />

Modified: trunk/samples/tomahawkCompability/pom.xml
===================================================================
--- trunk/samples/tomahawkCompability/pom.xml	2008-02-05 17:57:49 UTC (rev 5836)
+++ trunk/samples/tomahawkCompability/pom.xml	2008-02-05 18:04:57 UTC (rev 5837)
@@ -3,7 +3,7 @@
 	<parent>
 		<artifactId>samples</artifactId>
 		<groupId>org.richfaces</groupId>
-		<version>1.1.1-SNAPSHOT</version>
+		<version>3.2.0-SNAPSHOT</version>
 	</parent>
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>org.richfaces.samples</groupId>

Modified: trunk/samples/tomahawkCompability/src/main/webapp/WEB-INF/faces-config.xml
===================================================================
--- trunk/samples/tomahawkCompability/src/main/webapp/WEB-INF/faces-config.xml	2008-02-05 17:57:49 UTC (rev 5836)
+++ trunk/samples/tomahawkCompability/src/main/webapp/WEB-INF/faces-config.xml	2008-02-05 18:04:57 UTC (rev 5837)
@@ -1,6 +1,9 @@
-<?xml version="1.0"?>
-<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
-                              "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
+<?xml version="1.0"?>
+
+<!DOCTYPE faces-config PUBLIC
+  "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
+  "http://java.sun.com/dtd/web-facesconfig_1_1.dtd" >
+
 <faces-config>
  <managed-bean>
   <managed-bean-name>bean</managed-bean-name>




More information about the richfaces-svn-commits mailing list