You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by do...@apache.org on 2008/08/05 02:42:52 UTC

svn commit: r682553 - /incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentFilter.java

Author: doll
Date: Mon Aug  4 17:42:52 2008
New Revision: 682553

URL: http://svn.apache.org/viewvc?rev=682553&view=rev
Log:
SHINDIG-490
Patch from Jasvir Nagra. Adds support for script tags in cajoled gadgets.


Modified:
    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/servlet/CajaContentFilter.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentFilter.java?rev=682553&r1=682552&r2=682553&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/CajaContentFilter.java Mon Aug  4 17:42:52 2008
@@ -36,12 +36,15 @@
 import com.google.caja.reporting.SimpleMessageQueue;
 
 import java.io.IOException;
+import java.io.InputStreamReader;
 import java.io.Reader;
 import java.io.StringReader;
 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 CajaContentFilter(URI retrievedUri) {
     this.retrievedUri = retrievedUri;
@@ -49,18 +52,32 @@
 
   public String filter(String content) throws GadgetException {
     UriCallback cb = new UriCallback() {
-      public UriCallbackOption getOption(ExternalReference externalReference,
-                                         String string) {
+      public UriCallbackOption getOption(ExternalReference externalReference, String string) {
         return UriCallbackOption.REWRITE;
       }
 
       public Reader retrieve(ExternalReference externalReference, String string)
           throws UriCallbackException {
-        throw new UriCallbackException(externalReference);
+        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);
+        }
       }
 
       public URI rewrite(ExternalReference externalReference, String string) {
-        return externalReference.getUri();
+        return retrievedUri.resolve(externalReference.getUri());
       }
     };