You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by et...@apache.org on 2008/03/12 10:10:38 UTC

svn commit: r636258 - in /incubator/shindig/trunk: features/core/util.js java/gadgets/src/main/java/org/apache/shindig/gadgets/http/GadgetRenderer.java java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpUtil.java

Author: etnu
Date: Wed Mar 12 02:10:33 2008
New Revision: 636258

URL: http://svn.apache.org/viewvc?rev=636258&view=rev
Log:
Fix for SHINDIG-83


Modified:
    incubator/shindig/trunk/features/core/util.js
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/GadgetRenderer.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpUtil.java

Modified: incubator/shindig/trunk/features/core/util.js
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/features/core/util.js?rev=636258&r1=636257&r2=636258&view=diff
==============================================================================
--- incubator/shindig/trunk/features/core/util.js (original)
+++ incubator/shindig/trunk/features/core/util.js Wed Mar 12 02:10:33 2008
@@ -92,6 +92,14 @@
     return String.fromCharCode(value);
   }
 
+  /**
+   * Initializes feature parameters.
+   */
+  function init(config) {
+    features = config["core.util"] || {};
+  }
+  gadgets.config.register("core.util", null, init);
+
   return /** @scope gadgets.util */ {
 
     /**
@@ -142,12 +150,13 @@
      */
     makeClosure : function (scope, callback, var_args) {
       // arguments isn't a real array, so we copy it into one.
-      var tmpArgs = [];
+      var baseArgs = [];
       for (var i = 2, j = arguments.length; i < j; ++i) {
-       tmpArgs.push(arguments[i]);
+       baseArgs.push(arguments[i]);
       }
       return function() {
         // append new arguments.
+        var tmpArgs = baseArgs.slice();
         for (var i = 0, j = arguments.length; i < j; ++i) {
           tmpArgs.push(arguments[i]);
         }
@@ -287,15 +296,6 @@
      */
     unescapeString : function(str) {
       return str.replace(/&#([0-9]+);/g, unescapeEntity);
-    },
-
-    /**
-     * @param {Object} featureData The features that are supported, and
-     *    their parameters.
-     * @private Only to be used by the container, not gadgets.
-     */
-    init : function (featureData) {
-      features = featureData;
     }
   };
 }();

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/GadgetRenderer.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/GadgetRenderer.java?rev=636258&r1=636257&r2=636258&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/GadgetRenderer.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/GadgetRenderer.java Wed Mar 12 02:10:33 2008
@@ -27,7 +27,9 @@
 import org.apache.shindig.gadgets.GadgetServerConfigReader;
 import org.apache.shindig.gadgets.JsLibrary;
 import org.apache.shindig.gadgets.SyndicatorConfig;
+import org.apache.shindig.gadgets.spec.Feature;
 import org.apache.shindig.gadgets.spec.MessageBundle;
+import org.apache.shindig.gadgets.spec.ModulePrefs;
 import org.apache.shindig.gadgets.spec.View;
 
 import org.json.JSONArray;
@@ -206,7 +208,7 @@
       libs.add(library.getFeature());
     }
 
-    appendJsConfig(libs, inlineJs);
+    appendJsConfig(gadget, libs, inlineJs);
 
     // message bundles for prefs object.
     MessageBundle bundle = gadget.getMessageBundle();
@@ -318,13 +320,39 @@
   }
 
   /**
+   * Appends javascript configuration to the bottom of an existing script block.
+   *
+   * Appends special configuration for gadgets.util.hasFeature and
+   * gadgets.util.getFeatureParams to the output js.
+   *
+   * This can't be handled via the normal configuration mechanism because it is
+   * something that varies per request.
+   *
+   * Only explicitly <Require>'d and <Optional> features will be added.
+   *
+   * @param gadget
    * @param reqs The features you require.
    * @param js Existing js, to which the configuration will be appended.
    */
