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 2010/11/08 20:51:20 UTC
svn commit: r1032679 - in /shindig/trunk:
features/src/main/javascript/features/container/
java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/
java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/
Author: mhermanto
Date: Mon Nov 8 19:51:20 2010
New Revision: 1032679
URL: http://svn.apache.org/viewvc?rev=1032679&view=rev
Log:
Bug fix and improvement for common container: make gadgets can be rendered successfully with the new common container
Thanks to Kai Feng Zhang (author)
https://issues.apache.org/jira/browse/SHINDIG-1460
Modified:
shindig/trunk/features/src/main/javascript/features/container/gadget_holder.js
shindig/trunk/features/src/main/javascript/features/container/service.js
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandler.java
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerApi.java
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultIframeUriManager.java
Modified: shindig/trunk/features/src/main/javascript/features/container/gadget_holder.js
URL: http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/container/gadget_holder.js?rev=1032679&r1=1032678&r2=1032679&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/container/gadget_holder.js (original)
+++ shindig/trunk/features/src/main/javascript/features/container/gadget_holder.js Mon Nov 8 19:51:20 2010
@@ -170,6 +170,12 @@ shindig.container.GadgetHolder.prototype
this.viewParams_ = viewParams;
this.renderParams_ = renderParams;
this.el_.innerHTML = this.getIframeHtml_();
+
+ if (this.hasFeature_(gadgetInfo, 'pubsub-2')) {
+ this.doOAAIframeHtml_();
+ } else {
+ this.el_.innerHTML = this.getIframeHtml_();
+ }
// Set up RPC channel. RPC relay url is on gmodules, relative to base of the
// container. Assumes container has set up forwarding to gmodules at /gadgets.
@@ -198,6 +204,55 @@ shindig.container.GadgetHolder.IFRAME_ID
/**
+ * @private
+ */
+shindig.container.GadgetHolder.prototype.doOAAIframeHtml_ = function() {
+ var iframeAttrs = {
+ frameborder: 'no',
+ scrolling: 'no'
+ };
+ new OpenAjax.hub.IframeContainer(
+ gadgets.pubsub2router.hub,
+ this.iframeId_,
+ {
+ Container: {
+ onSecurityAlert: function(source, alertType) {
+ gadgets.error(['Security error for container ', source.getClientID(), ' : ', alertType].join(''));
+ source.getIframe().src = 'about:blank';
+ },
+ onConnect: function(container) {
+ gadgets.log("++ connected: " + container.getClientID());
+ }
+ },
+ IframeContainer: {
+ parent: this.el_,
+ uri: this.getIframeUrl_(),
+ tunnelURI: shindig.uri('/gadgets/' + '../container/rpc_relay.html').resolve(shindig.uri(window.location.href)),
+ iframeAttrs: iframeAttrs
+ }
+ }
+ );
+};
+
+
+/**
+ * @param {Object} gadgetInfo the JSON gadget description.
+ * @param {string} feature the feature to look for.
+ * @private
+ */
+shindig.container.GadgetHolder.prototype.hasFeature_ = function(gadgetInfo, feature) {
+ var modulePrefs = gadgetInfo[shindig.container.MetadataResponse.MODULE_PREFS];
+ if (modulePrefs) {
+ var features = modulePrefs[shindig.container.MetadataResponse.FEATURES];
+ if (features && features[feature]) {
+ return true;
+ }
+ }
+ return false;
+};
+
+
+/**
* Get HTML text content that can be used to render the gadget IFRAME
* @return {string} The HTML content of this gadget that can be rendered.
* @private
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=1032679&r1=1032678&r2=1032679&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/container/service.js (original)
+++ shindig/trunk/features/src/main/javascript/features/container/service.js Mon Nov 8 19:51:20 2010
@@ -58,7 +58,7 @@ shindig.container.Service = function(opt
*/
this.cachedTokens_ = {};
- this.initializeOsapi_();
+ this.registerOsapiServices();
this.onConstructed(config);
};
@@ -98,7 +98,7 @@ shindig.container.Service.prototype.getG
} else {
var self = this;
request = shindig.container.util.newMetadataRequest(uncachedUrls);
- osapi.gadgets.metadata.get(request).execute(function(response) {
+ osapi.gadgets.metadata(request).execute(function(response) {
// If response entirely fails, augment individual errors.
if (response.error) {
@@ -131,7 +131,7 @@ shindig.container.Service.prototype.getG
// Do not check against cache. Always do a server fetch.
var self = this;
- osapi.gadgets.token.get(request).execute(function(response) {
+ osapi.gadgets.token(request).execute(function(response) {
var finalResponse = {};
// If response entirely fails, augment individual errors.
@@ -174,16 +174,15 @@ shindig.container.Service.prototype.getC
/**
* Initialize OSAPI endpoint methods/interfaces.
- * @private
*/
-shindig.container.Service.prototype.initializeOsapi_ = function() {
+shindig.container.Service.prototype.registerOsapiServices = function() {
var endPoint = this.apiHost_ + this.apiPath_;
var osapiServicesConfig = {};
osapiServicesConfig['gadgets.rpc'] = ['container.listMethods'];
osapiServicesConfig[endPoint] = [
- 'gadgets.metadata.get',
- 'gadgets.token.get'
+ 'gadgets.metadata',
+ 'gadgets.token'
];
gadgets.config.init({
Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandler.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandler.java?rev=1032679&r1=1032678&r2=1032679&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandler.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandler.java Mon Nov 8 19:51:20 2010
@@ -46,7 +46,6 @@ import java.util.concurrent.CompletionSe
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorCompletionService;
import java.util.concurrent.ExecutorService;
-import java.util.logging.Logger;
import javax.servlet.http.HttpServletResponse;
@@ -71,7 +70,6 @@ public class GadgetsHandler {
private static final List<String> DEFAULT_PROXY_FIELDS = ImmutableList.of("proxyUrl");
- private static final Logger LOG = Logger.getLogger(GadgetsHandler.class.getName());
protected final ExecutorService executor;
protected final GadgetsHandlerService handlerService;
@@ -89,7 +87,7 @@ public class GadgetsHandler {
this.beanDelegator = new BeanDelegator();
}
- @Operation(httpMethods = {"POST", "GET"}, path = "metadata.get")
+ @Operation(httpMethods = {"POST", "GET"}, path = "metadata")
public Map<String, GadgetsHandlerApi.BaseResponse> metadata(BaseRequestItem request)
throws ProtocolException {
return new AbstractExecutor() {
@@ -101,7 +99,7 @@ public class GadgetsHandler {
}.execute(request);
}
- @Operation(httpMethods = {"POST", "GET"}, path = "token.get")
+ @Operation(httpMethods = {"POST", "GET"}, path = "token")
public Map<String, GadgetsHandlerApi.BaseResponse> token(BaseRequestItem request)
throws ProtocolException {
return new AbstractExecutor() {
@@ -113,7 +111,7 @@ public class GadgetsHandler {
}.execute(request);
}
- @Operation(httpMethods = {"POST", "GET"}, path = "proxy.get")
+ @Operation(httpMethods = {"POST", "GET"}, path = "proxy")
public Map<String, GadgetsHandlerApi.BaseResponse> proxy(BaseRequestItem request)
throws ProtocolException {
return new AbstractExecutor() {
Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerApi.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerApi.java?rev=1032679&r1=1032678&r2=1032679&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerApi.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerApi.java Mon Nov 8 19:51:20 2010
@@ -72,6 +72,8 @@ public class GadgetsHandlerApi {
public interface TokenData {
public String getOwnerId();
public String getViewerId();
+ public String getDomain();
+ public long getModuleId();
}
public interface MetadataResponse extends BaseResponse {
Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultIframeUriManager.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultIframeUriManager.java?rev=1032679&r1=1032678&r2=1032679&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultIframeUriManager.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultIframeUriManager.java Mon Nov 8 19:51:20 2010
@@ -23,6 +23,7 @@ import com.google.inject.ImplementedBy;
import com.google.inject.Inject;
import com.google.inject.name.Named;
+import org.apache.commons.lang.StringUtils;
import org.apache.shindig.auth.SecurityToken;
import org.apache.shindig.auth.SecurityTokenCodec;
import org.apache.shindig.auth.SecurityTokenException;
@@ -131,10 +132,16 @@ public class DefaultIframeUriManager imp
} else {
host = getReqVal(container, UNLOCKED_DOMAIN_KEY);
}
- uri.setAuthority(host);
- // 3. Set protocol/schema.
- uri.setScheme(getScheme(gadget, container));
+ // 3. Set host/authority and protocol/schema.
+ Uri gadgetUri = Uri.parse(host);
+ if (StringUtils.isBlank(gadgetUri.getScheme())) {
+ uri.setAuthority(host);
+ uri.setScheme(getScheme(gadget, container));
+ } else {
+ uri.setAuthority(gadgetUri.getAuthority());
+ uri.setScheme(gadgetUri.getScheme());
+ }
// 4. Add the URL.
uri.addQueryParameter(Param.URL.getKey(), context.getUrl().toString());