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>