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();


Reply via email to