Author: jbeard
Date: Tue Jun 22 15:52:25 2010
New Revision: 956931

URL: http://svn.apache.org/viewvc?rev=956931&view=rev
Log:
Forgot to check in two important modules.

Added:
    
commons/sandbox/gsoc/2010/scxml-js/branches/browser-tests.1.ie/src/javascript/scxml/cgf/Transformer.js
   (with props)
    
commons/sandbox/gsoc/2010/scxml-js/branches/browser-tests.1.ie/src/javascript/scxml/cgf/util/base.js
   (with props)

Added: 
commons/sandbox/gsoc/2010/scxml-js/branches/browser-tests.1.ie/src/javascript/scxml/cgf/Transformer.js
URL: 
http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/branches/browser-tests.1.ie/src/javascript/scxml/cgf/Transformer.js?rev=956931&view=auto
==============================================================================
--- 
commons/sandbox/gsoc/2010/scxml-js/branches/browser-tests.1.ie/src/javascript/scxml/cgf/Transformer.js
 (added)
+++ 
commons/sandbox/gsoc/2010/scxml-js/branches/browser-tests.1.ie/src/javascript/scxml/cgf/Transformer.js
 Tue Jun 22 15:52:25 2010
@@ -0,0 +1,169 @@
+require.def("src/javascript/scxml/cgf/Transformer",
+["src/javascript/scxml/cgf/util/xml"],
+function(xmlUtil){
+
+       
+
+       return !require.isBrowser ?
+                       //assume Rhino
+                       (function(){
+                               var TransformerFactory = 
javax.xml.transform.TransformerFactory,
+                                       XMLReaderFactory = 
Packages.org.xml.sax.helpers.XMLReaderFactory,
+                                       ByteArrayOutputStream = 
java.io.ByteArrayOutputStream,
+                                       StreamResult = 
javax.xml.transform.stream.StreamResult,
+                                       DOMSource = 
javax.xml.transform.dom.DOMSource,
+                                       SAXResult = 
javax.xml.transform.sax.SAXResult,
+                                       DOMResult = 
javax.xml.transform.dom.DOMResult;
+
+                               //do transforms
+                               var tFactory = TransformerFactory.newInstance();
+
+                               function transform(xsl,xml,params,output){
+                                               // Use the DOM Document to 
define a DOMSource object.
+                                               var xslDomSource = new 
DOMSource(xsl);
+
+                                               // Process the stylesheet 
DOMSource and generate a Transformer.
+                                               var transformer = 
tFactory.newTransformer(xslDomSource);
+
+                                               //set parameters
+                                               for(paramName in params){
+                                                        
transformer.setParameter(paramName,params[paramName]);
+                                               }
+
+                                               // Use the DOM Document to 
define a DOMSource object.
+                                               var xmlDomSource = new 
DOMSource(xml);
+
+                                               var toReturn;
+                                               switch(output){
+                                                       case "xml":
+                                                               // Create an 
empty DOMResult for the Result.
+                                                               var domResult = 
new DOMResult();
+                                                               // Perform the 
transformation, placing the output in the DOMResult.
+                                                               
transformer.transform(xmlDomSource, domResult);
+                                                               toReturn = 
domResult.getNode();
+                                                               break;
+
+                                                       case "text":
+                                                               var baos = new 
ByteArrayOutputStream();
+                                                               var 
streamResult = new StreamResult(baos);
+                                                               
transformer.transform(xmlDomSource, streamResult);
+                                                               toReturn = 
String(new java.lang.String(baos.toByteArray()));
+                                                               break;
+                                               }
+
+                                               return toReturn;
+                               }
+
+                               return 
function(sourceDocument,transformList,params,output){
+                                       transformList = transformList 
+                                                       && !(transformList 
instanceof Array)    ? 
+                                                               [transformList] 
                :
+                                                               transformList;
+
+                                       var docToTransform = sourceDocument;
+
+                                       for(var i=0; i < 
transformList.length-1; i++){  
+                                               var t = transformList[i];
+                                               docToTransform  = 
transform(t,docToTransform,params,"xml");
+                                       }
+
+                                       var lastTransform = 
transformList[transformList.length-1];
+
+                                       // Parse the source XML, and send the 
parse events to the
+                                       // TransformerHandler.
+                                       var toReturn = 
transform(lastTransform,docToTransform,params,output);
+               
+                                       return toReturn;        //string or node
+                               }       
+                       })()            :
+                               window.ActiveXObject    ? 
+                               //IE
+                               
function(sourceDocument,transformList,params,output){
+                                       transformList = transformList && 
!transformList.length  ? 
+                                                               [transformList] 
                :
+                                                               transformList;
+
+                                       //transform to IR
+                                       var docToTransform = sourceDocument;
+                                       for(var i=0; i < 
transformList.length-1; i++){
+                                               var t = transformList[i];
+
+                                               var txt = 
docToTransform.transformNode(t); 
+                                               docToTransform = 
xmlUtil.parseFromString(txt);
+                                       }
+
+                                       var lastFilter = 
transformList[transformList.length-1];
+
+                                       var txt = 
docToTransform.transformNode(lastFilter ); 
+
+                                       var toReturn;
+                                       switch(output){
+                                               case "text":
+                                                       toReturn = txt;
+                                                       break;
+                                               case "xml":
+                                                       toReturn = 
xmlUtil.parseFromString(txt);
+                                                       break;
+                                       }
+               
+                                       return toReturn;        //string or node
+                               }                       :
+                               //everything else
+                               
function(sourceDocument,transformList,params,output){
+                                       transformList = transformList && 
!transformList.length  ? 
+                                                               [transformList] 
                :
+                                                               transformList;
+
+                                       function 
getProcessorFromStylesheetDocument(d){
+                                               var processor = new 
XSLTProcessor();  
+                                               processor.importStylesheet(d); 
+                                               return processor;
+                                       }
+
+
+                                       function getResultTextFromDoc(d){
+                                               var resultText;
+                                               try{
+                                                       //chrome
+                                                       resultText  = 
d.body.children[0].textContent
+                                               } catch (e){
+                                                       try {
+                                                               //firefox
+                                                               resultText = 
d.documentElement.firstChild.textContent;
+                                                       } catch (e) {
+                                                               
console.log("Cannot get resultText out of object " + d);
+                                                       }
+                                               }
+                                               return resultText;
+                                       }
+
+                                       //transform to IR
+                                       var processors = 
transformList.map(getProcessorFromStylesheetDocument); 
+       
+                                       //set parameters
+                                       processors.forEach(function(p){
+                                               for(paramName in params){
+                                                        
p.setParameter(null,paramName,params[paramName]);
+                                               }
+                                       });
+
+                                       var docToTransform  = sourceDocument;
+                                       processors.forEach(function(p){
+                                               docToTransform = 
p.transformToDocument(docToTransform);
+                                       });
+               
+
+                                       var toReturn;
+                                       switch(output){
+                                               case "text":
+                                                       toReturn = 
getResultTextFromDoc(docToTransform);;
+                                                       break;
+                                               case "xml":
+                                                       toReturn = 
docToTransform;
+                                                       break;
+                                       }
+               
+                                       return toReturn;        //string or node
+                               };
+});
+

