Author: johnh
Date: Fri Jun 18 18:02:37 2010
New Revision: 956072

URL: http://svn.apache.org/viewvc?rev=956072&view=rev
Log:
Update Caja to r4135. Fixes lots of social data parsing cases (tests 
re-enabled) and updates to current cajoling rewriter API.


Modified:
    
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/caja/CajaHtmlParser.java
    
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentRewriter.java
    
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/caja/CajaSocialMarkupHtmlParserTest.java
    shindig/trunk/pom.xml

Modified: 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/caja/CajaHtmlParser.java
URL: 
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/caja/CajaHtmlParser.java?rev=956072&r1=956071&r2=956072&view=diff
==============================================================================
--- 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/caja/CajaHtmlParser.java
 (original)
+++ 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/caja/CajaHtmlParser.java
 Fri Jun 18 18:02:37 2010
@@ -141,9 +141,8 @@ public class CajaHtmlParser extends Gadg
     HtmlLexer lexer = new HtmlLexer(CharProducer.Factory.fromString(source, 
is));
     final Namespaces ns = Namespaces.HTML_DEFAULT;  // Includes OpenSocial
     final boolean needsDebugData = needsDebugData();
-    DomParser parser = new DomParser(lexer, is, ns, mq);
+    DomParser parser = new DomParser(lexer, /* wantsComments */ true, is, ns, 
mq);
     parser.setDomImpl(documentFactory);
-    parser.setWantsComments(true);
     parser.setNeedsDebugData(needsDebugData);
     return parser;
   }

Modified: 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentRewriter.java
URL: 
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentRewriter.java?rev=956072&r1=956071&r2=956072&view=diff
==============================================================================
--- 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentRewriter.java
 (original)
+++ 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentRewriter.java
 Fri Jun 18 18:02:37 2010
@@ -20,11 +20,13 @@ package org.apache.shindig.gadgets.servl
 
 import com.google.caja.lexer.CharProducer;
 import com.google.caja.lexer.ExternalReference;
+import com.google.caja.lexer.FetchedData;
 import com.google.caja.lexer.InputSource;
 import com.google.caja.lexer.escaping.Escaping;
 import com.google.caja.opensocial.DefaultGadgetRewriter;
 import com.google.caja.opensocial.GadgetRewriteException;
-import com.google.caja.plugin.PluginEnvironment;
+import com.google.caja.plugin.UriFetcher;
+import com.google.caja.plugin.UriPolicy;
 import com.google.caja.reporting.BuildInfo;
 import com.google.caja.reporting.Message;
 import com.google.caja.reporting.MessageContext;
@@ -36,6 +38,7 @@ import com.google.caja.util.Pair;
 import com.google.common.collect.Maps;
 import com.google.inject.Inject;
 
+import org.apache.commons.io.IOUtils;
 import org.apache.shindig.common.cache.Cache;
 import org.apache.shindig.common.cache.CacheProvider;
 import org.apache.shindig.common.util.HashUtil;
@@ -53,6 +56,7 @@ import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 
+import java.io.IOException;
 import java.net.URI;
 import java.util.Map;
 import java.util.logging.Logger;
@@ -97,7 +101,8 @@ public class CajaContentRewriter impleme
     }
     
     if (cajoledData == null) {
-      PluginEnvironment pluginEnv = makePluginEnv(gadget);
+      UriFetcher fetcher = makeFetcher(gadget);
+      UriPolicy policy = makePolicy(gadget);
       URI javaGadgetUri = gadget.getContext().getUrl().toJavaUri();
       MessageQueue mq = new SimpleMessageQueue();
       BuildInfo bi = BuildInfo.getInstance();
@@ -106,7 +111,8 @@ public class CajaContentRewriter impleme
       boolean safe = false;
     
       try {
-        Pair<Node, Element> htmlAndJs = rw.rewriteContent(javaGadgetUri, root, 
pluginEnv, null);
+        Pair<Node, Element> htmlAndJs =
+            rw.rewriteContent(javaGadgetUri, root, fetcher, policy, null);
         Node html = htmlAndJs.a;
         Element script = htmlAndJs.b;
       
@@ -153,28 +159,41 @@ public class CajaContentRewriter impleme
         "1".equals(gadget.getContext().getParameter("caja")));
   }
   
