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

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

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

Scott Gray-2
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, [hidden email] 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;
>
>


smime.p7s (3K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

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

Adrian Crum-2

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 <[hidden email]> wrote:

> From: Scott Gray <[hidden email]>
> 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: [hidden email]
> Cc: [hidden email]
> 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, [hidden email] 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;
> >
> >