-  private void appendJsConfig(Set<String> reqs, StringBuilder js) {
+  private void appendJsConfig(Gadget gadget, Set<String> reqs,
+      StringBuilder js) {
     GadgetServerConfigReader config = state.getGadgetServer().getConfig();
     SyndicatorConfig syndConf = config.getSyndicatorConfig();
-    js.append(HttpUtil.getJsConfig(syndConf, context, reqs));
+    JSONObject json = HttpUtil.getJsConfig(syndConf, context, reqs);
+    // Add gadgets.util support. This is calculated dynamically based on
+    // request inputs.
+    ModulePrefs prefs = gadget.getSpec().getModulePrefs();
+    JSONObject featureMap = new JSONObject();
+    try {
+      for (Feature feature : prefs.getFeatures().values()) {
+        featureMap.put(feature.getName(), feature.getParams());
+      }
+      json.put("core.util", featureMap);
+    } catch (JSONException e) {
+      // Shouldn't be possible.
+      throw new RuntimeException(e);
+    }
+    js.append("gadgets.config.init(").append(json.toString()).append(");");
   }
 
   /**

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpUtil.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpUtil.java?rev=636258&r1=636257&r2=636258&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpUtil.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpUtil.java Wed Mar 12 02:10:33 2008
@@ -68,20 +68,18 @@
    * @param context
    * @param features
    */
-  public static String getJsConfig(SyndicatorConfig config,
+  public static JSONObject getJsConfig(SyndicatorConfig config,
       GadgetContext context, Set<String> features) {
     JSONObject syndFeatures = config.getJsonObject(context.getSyndicator(),
                                                    "gadgets.features");
     if (syndFeatures != null) {
       String[] featArray = features.toArray(new String[features.size()]);
       try {
-        JSONObject featureConfig = new JSONObject(syndFeatures, featArray);
-        return "\ngadgets.config.init(" + featureConfig.toString() +
-               (context.getDebug() ? ");" : ", true);");
+        return new JSONObject(syndFeatures, featArray);
       } catch (JSONException e) {
-        return "";
+        return null;
       }
     }
-    return "";
+    return new JSONObject();
   }
 }



Re: svn commit: r636258 - in /incubator/shindig/trunk: features/core/util.js java/gadgets/src/main/java/org/apache/shindig/gadgets/http/GadgetRenderer.java java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpUtil.java

Posted by Kevin Brown <et...@google.com>.
On Wed, Mar 12, 2008 at 3:53 AM, Cassie <do...@google.com> wrote:

> On Wed, Mar 12, 2008 at 10:10 AM, <et...@apache.org> wrote:
>
> > Author: etnu
> > Date: Wed Mar 12 02:10:33 2008
> > New Revision: 636258
> >
> > URL: http://svn.apache.org/viewvc?rev=636258&view=rev
> > Log:
> > Fix for SHINDIG-83
> >
> >
> > Modified:
> >    incubator/shindig/trunk/features/core/util.js
> >
> >
>  incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/GadgetRenderer.java
> >
> >
>  incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpUtil.java
> >
> > Modified: incubator/shindig/trunk/features/core/util.js
> > URL:
> >
> http://svn.apache.org/viewvc/incubator/shindig/trunk/features/core/util.js?rev=636258&r1=636257&r2=636258&view=diff
> >
> >
> ==============================================================================
> > --- incubator/shindig/trunk/features/core/util.js (original)
> > +++ incubator/shindig/trunk/features/core/util.js Wed Mar 12 02:10:33
> 2008
> > @@ -92,6 +92,14 @@
> >     return String.fromCharCode(value);
> >   }
> >
> > +  /**
> > +   * Initializes feature parameters.
> > +   */
> > +  function init(config) {
> > +    features = config["core.util"] || {};
> > +  }
> > +  gadgets.config.register("core.util", null, init);
>
>
> this breaks the sample container.
> it seems like rpc.js?c=1 pulls in the core library. unfortunately, when in
> container mode gadgets.config does not exist which causes a js error.
>
> rpc wraps this call inside of a flag check, can you do something similar
> here?


Ahh, yes, it should be doing that.


