You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by jb...@apache.org on 2010/06/19 07:56:36 UTC
svn commit: r956186 - in
/commons/sandbox/gsoc/2010/scxml-js/branches/browser-tests.1.ie:
lib/js/requirejs/require/xml.js runner.js
src/javascript/scxml/cgf/SCXMLCompiler.js test/testBrowserTransform.html
Author: jbeard
Date: Sat Jun 19 05:56:35 2010
New Revision: 956186
URL: http://svn.apache.org/viewvc?rev=956186&view=rev
Log:
Working on creating a unified front-end that works for Rhino and all browsers. Currently works for all browsers; still working on Rhino.
Modified:
commons/sandbox/gsoc/2010/scxml-js/branches/browser-tests.1.ie/lib/js/requirejs/require/xml.js
commons/sandbox/gsoc/2010/scxml-js/branches/browser-tests.1.ie/runner.js
commons/sandbox/gsoc/2010/scxml-js/branches/browser-tests.1.ie/src/javascript/scxml/cgf/SCXMLCompiler.js
commons/sandbox/gsoc/2010/scxml-js/branches/browser-tests.1.ie/test/testBrowserTransform.html
Modified: commons/sandbox/gsoc/2010/scxml-js/branches/browser-tests.1.ie/lib/js/requirejs/require/xml.js
URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/branches/browser-tests.1.ie/lib/js/requirejs/require/xml.js?rev=956186&r1=956185&r2=956186&view=diff
==============================================================================
--- commons/sandbox/gsoc/2010/scxml-js/branches/browser-tests.1.ie/lib/js/requirejs/require/xml.js (original)
+++ commons/sandbox/gsoc/2010/scxml-js/branches/browser-tests.1.ie/lib/js/requirejs/require/xml.js Sat Jun 19 05:56:35 2010
@@ -63,7 +63,7 @@
return xhr;
};
}
-
+
if (!require.fetchText) {
if(require.isBrowser){
require.fetchText = function (url, callback) {
@@ -80,8 +80,17 @@
};
}else{
//FIXME: this is actually a rhino-specific API, so maybe we should switch on something like isRhino, rather than isBrowser
+ var File = java.io.File;
+ var DocumentBuilderFactory = javax.xml.parsers.DocumentBuilderFactory;
+
require.fetchText = function (url, callback) {
- callback(readFile(url));
+
+ var file = new File(url);
+ var dbf = DocumentBuilderFactory.newInstance();
+ var db = dbf.newDocumentBuilder();
+ var doc = db.parse(file);
+
+ callback(doc);
};
}
}
Modified: commons/sandbox/gsoc/2010/scxml-js/branches/browser-tests.1.ie/runner.js
URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/branches/browser-tests.1.ie/runner.js?rev=956186&r1=956185&r2=956186&view=diff
==============================================================================
--- commons/sandbox/gsoc/2010/scxml-js/branches/browser-tests.1.ie/runner.js (original)
+++ commons/sandbox/gsoc/2010/scxml-js/branches/browser-tests.1.ie/runner.js Sat Jun 19 05:56:35 2010
@@ -75,6 +75,7 @@ if(arguments.length){
load(pathToRequireJsDir + "require.js");
load(pathToRequireJsDir + "require/rhino.js");
load(pathToRequireJsDir + "require/text.js");
+ load(pathToRequireJsDir + "require/xml.js");
//bootstrap require.js
require({
Modified: commons/sandbox/gsoc/2010/scxml-js/branches/browser-tests.1.ie/src/javascript/scxml/cgf/SCXMLCompiler.js
URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/branches/browser-tests.1.ie/src/javascript/scxml/cgf/SCXMLCompiler.js?rev=956186&r1=956185&r2=956186&view=diff
==============================================================================
--- commons/sandbox/gsoc/2010/scxml-js/branches/browser-tests.1.ie/src/javascript/scxml/cgf/SCXMLCompiler.js (original)
+++ commons/sandbox/gsoc/2010/scxml-js/branches/browser-tests.1.ie/src/javascript/scxml/cgf/SCXMLCompiler.js Sat Jun 19 05:56:35 2010
@@ -27,22 +27,18 @@ code.
require.def("src/javascript/scxml/cgf/SCXMLCompiler",
- ["lib/js/beautify.js"],
+ //TODO: conditional require
+ [
+ "src/javascript/scxml/cgf/backends/js/StatePatternStatechartGenerator",
+ "src/javascript/scxml/cgf/Transformer",
+ "src/javascript/scxml/cgf/util/base",
+ "/lib/js/beautify.js"],
- function(){
-
- //import packages
- importPackage(javax.xml.transform.dom);
- importPackage(javax.xml.transform);
- importPackage(javax.xml.transform.stream);
- importPackage(javax.xml.transform.sax);
- importPackage(Packages.org.apache.xml.serializer);
- importPackage(Packages.org.xml.sax);
- importPackage(Packages.org.xml.sax.helpers);
-
- //importPackage(Packages.org.apache.commons.io);
- importClass(java.io.ByteArrayOutputStream);
- importClass(java.io.StringReader);
+ function(
+ StatePatternStatechartGenerator,
+ Transformer,
+ base
+ ){
/*
supported options:
@@ -58,93 +54,14 @@ require.def("src/javascript/scxml/cgf/SC
function compile(options){
if(!options.inFiles) return false;
-
- var baseIRFilters = ["src/xslt/ir-compiler/enumerateEvents",
- "src/xslt/ir-compiler/normalizeInitialStates",
- "src/xslt/ir-compiler/generateUniqueStateIds",
- "src/xslt/ir-compiler/generateUniqueInitialStateIds",
- "src/xslt/ir-compiler/splitTransitionTargets",
- "src/xslt/ir-compiler/changeTransitionsPointingToCompoundStatesToPointToInitialStates",
- "src/xslt/ir-compiler/computeLCA",
- "src/xslt/ir-compiler/transformIf",
- "src/xslt/ir-compiler/appendStateInformation",
- "src/xslt/ir-compiler/appendBasicStateInformation"];
-
- var enumeratedIRFilters = baseIRFilters.concat([ "src/xslt/ir-compiler/flattenTransitions",
- "src/xslt/ir-compiler/nameTransitions",
- "src/xslt/ir-compiler/numberStatesAndTransitions" ]);
-
-
- var irFiltersXsl, codeGeneratorXsl;
-
- switch(options.backend){
- case "switch":
- irFiltersXsl = enumeratedIRFilters;
- codeGeneratorXsl = "src/xslt/backends/js/SwitchyardStatechartGenerator";
- break;
- case "table":
- irFiltersXsl = enumeratedIRFilters;
- codeGeneratorXsl = "src/xslt/backends/js/StateTableStatechartGenerator";
- break;
- case "state":
- irFiltersXsl = baseIRFilters;
- codeGeneratorXsl = "src/xslt/backends/js/StatePatternStatechartGenerator";
- break;
- }
-
- var allFilters = irFiltersXsl
- .concat("src/xslt/ir-compiler/appendTransitionInformation")
- .concat(codeGeneratorXsl);
-
- //do transforms
- var tFactory = TransformerFactory.newInstance();
-
- //FIXME: I think require.nameToUrl is not supposed to be a public API, even though it should be...
- var filterList = allFilters.map(function(modulePathToXsl){
- return tFactory.newTransformerHandler(
- new StreamSource(
- require.nameToUrl(modulePathToXsl,".xsl","_")));
- });
-
- var reader = XMLReaderFactory.createXMLReader();
-
- for(var i = 1; i < filterList.length; i++){
- var result = new SAXResult(filterList[i]);
- filterList[i-1].setResult(result);
- }
-
- var firstFilter = filterList[0];
- var lastFilter = filterList[filterList.length-1];
-
var toReturn = options.inFiles.map(function(xmlFile){
if(options.ie){
options.noMap = options.noForEach = options.noIndexOf = true;
}
- var baos = new ByteArrayOutputStream();
-
- lastFilter.setResult(new StreamResult(baos));
-
- var lastFilterTransformer = lastFilter.getTransformer();
- for(optName in options){
- lastFilterTransformer.setParameter(optName,options[optName]);
- }
-
- // Set up the transformer to process the SAX events generated by the last filter in the chain
- var factory= javax.xml.parsers.SAXParserFactory.newInstance();
- factory.setNamespaceAware( true );
- var jaxpParser= factory.newSAXParser();
- var reader=jaxpParser.getXMLReader()// || XMLReaderFactory.createXMLReader();
-
- reader.setContentHandler(firstFilter);
-
- // Parse the source XML, and send the parse events to the
- // TransformerHandler.
- reader.parse(xmlFile);
-
- //get transformed output
- var transformedJs = String(new java.lang.String(baos.toByteArray()));
+ var ir = Transformer(xmlFile,StatePatternStatechartGenerator.transformations,null,"xml");
+ var transformedJs = Transformer(ir,StatePatternStatechartGenerator.code,options,"text");
//optionally beautify it
if(options.beautify){
Modified: commons/sandbox/gsoc/2010/scxml-js/branches/browser-tests.1.ie/test/testBrowserTransform.html
URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/branches/browser-tests.1.ie/test/testBrowserTransform.html?rev=956186&r1=956185&r2=956186&view=diff
==============================================================================
--- commons/sandbox/gsoc/2010/scxml-js/branches/browser-tests.1.ie/test/testBrowserTransform.html (original)
+++ commons/sandbox/gsoc/2010/scxml-js/branches/browser-tests.1.ie/test/testBrowserTransform.html Sat Jun 19 05:56:35 2010
@@ -24,27 +24,31 @@
{
"baseUrl":"/"
},
- [ "test/SCXMLCompiler"],
+ [ "src/javascript/scxml/cgf/SCXMLCompiler"],
function(compiler){
var compileLog = true;
var backend = "state";
- var transformedJs = compiler.compile({
- //inFiles:[pathToTest],
- backend:backend,
- beautify:true,
- verbose:false,
- log:compileLog,
- ie:false
- });
+ doXHR("http://localhost:8081/test/kitchen_sink/KitchenSink_executableContent.xml",
+ function(KitchenSink_executableContent){
- console.log(transformedJs);
+ var transformedJs = compiler.compile({
+ inFiles:[KitchenSink_executableContent],
+ backend:backend,
+ beautify:true,
+ verbose:false,
+ log:compileLog,
+ ie:false
+ });
- //eval
- eval(transformedJs);
- window.StatechartExecutionContext = StatechartExecutionContext;
- dojo.require("doh.runner");
- doh.run();
+ console.log(transformedJs);
+
+ //eval
+ eval(transformedJs);
+ window.StatechartExecutionContext = StatechartExecutionContext;
+ dojo.require("doh.runner");
+ doh.run();
+ });
}
);