Author: johnh
Date: Fri Mar 19 21:42:50 2010
New Revision: 925444
URL: http://svn.apache.org/viewvc?rev=925444&view=rev
Log:
Avoid NPE in DefaultGadgetSpecFactory.
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=925444&r1=925443&r2=925444&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
Fri Mar 19 21:42:50 2010
@@ -90,7 +90,8 @@ public class DefaultGadgetSpecFactory ex
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)) {
+ if (content.length() >= BOM_ENTITY.length() &&
+ content.substring(0,
BOM_ENTITY.length()).equalsIgnoreCase(BOM_ENTITY)) {
content = content.substring(BOM_ENTITY.length());
}
Element element = XmlUtil.parse(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=925444&r1=925443&r2=925444&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
Fri Mar 19 21:42:50 2010
@@ -145,6 +145,25 @@ public class DefaultGadgetSpecFactoryTes
assertEquals(LOCAL_CONTENT,
spec.getView(GadgetSpec.DEFAULT_VIEW).getContent());
}
+ @Test(expected = GadgetException.class)
+ public void specFetchedEmptyContent() throws Exception {
+ HttpRequest request = createIgnoreCacheRequest();
+ HttpResponse response = new HttpResponse("");
+ expect(pipeline.execute(request)).andReturn(response);
+ replay(pipeline);
+
+ GadgetSpec spec = specFactory.getGadgetSpec(createContext(SPEC_URL, true));
+ }
+
+ @Test(expected = GadgetException.class)
+ public void malformedGadgetSpecIsCachedAndThrows2() throws Exception {
+ HttpRequest request = createIgnoreCacheRequest();
+ expect(pipeline.execute(request)).andReturn(new HttpResponse("")).once();
+ replay(pipeline);
+
+ specFactory.getGadgetSpec(createContext(SPEC_URL, true));
+ }
+
@Test
public void specFetchedWithBomChar() throws Exception {
HttpRequest request = createIgnoreCacheRequest();