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/09/26 16:42:20 UTC

svn commit: r699343 - in /incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets: DefaultGuiceModule.java render/RenderingContentRewriter.java servlet/CajaContentFilter.java servlet/CajaContentRewriter.java

Author: etnu
Date: Fri Sep 26 07:42:20 2008
New Revision: 699343

URL: http://svn.apache.org/viewvc?rev=699343&view=rev
Log:
Tweaked caja implementation to conform to ContentRewriter interface.

This doesn't seem to work in all cases -- unsure why.


Added:
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentRewriter.java   (contents, props changed)
      - copied, changed from r699268, incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentFilter.java
Removed:
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentFilter.java
Modified:
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGuiceModule.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/RenderingContentRewriter.java

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGuiceModule.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGuiceModule.java?rev=699343&r1=699342&r2=699343&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGuiceModule.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGuiceModule.java Fri Sep 26 07:42:20 2008
@@ -32,6 +32,7 @@
 import org.apache.shindig.gadgets.render.RenderingContentRewriter;
 import org.apache.shindig.gadgets.rewrite.ContentRewriter;
 import org.apache.shindig.gadgets.rewrite.lexer.DefaultContentRewriter;
+import org.apache.shindig.gadgets.servlet.CajaContentRewriter;
 
 import com.google.common.collect.Lists;
 import com.google.inject.AbstractModule;
