You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by jo...@apache.org on 2010/03/11 00:00:32 UTC
svn commit: r921615 - in /shindig/trunk/java/gadgets/src:
main/java/org/apache/shindig/gadgets/DefaultGadgetSpecFactory.java
test/java/org/apache/shindig/gadgets/DefaultGadgetSpecFactoryTest.java
Author: johnh
Date: Wed Mar 10 23:00:32 2010
New Revision: 921615
URL: http://svn.apache.org/viewvc?rev=921615&view=rev
Log:
Handle unescaped BOM chars at BOF in default spec factory.
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGadgetSpecFactory.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/DefaultGadgetSpecFactoryTest.java
Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGadgetSpecFactory.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGadgetSpecFactory.java?rev=921615&r1=921614&r2=921615&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGadgetSpecFactory.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGadgetSpecFactory.java Wed Mar 10 23:00:32 2010
@@ -18,6 +18,10 @@
*/
package org.apache.shindig.gadgets;
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import com.google.inject.name.Named;
+
import org.apache.shindig.common.cache.Cache;
import org.apache.shindig.common.cache.CacheProvider;
import org.apache.shindig.common.uri.Uri;
@@ -27,11 +31,6 @@ import org.apache.shindig.gadgets.http.R
import org.apache.shindig.gadgets.servlet.HtmlAccelServlet;
import org.apache.shindig.gadgets.spec.GadgetSpec;
import org.apache.shindig.gadgets.spec.SpecParserException;
-
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-import com.google.inject.name.Named;
-
import org.w3c.dom.Element;
import java.util.concurrent.ExecutorService;
@@ -89,6 +88,11 @@ public class DefaultGadgetSpecFactory ex
@Override
protected GadgetSpec parse(String content, Query query) throws XmlException, GadgetException {
+ // Allow BOM entity as first item on stream and ignore it:
+ final String BOM_ENTITY = "";
+ if (content.substring(0, BOM_ENTITY.length()).equalsIgnoreCase(BOM_ENTITY)) {
+ content = content.substring(BOM_ENTITY.length());
+ }
Element element = XmlUtil.parse(content);
return new GadgetSpec(query.getSpecUri(), element, content);
}
Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/DefaultGadgetSpecFactoryTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/DefaultGadgetSpecFactoryTest.java?rev=921615&r1=921614&r2=921615&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/DefaultGadgetSpecFactoryTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/DefaultGadgetSpecFactoryTest.java Wed Mar 10 23:00:32 2010
@@ -34,7 +34,6 @@ import org.apache.shindig.gadgets.http.H
import org.apache.shindig.gadgets.http.RequestPipeline;
import org.apache.shindig.gadgets.spec.GadgetSpec;
import org.apache.shindig.gadgets.spec.SpecParserException;
-
import org.easymock.EasyMock;
import org.junit.Test;
@@ -134,6 +133,30 @@ public class DefaultGadgetSpecFactoryTes
assertEquals(LOCAL_CONTENT, spec.getView(GadgetSpec.DEFAULT_VIEW).getContent());
}
+ @Test
+ public void specFetchedWithBom() throws Exception {
+ HttpRequest request = createIgnoreCacheRequest();
+ HttpResponse response = new HttpResponse("" + LOCAL_SPEC_XML);
+ expect(pipeline.execute(request)).andReturn(response);
+ replay(pipeline);
+
+ GadgetSpec spec = specFactory.getGadgetSpec(createContext(SPEC_URL, true));
+
+ assertEquals(LOCAL_CONTENT, spec.getView(GadgetSpec.DEFAULT_VIEW).getContent());
+ }
+
+ @Test
+ public void specFetchedWithBomChar() throws Exception {
+ HttpRequest request = createIgnoreCacheRequest();
+ HttpResponse response = new HttpResponse("\uFEFF" + LOCAL_SPEC_XML);
+ expect(pipeline.execute(request)).andReturn(response);
+ replay(pipeline);
+
+ GadgetSpec spec = specFactory.getGadgetSpec(createContext(SPEC_URL, true));
+
+ assertEquals(LOCAL_CONTENT, spec.getView(GadgetSpec.DEFAULT_VIEW).getContent());
+ }
+
// TODO: Move these tests into AbstractSpecFactoryTest
@Test
public void specRefetchedAsync() throws Exception {