You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ad...@apache.org on 2009/05/03 01:36:37 UTC

svn commit: r770990 - in /ofbiz/trunk/framework: base/src/org/ofbiz/base/util/string/NodeELResolver.java minilang/src/org/ofbiz/minilang/method/envops/Iterate.java

Author: adrianc
Date: Sat May  2 22:37:08 2009
New Revision: 770990

URL: http://svn.apache.org/viewvc?rev=770990&view=rev
Log:
Small change to Scott's UEL improvement - convert NodeList to a java.util.List so that it can be treated like a regular List.

Modified:
    ofbiz/trunk/framework/base/src/org/ofbiz/base/util/string/NodeELResolver.java
    ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/Iterate.java

Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/string/NodeELResolver.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/string/NodeELResolver.java?rev=770990&r1=770989&r2=770990&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/string/NodeELResolver.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/string/NodeELResolver.java Sat May  2 22:37:08 2009
@@ -20,6 +20,7 @@
 
 import java.beans.FeatureDescriptor;
 import java.util.Iterator;
+import java.util.List;
 
 import javax.el.CompositeELResolver;
 import javax.el.ELContext;
@@ -31,6 +32,8 @@
 import javax.xml.xpath.XPathExpressionException;
 import javax.xml.xpath.XPathFactory;
 
+import javolution.util.FastList;
+
 import org.apache.xerces.dom.NodeImpl;
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.cache.UtilCache;
@@ -100,13 +103,16 @@
                 } else if (nodeList.getLength() == 1) { 
                     result = nodeList.item(0);
                 } else {
-                    result = nodeList;
+                    List<Node> newList = FastList.newInstance();
+                    for (int i = 0; i < nodeList.getLength(); i++) {
+                        newList.add(nodeList.item(i));
+                    }
+                    result = newList;
                 }
                 context.setPropertyResolved(true);
             } catch (XPathExpressionException e) {
                 Debug.logError("An error occurred during XPath expression evaluation, error was: " + e, module);
             }