Propchange: 
commons/sandbox/gsoc/2010/scxml-js/branches/browser-tests.1.ie/src/javascript/scxml/cgf/Transformer.js
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
commons/sandbox/gsoc/2010/scxml-js/branches/browser-tests.1.ie/src/javascript/scxml/cgf/util/base.js
URL: 
http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/branches/browser-tests.1.ie/src/javascript/scxml/cgf/util/base.js?rev=956931&view=auto
==============================================================================
--- 
commons/sandbox/gsoc/2010/scxml-js/branches/browser-tests.1.ie/src/javascript/scxml/cgf/util/base.js
 (added)
+++ 
commons/sandbox/gsoc/2010/scxml-js/branches/browser-tests.1.ie/src/javascript/scxml/cgf/util/base.js
 Tue Jun 22 15:52:25 2010
@@ -0,0 +1,35 @@
+require.def("src/javascript/scxml/cgf/util/base",
+function(){
+       //some compatibility stuff for IE
+       //TODO: move out into another file
+       if (!Array.indexOf) {
+           Array.prototype.indexOf = function(obj) {
+               for (var i = 0; i < this.length; i++) {
+                   if (this[i] == obj) {
+                       return i;
+                   }
+               }
+               return -1;
+           }
+       }
+
+       if (!Array.map) {
+           Array.prototype.map = function(fn) {
+               var toReturn = [];
+               for (var i = 0; i < this.length; i++) {
+                   toReturn[i] = fn(this[i]);
+               }
+               return toReturn;
+           }
+       }
+
+       if (!Array.forEach) {
+           Array.prototype.forEach = function(fn) {
+               for (var i = 0; i < this.length; i++) {
+                   fn(this[i]);
+               }
+               return undefined;
+           }
+       }
+});
+

Propchange: 
commons/sandbox/gsoc/2010/scxml-js/branches/browser-tests.1.ie/src/javascript/scxml/cgf/util/base.js
------------------------------------------------------------------------------
    svn:eol-style = native


Reply via email to