What is the reason there is not a method to create empty lists and maps in
simple-methods? I have found a need to do such many times. I was welcoming
Adrian's first proposed solution.

-Al

On Tue, Apr 14, 2009 at 9:19 PM, Adrian Crum <adrian.c...@yahoo.com> wrote:

>
> If you read section 1.5 and 1.6 to get an idea of UEL syntax and
> evaluation:
>
> http://docs.ofbiz.org/download/attachments/6430/UEL.pdf
>
> and understand that auto-vivify is an OFBiz add-on to UEL, then it should
> make more sense.
>
> I think I solved the problem with my recent commit. Let's see how it goes.
>
> -Adrian
>
>
> --- On Tue, 4/14/09, Scott Gray <scott.g...@hotwaxmedia.com> wrote:
>
> > From: Scott Gray <scott.g...@hotwaxmedia.com>
> > Subject: Re: Discussion: UEL and backward incompatibility
> > To: dev@ofbiz.apache.org
> > Date: Tuesday, April 14, 2009, 6:14 PM
> > Isn't someEntity.someId a String?
> >
> > For example orderHeader.orderId in java would be:
> > String orderId = (String)
> > orderHeader.get("orderId");
> >
> > So my question is why does UEL evaluate orderId to an
> > Integer when the
> > actual type was a String?  Or am I still missing something?
> >
> > Regards
> > Scott
> >
> > HotWax Media
> > http://www.hotwaxmedia.com
> >
> > On 15/04/2009, at 1:01 PM, Adrian Crum wrote:
> >
> > >
> > > Scott,
> > >
> > > You're missing something: The problem is with
> > using integers as Map
> > > keys, not Map values.
> > >
> > > -Adrian
> > >
> > > --- On Tue, 4/14/09, Scott Gray
> > <scott.g...@hotwaxmedia.com> wrote:
> > >
> > >> From: Scott Gray
> > <scott.g...@hotwaxmedia.com>
> > >> Subject: Re: Discussion: UEL and backward
> > incompatibility
> > >> To: dev@ofbiz.apache.org
> > >> Date: Tuesday, April 14, 2009, 5:22 PM
> > >> Sorry if I'm asking something obvious here and
> > keep in
> > >> mind I haven't really followed the UEL
> > introduction very
> > >> closely.
> > >>
> > >> You say below that these numeric Ids are evaluated
> > to
> > >> integers and my question is why exactly is that?
> > I'm
> > >> quite sure in 99% of cases the actual type of the
> > map entry
> > >> value is a String which just happens to contain
> > numbers.  So
> > >> in my mind whatever code is retrieving a map
> > values using
> > >> dot syntax should preserve the type of the
> > original value.
> > >> Maps in OFBiz almost never require (or want)
> > automatic type
> > >> conversion of their values so is their any way to
> > turn that
> > >> off?
> > >>
> > >> Regards
> > >> Scott
> > >>
> > >> HotWax Media
> > >> http://www.hotwaxmedia.com
> > >>
> > >>
> > >>
> > >> On 15/04/2009, at 6:38 AM, Adrian Crum wrote:
> > >>
> > >>> As many of you know, the introduction of the
> > Uniform
> > >> Expression Language into the framework caused some
> > backward
> > >> compatibility problems - specifically with IDs
> > being used as
> > >> Map keys. I tried to accommodate that with a
> > couple of bits
> > >> of code, but there are still some issues.
> > >>>
> > >>> There have been suggestions on the mailing
> > list for
> > >> workarounds, but not all of them work, nor do they
> > work all
> > >> the time. I don't want to hack up the UEL
> > library
> > >> further, because its my viewpoint that OFBiz
> > should conform
> > >> to existing standards, not twist existing
> > standards to
> > >> conform to OFBiz.
> > >>>
> > >>> The crux of the main problem is the
> > implementation of
> > >> auto-vivify that I added to the UEL. Using the
> > following
> > >> code as an example:
> > >>>
> > >>> <set
> > field="someVar[someEntity.someId]"
> > >> value="Hello World!"/>
> > >>>
> > >>> If someVar was not previously defined, the
> > auto-vivify
> > >> code tries to guess what data type someVar is
> > supposed to
> > >> be. If someEntity.someId evaluates to an integer,
> > the code
> > >> assumes it is an index and creates a List,
> > otherwise it
> > >> creates a Map. This works fine in most cases.
> > >>>
> > >>> The problem comes when someEntity.someId
> > evaluates to
> > >> an integer (most IDs are integers) and the
> > developer
> > >> intended someVar to be a Map, not a List. There
> > needs to be
> > >> a way to create and empty Map in those cases.
> > >>>
> > >>> I believe the best solution is to modify the
> > >> <set> element to allow the creation of an
> > empty Map or
> > >> List. This will remove the ambiguity and solve the
> > problem -
> > >> without further modifying UEL.
> > >>>
> > >>> I modified my local copy to allow the creation
> > of an
> > >> empty Map:
> > >>>
> > >>> <set field="someVar"
> > >> type="NewMap"/>
> > >>> <set
> > field="someVar[someEntity.someId]"
> > >> value="Hello World!"/>
> > >>>
> > >>> and it works great.
> > >>>
> > >>> So, the bottom line is, I would like to add
> > >> "NewMap" and "NewList" to the
> > >> <set> element type attribute. What do you
> > think?
> > >>>
> > >>> -Adrian
> > >
> > >
> > >
>
>
>
>

Reply via email to