-  private PluginEnvironment makePluginEnv(Gadget gadget) {
+  private UriFetcher makeFetcher(Gadget gadget) {
     final Uri gadgetUri = gadget.getContext().getUrl();
     final String container = gadget.getContext().getContainer();
-
-    return new PluginEnvironment() {
-      public CharProducer loadExternalResource(
-          ExternalReference externalReference, String string) {
-        LOG.info("Retrieving " + externalReference.toString());
-        Uri resourceUri = 
gadgetUri.resolve(Uri.fromJavaUri(externalReference.getUri()));
+    
+    return new UriFetcher() {
+      public FetchedData fetch(ExternalReference ref, String mimeType)
+          throws UriFetchException {
+        LOG.info("Retrieving " + ref.toString());
+        Uri resourceUri = gadgetUri.resolve(Uri.fromJavaUri(ref.getUri()));
         HttpRequest request =
             new 
HttpRequest(resourceUri).setContainer(container).setGadget(gadgetUri);
         try {
           HttpResponse response = requestPipeline.execute(request);
-          return 
CharProducer.Factory.fromString(response.getResponseAsString(), 
externalReference.getReferencePosition());
+          byte[] responseBytes = IOUtils.toByteArray(response.getResponse());
+          return FetchedData.fromBytes(responseBytes, mimeType, 
response.getEncoding(),
+              new InputSource(ref.getUri()));
         } catch (GadgetException e) {
-          LOG.info("Failed to retrieve: " + externalReference.toString());
+          LOG.info("Failed to retrieve: " + ref.toString());
+          return null;
+        } catch (IOException e) {
+          LOG.info("Failed to read: " + ref.toString());
           return null;
         }
       }
+      
+    };
+  }
+  
+  private UriPolicy makePolicy(Gadget gadget) {
+    final Uri gadgetUri = gadget.getContext().getUrl();
 
-      public String rewriteUri(ExternalReference externalReference, String 
mimeType) {
-        URI uri = externalReference.getUri();
+    return new UriPolicy() {
+      public String rewriteUri(ExternalReference ref, UriEffect effect,
+          LoaderType loader, Map<String, ?> hints) {
+        URI uri = ref.getUri();
         if (uri.getScheme().equalsIgnoreCase("https") ||
             uri.getScheme().equalsIgnoreCase("http")) {
           return gadgetUri.resolve(Uri.fromJavaUri(uri)).toString();

Modified: 
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/caja/CajaSocialMarkupHtmlParserTest.java
URL: 
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/caja/CajaSocialMarkupHtmlParserTest.java?rev=956072&r1=956071&r2=956072&view=diff
==============================================================================
--- 
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/caja/CajaSocialMarkupHtmlParserTest.java
 (original)
+++ 
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/caja/CajaSocialMarkupHtmlParserTest.java
 Fri Jun 18 18:02:37 2010
@@ -30,39 +30,9 @@ public class CajaSocialMarkupHtmlParserT
   protected GadgetHtmlParser makeParser() {
     return new CajaHtmlParser(new 
ParseModule.DOMImplementationProvider().get());
   }
-
-  @Test
-  @Override
-  @Ignore("Until xmlnamespace issues have been resolved")
-  public void testSocialData() { super.testSocialData(); }
-
-  @Test
-  @Override
-  @Ignore("Until xmlnamespace issues have been resolved")
-  public void testSocialTemplate() { super.testSocialTemplate(); }
-
-  @Test
-  @Override
-  @Ignore("Until xmlnamespace issues have been resolved")
-  public void testInvalid() throws Exception { super.testInvalid(); }
   
   @Test
   @Override
-  @Ignore("Until xml-in-HTML NPE issues have been resolved")
-  public void testSocialTemplateSerialization() { 
super.testSocialTemplateSerialization(); }
-
-  @Test
-  @Override
-  @Ignore("Until xml-in-HTML NPE issues have been resolved")
-  public void testJavascript() { super.testJavascript(); }
-
-  @Test
-  @Override
-  @Ignore("Until xml-in-HTML NPE issues have been resolved")
-  public void testPlainContent() { super.testPlainContent(); }
-  
-  @Test
-  @Override
-  @Ignore("Until xml-in-HTML NPE issues have been resolved")
-  public void testCommentOrdering() { super.testCommentOrdering(); }
+  @Ignore("Look into treating DOMException in Caja parser as Error not 
Warning")
+  public void testInvalid() throws Exception { super.testInvalid(); }
 }

Modified: shindig/trunk/pom.xml
URL: 
http://svn.apache.org/viewvc/shindig/trunk/pom.xml?rev=956072&r1=956071&r2=956072&view=diff
==============================================================================
--- shindig/trunk/pom.xml (original)
+++ shindig/trunk/pom.xml Fri Jun 18 18:02:37 2010
@@ -1395,13 +1395,13 @@
      <dependency>
        <groupId>caja</groupId>
        <artifactId>htmlparser</artifactId>
-       <version>r4067</version>
+       <version>r4135</version>
        <scope>compile</scope>
      </dependency>
       <dependency>
         <groupId>caja</groupId>
         <artifactId>caja</artifactId>
-        <version>r4067</version>
+        <version>r4135</version>
         <scope>compile</scope>
       </dependency>
       <dependency>


Reply via email to