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 <scott.g...@hotwaxmedia.com> wrote:

> From: Scott Gray <scott.g...@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: comm...@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, adri...@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;
> > 
> >


      

Reply via email to