>
>
>
> ps - i suppose i need to make a samplecontainer test somehow so that we
> stop
> breaking it without knowing...
>
>
>
> >
> > +
> >   return /** @scope gadgets.util */ {
> >
> >     /**
> > @@ -142,12 +150,13 @@
> >      */
> >     makeClosure : function (scope, callback, var_args) {
> >       // arguments isn't a real array, so we copy it into one.
> > -      var tmpArgs = [];
> > +      var baseArgs = [];
> >       for (var i = 2, j = arguments.length; i < j; ++i) {
> > -       tmpArgs.push(arguments[i]);
> > +       baseArgs.push(arguments[i]);
> >       }
> >       return function() {
> >         // append new arguments.
> > +        var tmpArgs = baseArgs.slice();
> >         for (var i = 0, j = arguments.length; i < j; ++i) {
> >           tmpArgs.push(arguments[i]);
> >         }
> > @@ -287,15 +296,6 @@
> >      */
> >     unescapeString : function(str) {
> >       return str.replace(/&#([0-9]+);/g, unescapeEntity);
> > -    },
> > -
> > -    /**
> > -     * @param {Object} featureData The features that are supported, and
> > -     *    their parameters.
> > -     * @private Only to be used by the container, not gadgets.
> > -     */
> > -    init : function (featureData) {
> > -      features = featureData;
> >     }
> >   };
> >  }();
> >
> > Modified:
> >
> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/GadgetRenderer.java
> > URL:
> >
> http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/GadgetRenderer.java?rev=636258&r1=636257&r2=636258&view=diff
> >
> >
> ==============================================================================
> > ---
> >
> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/GadgetRenderer.java
> > (original)
> > +++
> >
> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/GadgetRenderer.java
> > Wed Mar 12 02:10:33 2008
> > @@ -27,7 +27,9 @@
> >  import org.apache.shindig.gadgets.GadgetServerConfigReader;
> >  import org.apache.shindig.gadgets.JsLibrary;
> >  import org.apache.shindig.gadgets.SyndicatorConfig;
> > +import org.apache.shindig.gadgets.spec.Feature;
> >  import org.apache.shindig.gadgets.spec.MessageBundle;
> > +import org.apache.shindig.gadgets.spec.ModulePrefs;
> >  import org.apache.shindig.gadgets.spec.View;
> >
> >  import org.json.JSONArray;
> > @@ -206,7 +208,7 @@
> >       libs.add(library.getFeature());
> >     }
> >
> > -    appendJsConfig(libs, inlineJs);
> > +    appendJsConfig(gadget, libs, inlineJs);
> >
> >     // message bundles for prefs object.
> >     MessageBundle bundle = gadget.getMessageBundle();
> > @@ -318,13 +320,39 @@
> >   }
> >
> >   /**
> > +   * Appends javascript configuration to the bottom of an existing
> script
> > block.
> > +   *
> > +   * Appends special configuration for gadgets.util.hasFeature and
> > +   * gadgets.util.getFeatureParams to the output js.
> > +   *
> > +   * This can't be handled via the normal configuration mechanism
> because
> > it is
> > +   * something that varies per request.
> > +   *
> > +   * Only explicitly <Require>'d and <Optional> features will be added.
> > +   *
> > +   * @param gadget
> >    * @param reqs The features you require.
> >    * @param js Existing js, to which the configuration will be appended.
> >    */
> > -  private void appendJsConfig(Set<String> reqs, StringBuilder js) {
> > +  private void appendJsConfig(Gadget gadget, Set<String> reqs,
> > +      StringBuilder js) {
> >     GadgetServerConfigReader config = state.getGadgetServer
> ().getConfig();
> >     SyndicatorConfig syndConf = config.getSyndicatorConfig();
> > -    js.append(HttpUtil.getJsConfig(syndConf, context, reqs));
> > +    JSONObject json = HttpUtil.getJsConfig(syndConf, context, reqs);
> > +    // Add gadgets.util support. This is calculated dynamically based
> on
> > +    // request inputs.
> > +    ModulePrefs prefs = gadget.getSpec().getModulePrefs();
> > +    JSONObject featureMap = new JSONObject();
> > +    try {
> > +      for (Feature feature : prefs.getFeatures().values()) {
> > +        featureMap.put(feature.getName(), feature.getParams());
> > +      }
> > +      json.put("core.util", featureMap);
> > +    } catch (JSONException e) {
> > +      // Shouldn't be possible.
> > +      throw new RuntimeException(e);
> > +    }
> > +
> >  js.append("gadgets.config.init(").append(json.toString()).append(");");
> >   }
> >
> >   /**
> >
> > Modified:
> >
> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpUtil.java
> > URL:
> >
> http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpUtil.java?rev=636258&r1=636257&r2=636258&view=diff
> >
> >
> ==============================================================================
> > ---
> >
> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpUtil.java
> > (original)
> > +++
> >
> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpUtil.java
> > Wed Mar 12 02:10:33 2008
> > @@ -68,20 +68,18 @@
> >    * @param context
> >    * @param features
> >    */
> > -  public static String getJsConfig(SyndicatorConfig config,
> > +  public static JSONObject getJsConfig(SyndicatorConfig config,
> >       GadgetContext context, Set<String> features) {
> >     JSONObject syndFeatures =
> > config.getJsonObject(context.getSyndicator(),
> >                                                    "gadgets.features");
> >     if (syndFeatures != null) {
> >       String[] featArray = features.toArray(new String[features.size
> ()]);
> >       try {
> > -        JSONObject featureConfig = new JSONObject(syndFeatures,
> > featArray);
> > -        return "\ngadgets.config.init(" + featureConfig.toString() +
> > -               (context.getDebug() ? ");" : ", true);");
> > +        return new JSONObject(syndFeatures, featArray);
> >       } catch (JSONException e) {
> > -        return "";
> > +        return null;
> >       }
> >     }
> > -    return "";
> > +    return new JSONObject();
> >   }
> >  }
> >
> >
> >
>



-- 
~Kevin

Re: svn commit: r636258 - in /incubator/shindig/trunk: features/core/util.js java/gadgets/src/main/java/org/apache/shindig/gadgets/http/GadgetRenderer.java java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpUtil.java

Posted by Cassie <do...@google.com>.
On Wed, Mar 12, 2008 at 10:10 AM, <et...@apache.org> wrote:

> Author: etnu
> Date: Wed Mar 12 02:10:33 2008
> New Revision: 636258
>
> URL: http://svn.apache.org/viewvc?rev=636258&view=rev
> Log:
> Fix for SHINDIG-83
>
>
> Modified:
>    incubator/shindig/trunk/features/core/util.js
>
>  incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/GadgetRenderer.java
>
>  incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpUtil.java
>
> Modified: incubator/shindig/trunk/features/core/util.js
> URL:
> http://svn.apache.org/viewvc/incubator/shindig/trunk/features/core/util.js?rev=636258&r1=636257&r2=636258&view=diff
>
> ==============================================================================
> --- incubator/shindig/trunk/features/core/util.js (original)
> +++ incubator/shindig/trunk/features/core/util.js Wed Mar 12 02:10:33 2008
> @@ -92,6 +92,14 @@
>     return String.fromCharCode(value);
>   }
>
> +  /**
> +   * Initializes feature parameters.
> +   */
> +  function init(config) {
> +    features = config["core.util"] || {};
> +  }
> +  gadgets.config.register("core.util", null, init);


