]> source.dussan.org Git - gwtquery.git/commitdiff
$() must handle nulls
authorManolo Carrasco <manolo@apache.org>
Thu, 24 Feb 2011 11:05:45 +0000 (11:05 +0000)
committerManolo Carrasco <manolo@apache.org>
Thu, 24 Feb 2011 11:05:45 +0000 (11:05 +0000)
gwtquery-core/src/main/java/com/google/gwt/query/client/GQuery.java
gwtquery-core/src/test/java/com/google/gwt/query/client/GQueryCoreTest.java

index dc8fd780ca43b82613e461c5518c6f88981f3913..5db86e3a7a897f7aac4650ead2a786162a33b3b0 100644 (file)
@@ -214,21 +214,21 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * Wrap a GQuery around an existing element.\r
    */\r
   public static GQuery $(Element element) {\r
-    return new GQuery(JSArray.create(element));\r
+    return new GQuery(element);\r
   }\r
 \r
   /**\r
    * Wrap a GQuery around an event's target element.\r
    */\r
   public static GQuery $(Event event) {\r
-    return $((Element) event.getCurrentEventTarget().cast());\r
+    return event == null ? $() : $((Element) event.getCurrentEventTarget().cast());\r
   }\r
 \r
   /**\r
    * Wrap a GQuery around an existing node.\r
    */\r
   public static GQuery $(Node n) {\r
-    return new GQuery(JSArray.create(n));\r
+    return n == null ? $() : new GQuery(JSArray.create(n));\r
   }\r
 \r
   /**\r
@@ -244,11 +244,13 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    */\r
   public static GQuery $(@SuppressWarnings("rawtypes") ArrayList a) {\r
     JSArray elements = JSArray.create();\r
-    for (Object o : a ) {\r
-      if (o instanceof Node) {\r
-        elements.addNode((Node)o);\r
-      } else if (o instanceof Widget) {\r
-        elements.addNode(((Widget)o).getElement());\r
+    if (a != null) {\r
+      for (Object o : a ) {\r
+        if (o instanceof Node) {\r
+          elements.addNode((Node)o);\r
+        } else if (o instanceof Widget) {\r
+          elements.addNode(((Widget)o).getElement());\r
+        }\r
       }\r
     }\r
     return new GQuery(elements);\r
@@ -347,7 +349,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * Wrap a GQuery around an existing widget.\r
    */\r
   public static GQuery $(Widget w){\r
-    return $(w.getElement());\r
+    return w == null ? $() : $(w.getElement());\r
   }\r
 \r
   /**\r
@@ -544,30 +546,35 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
     return $wnd;\r
   }-*/;\r
 \r
-  protected NodeList<Element> elements = null;\r
+  protected NodeList<Element> elements = JavaScriptObject.createArray().cast();\r
 \r
   private String currentSelector;\r
 \r
   private GQuery previousObject;\r
 \r
   public GQuery() {\r
-    elements = JavaScriptObject.createArray().cast();\r
   }\r
 \r
   public GQuery(Element element) {\r
-    elements = JSArray.create(element);\r
+    if (element != null) {\r
+      elements =  JSArray.create(element);\r
+    }\r
   }\r
 \r
   public GQuery(GQuery gq) {\r
-    this(gq.get());\r
+    this(gq == null ? null : gq.get());\r
   }\r
 \r
   public GQuery(JSArray elements) {\r
-    this.elements = elements;\r
+    if (elements != null) {\r
+      this.elements = elements;\r
+    }\r
   }\r
 \r
   public GQuery(NodeList<Element> list) {\r
-    elements = list;\r
+    if (list != null) {\r
+      elements = list;\r
+    }\r
   }\r
 \r
   /**\r
@@ -1190,7 +1197,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * Reduce GQuery to element in the specified position.\r
    */\r
   public GQuery eq(int pos) {\r
-    return $(elements.getItem(pos));\r
+    return $(get(pos));\r
   }\r
 \r
   /**\r
@@ -1316,7 +1323,8 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * Return the ith element matched.\r
    */\r
   public Element get(int i) {\r
-    return elements.getItem(i);\r
+    int l = elements.getLength();\r
+    return i >= 0 && i < l? elements.getItem(i) : null;\r
   }\r
 \r
   /**\r
index 9611b2a30328e41607a7d3d357e71db1ce6dac9d..9d0d74aac16740a01d3c92f544ba82ce6732377f 100644 (file)
@@ -21,6 +21,8 @@ import static com.google.gwt.query.client.GQuery.document;
 
 import java.util.ArrayList;
 
+import junit.framework.Assert;
+
 import com.google.gwt.dom.client.Document;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.event.dom.client.ClickEvent;
@@ -32,6 +34,7 @@ import com.google.gwt.user.client.Event;
 import com.google.gwt.user.client.ui.Button;
 import com.google.gwt.user.client.ui.HTML;
 import com.google.gwt.user.client.ui.RootPanel;
+import com.google.gwt.dom.client.Node;
 
 /**
  * Test class for testing gwtquery-core api.
@@ -833,5 +836,14 @@ public class GQueryCoreTest extends GWTTestCase {
     assertEquals(3, $(a).size());
     
   }
+  
+  public void testNulls() {
+    Assert.assertEquals(0, $((Node)null).size());
+    Assert.assertEquals(0, $((Element)null).size());
+    Assert.assertEquals(0, $((String)null).size());
+    Assert.assertNull($((String)null).get(0));
+    Assert.assertNull($((String)null).get(-1));
+    Assert.assertEquals(0, $((String)null).eq(0).size());
+  }
 
 }