Author: johnh
Date: Mon Jul 11 21:59:20 2011
New Revision: 1145376

URL: http://svn.apache.org/viewvc?rev=1145376&view=rev
Log:
Optional ability for &jsload=1 to be async by default.


Modified:
    
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/JsLoadProcessor.java

Modified: 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/JsLoadProcessor.java
URL: 
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/JsLoadProcessor.java?rev=1145376&r1=1145375&r2=1145376&view=diff
==============================================================================
--- 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/JsLoadProcessor.java
 (original)
+++ 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/JsLoadProcessor.java
 Mon Jul 11 21:59:20 2011
@@ -43,10 +43,18 @@ public class JsLoadProcessor implements 
   public static final String JSLOAD_JS_TPL = "(function() {" +
       "document.write('<scr' + 'ipt type=\"text/javascript\" src=\"%s\"></scr' 
+ 'ipt>');" +
       "})();"; // Concatenated to avoid some browsers do dynamic script 
injection.
+  
+  @VisibleForTesting
+  public static final String ASYNC_JSLOAD_JS_TPL = "(function() {" +
+      "var s=document.createElement('script');" +
+      "s.src=\"%s\";" +
+      "document.getElementsByTagName('head')[0].appendChild(s);" +
+      "})();";
 
   private final JsUriManager jsUriManager;
   private final int jsloadTtlSecs;
   private final boolean requireOnload;
+  private String template;
 
   @Inject
   public JsLoadProcessor(
@@ -56,6 +64,14 @@ public class JsLoadProcessor implements 
     this.jsUriManager = jsUriManager;
     this.jsloadTtlSecs = jsloadTtlSecs;
     this.requireOnload = requireOnload;
+    this.template = JSLOAD_JS_TPL;
+  }
+  
+  @Inject(optional = true)
+  public void setUseAsync(@Named("shindig.jsload.async-mode") Boolean 
jsloadAsync) {
+    if (jsloadAsync) {
+      template = ASYNC_JSLOAD_JS_TPL;
+    }
   }
 
   public boolean process(JsRequest request, JsResponseBuilder builder)
@@ -97,7 +113,7 @@ public class JsLoadProcessor implements 
 
   protected String createJsloadScript(Uri uri) {
     String uriString = uri.toString();
-    return String.format(JSLOAD_JS_TPL, uriString);
+    return String.format(template, uriString);
   }
 
   private int getCacheTtlSecs(JsUri jsUri) {


Reply via email to