Skip to main content

[el-spec commits] [el-spec~source-code:184] Rename DefaultEmpty to DefaultIfEmpty.

  • From: kchung@...
  • To: commits@...
  • Subject: [el-spec commits] [el-spec~source-code:184] Rename DefaultEmpty to DefaultIfEmpty.
  • Date: Mon, 30 Jul 2012 21:20:11 +0000

Project:    el-spec
Repository: source-code
Revision:   184
Author:     kchung
Date:       2012-07-30 21:20:06 UTC
Link:       

Log Message:
------------
Rename DefaultEmpty to DefaultIfEmpty.
Fix bug in Concat



Revisions:
----------
184


Modified Paths:
---------------
trunk/impl/src/main/java/com/sun/el/query/Concat.java
trunk/impl/src/main/java/com/sun/el/query/QueryOperator.java
trunk/src/test/java/org/glassfish/el/test/LinqTest.java


Added Paths:
------------
trunk/impl/src/main/java/com/sun/el/query/DefaultIfEmpty.java


Diffs:
------
Index: trunk/impl/src/main/java/com/sun/el/query/DefaultEmpty.java
===================================================================
--- trunk/impl/src/main/java/com/sun/el/query/DefaultEmpty.java (revision 183)
+++ trunk/impl/src/main/java/com/sun/el/query/DefaultEmpty.java (revision 184)
@@ -1,86 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License.  You can
- * obtain a copy of the License at
- * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
- * or packager/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at packager/legal/LICENSE.txt.
- *
- * GPL Classpath Exception:
- * Oracle designates this particular file as subject to the "Classpath"
- * exception as provided by Oracle in the GPL Version 2 section of the 
License
- * file that accompanied this code.
- *
- * Modifications:
- * If applicable, add the following below the License Header, with the fields
- * enclosed by brackets [] replaced by your own identifying information:
- * "Portions Copyright [year] [name of copyright owner]"
- *
- * Contributor(s):
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or 
GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- *
- * @author Kin-man Chung
- */
-
-package com.sun.el.query;
-
-import javax.el.ELContext;
-import java.util.Iterator;
-
-class DefaultEmpty extends QueryOperator {
-
-    @Override
-    public Iterable<Object> invoke(final ELContext context,
-                         final Iterable<Object> base,
-                         final Object[] params) {
-        final Object defaultValue = 
getArgument("defaultEmpty",params,0,true);
-
-        Iterator iter = base.iterator();
-        if (iter.hasNext()) {
-            return base;
-        }
-
-        return new Iterable<Object>() {
-            @Override
-            public Iterator<Object> iterator() {
-                return new Iterator<Object>() {
-                    boolean yielded = true;
-
-                    @Override
-                    public boolean hasNext() {
-                        return yielded;
-                    }
-
-                    @Override
-                    public Object next() {
-                        yielded = false;
-                        return defaultValue;
-                    }
-
-                    @Override
-                    public void remove() {
-                        throw new UnsupportedOperationException();
-                    }
-                };
-            }
-        };
-    }
-}
Index: trunk/impl/src/main/java/com/sun/el/query/QueryOperator.java
===================================================================
--- trunk/impl/src/main/java/com/sun/el/query/QueryOperator.java        
(revision 183)
+++ trunk/impl/src/main/java/com/sun/el/query/QueryOperator.java        
(revision 184)
@@ -94,7 +94,7 @@
         operators.put("singleOrDefault", new SingleOrDefault());
         operators.put("elementAt", new ElementAt());
         operators.put("elementAtOrDefault", new ElementAtOrDefault());
-        operators.put("defaultEmpty", new DefaultEmpty());
+        operators.put("defaultIfEmpty", new DefaultIfEmpty());
         operators.put("any", new Any());
         operators.put("all", new All());
         operators.put("contains", new Contains());
Index: trunk/impl/src/main/java/com/sun/el/query/Concat.java
===================================================================
--- trunk/impl/src/main/java/com/sun/el/query/Concat.java       (revision 183)
+++ trunk/impl/src/main/java/com/sun/el/query/Concat.java       (revision 184)
@@ -68,8 +68,8 @@
 
                     @Override
                     public boolean hasNext() {
-                        if (!yielded) {
-                            return false;
+                        if (yielded) {
+                            return true;
                         }
                         if (iter.hasNext()) {
                             yielded = true;
Index: trunk/impl/src/main/java/com/sun/el/query/DefaultIfEmpty.java
===================================================================
--- trunk/impl/src/main/java/com/sun/el/query/DefaultIfEmpty.java       
(revision 0)
+++ trunk/impl/src/main/java/com/sun/el/query/DefaultIfEmpty.java       
(revision 184)
@@ -0,0 +1,86 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the 
License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or 
GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ *
+ * @author Kin-man Chung
+ */
+
+package com.sun.el.query;
+
+import javax.el.ELContext;
+import java.util.Iterator;
+
+class DefaultIfEmpty extends QueryOperator {
+
+    @Override
+    public Iterable<Object> invoke(final ELContext context,
+                         final Iterable<Object> base,
+                         final Object[] params) {
+        final Object defaultValue = 
getArgument("defaultIfEmpty",params,0,true);
+
+        Iterator iter = base.iterator();
+        if (iter.hasNext()) {
+            return base;
+        }
+
+        return new Iterable<Object>() {
+            @Override
+            public Iterator<Object> iterator() {
+                return new Iterator<Object>() {
+                    boolean yielded = true;
+
+                    @Override
+                    public boolean hasNext() {
+                        return yielded;
+                    }
+
+                    @Override
+                    public Object next() {
+                        yielded = false;
+                        return defaultValue;
+                    }
+
+                    @Override
+                    public void remove() {
+                        throw new UnsupportedOperationException();
+                    }
+                };
+            }
+        };
+    }
+}
Index: trunk/src/test/java/org/glassfish/el/test/LinqTest.java
===================================================================
--- trunk/src/test/java/org/glassfish/el/test/LinqTest.java     (revision 183)
+++ trunk/src/test/java/org/glassfish/el/test/LinqTest.java     (revision 184)
@@ -375,5 +375,25 @@
         testIterable("collections:repeat", "collections:repeat(\"xyz\", 3)",
                 new String[]{"xyz", "xyz", "xyz"});
     }
+
+    @Test
+    public void testMisc() {
+        testIterable("concat", "['a','b'].concat(['x','y','z'])",
+                new String[] { "a", "b", "x", "y", "z" });
+        testIterable("defaultIfEmpty", "['a', 'b'].defaultIfEmpty()",
+                new String[] { "a", "b" });
+        testIterable("defaultIfEmpty", "[].defaultIfEmpty('zz')",
+                new String[] {"zz"});
+        Object ret = elp.eval("[].defaultIfEmpty()");
+        int i = 0;
+        for (Object o: (Iterable)ret) {
+            if (i == 0) {
+                assertEquals(o, null);
+            }
+            i++;
+        }
+        assertEquals(i, 1);
+    }
+
 }
 





[el-spec commits] [el-spec~source-code:184] Rename DefaultEmpty to DefaultIfEmpty.

kchung 07/30/2012
 
 
Close
loading
Please Confirm
Close