Hi David,

Nothing better than a good night for the soul (and the body ;o). I was a little 
upset yesterday night, and I briefly explained why.
This said I understand that the current enhancements in the Converter or the 
Freamework in general are great. I see of much care is
taken to avoid this kind of issues by testing every details, and explaining how 
to do the same. That's all great and we know all
that IT is not Math and that despite all our efforts this will always happen 
one day or another.

By chance, in our case no lifes are in danger. I think about cars, they put so 
much electronics in them. It's certainly good for the
business, not sure for drivers and theirs passengers. I was listening an expert 
yesterday at TV. There are some cases which are ok,
even if the electronic is screwed anyway at least if it works it may save your 
life. There are others cases wich are really
questionable. 2 small examples: in the last second on an opened road without 
anybody but you and a bend, if you are losing the
control of your car (ice, etc.) some embedded systems may save your life. But 
what about this case : on an higway someone for any
reason suddenly change of lane, instinctively you try to escape this "fool" 
(he/r may have h/her own reason) by turning the
steering-wheel abruptly, but an embedded system thinks that you are losing the 
control and force you to keep your lane: big crash in
the higway, many deaths. Of course I don't speak about all this issues you get 
when you car begin to age...
Don't try to look for analogies here, I simply coul'd not resist to tell this 
story I heard. I'm sure there are already good
cartoons that explain that better than me :o)

I have createe https://issues.apache.org/jira/browse/OFBIZ-3486 to make things 
clearer. I will be back in 4 days, then maybe a good
surprise. Have fun

Jacques


From: "David E Jones" <[email protected]>
No, you may be right. I haven't tested it, but your list should contain 
GenericValue objects that implement the Map interface and
can be treated as Maps, and the list-options tag should accept those fine. 
Somewhere, either in the query/find operation or in the
list-options iterating something is breaking this, and while I don't know if it 
is the conversion stuff or not it could be.

The best bet is to make it easy for others to reproduce it, perhaps by creating 
an issue that has a patch and instructions for
applying and running it. It's great that you've nailed it down to where 
reverting to a certain revision makes it work, that should
be useful for tracking down the cause of this.

-David


On Feb 17, 2010, at 5:51 PM, Jacques Le Roux wrote:

Yes, actually it's a List of GenericValues returned by 
CommonWorkers.getAssociatedStateList()

The problem is that this was working at r909312. I call this a regression, 
maybe it was wrong  in the middle before, but it
worked.

Jacques

From: "David E Jones" <[email protected]>

Jacques,

It looks like the list you are trying to use in the drop-down contains 
something other than a Map.

-David


On Feb 17, 2010, at 5:03 PM, Jacques Le Roux wrote:

Missed the more important part, here it is

---- cause ---------------------------------------------------------------------
Exception: java.lang.ClassCastException
Message: Not a map
---- stack trace ---------------------------------------------------------------
java.lang.ClassCastException: Not a map
org.ofbiz.base.util.UtilGenerics.checkMap(UtilGenerics.java:77)
org.ofbiz.widget.form.ModelFormField$ListOptions.addOptionValues(ModelFormField.java:1648)
org.ofbiz.widget.form.ModelFormField$FieldInfoWithOptions.getAllOptionValues(ModelFormField.java:1529)
org.ofbiz.widget.form.MacroFormRenderer.renderDropDownField(MacroFormRenderer.java:666)
org.ofbiz.widget.form.ModelFormField$DropDownField.renderFieldString(ModelFormField.java:3043)
org.ofbiz.widget.form.ModelFormField.renderFieldString(ModelFormField.java:595)
org.ofbiz.widget.form.ModelForm.renderSingleFormString(ModelForm.java:1054)
org.ofbiz.widget.form.ModelForm.renderFormString(ModelForm.java:837)
org.ofbiz.widget.screen.ModelScreenWidget$Form.renderWidgetString(ModelScreenWidget.java:841)
org.ofbiz.widget.screen.MacroScreenRenderer.renderScreenletSubWidget(MacroScreenRenderer.java:704)
org.ofbiz.widget.screen.ModelScreenWidget$Screenlet.renderWidgetString(ModelScreenWidget.java:408)
org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:137)
org.ofbiz.widget.screen.ModelScreenWidget$DecoratorSection.renderWidgetString(ModelScreenWidget.java:704)
org.ofbiz.widget.screen.ModelScreenWidget$SectionsRenderer.render(ModelScreenWidget.java:167)
org.ofbiz.widget.screen.ModelScreenWidget$DecoratorSectionInclude.renderWidgetString(ModelScreenWidget.java:736)
org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:137)
org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:228)
org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:137)
org.ofbiz.widget.screen.ModelScreenWidget$DecoratorSection.renderWidgetString(ModelScreenWidget.java:704)
org.ofbiz.widget.screen.ModelScreenWidget$SectionsRenderer.render(ModelScreenWidget.java:167)
org.ofbiz.widget.screen.ModelScreenWidget$DecoratorSectionInclude.renderWidgetString(ModelScreenWidget.java:736)
org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:137)
org.ofbiz.widget.screen.ModelScreenWidget$Container.renderWidgetString(ModelScreenWidget.java:296)
org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:137)
org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:228)
org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:394)
org.ofbiz.widget.screen.ModelScreenWidget$IncludeScreen.renderWidgetString(ModelScreenWidget.java:576)
org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:137)
org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:228)
org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:394)
org.ofbiz.widget.screen.ModelScreenWidget$DecoratorScreen.renderWidgetString(ModelScreenWidget.java:672)
org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:137)
org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:228)
org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:394)
org.ofbiz.widget.screen.ModelScreenWidget$DecoratorScreen.renderWidgetString(ModelScreenWidget.java:672)
org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:137)
org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:228)
org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:394)
org.ofbiz.widget.screen.ScreenRenderer.render(ScreenRenderer.java:135)
org.ofbiz.widget.screen.ScreenRenderer.render(ScreenRenderer.java:97)
org.ofbiz.widget.screen.MacroScreenViewHandler.render(MacroScreenViewHandler.java:104)
org.ofbiz.webapp.control.RequestHandler.renderView(RequestHandler.java:835)
org.ofbiz.webapp.control.RequestHandler.doRequest(RequestHandler.java:554)
org.ofbiz.webapp.control.ControlServlet.doGet(ControlServlet.java:223)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.ofbiz.webapp.control.ContextFilter.doFilter(ContextFilter.java:266)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
java.lang.Thread.run(Thread.java:619)
--------------------------------------------------------------------------------

