/*
* © Copyright IBM Corp. 2012
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package com.ibm.xsp.sbtsdk.playground.sbt.extension;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.ibm.xsp.context.DojoLibrary;
import com.ibm.xsp.minifier.DojoDependencyList;
import com.ibm.xsp.minifier.ResourceFactory;
import nsf.playground.extension.JavaScriptPreviewExtension;
import nsf.playground.playground.PreviewJavaScriptHandler.Renderer;
import nsf.playground.playground.PreviewJavaScriptHandler.RequestParams;
/**
* JavaScript preview extension for the Playground.
*
* @author priand
*/
public class SbtJavaScriptPreview extends JavaScriptPreviewExtension {
public SbtJavaScriptPreview() {
}
@Override
public Renderer findRenderer(HttpServletRequest req, HttpServletResponse resp, RequestParams requestParams, boolean createDefault) throws IOException {
boolean create = createDefault;
if(!create) {
return null;
}
return new Renderer(req,resp,requestParams) {
protected void emitDojoAggregatedConfig(PrintWriter pw, String serverUrl) throws IOException {
pw.println(" packages: [");
// https://dominosbt/xsp/.ibmxspres/dojoroot-1.8.1/dojo/dojo.js
pw.println(" {name:'dojo', location:'"+jsLibraryPath+"/dojo'},");
pw.println(" {name:'dijit', location:'"+jsLibraryPath+"/dijit'},");
pw.println(" {name:'dojox', location:'"+jsLibraryPath+"/dojox'},");
// https://dominosbt/xsp/.ibmxspres/.sbtsdk/js/sdk/sbt
String sbtPath = getDefautSbtPath(serverUrl);
//pw.println(" {name:'sbt/_bridge', location:'"+sbtPath+"/js/sdk/_bridges/dojo-amd'},");
pw.println(" {name:'sbt', location:'"+sbtPath+"/js/sdk/sbt'}");
pw.println(" ],");
//https://dominosbt/xsp/.ibmxspres/.sbtsdk/js/sdk/_bridges/dojo-amd/Transport.js
String libVersion = jsLib.getLibVersion();
pw.println(" paths: {");
pw.println(" 'sbt/_config': '"+composeToolkitUrl(dbUrl)+"?lib=dojo&ver="+libVersion+"&layer=true&noext',");
pw.println(" 'sbt/_bridge': '"+sbtPath+"/js/sdk/_bridges/dojo-amd',");
pw.println(" 'sbt/widget': '"+sbtPath+"/js/sdk/dojo2'");
pw.println(" },");
//https://dominosbt/xsp/.ibmxspres/.sbtsdk/js/sdk/_layers/sbt-core-dojo-amd.js
pw.println(" deps: [");
String xpagesLayer = aggregatorAddModules(serverUrl,requestParams.js,false);
pw.println(" '"+xpagesLayer+"',");
//pw.println(" '"+sbtPath+"/js/sdk/_layers/sbt-core-dojo-amd.js',");
pw.println(" '"+sbtPath+"/js/sdk/_layers/sbt-extra-controls-dojo-amd.js'");
pw.println(" ]");
}
protected void aggregatorAddLibraryModules(DojoDependencyList dojoResources) throws IOException {
ResourceFactory factory = dojoResources.getFactory();
DojoLibrary dojoLibrary = dojoResources.getDojoLibrary();
// if(includeSDKModules) {
// The resources bellow are generally needed
// They should not be included if the SDK layer is already loaded
dojoResources.addResource(factory.getDojoResource("sbt.config",dojoLibrary));
dojoResources.addResource(factory.getDojoResource("sbt.declare",dojoLibrary));
dojoResources.addResource(factory.getDojoResource("sbt.defer",dojoLibrary));
dojoResources.addResource(factory.getDojoResource("sbt.lang",dojoLibrary));
dojoResources.addResource(factory.getDojoResource("sbt.Promise",dojoLibrary));
dojoResources.addResource(factory.getDojoResource("sbt.log",dojoLibrary));
dojoResources.addResource(factory.getDojoResource("sbt.stringUtil",dojoLibrary));
dojoResources.addResource(factory.getDojoResource("sbt.xml",dojoLibrary));
dojoResources.addResource(factory.getDojoResource("sbt.i18n",dojoLibrary));
dojoResources.addResource(factory.getDojoResource("sbt.ErrorTransport",dojoLibrary));
dojoResources.addResource(factory.getDojoResource("sbt.Endpoint",dojoLibrary));
dojoResources.addResource(factory.getDojoResource("sbt.pathUtil",dojoLibrary));
dojoResources.addResource(factory.getDojoResource("sbt.Proxy",dojoLibrary));
dojoResources.addResource(factory.getDojoResource("sbt.Cache",dojoLibrary));
dojoResources.addResource(factory.getDojoResource("sbt.xpath",dojoLibrary));
dojoResources.addResource(factory.getDojoResource("sbt.util",dojoLibrary));
dojoResources.addResource(factory.getDojoResource("sbt.dom",dojoLibrary));
dojoResources.addResource(factory.getDojoResource("sbt.text",dojoLibrary));
// These ones don't have direct dep in the source code
// The are loaded by the config
//sbt/ErrorTransport', 'sbt/Endpoint', 'sbt/Proxy', 'sbt/_bridge/Transport', 'sbt/authenticator/Basic', 'sbt/util
dojoResources.addResource(factory.getDojoResource("sbt.ErrorTransport",dojoLibrary));
dojoResources.addResource(factory.getDojoResource("sbt.Endpoint",dojoLibrary));
dojoResources.addResource(factory.getDojoResource("sbt.Proxy",dojoLibrary));
dojoResources.addResource(factory.getDojoResource("sbt._bridge.Transport",dojoLibrary));
dojoResources.addResource(factory.getDojoResource("sbt._bridge.i18n",dojoLibrary));
dojoResources.addResource(factory.getDojoResource("sbt.authenticator.Basic",dojoLibrary));
dojoResources.addResource(factory.getDojoResource("sbt.util",dojoLibrary));
}
};
}
}