You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by mh...@apache.org on 2011/03/15 00:03:36 UTC
svn commit: r1081602 - in /shindig/trunk:
features/src/main/javascript/features/container/
features/src/main/javascript/features/core.io/
features/src/main/javascript/features/osapi/
features/src/main/javascript/features/rpc/ java/gadgets/src/main/java...
Author: mhermanto
Date: Mon Mar 14 23:03:36 2011
New Revision: 1081602
URL: http://svn.apache.org/viewvc?rev=1081602&view=rev
Log:
More improvements/changes for dynamic JS compilation.
- Enable common container (and dependent core.io) for dynamic JS compilation.
- Streamline RenderingContext and JsCompileMode defaults.
- Allow setting of JsCompileMode on JsUri.
- Extern JsUri now supports JsCompileMode.
http://codereview.appspot.com/4276046/
Modified:
shindig/trunk/features/src/main/javascript/features/container/feature.xml
shindig/trunk/features/src/main/javascript/features/container/init.js
shindig/trunk/features/src/main/javascript/features/container/service.js
shindig/trunk/features/src/main/javascript/features/core.io/io.js
shindig/trunk/features/src/main/javascript/features/osapi/gadgetsrpctransport.js
shindig/trunk/features/src/main/javascript/features/rpc/feature.xml
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/JsCompileMode.java
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/RenderingContext.java
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultJsUriManager.java
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/JsUriManager.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultJsUriManagerTest.java
Modified: shindig/trunk/features/src/main/javascript/features/container/feature.xml
URL: http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/container/feature.xml?rev=1081602&r1=1081601&r2=1081602&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/container/feature.xml (original)
+++ shindig/trunk/features/src/main/javascript/features/container/feature.xml Mon Mar 14 23:03:36 2011
@@ -62,13 +62,14 @@ under the License.
<exports type="js">shindig.container.ContainerRender.TEST</exports>
<exports type="js">shindig.container.ContainerRender.VIEW</exports>
<exports type="js">shindig.container.ContainerRender.WIDTH</exports>
- <exports type="js">shindig.container.GadgetSite</exports>
<exports type="js">shindig.container.GadgetSite.prototype.setHeight</exports>
<exports type="js">shindig.container.GadgetSite.prototype.setWidth</exports>
<exports type="js">shindig.container.GadgetSite.prototype.getId</exports>
<exports type="js">shindig.container.GadgetSite.prototype.getActiveGadgetHolder</exports>
<exports type="js">shindig.container.GadgetSite.prototype.rpcCall</exports>
<exports type="js">shindig.container.GadgetSite.prototype.close</exports>
+ <!-- TODO: deprecate this. It should have the same id as siteId -->
+ <exports type="js">shindig.container.GadgetHolder.prototype.getIframeId</exports>
</api>
</container>
</feature>
Modified: shindig/trunk/features/src/main/javascript/features/container/init.js
URL: http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/container/init.js?rev=1081602&r1=1081601&r2=1081602&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/container/init.js (original)
+++ shindig/trunk/features/src/main/javascript/features/container/init.js Mon Mar 14 23:03:36 2011
@@ -27,11 +27,11 @@
function initializeConfig() {
gadgets.config.init({
'rpc': {
- parentRelayUrl: ''
+ 'parentRelayUrl': ''
},
'core.io': {
- jsonProxyUrl: 'http://%host%/gadgets/makeRequest',
- proxyUrl: 'http://%host%/gadgets/proxy' +
+ 'jsonProxyUrl': 'http://%host%/gadgets/makeRequest',
+ 'proxyUrl': 'http://%host%/gadgets/proxy' +
'?refresh=%refresh%' +
'&container=%container%%rewriteMime%' +
'&gadget=%gadget%/%rawurl%'
Modified: shindig/trunk/features/src/main/javascript/features/container/service.js
URL: http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/container/service.js?rev=1081602&r1=1081601&r2=1081602&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/container/service.js (original)
+++ shindig/trunk/features/src/main/javascript/features/container/service.js Mon Mar 14 23:03:36 2011
@@ -100,12 +100,12 @@ shindig.container.Service.prototype.getG
} else {
var self = this;
request = shindig.container.util.newMetadataRequest(uncachedUrls);
- osapi.gadgets.metadata(request).execute(function(response) {
+ osapi['gadgets']['metadata'](request).execute(function(response) {
// If response entirely fails, augment individual errors.
- if (response.error) {
- for (var i = 0; i < request.ids.length; i++) {
- finalResponse[id] = { 'error' : response.error };
+ if (response['error']) {
+ for (var i = 0; i < request['ids'].length; i++) {
+ finalResponse[id] = { 'error' : response['error'] };
}
// Otherwise, cache response. Augment final response with server response.
@@ -192,13 +192,13 @@ shindig.container.Service.prototype.getG
// Do not check against cache. Always do a server fetch.
var self = this;
- osapi.gadgets.token(request).execute(function(response) {
+ osapi['gadgets']['token'](request).execute(function(response) {
var finalResponse = {};
// If response entirely fails, augment individual errors.
- if (response.error) {
- for (var i = 0; i < request.ids.length; i++) {
- finalResponse[id] = { 'error' : response.error };
+ if (response['error']) {
+ for (var i = 0; i < request['ids'].length; i++) {
+ finalResponse[id] = { 'error' : response['error'] };
}
// Otherwise, cache response. Augment final response with server response.
@@ -308,8 +308,8 @@ shindig.container.Service.prototype.getU
shindig.container.Service.prototype.filterCachedDataByRequest_ = function(
data, request, filterFunc) {
var result = {};
- for (var i = 0; i < request.ids.length; i++) {
- var id = request.ids[i];
+ for (var i = 0; i < request['ids'].length; i++) {
+ var id = request['ids'][i];
var cachedData = data[id];
if (filterFunc(cachedData)) {
result[id] = cachedData;
Modified: shindig/trunk/features/src/main/javascript/features/core.io/io.js
URL: http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/core.io/io.js?rev=1081602&r1=1081601&r2=1081602&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/core.io/io.js (original)
+++ shindig/trunk/features/src/main/javascript/features/core.io/io.js Mon Mar 14 23:03:36 2011
@@ -74,27 +74,27 @@ gadgets.io = function() {
* @return {boolean} true if the xobj is not ready to be processed.
*/
function hadError(xobj, callback) {
- if (xobj.readyState !== 4) {
+ if (xobj['readyState'] !== 4) {
return true;
}
try {
- if (xobj.status !== 200) {
- var error = ('' + xobj.status);
- if (xobj.responseText) {
- error = error + ' ' + xobj.responseText;
+ if (xobj['status'] !== 200) {
+ var error = ('' + xobj['status']);
+ if (xobj['responseText']) {
+ error = error + ' ' + xobj['responseText'];
}
callback({
- errors: [error],
- rc: xobj.status,
- text: xobj.responseText
+ 'errors': [error],
+ 'rc': xobj['status'],
+ 'text': xobj['responseText']
});
return true;
}
} catch (e) {
callback({
- errors: [e.number + ' Error not specified'],
- rc: e.number,
- text: e.description
+ 'errors': [e['number'] + ' Error not specified'],
+ 'rc': e['number'],
+ 'text': e['description']
});
return true;
}
@@ -114,7 +114,7 @@ gadgets.io = function() {
return;
}
var data = {
- body: xobj.responseText
+ 'body': xobj['responseText']
};
callback(transformResponseData(params, data));
}
@@ -133,7 +133,7 @@ gadgets.io = function() {
if (hadError(xobj, callback)) {
return;
}
- var txt = xobj.responseText;
+ var txt = xobj['responseText'];
// remove unparseable cruft used to prevent cross-site script inclusion
var offset = txt.indexOf(UNPARSEABLE_CRUFT) + UNPARSEABLE_CRUFT.length;
@@ -148,12 +148,12 @@ gadgets.io = function() {
var data = eval('(' + txt + ')');
data = data[url];
// Save off any transient OAuth state the server wants back later.
- if (data.oauthState) {
- oauthState = data.oauthState;
+ if (data['oauthState']) {
+ oauthState = data['oauthState'];
}
// Update the security token if the server sent us a new one
- if (data.st) {
- shindig.auth.updateSecurityToken(data.st);
+ if (data['st']) {
+ shindig.auth.updateSecurityToken(data['st']);
}
callback(transformResponseData(params, data));
}
@@ -168,32 +168,32 @@ gadgets.io = function() {
// Sometimes rc is not present, generally when used
// by jsonrpccontainer, so assume 200 in its absence.
var resp = {
- text: data.body,
- rc: data.rc || 200,
- headers: data.headers,
- oauthApprovalUrl: data.oauthApprovalUrl,
- oauthError: data.oauthError,
- oauthErrorText: data.oauthErrorText,
- errors: []
+ 'text': data['body'],
+ 'rc': data['rc'] || 200,
+ 'headers': data['headers'],
+ 'oauthApprovalUrl': data['oauthApprovalUrl'],
+ 'oauthError': data['oauthError'],
+ 'oauthErrorText': data['oauthErrorText'],
+ 'errors': []
};
- if (resp.rc < 200 || resp.rc >= 400) {
- resp.errors = [resp.rc + ' Error'];
- } else if (resp.text) {
- if (resp.rc >= 300 && resp.rc < 400) {
+ if (resp['rc'] < 200 || resp['rc'] >= 400) {
+ resp['errors'] = [resp['rc'] + ' Error'];
+ } else if (resp['text']) {
+ if (resp['rc'] >= 300 && resp['rc'] < 400) {
// Redirect pages will usually contain arbitrary
// HTML which will fail during parsing, inadvertently
// causing a 500 response. Thus we treat as text.
- params.CONTENT_TYPE = 'TEXT';
+ params['CONTENT_TYPE'] = 'TEXT';
}
- switch (params.CONTENT_TYPE) {
+ switch (params['CONTENT_TYPE']) {
case 'JSON':
case 'FEED':
- resp.data = gadgets.json.parse(resp.text);
- if (!resp.data) {
- resp.errors.push('500 Failed to parse JSON');
- resp.rc = 500;
- resp.data = null;
+ resp['data'] = gadgets.json.parse(resp.text);
+ if (!resp['data']) {
+ resp['errors'].push('500 Failed to parse JSON');
+ resp['rc'] = 500;
+ resp['data'] = null;
}
break;
case 'DOM':
@@ -203,25 +203,25 @@ gadgets.io = function() {
dom.async = false;
dom.validateOnParse = false;
dom.resolveExternals = false;
- if (!dom.loadXML(resp.text)) {
- resp.errors.push('500 Failed to parse XML');
- resp.rc = 500;
+ if (!dom.loadXML(resp['text'])) {
+ resp['errors'].push('500 Failed to parse XML');
+ resp['rc'] = 500;
} else {
- resp.data = dom;
+ resp['data'] = dom;
}
} else {
var parser = new DOMParser();
- dom = parser.parseFromString(resp.text, 'text/xml');
+ dom = parser.parseFromString(resp['text'], 'text/xml');
if ('parsererror' === dom.documentElement.nodeName) {
- resp.errors.push('500 Failed to parse XML');
- resp.rc = 500;
+ resp['errors'].push('500 Failed to parse XML');
+ resp['rc'] = 500;
} else {
- resp.data = dom;
+ resp['data'] = dom;
}
}
break;
default:
- resp.data = resp.text;
+ resp['data'] = resp['text'];
break;
}
}
@@ -293,20 +293,20 @@ gadgets.io = function() {
// Only satisfy once
delete gadgets.io.preloaded_[i];
- if (preload.rc !== 200) {
- callback({rc: preload.rc, errors: [preload.rc + ' Error']});
+ if (preload['rc'] !== 200) {
+ callback({'rc': preload['rc'], 'errors': [preload['rc'] + ' Error']});
} else {
- if (preload.oauthState) {
- oauthState = preload.oauthState;
+ if (preload['oauthState']) {
+ oauthState = preload['oauthState'];
}
var resp = {
- body: preload.body,
- rc: preload.rc,
- headers: preload.headers,
- oauthApprovalUrl: preload.oauthApprovalUrl,
- oauthError: preload.oauthError,
- oauthErrorText: preload.oauthErrorText,
- errors: []
+ 'body': preload['body'],
+ 'rc': preload['rc'],
+ 'headers': preload['headers'],
+ 'oauthApprovalUrl': preload['oauthApprovalUrl'],
+ 'oauthError': preload['oauthError'],
+ 'oauthErrorText': preload['oauthErrorText'],
+ 'errors': []
};
callback(transformResponseData(params, resp));
}
@@ -326,8 +326,8 @@ gadgets.io = function() {
}
var requiredConfig = {
- proxyUrl: new gadgets.config.RegExValidator(/.*%(raw)?url%.*/),
- jsonProxyUrl: gadgets.config.NonEmptyStringValidator
+ 'proxyUrl': new gadgets.config.RegExValidator(/.*%(raw)?url%.*/),
+ 'jsonProxyUrl': gadgets.config.NonEmptyStringValidator
};
gadgets.config.register('core.io', requiredConfig, init);
@@ -358,13 +358,13 @@ gadgets.io = function() {
var params = opt_params || {};
- var httpMethod = params.METHOD || 'GET';
- var refreshInterval = params.REFRESH_INTERVAL;
+ var httpMethod = params['METHOD'] || 'GET';
+ var refreshInterval = params['REFRESH_INTERVAL'];
// Check if authorization is requested
var auth, st;
- if (params.AUTHORIZATION && params.AUTHORIZATION !== 'NONE') {
- auth = params.AUTHORIZATION.toLowerCase();
+ if (params['AUTHORIZATION'] && params['AUTHORIZATION'] !== 'NONE') {
+ auth = params['AUTHORIZATION'].toLowerCase();
st = shindig.auth.getSecurityToken();
} else {
// Unauthenticated GET requests are cacheable
@@ -375,17 +375,17 @@ gadgets.io = function() {
// Include owner information?
var signOwner = true;
- if (typeof params.OWNER_SIGNED !== 'undefined') {
- signOwner = params.OWNER_SIGNED;
+ if (typeof params['OWNER_SIGNED'] !== 'undefined') {
+ signOwner = params['OWNER_SIGNED'];
}
// Include viewer information?
var signViewer = true;
- if (typeof params.VIEWER_SIGNED !== 'undefined') {
- signViewer = params.VIEWER_SIGNED;
+ if (typeof params['VIEWER_SIGNED'] !== 'undefined') {
+ signViewer = params['VIEWER_SIGNED'];
}
- var headers = params.HEADERS || {};
+ var headers = params['HEADERS'] || {};
if (httpMethod === 'POST' && !headers['Content-Type']) {
headers['Content-Type'] = 'application/x-www-form-urlencoded';
}
@@ -393,31 +393,31 @@ gadgets.io = function() {
var urlParams = gadgets.util.getUrlParameters();
var paramData = {
- url: url,
- httpMethod: httpMethod,
- headers: gadgets.io.encodeValues(headers, false),
- postData: params.POST_DATA || '',
- authz: auth || '',
- st: st || '',
- contentType: params.CONTENT_TYPE || 'TEXT',
- numEntries: params.NUM_ENTRIES || '3',
- getSummaries: !!params.GET_SUMMARIES,
- signOwner: signOwner,
- signViewer: signViewer,
- gadget: urlParams['url'],
- container: urlParams['container'] || urlParams['synd'] || 'default',
+ 'url': url,
+ 'httpMethod': httpMethod,
+ 'headers': gadgets.io.encodeValues(headers, false),
+ 'postData': params['POST_DATA'] || '',
+ 'authz': auth || '',
+ 'st': st || '',
+ 'contentType': params['CONTENT_TYPE'] || 'TEXT',
+ 'numEntries': params['NUM_ENTRIES'] || '3',
+ 'getSummaries': !!params['GET_SUMMARIES'],
+ 'signOwner': signOwner,
+ 'signViewer': signViewer,
+ 'gadget': urlParams['url'],
+ 'container': urlParams['container'] || urlParams['synd'] || 'default',
// should we bypass gadget spec cache (e.g. to read OAuth provider URLs)
- bypassSpecCache: gadgets.util.getUrlParameters()['nocache'] || '',
- getFullHeaders: !!params.GET_FULL_HEADERS
+ 'bypassSpecCache': gadgets.util.getUrlParameters()['nocache'] || '',
+ 'getFullHeaders': !!params['GET_FULL_HEADERS']
};
// OAuth goodies
if (auth === 'oauth' || auth === 'signed') {
if (gadgets.io.oauthReceivedCallbackUrl_) {
- paramData.OAUTH_RECEIVED_CALLBACK = gadgets.io.oauthReceivedCallbackUrl_;
+ paramData['OAUTH_RECEIVED_CALLBACK'] = gadgets.io.oauthReceivedCallbackUrl_;
gadgets.io.oauthReceivedCallbackUrl_ = null;
}
- paramData.oauthState = oauthState || '';
+ paramData['oauthState'] = oauthState || '';
// Just copy the OAuth parameters into the req to the server
for (var opt in params) {
if (params.hasOwnProperty(opt)) {
@@ -458,8 +458,8 @@ gadgets.io = function() {
*/
makeNonProxiedRequest: function(relativeUrl, callback, opt_params, opt_headers) {
var params = opt_params || {};
- makeXhrRequest(relativeUrl, relativeUrl, callback, params.POST_DATA,
- params.METHOD, params, processNonProxiedResponse, opt_headers);
+ makeXhrRequest(relativeUrl, relativeUrl, callback, params['POST_DATA'],
+ params['METHOD'], params, processNonProxiedResponse, opt_headers);
},
/**
@@ -516,7 +516,7 @@ gadgets.io = function() {
*/
getProxyUrl: function(url, opt_params) {
var params = opt_params || {};
- var refresh = params.REFRESH_INTERVAL;
+ var refresh = params['REFRESH_INTERVAL'];
if (refresh === undefined) {
refresh = '3600';
}
@@ -524,7 +524,7 @@ gadgets.io = function() {
var urlParams = gadgets.util.getUrlParameters();
var rewriteMimeParam =
- params.rewriteMime ? '&rewriteMime=' + encodeURIComponent(params.rewriteMime) : '';
+ params['rewriteMime'] ? '&rewriteMime=' + encodeURIComponent(params['rewriteMime']) : '';
var ret = config['proxyUrl'].replace('%url%', encodeURIComponent(url)).
replace('%host%', document.location.host).
replace('%rawurl%', url).
Modified: shindig/trunk/features/src/main/javascript/features/osapi/gadgetsrpctransport.js
URL: http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/osapi/gadgetsrpctransport.js?rev=1081602&r1=1081601&r2=1081602&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/osapi/gadgetsrpctransport.js (original)
+++ shindig/trunk/features/src/main/javascript/features/osapi/gadgetsrpctransport.js Mon Mar 14 23:03:36 2011
@@ -36,13 +36,13 @@ if (gadgets && gadgets.rpc) { //Dont bin
function execute(requests, callback) {
var rpcCallback = function(response) {
if (!response) {
- callback({ code: 500, message: 'Container refused the request' });
- } else if (response.error) {
+ callback({ 'code': 500, 'message': 'Container refused the request' });
+ } else if (response['error']) {
callback(response);
} else {
var responseMap = {};
for (var i = 0; i < response.length; i++) {
- responseMap[response[i].id] = response[i];
+ responseMap[response[i]['id']] = response[i];
}
callback(responseMap);
}
@@ -95,7 +95,7 @@ if (gadgets && gadgets.rpc) { //Dont bin
// Call for the container methods and bind them to osapi.
osapi.container.listMethods({}).execute(function(response) {
- if (!response.error) {
+ if (!response['error']) {
for (var i = 0; i < response.length; i++) {
// do not rebind container.listMethods implementation
if (response[i] != 'container.listMethods') {
Modified: shindig/trunk/features/src/main/javascript/features/rpc/feature.xml
URL: http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/rpc/feature.xml?rev=1081602&r1=1081601&r2=1081602&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/rpc/feature.xml (original)
+++ shindig/trunk/features/src/main/javascript/features/rpc/feature.xml Mon Mar 14 23:03:36 2011
@@ -24,7 +24,6 @@ specific language governing permissions
<dependency>core.util.urlparams</dependency>
<all>
<api>
- <exports type="js">gadgets.rpc</exports>
<exports type="js">gadgets.rpc.config</exports>
<exports type="js">gadgets.rpc.register</exports>
<exports type="js">gadgets.rpc.unregister</exports>
Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/JsCompileMode.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/JsCompileMode.java?rev=1081602&r1=1081601&r2=1081602&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/JsCompileMode.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/JsCompileMode.java Mon Mar 14 23:03:36 2011
@@ -50,4 +50,8 @@ public enum JsCompileMode {
return JsCompileMode.BUILD_TIME;
}
+ public static JsCompileMode getDefault() {
+ return JsCompileMode.BUILD_TIME;
+ }
+
}
\ No newline at end of file
Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/RenderingContext.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/RenderingContext.java?rev=1081602&r1=1081601&r2=1081602&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/RenderingContext.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/RenderingContext.java Mon Mar 14 23:03:36 2011
@@ -38,7 +38,7 @@ public enum RenderingContext {
// identical to processing under GADGET, but some operations may be safely
// skipped, such as preload processing.
METADATA(null, null, null),
-
+
// Allows specification of feature JS with an <all> tag. Specially handled in
// FeatureRegistry: content specified in an <all> tag is chosen if there are
// no <gadget> or <container> sections. This avoids, for many libs where the JS
@@ -69,16 +69,18 @@ public enum RenderingContext {
public static RenderingContext valueOfParam(String param) {
// Exception: when no &c= parameter provided or bad, default to GADGET.
- RenderingContext c = RenderingContext.GADGET;
if (param != null) {
for (RenderingContext rc : RenderingContext.values()) {
String rcParam = rc.getParamValue();
if (rcParam != null && rcParam.equals(param)) {
- c = rc;
- break;
+ return rc;
}
}
}
- return c;
+ return getDefault();
+ }
+
+ public static RenderingContext getDefault() {
+ return RenderingContext.GADGET;
}
}
Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultJsUriManager.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultJsUriManager.java?rev=1081602&r1=1081601&r2=1081602&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultJsUriManager.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultJsUriManager.java Mon Mar 14 23:03:36 2011
@@ -28,6 +28,7 @@ import org.apache.shindig.common.uri.Uri
import org.apache.shindig.config.ContainerConfig;
import org.apache.shindig.gadgets.GadgetException;
import org.apache.shindig.gadgets.GadgetException.Code;
+import org.apache.shindig.gadgets.JsCompileMode;
import org.apache.shindig.gadgets.http.HttpResponse;
import org.apache.shindig.gadgets.uri.UriCommon.Param;
@@ -73,7 +74,7 @@ public class DefaultJsUriManager impleme
if (!ctx.getLoadedLibs().isEmpty()) {
uri.addQueryParameter(Param.LOADED_LIBS.getKey(), addJsLibs(ctx.getLoadedLibs()));
}
-
+
// Standard container param, as JS may be container-specific.
uri.addQueryParameter(Param.CONTAINER.getKey(), container);
@@ -100,11 +101,16 @@ public class DefaultJsUriManager impleme
if (ctx.isJsload()) {
uri.addQueryParameter(Param.JSLOAD.getKey(), "1");
}
-
+
if (ctx.isNohint()) {
uri.addQueryParameter(Param.NO_HINT.getKey(), "1");
}
+ JsCompileMode mode = ctx.getCompileMode();
+ if (mode != null && mode != JsCompileMode.getDefault()) {
+ uri.addQueryParameter(Param.COMPILE_MODE.getKey(), mode.getParamValue());
+ }
+
// Finally, version it, but only if !nocache.
if (versioner != null && !ctx.isNoCache()) {
uri.addQueryParameter(Param.VERSION.getKey(),
Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/JsUriManager.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/JsUriManager.java?rev=1081602&r1=1081601&r2=1081602&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/JsUriManager.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/JsUriManager.java Mon Mar 14 23:03:36 2011
@@ -55,11 +55,11 @@ public interface JsUriManager {
private final Collection<String> libs;
private final Collection<String> loadedLibs;
private final String onload;
- private final JsCompileMode compileMode;
- private boolean jsload;
- private boolean nohint;
private final RenderingContext context;
private final Uri origUri;
+ private JsCompileMode compileMode;
+ private boolean jsload;
+ private boolean nohint;
public JsUri(UriStatus status, Uri origUri, Collection<String> libs, Collection<String> have) {
super(status, origUri);
@@ -72,8 +72,8 @@ public interface JsUriManager {
this.onload = origUri.getQueryParameter(Param.ONLOAD.getKey());
this.nohint = "1".equals(origUri.getQueryParameter(Param.NO_HINT.getKey()));
} else {
- this.context = RenderingContext.GADGET;
- this.compileMode = JsCompileMode.BUILD_TIME;
+ this.context = RenderingContext.getDefault();
+ this.compileMode = JsCompileMode.getDefault();
this.jsload = false;
this.onload = null;
this.nohint = false;
@@ -90,7 +90,7 @@ public interface JsUriManager {
public JsUri(UriStatus status, Collection<String> libs, RenderingContext context,
String onload, boolean jsload, boolean nohint) {
super(status, null);
- this.compileMode = JsCompileMode.BUILD_TIME;
+ this.compileMode = JsCompileMode.getDefault();
this.onload = onload;
this.jsload = jsload;
this.nohint = nohint;
@@ -102,11 +102,11 @@ public interface JsUriManager {
public JsUri(Gadget gadget, Collection<String> libs) {
super(gadget);
- this.compileMode = JsCompileMode.BUILD_TIME;
+ this.compileMode = JsCompileMode.getDefault();
this.onload = null;
this.jsload = false;
this.nohint = false;
- this.context = RenderingContext.GADGET;
+ this.context = RenderingContext.getDefault();;
this.libs = nonNullLibs(libs);
this.loadedLibs = EMPTY_COLL;
this.origUri = null;
@@ -115,7 +115,7 @@ public interface JsUriManager {
public JsUri(Integer refresh, boolean debug, boolean noCache, String container, String gadget,
Collection<String> libs, Collection<String> loadedLibs, String onload, boolean jsload, boolean nohint, RenderingContext context, Uri origUri) {
super(null, refresh, debug, noCache, container, gadget);
- this.compileMode = JsCompileMode.BUILD_TIME;
+ this.compileMode = JsCompileMode.getDefault();
this.onload = onload;
this.jsload = jsload;
this.nohint = nohint;
@@ -161,6 +161,10 @@ public interface JsUriManager {
return compileMode;
}
+ public void setCompileMode(JsCompileMode mode) {
+ this.compileMode = mode;
+ }
+
public String getOnload() {
return onload;
}
Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultJsUriManagerTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultJsUriManagerTest.java?rev=1081602&r1=1081601&r2=1081602&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultJsUriManagerTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultJsUriManagerTest.java Mon Mar 14 23:03:36 2011
@@ -32,6 +32,7 @@ import com.google.common.collect.Lists;
import org.apache.shindig.common.uri.Uri;
import org.apache.shindig.config.ContainerConfig;
import org.apache.shindig.gadgets.GadgetException;
+import org.apache.shindig.gadgets.JsCompileMode;
import org.apache.shindig.gadgets.RenderingContext;
import org.apache.shindig.gadgets.uri.JsUriManager.JsUri;
import org.apache.shindig.gadgets.uri.JsUriManager.Versioner;
@@ -86,7 +87,8 @@ public class DefaultJsUriManagerTest {
ContainerConfig config = mockConfig("http://www.js.org", "/gadgets/js/");
TestDefaultJsUriManager manager = makeManager(config, null);
List<String> extern = Lists.newArrayList("feature");
- JsUri ctx = mockGadgetContext(false, false, extern, null, false, ImmutableMap.of("test", "1"));
+ JsUri ctx = mockGadgetContext(false, false, extern, null, false,
+ ImmutableMap.of("test", "1"), null);
Uri jsUri = manager.makeExternJsUri(ctx);
assertFalse(manager.hadError());
assertEquals("http", jsUri.getScheme());
@@ -161,7 +163,8 @@ public class DefaultJsUriManagerTest {
ContainerConfig config = mockConfig("http://www.js.org", "/gadgets/js/");
TestDefaultJsUriManager manager = makeManager(config, null);
List<String> extern = Lists.newArrayList("feature", "another");
- JsUri ctx = mockGadgetContext(false, false, extern, null, true, null);
+ JsUri ctx = mockGadgetContext(false, false, extern, null, true, null,
+ JsCompileMode.ALL_RUN_TIME);
Uri jsUri = manager.makeExternJsUri(ctx);
assertFalse(manager.hadError());
assertEquals("http", jsUri.getScheme());
@@ -170,10 +173,12 @@ public class DefaultJsUriManagerTest {
assertEquals(CONTAINER, jsUri.getQueryParameter(Param.CONTAINER.getKey()));
assertEquals("0", jsUri.getQueryParameter(Param.NO_CACHE.getKey()));
assertEquals("0", jsUri.getQueryParameter(Param.DEBUG.getKey()));
+ assertEquals(JsCompileMode.ALL_RUN_TIME.getParamValue(),
+ jsUri.getQueryParameter(Param.COMPILE_MODE.getKey()));
assertEquals(RenderingContext.CONTAINER.getParamValue(),
jsUri.getQueryParameter(Param.CONTAINER_MODE.getKey()));
}
-
+
@Test
public void makeJsUriWithLoadedLibraries() throws Exception {
ContainerConfig config = mockConfig("http://www.js.org", "/gadgets/js/");
@@ -388,17 +393,18 @@ public class DefaultJsUriManagerTest {
private JsUri mockGadgetContext(boolean nocache, boolean debug, List<String> extern) {
return mockGadgetContext(nocache, debug, extern, ImmutableList.<String>of(), false,
- null);
+ null, null);
}
private JsUri mockGadgetContext(
boolean nocache, boolean debug, List<String> extern, List<String> loaded) {
- return mockGadgetContext(nocache, debug, extern, loaded, false, null);
+ return mockGadgetContext(nocache, debug, extern, loaded, false, null, null);
}
private JsUri mockGadgetContext(boolean nocache, boolean debug,
- List<String> extern, List<String> loaded,
- boolean isContainer, Map<String, String> params) {
+ List<String> extern, List<String> loaded,
+ boolean isContainer, Map<String, String> params,
+ JsCompileMode compileMode) {
JsUri context = createMock(JsUri.class);
expect(context.getContainer()).andStubReturn(CONTAINER);
expect(context.isNoCache()).andStubReturn(nocache);
@@ -414,6 +420,7 @@ public class DefaultJsUriManagerTest {
expect(context.isNohint()).andStubReturn(false);
expect(context.getExtensionParams()).andStubReturn(params);
expect(context.getOrigUri()).andStubReturn(null);
+ expect(context.getCompileMode()).andStubReturn(compileMode);
replay(context);
return context;
}