Jacques

From: "Jacques Le Roux" <[email protected]>
I did not reproduce with the lists used in the trunk OOTB (I tried Party Roles 
and Invoice Items)
But I can reproduce at r911227

I create a states list using (for instance)
<set field="states" value="${groovy: postalAddress?.countryGeoId ?
org.ofbiz.common.CommonWorkers.getAssociatedStateList(delegator,
postalAddress.countryGeoId) : org.ofbiz.common.CommonWorkers.getAssociatedStateList(delegator, 
null)}" type="List"/>

and I use it in (slightly changed for custom labels)

     <field use-when="states!=null" name="stateProvinceGeoId" 
title="${uiLabelMap.StateWithSpacesPrefix}"
tooltip="${uiLabelMap.Required}" widget-style="required">
         <drop-down allow-empty="false">
             <list-options list-name="states" key-name="geoId" 
description="${geoName}"/>
         </drop-down>
     </field>

I get

2010-02-18 00:58:04,734 (http-0.0.0.0-8443-4) [        
ModelScreen.java:399:ERROR] Error rendering screen
[component://common/widget/CommonScreens.xml#GlobalDecorator]: 
java.lang.ClassCastException: Not a map
. Rolling back transaction.
2010-02-18 00:58:04,734 (http-0.0.0.0-8443-4) [    
TransactionUtil.java:372:WARN ]
---- exception report ----------------------------------------------------------
[TransactionUtil.setRollbackOnly] Calling transaction setRollbackOnly; this 
stack trace shows where this is happening:
Exception: java.lang.Exception
Message: Error rendering screen 
[component://common/widget/CommonScreens.xml#GlobalDecorator]: 
java.lang.ClassCastException:
Not a
map
---- stack trace ---------------------------------------------------------------
java.lang.Exception: Error rendering screen 
[component://common/widget/CommonScreens.xml#GlobalDecorator]:
java.lang.ClassCastException: Not a map
org.ofbiz.entity.transaction.TransactionUtil.setRollbackOnly(TransactionUtil.java:372)
org.ofbiz.entity.transaction.TransactionUtil.rollback(TransactionUtil.java:319)
org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:402)
org.ofbiz.widget.screen.ModelScreenWidget$IncludeScreen.renderWidgetString(ModelScreenWidget.java:576)
org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:137)
org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:228)
org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:394)
org.ofbiz.widget.screen.ModelScreenWidget$DecoratorScreen.renderWidgetString(ModelScreenWidget.java:672)
org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:137)
org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:228)
org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:394)
org.ofbiz.widget.screen.ModelScreenWidget$DecoratorScreen.renderWidgetString(ModelScreenWidget.java:672)
org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:137)
org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:228)
org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:394)
org.ofbiz.widget.screen.ScreenRenderer.render(ScreenRenderer.java:135)
org.ofbiz.widget.screen.ScreenRenderer.render(ScreenRenderer.java:97)
org.ofbiz.widget.screen.MacroScreenViewHandler.render(MacroScreenViewHandler.java:104)
org.ofbiz.webapp.control.RequestHandler.renderView(RequestHandler.java:835)
org.ofbiz.webapp.control.RequestHandler.doRequest(RequestHandler.java:554)
org.ofbiz.webapp.control.ControlServlet.doGet(ControlServlet.java:223)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.ofbiz.webapp.control.ContextFilter.doFilter(ContextFilter.java:266)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
java.lang.Thread.run(Thread.java:619)

HTH (I can't do more right now)

Jacques

From: "Jacques Le Roux" <[email protected]>
I'm workin on it :/

Just a little annoying as it's past midnight here and my wife will be waiting 
me tomorrow morning for our 4 vacation days she
is
waiting for so long... Life...

Jacques

From: "Adam Heath" <[email protected]>
Jacques Le Roux wrote:
Hi,

I have a problem with the recent converter changes I guess. In a custom
application where I use a <list-options  I get an error
saying it's not a Map.

This is woirking if I revert to r909312. I will try to reproduce on a
local update instance, I'm quite sure it's reproductible in the trunk

Unfortunately I can't help much on this right now as I will be in
vacation for 4 days begining tonigh and it's already rather late here.

It would be nice to have more info on this, like at the very least
what actual version you were running, not just one that happened to
work for you.

For reference, there was a point where I changed how the converters
worked, to be different than what Adrian initially designed.  Last
week, I ended up undoing most of those modifications, and implemented
my features in a different way, that shouldn't affect anyone else.










Reply via email to