You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by li...@apache.org on 2009/07/25 00:34:25 UTC

svn commit: r797677 - in /incubator/shindig/trunk: features/src/main/javascript/features/caja/ features/src/main/javascript/features/opensocial-reference/ java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ javascript/samplecontainer/

Author: lindner
Date: Fri Jul 24 22:34:25 2009
New Revision: 797677

URL: http://svn.apache.org/viewvc?rev=797677&view=rev
Log:
SHINDIG-1124 | ugprade to caja r3574
 * removes libs=caja from url params in sample container - the behavior for this appears to have changed in shindig
 * changes to CajaContentRewriter to ensure error messages from caja are properly escaped
 * changes to CajaContentRewriter to handle the new static html output

Modified:
    incubator/shindig/trunk/features/src/main/javascript/features/caja/caja.js
    incubator/shindig/trunk/features/src/main/javascript/features/opensocial-reference/container.js
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentRewriter.java
    incubator/shindig/trunk/javascript/samplecontainer/samplecontainer.js

Modified: incubator/shindig/trunk/features/src/main/javascript/features/caja/caja.js
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/features/src/main/javascript/features/caja/caja.js?rev=797677&r1=797676&r2=797677&view=diff
==============================================================================
--- incubator/shindig/trunk/features/src/main/javascript/features/caja/caja.js (original)
+++ incubator/shindig/trunk/features/src/main/javascript/features/caja/caja.js Fri Jul 24 22:34:25 2009
@@ -29,7 +29,6 @@
     provide: ___.func(function(v) { valijaMaker = v; })
   };
   ___.grantRead(imports, 'loader');
-  ___.grantCall(imports.loader, 'provide');
   ___.getNewModuleHandler().setImports(imports);
   ___.getNewModuleHandler().handleUncaughtException = function(e) {
     throw e;

Modified: incubator/shindig/trunk/features/src/main/javascript/features/opensocial-reference/container.js
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/features/src/main/javascript/features/opensocial-reference/container.js?rev=797677&r1=797676&r2=797677&view=diff
==============================================================================
--- incubator/shindig/trunk/features/src/main/javascript/features/opensocial-reference/container.js (original)
+++ incubator/shindig/trunk/features/src/main/javascript/features/opensocial-reference/container.js Fri Jul 24 22:34:25 2009
@@ -691,15 +691,11 @@
   var imports = ___.copy(___.sharedImports);
   imports.outers = imports;
 
-  var gadgetRoot = document.createElement('div');
+  var gadgetRoot = document.getElementById('cajoled-output');
   gadgetRoot.className = 'g___';
   document.body.appendChild(gadgetRoot);
 
   imports.htmlEmitter___ = new HtmlEmitter(gadgetRoot);
-  imports.getCssContainer___ = function () {
-    return gadgetRoot;
-  };
-
   attachDocumentStub('-g___', uriCallback, imports, gadgetRoot);
 
   imports.$v = valijaMaker.CALL___(imports.outers);

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentRewriter.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentRewriter.java?rev=797677&r1=797676&r2=797677&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentRewriter.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentRewriter.java Fri Jul 24 22:34:25 2009
@@ -21,6 +21,8 @@
 import org.apache.commons.lang.StringUtils;
 import org.apache.shindig.gadgets.Gadget;
 import org.apache.shindig.gadgets.rewrite.MutableContent;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
 
 import java.io.IOException;
 import java.io.InputStreamReader;
@@ -39,6 +41,7 @@
 import com.google.caja.opensocial.GadgetRewriteException;
 import com.google.caja.opensocial.UriCallback;
 import com.google.caja.opensocial.UriCallbackException;
+import com.google.caja.parser.html.Nodes;
 import com.google.caja.reporting.BuildInfo;
 import com.google.caja.reporting.Message;
 import com.google.caja.reporting.MessageContext;
@@ -93,25 +96,30 @@
           FilePosition.instance(is, 5, 5, 5));
       StringBuilder output = new StringBuilder();
 
-      // Secure default to remove content in case there
-      // are problems cajoling a gadget
-      content.setContent("");
+      Document doc = content.getDocument();
       try {
-        rw.rewriteContent(retrievedUri, input, cb, output);
-      } catch (GadgetRewriteException e) {
-        content.setContent(messagesToHtml(is, origContent, mq));
-        throwCajolingException(e, mq);
-        return;
-      } catch (IOException e) {
-        content.setContent(messagesToHtml(is, origContent, mq));
+        StringBuilder htmlAndJs = new StringBuilder();
+        rw.rewriteContent(retrievedUri, input, cb, htmlAndJs);
+        int splitPoint = htmlAndJs.indexOf("<script");
+        String script = htmlAndJs.substring(splitPoint);
+        String html = htmlAndJs.substring(0, splitPoint);
+        String htmlElement = 
+          "<div id=\"cajoled-output\" class=\"g___\">" +
+          html +
+          "</div>";
+        output.append(htmlElement);
+        output.append(tameCajaClientApi());
+        output.append(script);
+      } catch (Exception e) {
+        content.setContent(messagesToHtml(doc, is, origContent, mq));
         throwCajolingException(e, mq);
         return;
       }
-      content.setContent(tameCajaClientApi() + output);
+      content.setContent(output.toString());
     }
   }
 
-  private String messagesToHtml(InputSource is, CharSequence orig, MessageQueue mq) {
+  private String messagesToHtml(Document doc, InputSource is, CharSequence orig, MessageQueue mq) {
     MessageContext mc = new MessageContext();
     Map<InputSource, CharSequence> originalSrc = Maps.newHashMap();
     originalSrc.put(is, orig);
@@ -119,7 +127,6 @@
     SnippetProducer sp = new SnippetProducer(originalSrc, mc);
 
     StringBuilder messageText = new StringBuilder();
-    messageText.append("<pre>");
     for (Message msg : mq.getMessages()) {
       // Ignore LINT messages
       if (MessageLevel.LINT.compareTo(msg.getMessageLevel()) <= 0) {
@@ -133,7 +140,8 @@
         }
       }
     }
-    messageText.append("</pre>");
+    Element errElement = doc.createElement("pre");
+    errElement.appendChild(doc.createTextNode(messageText.toString()));
     return messageText.toString();
   }
 

Modified: incubator/shindig/trunk/javascript/samplecontainer/samplecontainer.js
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/javascript/samplecontainer/samplecontainer.js?rev=797677&r1=797676&r2=797677&view=diff
==============================================================================
--- incubator/shindig/trunk/javascript/samplecontainer/samplecontainer.js (original)
+++ incubator/shindig/trunk/javascript/samplecontainer/samplecontainer.js Fri Jul 24 22:34:25 2009
@@ -99,7 +99,7 @@
     var params = '';
 
     if (useCaja) {
-      params += "&caja=1&libs=caja";
+      params += "&caja=1";
     }
     if (useDebug) {
       params += "&debug=1";