Cool. Thanks!

I'll work on that.

-Adrian


--- On Tue, 4/14/09, David E Jones <david.jo...@hotwaxmedia.com> wrote:

> From: David E Jones <david.jo...@hotwaxmedia.com>
> Subject: Re: Discussion: UEL and backward incompatibility
> To: dev@ofbiz.apache.org
> Date: Tuesday, April 14, 2009, 11:03 PM
> I think adding those data types would be fine Adrian, and
> would solve  
> what Al brings up (and it is nice to be able to return an
> empty List/ 
> etc sometimes).
> 
> Now that we have an alternative way to do this it is nice
> and we don't  
> have to use it, but I agree it's a nice option.
> 
> -David
> 
> 
> On Apr 14, 2009, at 11:40 PM, Adrian Crum wrote:
> 
> >
> > Maybe (outside the UEL issue) we could consider that.
> >
> > David said one of the goals in the OFBiz scripting was
> to avoid  
> > having to declare variables before using them. We
> could make it  
> > optional - you could declare variables if you want -
> to avoid data- 
> > type ambiguity. Otherwise, you could assign values to
> non-existing  
> > variables and let OFBiz try to infer the data type.
> >
> > The <set> element data-typing I had proposed
> earlier could work in  
> > concert with my recent commit.
> >
> > -Adrian
> >
> >
> > --- On Tue, 4/14/09, Al Byers
> <bye...@automationgroups.com> wrote:
> >
> >> From: Al Byers <bye...@automationgroups.com>
> >> Subject: Re: Discussion: UEL and backward
> incompatibility
> >> To: dev@ofbiz.apache.org, adrian.c...@yahoo.com
> >> Date: Tuesday, April 14, 2009, 10:21 PM
> >> 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