-
         }
         return result;
     }

Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/Iterate.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/Iterate.java?rev=770990&r1=770989&r2=770990&view=diff
==============================================================================
--- ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/Iterate.java (original)
+++ ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/Iterate.java Sat May  2 22:37:08 2009
@@ -34,8 +34,6 @@
 import org.ofbiz.minilang.method.MethodContext;
 import org.ofbiz.minilang.method.MethodOperation;
 import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
 
 /**
  * Process sub-operations for each entry in the list
@@ -103,7 +101,7 @@
                 }
                 return false;
             }
-        } else if (objList instanceof Iterable) {
+        } else {
             Collection<Object> theList = UtilGenerics.checkList(objList);
 
             if (theList == null) {
@@ -123,17 +121,6 @@
                     return false;
                 }
             }
-        } else if (objList instanceof NodeList) {
-            NodeList theList = (NodeList) objList;
-            for (int i = 0; i < theList.getLength(); i++) {
-                Node theEntry = theList.item(i);
-                entryAcsr.put(methodContext, theEntry);
-
-                if (!SimpleMethod.runSubOps(subOps, methodContext)) {
-                    // only return here if it returns false, otherwise just carry on
-                    return false;
-                }
-            }
         }
         entryAcsr.put(methodContext, oldEntryValue);
         return true;



Re: svn commit: r770990 - in /ofbiz/trunk/framework: base/src/org/ofbiz/base/util/string/NodeELResolver.java minilang/src/org/ofbiz/minilang/method/envops/Iterate.java

Posted by Adrian Crum <ad...@yahoo.com>.
I didn't change it so that you could get a node by index number. I changed it because the framework handles Lists easily, and the result is less Node-specific code.

-Adrian


--- On Sat, 5/2/09, Scott Gray <sc...@hotwaxmedia.com> wrote:

> From: Scott Gray <sc...@hotwaxmedia.com>
> Subject: Re: svn commit: r770990 - in /ofbiz/trunk/framework: base/src/org/ofbiz/base/util/string/NodeELResolver.java minilang/src/org/ofbiz/minilang/method/envops/Iterate.java
> To: dev@ofbiz.apache.org
> Cc: commits@ofbiz.apache.org
> Date: Saturday, May 2, 2009, 10:56 PM
> Hi Adrian
> 
> I don't mind the change and I had considered doing it
> myself at one point.   The reason I didn't was because I
> figured it was much more likely that someone would iterate
> over a list of nodes rather than directly access it so this
> change just means that the list is iterated over twice.  I
> mean why would someone want to access a node at point x in
> the context of an xml document?  You typically either want
> the first child or you want the whole list.  Either way I
> don't mind but I just wanted to mention that I did think
> of doing this and chose not to.
> 
> Regards
> Scott
> 
> HotWax Media
> http://www.hotwaxmedia.com
> 
> On 3/05/2009, at 11:36 AM, adrianc@apache.org wrote:
> 
> > Author: adrianc
> > Date: Sat May  2 22:37:08 2009
> > New Revision: 770990
> > 
> > URL:
> http://svn.apache.org/viewvc?rev=770990&view=rev
> > Log:
> > Small change to Scott's UEL improvement - convert
> NodeList to a java.util.List so that it can be treated like
> a regular List.
> > 
> > Modified:
> >   
> ofbiz/trunk/framework/base/src/org/ofbiz/base/util/string/NodeELResolver.java
> >   
> ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/Iterate.java
> > 
> > Modified:
> ofbiz/trunk/framework/base/src/org/ofbiz/base/util/string/NodeELResolver.java
> > URL:
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/string/NodeELResolver.java?rev=770990&r1=770989&r2=770990&view=diff
> >
> ==============================================================================
> > ---
> ofbiz/trunk/framework/base/src/org/ofbiz/base/util/string/NodeELResolver.java
> (original)
> > +++
> ofbiz/trunk/framework/base/src/org/ofbiz/base/util/string/NodeELResolver.java
> Sat May  2 22:37:08 2009
> > @@ -20,6 +20,7 @@
> > 
> > import java.beans.FeatureDescriptor;
> > import java.util.Iterator;
> > +import java.util.List;
> > 
> > import javax.el.CompositeELResolver;
> > import javax.el.ELContext;
> > @@ -31,6 +32,8 @@
> > import javax.xml.xpath.XPathExpressionException;
> > import javax.xml.xpath.XPathFactory;
> > 
> > +import javolution.util.FastList;
> > +
> > import org.apache.xerces.dom.NodeImpl;
> > import org.ofbiz.base.util.Debug;
> > import org.ofbiz.base.util.cache.UtilCache;
> > @@ -100,13 +103,16 @@
> >                 } else if (nodeList.getLength() == 1)
> {
> >                     result = nodeList.item(0);
> >                 } else {
> > -                    result = nodeList;
> > +                    List<Node> newList =
> FastList.newInstance();
> > +                    for (int i = 0; i <
> nodeList.getLength(); i++) {
> > +                       
> newList.add(nodeList.item(i));
> > +                    }
> > +                    result = newList;
> >                 }
> >                 context.setPropertyResolved(true);
> >             } catch (XPathExpressionException e) {
> >                 Debug.logError("An error occurred
> during XPath expression evaluation, error was: " + e,
> module);
> >             }
> > -
> >         }
> >         return result;
> >     }
> > 
> > Modified:
> ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/Iterate.java
> > URL:
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/Iterate.java?rev=770990&r1=770989&r2=770990&view=diff
> >
> ==============================================================================
> > ---
> ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/Iterate.java
> (original)
> > +++
> ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/Iterate.java
> Sat May  2 22:37:08 2009
> > @@ -34,8 +34,6 @@
> > import org.ofbiz.minilang.method.MethodContext;
> > import org.ofbiz.minilang.method.MethodOperation;
> > import org.w3c.dom.Element;
> > -import org.w3c.dom.Node;
> > -import org.w3c.dom.NodeList;
> > 
> > /**
> >  * Process sub-operations for each entry in the list
> > @@ -103,7 +101,7 @@
> >                 }
> >                 return false;
> >             }
> > -        } else if (objList instanceof Iterable) {
> > +        } else {
> >             Collection<Object> theList =
> UtilGenerics.checkList(objList);
> > 
> >             if (theList == null) {
> > @@ -123,17 +121,6 @@
> >                     return false;
> >                 }
> >             }
> > -        } else if (objList instanceof NodeList) {
> > -            NodeList theList = (NodeList) objList;
> > -            for (int i = 0; i <
> theList.getLength(); i++) {
> > -                Node theEntry = theList.item(i);
> > -                entryAcsr.put(methodContext,
> theEntry);
> > -
> > -                if (!SimpleMethod.runSubOps(subOps,
> methodContext)) {
> > -                    // only return here if it returns
> false, otherwise just carry on
> > -                    return false;
> > -                }
> > -            }
> >         }
> >         entryAcsr.put(methodContext, oldEntryValue);
> >         return true;
> > 
> >


      

Re: svn commit: r770990 - in /ofbiz/trunk/framework: base/src/org/ofbiz/base/util/string/NodeELResolver.java minilang/src/org/ofbiz/minilang/method/envops/Iterate.java

Posted by Scott Gray <sc...@hotwaxmedia.com>.
Hi Adrian

I don't mind the change and I had considered doing it myself at one  
point.   The reason I didn't was because I figured it was much more  
likely that someone would iterate over a list of nodes rather than  
directly access it so this change just means that the list is iterated  
over twice.  I mean why would someone want to access a node at point x  
in the context of an xml document?  You typically either want the  
first child or you want the whole list.  Either way I don't mind but I  
just wanted to mention that I did think of doing this and chose not to.

Regards
Scott

HotWax Media
http://www.hotwaxmedia.com

On 3/05/2009, at 11:36 AM, adrianc@apache.org wrote:

> Author: adrianc
> Date: Sat May  2 22:37:08 2009
> New Revision: 770990
>
> URL: http://svn.apache.org/viewvc?rev=770990&view=rev
> Log:
> Small change to Scott's UEL improvement - convert NodeList to a  
> java.util.List so that it can be treated like a regular List.
>
> Modified:
>    ofbiz/trunk/framework/base/src/org/ofbiz/base/util/string/ 
> NodeELResolver.java
>    ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/ 
> envops/Iterate.java
>
> Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/string/ 
> NodeELResolver.java
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/string/NodeELResolver.java?rev=770990&r1=770989&r2=770990&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/string/ 
> NodeELResolver.java (original)
> +++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/string/ 
> NodeELResolver.java Sat May  2 22:37:08 2009
> @@ -20,6 +20,7 @@
>
> import java.beans.FeatureDescriptor;
> import java.util.Iterator;
> +import java.util.List;
>
> import javax.el.CompositeELResolver;
> import javax.el.ELContext;
> @@ -31,6 +32,8 @@
> import javax.xml.xpath.XPathExpressionException;
> import javax.xml.xpath.XPathFactory;
>
> +import javolution.util.FastList;
> +
> import org.apache.xerces.dom.NodeImpl;
> import org.ofbiz.base.util.Debug;
> import org.ofbiz.base.util.cache.UtilCache;
> @@ -100,13 +103,16 @@
>                 } else if (nodeList.getLength() == 1) {
>                     result = nodeList.item(0);
>                 } else {
> -                    result = nodeList;
> +                    List<Node> newList = FastList.newInstance();
> +                    for (int i = 0; i < nodeList.getLength(); i++) {
> +                        newList.add(nodeList.item(i));
> +                    }
> +                    result = newList;
>                 }
>                 context.setPropertyResolved(true);
>             } catch (XPathExpressionException e) {
>                 Debug.logError("An error occurred during XPath  
> expression evaluation, error was: " + e, module);
>             }
> -
>         }
>         return result;
>     }
>
> Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/ 
> method/envops/Iterate.java
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/Iterate.java?rev=770990&r1=770989&r2=770990&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/ 
> envops/Iterate.java (original)
> +++ ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/ 
> envops/Iterate.java Sat May  2 22:37:08 2009
> @@ -34,8 +34,6 @@
> import org.ofbiz.minilang.method.MethodContext;
> import org.ofbiz.minilang.method.MethodOperation;
> import org.w3c.dom.Element;
> -import org.w3c.dom.Node;
> -import org.w3c.dom.NodeList;
>
> /**
>  * Process sub-operations for each entry in the list
> @@ -103,7 +101,7 @@
>                 }
>                 return false;
>             }
> -        } else if (objList instanceof Iterable) {
> +        } else {
>             Collection<Object> theList =  
> UtilGenerics.checkList(objList);
>
>             if (theList == null) {
> @@ -123,17 +121,6 @@
>                     return false;
>                 }
>             }
> -        } else if (objList instanceof NodeList) {
> -            NodeList theList = (NodeList) objList;
> -            for (int i = 0; i < theList.getLength(); i++) {
> -                Node theEntry = theList.item(i);
> -                entryAcsr.put(methodContext, theEntry);
> -
> -                if (!SimpleMethod.runSubOps(subOps, methodContext)) {
> -                    // only return here if it returns false,  
> otherwise just carry on
> -                    return false;
> -                }
> -            }
>         }
>         entryAcsr.put(methodContext, oldEntryValue);
>         return true;
>
>