@@ -209,8 +210,12 @@
 
     @Inject
     public ContentRewritersProvider(DefaultContentRewriter optimizingRewriter,
-                                    RenderingContentRewriter renderingRewriter) {
-      rewriters = Lists.<ContentRewriter>newArrayList(optimizingRewriter, renderingRewriter);
+                                    RenderingContentRewriter renderingRewriter,
+                                    CajaContentRewriter cajaRewriter) {
+      rewriters = Lists.newArrayList();
+      rewriters.add(optimizingRewriter);
+      rewriters.add(renderingRewriter);
+      rewriters.add(cajaRewriter);
     }
 
     public List<ContentRewriter> get() {

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/RenderingContentRewriter.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/RenderingContentRewriter.java?rev=699343&r1=699342&r2=699343&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/RenderingContentRewriter.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/RenderingContentRewriter.java Fri Sep 26 07:42:20 2008
@@ -110,7 +110,7 @@
   }
 
   public RewriterResults rewrite(HttpRequest req, HttpResponse resp,  MutableContent content) {
-    return RewriterResults.notCacheable();
+    return RewriterResults.cacheableIndefinitely();
   }
 
   public RewriterResults rewrite(Gadget gadget, MutableContent mutableContent) {

Copied: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentRewriter.java (from r699268, incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentFilter.java)
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentRewriter.java?p2=incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentRewriter.java&p1=incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentFilter.java&r1=699268&r2=699343&rev=699343&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentFilter.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentRewriter.java Fri Sep 26 07:42:20 2008
@@ -18,8 +18,12 @@
  */
 package org.apache.shindig.gadgets.servlet;
 
-import org.apache.shindig.gadgets.GadgetContentFilter;
-import org.apache.shindig.gadgets.GadgetException;
+import org.apache.shindig.gadgets.Gadget;
+import org.apache.shindig.gadgets.MutableContent;
+import org.apache.shindig.gadgets.http.HttpRequest;
+import org.apache.shindig.gadgets.http.HttpResponse;
+import org.apache.shindig.gadgets.rewrite.ContentRewriter;
+import org.apache.shindig.gadgets.rewrite.RewriterResults;
 
 import com.google.caja.lexer.CharProducer;
 import com.google.caja.lexer.ExternalReference;
@@ -42,65 +46,70 @@
 import java.net.URI;
 import java.util.logging.Logger;
 
-public class CajaContentFilter implements GadgetContentFilter {
-  private final URI retrievedUri;
-  private final Logger logger = Logger.getLogger("org.apache.shindig.gadgets");
+public class CajaContentRewriter implements ContentRewriter {
+  private final Logger logger = Logger.getLogger(CajaContentRewriter.class.getName());
 
-  public CajaContentFilter(URI retrievedUri) {
-    this.retrievedUri = retrievedUri;
+  public RewriterResults rewrite(HttpRequest req, HttpResponse resp, MutableContent content) {
+    return RewriterResults.cacheableIndefinitely();
   }
 
-  public String filter(String content) throws GadgetException {
-    UriCallback cb = new UriCallback() {
-      public UriCallbackOption getOption(ExternalReference externalReference, String string) {
-        return UriCallbackOption.REWRITE;
-      }
+  public RewriterResults rewrite(Gadget gadget, MutableContent content) {
+    if (gadget.getSpec().getModulePrefs().getFeatures().containsKey("caja") ||
+        "1".equals(gadget.getContext().getParameter("caja"))) {
+
+      final URI retrievedUri = gadget.getContext().getUrl();
+      UriCallback cb = new UriCallback() {
+        public UriCallbackOption getOption(ExternalReference externalReference, String string) {
+          return UriCallbackOption.REWRITE;
+        }
 
-      public Reader retrieve(ExternalReference externalReference, String string)
-          throws UriCallbackException {
-        logger.info("Retrieving " + externalReference.toString());
-        try {
-          Reader in = new InputStreamReader(
-              externalReference.getUri().toURL().openConnection().getInputStream(),
-              "UTF-8");
-          char[] buf = new char[4096];
-          StringBuilder sb = new StringBuilder();
-          for (int n; (n = in.read(buf)) > 0;) {
-            sb.append(buf, 0, n);
+        public Reader retrieve(ExternalReference externalReference, String string)
+            throws UriCallbackException {
+          logger.info("Retrieving " + externalReference.toString());
+          try {
+            Reader in = new InputStreamReader(
+                externalReference.getUri().toURL().openConnection().getInputStream(), "UTF-8");
+            char[] buf = new char[4096];
+            StringBuilder sb = new StringBuilder();
+            for (int n; (n = in.read(buf)) > 0;) {
+              sb.append(buf, 0, n);
+            }
+            return new StringReader(sb.toString());
+          } catch (java.net.MalformedURLException ex) {
+            throw new UriCallbackException(externalReference, ex);
+          } catch (IOException ex) {
+            throw new UriCallbackException(externalReference, ex);
           }
-          return new StringReader(sb.toString());
-        } catch (java.net.MalformedURLException ex) {
-          throw new UriCallbackException(externalReference, ex);
-        } catch (IOException ex) {
-          throw new UriCallbackException(externalReference, ex);
         }
-      }
 
-      public URI rewrite(ExternalReference externalReference, String string) {
-        return retrievedUri.resolve(externalReference.getUri());
+        public URI rewrite(ExternalReference externalReference, String string) {
+          return retrievedUri.resolve(externalReference.getUri());
+        }
+      };
+
+      MessageQueue mq = new SimpleMessageQueue();
+      DefaultGadgetRewriter rw = new DefaultGadgetRewriter(mq);
+      CharProducer input = CharProducer.Factory.create(
+          new StringReader(content.getContent()),
+          FilePosition.instance(new InputSource(retrievedUri), 2, 2, 1, 1));
+      StringBuilder output = new StringBuilder();
+
+      try {
+        rw.rewriteContent(retrievedUri, input, cb, output);
+      } catch (GadgetRewriteException e) {
+        throwCajolingException(e, mq);
+        return RewriterResults.notCacheable();
+      } catch (IOException e) {
+        throwCajolingException(e, mq);
+        return RewriterResults.notCacheable();
       }
-    };
 
-    MessageQueue mq = new SimpleMessageQueue();
-    DefaultGadgetRewriter rw = new DefaultGadgetRewriter(mq);
-    CharProducer input = CharProducer.Factory.create(
-        new StringReader(content),
-        FilePosition.instance(new InputSource(retrievedUri), 2, 2, 1, 1));
-    StringBuilder output = new StringBuilder();
-
-    try {
-      rw.rewriteContent(retrievedUri, input, cb, output);
-    } catch (GadgetRewriteException e) {
-      throwCajolingException(e, mq);
-    } catch (IOException e) {
-      throwCajolingException(e, mq);
+      content.setContent(output.toString());
     }
-
-    return output.toString();
+    return RewriterResults.notCacheable();
   }
 
-  private void throwCajolingException(Exception cause, MessageQueue mq)
-      throws GadgetException {
+  private void throwCajolingException(Exception cause, MessageQueue mq) {
     StringBuilder errbuilder = new StringBuilder();
     MessageContext mc = new MessageContext();
 
@@ -112,8 +121,9 @@
       errbuilder.append(m.format(mc)).append('\n');
     }
 
-    throw new GadgetException(
-        GadgetException.Code.MALFORMED_FOR_SAFE_INLINING,
-        errbuilder.toString());
+    logger.info("Unable to cajole gadget: " + errbuilder.toString());
+
+    // throw new GadgetException(
+    //    GadgetException.Code.MALFORMED_FOR_SAFE_INLINING, errbuilder.toString());
   }
 }

Propchange: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentRewriter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentRewriter.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision Rev