this breaks the sample container.
it seems like rpc.js?c=1 pulls in the core library. unfortunately, when in
container mode gadgets.config does not exist which causes a js error.

rpc wraps this call inside of a flag check, can you do something similar
here?


ps - i suppose i need to make a samplecontainer test somehow so that we stop
breaking it without knowing...



>
> +
>   return /** @scope gadgets.util */ {
>
>     /**
> @@ -142,12 +150,13 @@
>      */
>     makeClosure : function (scope, callback, var_args) {
>       // arguments isn't a real array, so we copy it into one.
> -      var tmpArgs = [];
> +      var baseArgs = [];
>       for (var i = 2, j = arguments.length; i < j; ++i) {
> -       tmpArgs.push(arguments[i]);
> +       baseArgs.push(arguments[i]);
>       }
>       return function() {
>         // append new arguments.
> +        var tmpArgs = baseArgs.slice();
>         for (var i = 0, j = arguments.length; i < j; ++i) {
>           tmpArgs.push(arguments[i]);
>         }
> @@ -287,15 +296,6 @@
>      */
>     unescapeString : function(str) {
>       return str.replace(/&#([0-9]+);/g, unescapeEntity);
> -    },
> -
> -    /**
> -     * @param {Object} featureData The features that are supported, and
> -     *    their parameters.
> -     * @private Only to be used by the container, not gadgets.
> -     */
> -    init : function (featureData) {
> -      features = featureData;
>     }
>   };
>  }();
>
> Modified:
> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/GadgetRenderer.java
> URL:
> http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/GadgetRenderer.java?rev=636258&r1=636257&r2=636258&view=diff
>
> ==============================================================================
> ---
> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/GadgetRenderer.java
> (original)
> +++
> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/GadgetRenderer.java
> Wed Mar 12 02:10:33 2008
> @@ -27,7 +27,9 @@
>  import org.apache.shindig.gadgets.GadgetServerConfigReader;
>  import org.apache.shindig.gadgets.JsLibrary;
>  import org.apache.shindig.gadgets.SyndicatorConfig;
> +import org.apache.shindig.gadgets.spec.Feature;
>  import org.apache.shindig.gadgets.spec.MessageBundle;
> +import org.apache.shindig.gadgets.spec.ModulePrefs;
>  import org.apache.shindig.gadgets.spec.View;
>
>  import org.json.JSONArray;
> @@ -206,7 +208,7 @@
>       libs.add(library.getFeature());
>     }
>
> -    appendJsConfig(libs, inlineJs);
> +    appendJsConfig(gadget, libs, inlineJs);
>
>     // message bundles for prefs object.
>     MessageBundle bundle = gadget.getMessageBundle();
> @@ -318,13 +320,39 @@
>   }
>
>   /**
> +   * Appends javascript configuration to the bottom of an existing script
> block.
> +   *
> +   * Appends special configuration for gadgets.util.hasFeature and
> +   * gadgets.util.getFeatureParams to the output js.
> +   *
> +   * This can't be handled via the normal configuration mechanism because
> it is
> +   * something that varies per request.
> +   *
> +   * Only explicitly <Require>'d and <Optional> features will be added.
> +   *
> +   * @param gadget
>    * @param reqs The features you require.
>    * @param js Existing js, to which the configuration will be appended.
>    */
> -  private void appendJsConfig(Set<String> reqs, StringBuilder js) {
> +  private void appendJsConfig(Gadget gadget, Set<String> reqs,
> +      StringBuilder js) {
>     GadgetServerConfigReader config = state.getGadgetServer().getConfig();
>     SyndicatorConfig syndConf = config.getSyndicatorConfig();
> -    js.append(HttpUtil.getJsConfig(syndConf, context, reqs));
> +    JSONObject json = HttpUtil.getJsConfig(syndConf, context, reqs);
> +    // Add gadgets.util support. This is calculated dynamically based on
> +    // request inputs.
> +    ModulePrefs prefs = gadget.getSpec().getModulePrefs();
> +    JSONObject featureMap = new JSONObject();
> +    try {
> +      for (Feature feature : prefs.getFeatures().values()) {
> +        featureMap.put(feature.getName(), feature.getParams());
> +      }
> +      json.put("core.util", featureMap);
> +    } catch (JSONException e) {
> +      // Shouldn't be possible.
> +      throw new RuntimeException(e);
> +    }
> +
>  js.append("gadgets.config.init(").append(json.toString()).append(");");
>   }
>
>   /**
>
> Modified:
> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpUtil.java
> URL:
> http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpUtil.java?rev=636258&r1=636257&r2=636258&view=diff
>
> ==============================================================================
> ---
> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpUtil.java
> (original)
> +++
> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpUtil.java
> Wed Mar 12 02:10:33 2008
> @@ -68,20 +68,18 @@
>    * @param context
>    * @param features
>    */
> -  public static String getJsConfig(SyndicatorConfig config,
> +  public static JSONObject getJsConfig(SyndicatorConfig config,
>       GadgetContext context, Set<String> features) {
>     JSONObject syndFeatures =
> config.getJsonObject(context.getSyndicator(),
>                                                    "gadgets.features");
>     if (syndFeatures != null) {
>       String[] featArray = features.toArray(new String[features.size()]);
>       try {
> -        JSONObject featureConfig = new JSONObject(syndFeatures,
> featArray);
> -        return "\ngadgets.config.init(" + featureConfig.toString() +
> -               (context.getDebug() ? ");" : ", true);");
> +        return new JSONObject(syndFeatures, featArray);
>       } catch (JSONException e) {
> -        return "";
> +        return null;
>       }
>     }
> -    return "";
> +    return new JSONObject();
>   }
>  }
>
>
>