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